diff options
author | scuri <scuri> | 2010-11-09 13:26:37 +0000 |
---|---|---|
committer | scuri <scuri> | 2010-11-09 13:26:37 +0000 |
commit | 7c8e1fc2a2044be0082b90adc194ab3e188fa723 (patch) | |
tree | 440da97895c4da75a331d43db1e2015b993c5926 /src/tecmakewin.mak | |
parent | 47695ef9390718f6ee3b8ea184debda973531d30 (diff) |
*** empty log message ***
Diffstat (limited to 'src/tecmakewin.mak')
-rw-r--r-- | src/tecmakewin.mak | 1384 |
1 files changed, 0 insertions, 1384 deletions
diff --git a/src/tecmakewin.mak b/src/tecmakewin.mak deleted file mode 100644 index 90506ed..0000000 --- a/src/tecmakewin.mak +++ /dev/null @@ -1,1384 +0,0 @@ -#-------------------------------------------------------------------------# -#- Tecmake (Windows Version) -# -#- Generic Makefile to build applications and libraries at TeCGraf -# -#- The user makefile usually has the name "config.mak". -# -#-------------------------------------------------------------------------# - -#---------------------------------# -# Tecmake Version -VERSION = 4.3 - - -#---------------------------------# -# First target -.PHONY: build -build: tecmake - - -#---------------------------------# -# Location of this file -TECMAKE = $(TECMAKE_HOME)/tecmakewin.mak - - -#---------------------------------# -# System Variables Definitions - -# If tecmake.bat is not used, -# then at least define main system variables. - -WIN32NAMES = vc10 vc9 vc8 vc7 vc6 owc1 bc55 bc56 bc6 gcc3 gcc4 mingw3 mingw4 dllw4 dllg4 dll dll7 dll8 dll9 dll10 -WIN64UNAMES = vc10_64 vc9_64 vc8_64 dll8_64 dll9_64 dll10_64 - -ifdef TEC_UNAME - ifneq ($(findstring $(TEC_UNAME), $(WIN32NAMES)), ) - TEC_WIN32 = Yes - else - ifneq ($(findstring $(TEC_UNAME), $(WIN64NAMES)), ) - TEC_WIN64 = Yes - endif - endif -endif - -ifdef TEC_WIN64 - TEC_SYSNAME=Win64 TEC_SYSARCH=x64 - ifeq ($(PROCESSOR_ARCHITECTURE), x86) - # Define this if compiling for 64-bits in a 32bits environment - USE_X86_CL64=Yes - endif -else - TEC_SYSNAME=Win32 - TEC_SYSARCH=x86 -endif - - -#---------------------------------# -# System Info -.PHONY: sysinfo -sysinfo: - @echo ''; echo 'Tecmake: System Info' - @echo 'TEC_SYSNAME = $(TEC_SYSNAME)' - @echo 'TEC_SYSARCH = $(TEC_SYSARCH)' - @echo 'TEC_UNAME = $(TEC_UNAME)'; echo '' - - -#---------------------------------# -# Known platforms - -UNAMES = $(WIN32NAMES) $(WIN64NAMES) - - -#---------------------------------# -# Directories Definitions - -PROJDIR = .. -SRCDIR = . -OBJROOT = $(PROJDIR)/obj - - -# --------------------------------------------------------- -# Byte Order and Word Size - -ifneq ($(findstring x86, $(TEC_SYSARCH)), ) - TEC_BYTEORDER = TEC_LITTLEENDIAN -else -ifeq ($(TEC_SYSARCH), arm) - TEC_BYTEORDER = TEC_LITTLEENDIAN -else - TEC_BYTEORDER = TEC_BIGENDIAN -endif -endif - -ifeq ($(TEC_SYSARCH), x64) - TEC_BYTEORDER = TEC_LITTLEENDIAN - TEC_WORDSIZE = TEC_64 -else - TEC_WORDSIZE = TEC_32 -endif - -# Itanium Exception -ifeq ($(TEC_SYSARCH), ia64) - TEC_BYTEORDER = TEC_LITTLEENDIAN - TEC_WORDSIZE = TEC_64 -endif - - -#---------------------------------# -# Tools - -SHELL = bash -SLASH = slash_parser - -# Packed LOHs script -LUAPRE = "$(TECMAKE_PATH)"/luapre.lua - - -#---------------------------------# -# Defaults -APPTYPE = windows -INCLUDES = -LIBS = -LIB = - - -#---------------------------------# -# User Configuration File - -MAKENAME = config.mak - -ifdef MF - MAKENAME = $(MF).mak -endif - -################### -include $(MAKENAME) -################### - - -#---------------------------------# -# Definitions of public variables - -ifdef LIBNAME - TARGETNAME = $(LIBNAME) - MAKETYPE = LIB -else - TARGETNAME = $(APPNAME) - MAKETYPE = APP -endif - -ifndef TARGETNAME - $(error LIBNAME nor APPNAME defined in $(MAKENAME)) -endif - -PROJNAME ?= $(TARGETNAME) - -ifneq ($(PROJNAME), $(TARGETNAME)) - OBJROOT := $(OBJROOT)/$(TARGETNAME) -endif - -ifneq ($(findstring dll, $(TEC_UNAME)), ) - ifneq ($(MAKETYPE), APP) - MAKETYPE = DLL - DEF_FILE ?= $(TARGETNAME).def - DEF_FILE := $(SRCDIR)/$(DEF_FILE) - endif -endif - -DEPEND := $(TARGETNAME).wdep - -ifdef DEPENDDIR - DEPEND := $(DEPENDDIR)/$(TARGETNAME).dep.$(TEC_UNAME) -endif - - -# --------------------------------------------------------- -# LO and LOH Suffix - -SRCLUADIR ?= $(SRCDIR) -LOHDIR ?= $(SRCLUADIR) - -ifdef USE_LOH_SUBDIR - ifeq ($(TEC_BYTEORDER), TEC_BIGENDIAN) - ifeq ($(TEC_WORDSIZE), TEC_64) - LOH_SUBDIR ?= be64 - else - LOH_SUBDIR ?= be32 - endif - else - ifeq ($(TEC_WORDSIZE), TEC_64) - # longs in 64-bits Windows are 32 bits!!! - LOH_SUBDIR ?= le64w - else - LOH_SUBDIR ?= le32 - endif - endif - LOHDIR := $(LOHDIR)/$(LOH_SUBDIR) - INCLUDES += $(LOHDIR) -else - ifeq ($(TEC_BYTEORDER), TEC_BIGENDIAN) - ifeq ($(TEC_WORDSIZE), TEC_64) - LO_SUFFIX ?= _be64 - else - LO_SUFFIX ?= _be32 - endif - else - ifeq ($(TEC_WORDSIZE), TEC_64) - # longs in 64-bits Windows are 32 bits!!! - LO_SUFFIX ?= _le64w - else - LO_SUFFIX ?= - endif - endif -endif - - -#---------------------------------# -# Main Rule - Build Everything that it is necessary - -.PHONY: tecmake -ifeq ($(MAKETYPE), APP) - tecmake: print-start system-check directories application scripts -else - ifeq ($(MAKETYPE), DLL) - tecmake: print-start system-check directories dynamic-lib - else - tecmake: print-start system-check directories static-lib - endif -endif - -.PHONY: print-start -print-start: - @echo ''; echo 'Tecmake: Starting [ $(TARGETNAME):$(TEC_UNAME) ]' - - -#---------------------------------# -# Definitions of public variables - -ifeq ($(MAKETYPE), APP) - TARGETROOT ?= $(PROJDIR)/bin -else - TARGETROOT ?= $(PROJDIR)/lib -endif - -ifeq ($(MAKETYPE), APP) - TEC_UNAME_DIR ?= $(TEC_SYSNAME) -else - TEC_UNAME_DIR ?= $(TEC_UNAME) -endif - -ifdef DBG - ifdef DBG_DIR - TEC_UNAME_DIR := $(TEC_UNAME_DIR)d - endif -endif - -OBJDIR := $(OBJROOT)/$(TEC_UNAME_DIR) -TARGETDIR := $(TARGETROOT)/$(TEC_UNAME_DIR) - -TARGETEXE := $(TARGETDIR)/$(TARGETNAME).exe -TARGETDLL := $(TARGETDIR)/$(TARGETNAME).dll -TARGETLIB := $(TARGETDIR)/$(TARGETNAME).lib -ifneq ($(findstring gcc, $(TEC_UNAME)), ) - TARGETLIB := $(TARGETDIR)/lib$(TARGETNAME).a -endif -ifneq ($(findstring mingw, $(TEC_UNAME)), ) - TARGETLIB := $(TARGETDIR)/lib$(TARGETNAME).a -endif -ifneq ($(findstring dllg4, $(TEC_UNAME)), ) - TARGETLIB := $(TARGETDIR)/$(TARGETNAME).a -endif -ifneq ($(findstring dllw4, $(TEC_UNAME)), ) - TARGETLIB := $(TARGETDIR)/$(TARGETNAME).a -endif - -ifdef NO_ECHO - ECHO:=@ -endif - -#---------------------------------# -# Platform/Compiler dependend parameters - -STDDEFS = -DTEC_UNAME=$(TEC_UNAME) -DTEC_SYSNAME=$(TEC_SYSNAME) -D$(TEC_BYTEORDER) -D$(TEC_WORDSIZE) -DWIN32 -STDLIB = kernel32 user32 gdi32 winspool comdlg32 advapi32 shell32 ole32 oleaut32 uuid comctl32 - -#Compilers -VC6 ?= x:/lng/vc6 -VC7 ?= x:/lng/vc7 -VC8 ?= x:/lng/vc8 -VC9 ?= x:/lng/vc9 -VC10 ?= x:/lng/vc10 -OWC1 ?= x:/lng/owc1 -BC55 ?= x:/lng/bc55 -BC56 ?= x:/lng/cbuilderx -BC6 ?= x:/lng/bc6 -MINGW3 ?= x:/lng/mingw3 -MINGW4 ?= x:/lng/mingw4 -# The default location is in the PATH -#GCC3 ?= x:/lng/cygw15 -#GCC4 ?= x:/lng/cygw17 - -#Tools -QT ?= x:/lng/qt -GTK ?= x:/lng/gtk -GLUT ?= x:/lng/glut - -OBJEXT = obj -LIBEXT = lib - -ifeq "$(TEC_UNAME)" "vc6" - COMPILER = $(VC6) -endif - -ifeq "$(TEC_UNAME)" "vc7" - COMPILER = $(VC7) -endif - -ifeq "$(TEC_UNAME)" "vc8" - COMPILER = $(VC8) -endif - -ifeq "$(TEC_UNAME)" "vc8_64" - COMPILER = $(VC8) - BUILD64 = Yes - SDKLIBBIN = /amd64 -endif - -ifeq "$(TEC_UNAME)" "vc9" - COMPILER = $(VC9) -endif - -ifeq "$(TEC_UNAME)" "vc9_64" - COMPILER = $(VC9) - BUILD64 = Yes -endif - -ifeq "$(TEC_UNAME)" "vc10" - COMPILER = $(VC10) -endif - -ifeq "$(TEC_UNAME)" "vc10_64" - COMPILER = $(VC10) - BUILD64 = Yes -endif - -ifeq "$(TEC_UNAME)" "dll" - COMPILER = $(VC6) - USE_DLL = Yes -endif - -ifeq "$(TEC_UNAME)" "dll7" - COMPILER = $(VC7) - USE_DLL = Yes -endif - -ifeq "$(TEC_UNAME)" "dll8" - COMPILER = $(VC8) - USE_DLL = Yes - ifdef DBG - #debug info not working for dll8 linker - define DBG - endef - endif -endif - -ifeq "$(TEC_UNAME)" "dll8_64" - COMPILER = $(VC8) - USE_DLL = Yes - BUILD64 = Yes - SDKLIBBIN = /amd64 -endif - -ifeq "$(TEC_UNAME)" "dll9" - COMPILER = $(VC9) - USE_DLL = Yes -endif - -ifeq "$(TEC_UNAME)" "dll9_64" - COMPILER = $(VC9) - USE_DLL = Yes - BUILD64 = Yes -endif - -ifeq "$(TEC_UNAME)" "dll10" - COMPILER = $(VC10) - USE_DLL = Yes -endif - -ifeq "$(TEC_UNAME)" "dll10_64" - COMPILER = $(VC10) - USE_DLL = Yes - BUILD64 = Yes -endif - -ifeq "$(COMPILER)" "$(VC6)" - TEC_CC = vc - # Use the VC7 Platform SDK, no harm if VC7 is not installed - PLATSDK ?= $(VC7)/PlatformSDK - OLD_OPENGL = Yes -endif - -ifeq "$(COMPILER)" "$(VC7)" - TEC_CC = vc - PLATSDK ?= $(VC7)/PlatformSDK - OLD_OPENGL = Yes -endif - -ifeq "$(COMPILER)" "$(VC8)" - NEW_VC_COMPILER = Yes - TEC_CC = vc - STDDEFS += -DMSVC8 - PLATSDK ?= $(VC8)/PlatformSDK - OLD_OPENGL = Yes - ifdef USE_DLL - GEN_MANIFEST ?= Yes - else - #there is no single thread RTL in VC8 - USE_MT = Yes - endif -endif - -ifeq "$(COMPILER)" "$(VC9)" - NEW_VC_COMPILER = Yes - TEC_CC = vc - STDDEFS += -DMSVC9 - ifdef USE_DLL - GEN_MANIFEST ?= Yes - else - #there is no single thread RTL in VC9 - USE_MT = Yes - endif - ifdef VC9SDK - PLATSDK ?= $(VC9SDK) - else - # Not the real folder, we copied from "C:\Program Files\Microsoft SDKs\Windows\v6.0A" - PLATSDK ?= $(VC9)/WinSDK - endif - RESBIN := $(PLATSDK)/bin - ifdef BUILD64 - RESBIN := $(RESBIN)/x64 - endif -endif - -ifeq "$(COMPILER)" "$(VC10)" - NEW_VC_COMPILER = Yes - TEC_CC = vc - STDDEFS += -DMSVC10 - ifdef USE_DLL - GEN_MANIFEST ?= Yes - else - #there is no single thread RTL in VC10 - USE_MT = Yes - endif - ifdef VC10SDK - PLATSDK ?= $(VC10SDK) - else - # Not the real folder, we copied from "C:\Program Files\Microsoft SDKs\Windows\v7.1" - PLATSDK ?= $(VC10)/WinSDK - endif - RESBIN := $(PLATSDK)/bin - ifdef BUILD64 - RESBIN := $(RESBIN)/x64 - endif -endif - -ifeq "$(TEC_CC)" "vc" - ifdef BUILD64 - STDDEFS += -DWIN64 - MACHINE = X64 - GTK := $(GTK)_x64 - VCLIBBIN = /amd64 - SDKLIBBIN ?= /x64 - ifdef USE_X86_CL64 - BIN = $(COMPILER)/bin/x86_amd64 - else - BIN = $(COMPILER)/bin/amd64 - endif - else - VCLIBBIN = - SDKLIBBIN = - MACHINE = X86 - BIN = $(COMPILER)/bin - endif - RESBIN ?= $(COMPILER)/bin - CC = $(BIN)/cl -nologo - CPPC = $(BIN)/cl -nologo - LIBC = $(BIN)/link -lib -nologo - LINKER = $(BIN)/link -nologo - MT = $(RESBIN)/mt -nologo - RCC = $(RESBIN)/rc -fo - STDINCS = $(PLATSDK)/include $(COMPILER)/include - STDFLAGS = -c -Fo$(OBJDIR)/ -W3 - STDLFLAGS = - DEPDEFS = -D_WIN32 -D_M_IX86 -D_STDCALL_SUPPORTED - STDLIBDIR = -LIBPATH:$(COMPILER)/lib$(VCLIBBIN) -LIBPATH:$(PLATSDK)/lib$(SDKLIBBIN) - OPTFLAGS := -O2 - DEBUGFLAGS := -Z7 -Od -GZ - ifdef NEW_VC_COMPILER - DEBUGFLAGS := -Z7 -Od -RTC1 - STDDEFS += -D_CRT_SECURE_NO_DEPRECATE - ifndef CPP_NARROW_INLINES - STDDEFS += -D_CPP_NARROW_INLINES_DEFINED - endif - STDFLAGS += -EHsc - else # Exception Handling Model - STDFLAGS += -GX - endif - ifneq ($(MAKETYPE), LIB) - ifeq "$(COMPILER)" "$(VC6)" - STDLFLAGS += -pdb:none -incremental:no -machine:$(MACHINE) - else - STDLFLAGS += -incremental:no -machine:$(MACHINE) - endif - ifdef DBG - STDLFLAGS += -debug - endif - ifdef NEW_VC_COMPILER - ifndef GEN_MANIFEST - STDLFLAGS += -MANIFEST:NO - else - ifeq ($(GEN_MANIFEST), No) - STDLFLAGS += -MANIFEST:NO - else - STDLFLAGS += -MANIFEST - endif - endif - endif - endif - ifeq ($(MAKETYPE), APP) - ifeq "$(COMPILER)" "$(VC6)" - STDFLAGS += -GA - else - OPTFLAGS += -GL - ifdef OPT - STDLFLAGS += -LTCG - endif - endif - STDLFLAGS += -subsystem:$(APPTYPE) -out:$(TARGETEXE) - else - ifeq ($(MAKETYPE), DLL) - ifeq "$(COMPILER)" "$(VC6)" - STDFLAGS += -GD - else - OPTFLAGS += -GL - STDLFLAGS += -LTCG - endif - STDLFLAGS += -dll -subsystem:$(APPTYPE) -out:$(TARGETDLL) -implib:$(TARGETLIB) -def:$(DEF_FILE) - else - STDLFLAGS += -out:$(TARGETLIB) - endif - endif - ifdef USE_DLL - ifdef DBG - STDFLAGS += -MDd - else - STDFLAGS += -MD - endif - else - ifdef USE_MT - ifdef DBG - STDFLAGS += -MTd - else - STDFLAGS += -MT - endif - else - ifdef DBG - STDFLAGS += -MLd - else - STDFLAGS += -ML - endif - endif - endif -endif - -ifeq "$(TEC_UNAME)" "owc1" - COMPILER = $(OWC1) - TEC_CC = wc - STDLFLAGS = -endif - -ifeq "$(TEC_CC)" "wc" - WIN_OTHER = YES - BIN = $(COMPILER)/binnt - CC = $(SLASH) $(BIN)/wcc386 - CPPC = $(SLASH) $(BIN)/wpp386 - LIBC = $(SLASH) $(BIN)/wlib - LINKER = $(SLASH) $(BIN)/wlink - RCC = $(SLASH) $(BIN)/rc -fo - STDINCS = $(COMPILER)/h $(COMPILER)/h/nt - STDFLAGS += -od -w4 -5r -bt=nt -mf -e25 -zq -fo$(OBJDIR)/ - STDLIBDIR = LIBP $(COMPILER)/lib386 LIBP $(COMPILER)/lib386/nt - DEBUGFLAGS := -d2 - OPTFLAGS := -ot - ifeq ($(MAKETYPE), APP) - STDLFLAGS = OP maxe=25 OP quiet FORM windows nt NAME $(TARGETEXE) - ifeq ($(APPTYPE), CONSOLE) - STDLFLAGS += RU con - endif - else - STDLFLAGS += -b -c -n -q -p=512 $(TARGETLIB) - endif - ifdef USE_DLL - STDFLAGS += -bm -br - endif -endif - -ifeq "$(TEC_UNAME)" "bc55" - COMPILER = $(BC55) - TEC_CC = bc - OLD_OPENGL = Yes -endif - -ifeq "$(TEC_UNAME)" "bc56" - COMPILER = $(BC56) - TEC_CC = bc - OLD_OPENGL = Yes -endif - -ifeq "$(TEC_UNAME)" "bc6" - COMPILER = $(BC6) - TEC_CC = bc - OLD_OPENGL = Yes -endif - -ifeq "$(TEC_CC)" "bc" - WIN_OTHER = YES - TEC_CC = bc - BIN = $(COMPILER)/bin - CC = $(BIN)/bcc32 - CPPC = $(BIN)/bcc32 - LIBC = $(BIN)/tlib /P32 - RCC = $(BIN)/brc32 -r -fo - LINKER = $(SLASH) $(BIN)/ilink32 - STDINCS = $(COMPILER)/include $(COMPILER)/include/dinkumware - STDLIBDIR = -L$(COMPILER)/lib -L$(COMPILER)/lib/PSDK - STDFLAGS = -c -n$(OBJDIR)/ - STDLIB := cw32 import32 $(STDLIB) - ifeq ($(MAKETYPE), APP) - STDLFLAGS = -Tpe #-x -c -Gn - ifeq ($(APPTYPE), CONSOLE) - STARTUP = c0x32.obj - STDLFLAGS += -ap - else - STARTUP = c0w32.obj - STDLFLAGS += -aa - endif - else - STDLFLAGS = $(TARGETLIB) - endif - OPTFLAGS := -O2 - DEBUGFLAGS := -v -x -xp - ifdef USE_DLL - STDFLAGS += -tWDMR - endif -endif - -ifeq "$(TEC_UNAME)" "gcc3" - COMPILER = $(GCC3) - TEC_CC = gcc - ifdef USE_OPENGL - STDDEFS += -DUSE_OPENGL32 - endif -endif - -ifeq "$(TEC_UNAME)" "gcc4" - COMPILER = $(GCC4) - TEC_CC = gcc - ifdef USE_OPENGL - STDDEFS += -DUSE_OPENGL32 - endif -endif - -ifeq "$(TEC_UNAME)" "mingw3" - COMPILER = $(MINGW3) - TEC_CC = gcc - OLD_OPENGL = Yes -endif - -ifeq "$(TEC_UNAME)" "mingw4" - COMPILER = $(MINGW4) - TEC_CC = gcc - OLD_OPENGL = Yes -endif - -ifeq "$(TEC_UNAME)" "dllg4" - # USE_DLL is unused by gcc but we define it anyway - USE_DLL = Yes - COMPILER = $(GCC4) - TEC_CC = gcc - ifdef USE_OPENGL - STDDEFS += -DUSE_OPENGL32 - endif -endif - -ifeq "$(TEC_UNAME)" "dllw4" - # USE_DLL is unused by gcc but we define it anyway - USE_DLL = Yes - COMPILER = $(MINGW4) - TEC_CC = gcc - OLD_OPENGL = Yes -endif - -ifeq "$(TEC_CC)" "gcc" - WIN_OTHER = YES - ifneq "$(findstring mingw, $(COMPILER))" "" - BIN = $(COMPILER)/bin/ - endif - CC = $(BIN)gcc - CPPC = $(BIN)g++ - LIBC = $(BIN)ar - RCC = $(BIN)windres -O coff -o - ifndef LINKER - ifneq "$(findstring .cpp, $(SRC))" "" - LINKER := $(CPPC) - else - LINKER := $(CC) - endif - endif - RANLIB = $(BIN)ranlib - ifneq "$(findstring mingw, $(COMPILER))" "" - STDINCS = $(COMPILER)/include - STDLIBDIR = -L$(COMPILER)/lib - endif - STDFLAGS += -Wall - DEBUGFLAGS := -g - OPTFLAGS := -O2 - OBJEXT=o - LIBEXT=a - ifeq ($(MAKETYPE), APP) - STDLFLAGS = -Wl,-subsystem,$(APPTYPE) - else - ifeq ($(MAKETYPE), DLL) - STDLFLAGS = - else - STDLFLAGS = r - endif - endif -endif - -ifdef DBG - STDFLAGS += $(DEBUGFLAGS) - STDDEFS += -DDEBUG -else - STDDEFS += -DNDEBUG - ifdef OPT - STDFLAGS += $(OPTFLAGS) - endif -endif - -# allows an extra configuration file. -ifdef EXTRA_CONFIG -include $(EXTRA_CONFIG) -endif - -.PHONY: system-check -system-check: - ifndef TEC_UNAME - @echo ''; echo 'Tecmake: check failed, TEC_UNAME not defined.'; echo ''; - @exit 1; - endif - ifndef TEC_WIN32 - ifndef TEC_WIN64 - @echo ''; echo 'Tecmake: check failed, TEC_UNAME not recognized.'; echo ''; - @exit 1; - endif - endif - ifdef CHECK_GDIPLUS - ifdef WIN_OTHER - @echo ''; echo 'Tecmake: check failed, GDI+ NOT available in this system.'; echo ''; - @exit 1; - endif - endif - - -#---------------------------------# -# Tecgraf Libraries Location -TECTOOLS_HOME ?= ../.. - -IUP ?= $(TECTOOLS_HOME)/iup -CD ?= $(TECTOOLS_HOME)/cd -IM ?= $(TECTOOLS_HOME)/im -LUA ?= $(TECTOOLS_HOME)/lua -LUA51 ?= $(TECTOOLS_HOME)/lua5.1 -LUA52 ?= $(TECTOOLS_HOME)/lua52 - - -#---------------------------------# -# Pre-defined libraries - -# Library order: -# user + iupcd + cd + iup + motif + X -# Library path order is reversed - -ifdef USE_LUA - LUA_SUFFIX ?= - LIBLUASUFX := 3 -endif - -ifdef USE_LUA4 - LUA_SUFFIX ?= 4 - LIBLUASUFX := 4 - override USE_LUA = Yes - LUA := $(LUA4) -endif - -ifdef USE_LUA5 - LUA_SUFFIX ?= 5 - LIBLUASUFX := 5 - override USE_LUA = Yes - LUA := $(LUA5) -endif - -ifdef USE_LUA50 - LUA_SUFFIX ?= 50 - LIBLUASUFX := 5 - override USE_LUA = Yes - LUA := $(LUA50) - NO_LUALIB := Yes -endif - -ifdef USE_LUA51 - LUA_SUFFIX ?= 5.1 - LIBLUASUFX := 51 - override USE_LUA = Yes - LUA := $(LUA51) - NO_LUALIB := Yes -endif - -ifdef USE_LUA52 - LUA_SUFFIX ?= 52 - LIBLUASUFX := 52 - override USE_LUA = Yes - LUA := $(LUA52) - NO_LUALIB := Yes -endif - -ifdef USE_IUP3 - override USE_IUP = Yes -# Inside Tecgraf only -# IUP := $(IUP)3 -endif - -ifdef USE_IUPBETA - IUP := $(IUP)/beta -endif - -ifdef USE_CDBETA - CD := $(CD)/beta -endif - -ifdef USE_IMBETA - IM := $(IM)/beta -endif - -ifdef USE_GLUT - override USE_OPENGL = Yes - LIBS += glut32 - LDIR += $(GLUT)/lib - STDINCS += $(GLUT)/include -endif - -ifdef USE_GDK - override USE_GTK = Yes -endif - -ifdef USE_IUPCONTROLS - override USE_CD = Yes - override USE_IUP = Yes - ifdef USE_IUPLUA - LIBS += iupluacontrols$(LIBLUASUFX) - override USE_CDLUA = Yes - endif - LIBS += iupcontrols -endif - -ifdef USE_IMLUA - override USE_IM = Yes - LIBS += imlua$(LIBLUASUFX) -endif - -ifdef USE_CDLUA - override USE_CD = Yes - LIBS += cdlua$(LIBLUASUFX) -endif - -ifdef USE_IUPLUA - override USE_IUP = Yes - ifdef USE_CD - LIBS += iupluacd$(LIBLUASUFX) - endif - ifdef USE_OPENGL - LIBS += iupluagl$(LIBLUASUFX) - endif - LIBS += iuplua$(LIBLUASUFX) -endif - -ifdef USE_LUA - ifndef NO_LUALIB - LIBS += lualib$(LUA_SUFFIX) - endif - LIBS += lua$(LUA_SUFFIX) - - LUA_LIB ?= $(LUA)/lib/$(TEC_UNAME) - LDIR += $(LUA_LIB) - - LUA_INC ?= $(LUA)/include - INCLUDES += $(LUA_INC) - - LUA_BIN ?= $(LUA)/bin/$(TEC_SYSNAME) - BIN2C := $(LUA_BIN)/bin2c$(LUA_SUFFIX) - LUAC := $(LUA_BIN)/luac$(LUA_SUFFIX) - LUABIN := $(LUA_BIN)/lua$(LUA_SUFFIX) -endif - -ifdef USE_IUP - ifdef USE_CD - LIBS += iupcd - endif - ifdef USE_GTK - LIBS += iupgtk - else - LIBS += iup - endif - LDIR += $(IUP)/lib/$(TEC_UNAME) - ifdef USE_OPENGL - LIBS += iupgl - endif - ifdef USE_DLL - ifeq ($(MAKETYPE), APP) - LIBS += iupstub - endif - endif - INCLUDES += $(IUP)/include -endif - -ifdef USE_CD - ifdef USE_GDIPLUS - CHECK_GDIPLUS = Yes - LIBS += cdcontextplus gdiplus - endif - ifdef USE_CAIRO - # To use Cairo with Win32 base driver (NOT for GDK) - # Can NOT be used together with GDI+ - LIBS += cdcairo pangocairo-1.0 cairo - endif - ifdef USE_GDK - LIBS += cdgdk - else - LIBS += cd - endif - LIBS += freetype6 - LDIR += $(CD)/lib/$(TEC_UNAME) - INCLUDES += $(CD)/include -endif - -ifdef USE_IM - LIBS += im - LDIR += $(IM)/lib/$(TEC_UNAME) - INCLUDES += $(IM)/include -endif - -ifdef USE_OPENGL - ifdef OLD_OPENGL - LIBS += glaux glu32 opengl32 - else - LIBS += glu32 opengl32 - endif -endif - -ifdef USE_GTK - STDINCS += $(GTK)/include/atk-1.0 $(GTK)/include/gtk-2.0 $(GTK)/include/cairo $(GTK)/include/pango-1.0 $(GTK)/include/glib-2.0 $(GTK)/lib/glib-2.0/include $(GTK)/lib/gtk-2.0/include - ifeq "$(TEC_CC)" "gcc" - STDFLAGS += -mms-bitfields - endif - LDIR += $(GTK)/lib - LIBS += gtk-win32-2.0 gdk-win32-2.0 gdk_pixbuf-2.0 pango-1.0 pangowin32-1.0 gobject-2.0 gmodule-2.0 glib-2.0 -endif - -ifdef USE_QT - #STDFLAGS += -Zm200 -w34100 -w34189 -Zm200 -w34100 -w34189 -w34100 -w34189 - STDINCS += $(QT)/include $(QT)/include/QtCore $(QT)/include/QtGui $(QT)/include/ActiveQt $(QT)/mkspecs/win32-msvc2005 - STDDEFS += -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_QT3SUPPORT_LIB -DQT3_SUPPORT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT - LDIR += $(QT)/lib - LIBS += QtMain QtGui4 QtCore4 -endif - - -#---------------------------------# -# Building compilation flags that are sets - -# INCLUDES for dependencies, remove references to "c:" and similars -DEPINCS := $(patsubst c:%, /cygdrive/c%, $(INCLUDES)) -DEPINCS := $(patsubst d:%, /cygdrive/d%, $(DEPINCS)) -DEPINCS := $(patsubst x:%, /cygdrive/x%, $(DEPINCS)) -DEPINCS := $(patsubst t:%, /cygdrive/t%, $(DEPINCS)) -DEPINCS := $(addprefix -I, $(DEPINCS)) - -INCLUDES := $(addprefix -I, $(INCLUDES)) -STDINCS := $(addprefix -I, $(STDINCS)) -EXTRAINCS := $(addprefix -I, $(EXTRAINCS)) -DEFINES := $(addprefix -D, $(DEFINES)) - -# For aplications and DLLs -ifneq ($(MAKETYPE), LIB) - LIBS += $(STDLIB) - LIBS := $(addsuffix .$(LIBEXT), $(LIBS)) - - ifeq ($(TEC_CC), vc) - ifdef LDIR - LDIR := $(addprefix -LIBPATH:, $(LDIR)) - endif - - STDLFLAGS += $(LDIR) $(STDLIBDIR) $(LIBS) - endif - - ifeq ($(TEC_CC), bc) - ifdef LDIR - LDIR := $(addprefix -L, $(LDIR)) - endif - endif - - ifeq ($(TEC_CC), wc) - ifdef LDIR - LDIR := $(addprefix LIBP , $(LDIR)) - endif - - LIBS := $(addprefix LIB , $(LIBS)) - - STDLFLAGS += $(LDIR) $(STDLIBDIR) $(LIBS) - endif - - ifeq ($(TEC_CC), gcc) - LIBS := $(addprefix -l, $(LIBS)) - LIBS := $(LIBS:.a=) - ifdef LDIR - LDIR := $(addprefix -L, $(LDIR)) - endif - - STDLFLAGS += $(LDIR) $(STDLIBDIR) $(LIBS) - endif - -endif - - -#---------------------------------# -# Definitions of private variables - -# C, C++ and RC compiler flags -CFLAGS = $(FLAGS) $(STDFLAGS) $(INCLUDES) $(STDINCS) $(EXTRAINCS) $(DEFINES) $(STDDEFS) -CXXFLAGS = $(CPPFLAGS) $(STDFLAGS) $(INCLUDES) $(STDINCS) $(EXTRAINCS) $(DEFINES) $(STDDEFS) -RCFLAGS = $(INCLUDES) $(STDINCS) $(EXTRAINCS) $(DEFINES) $(STDDEFS) - -# Sources with relative path -SOURCES = $(addprefix $(SRCDIR)/, $(SRC)) - -# Target for applications or libraries -ifeq ($(MAKETYPE), APP) - TARGET := $(TARGETEXE) -else - ifeq ($(MAKETYPE), DLL) - TARGET := $(TARGETDLL) $(TARGETLIB) $(TARGETDIR)/$(TARGETNAME).exp - else - TARGET := $(TARGETLIB) - endif -endif - -# OBJ: list of .o, without path -# OBJS: list of .o with relative path -OBJ = $(notdir $(SRC)) -OBJ := $(OBJ:.c=.$(OBJEXT)) -OBJ := $(OBJ:.cpp=.$(OBJEXT)) -OBJ := $(OBJ:.cxx=.$(OBJEXT)) -OBJ := $(OBJ:.cc=.$(OBJEXT)) -OBJ := $(OBJ:.rc=.res) -OBJS = $(addprefix $(OBJDIR)/, $(OBJ)) - -# Construct VPATH variable -P-SRC = $(dir $(SRC)) -P-SRC += $(dir $(SRCLUA)) -VPATH = .:$(foreach dir,$(P-SRC),$(if $(dir)="./",:$(dir))) - -#---------------------------------# -ifdef LOHPACK - # Pacote LOH unificado com todos scripts Lua precompilados - LOHS := $(LOHDIR)/$(LOHPACK) - LOHDIRS := -else - # LOH: lista dos arquivos .loh, sem path - # LOHS: lista dos arquivos .loh, com path relativo - LO = $(notdir $(SRCLUA)) - LO := $(LO:.lua=$(LO_SUFFIX).lo) - LOS = $(addprefix $(OBJROOT)/, $(LO)) - - LOH = $(notdir $(SRCLUA)) - LOH := $(LOH:.lua=$(LO_SUFFIX).loh) - LOHS = $(addprefix $(LOHDIR)/, $(LOH)) -endif - -#---------------------------------# -# Compiler depedent adjusts - -# CFLAGS: parametros passados ao linker e librarian -LINKFLAGS := $(LFLAGS) $(STDLFLAGS) $(OBJS) $(SLIB) -LIBFLAGS := $(LCFLAGS) $(STDLFLAGS) $(OBJS) $(SLIB) - -ifeq ($(TEC_CC), bc) - ifeq ($(MAKETYPE), APP) - LINKFLAGS = $(LFLAGS) $(STDLFLAGS) $(LDIR) $(STDLIBDIR) $(STARTUP) $(OBJS), $(TARGETEXE), , $(LIBS) $(SLIB), - else - LIBFLAGS = $(LCFLAGS) $(subst /,\\, $(STDLFLAGS) $(addprefix +,$(OBJS) $(SLIB))) - endif -endif - -ifeq ($(TEC_CC), wc) - ifeq ($(MAKETYPE), APP) - LINKFLAGS = $(LFLAGS) $(STDLFLAGS) $(addprefix F , $(OBJS) $(SLIB)) - else - #wlib adds files using "+" as an option - LIBFLAGS := $(LCFLAGS) $(STDLFLAGS) $(addprefix +, $(OBJS) $(SLIB)) - endif -endif - -ifeq ($(TEC_CC), gcc) - ifeq ($(MAKETYPE), APP) - LINKFLAGS = -o $(TARGETEXE) $(OBJS) $(SLIB) $(LFLAGS) $(STDLFLAGS) - endif - ifeq ($(MAKETYPE), DLL) - LINKFLAGS = -shared -o $(TARGETDLL) -Wl,--out-implib=$(TARGETLIB) $(OBJS) $(DEF_FILE) $(SLIB) $(LFLAGS) $(STDLFLAGS) - endif -endif - -#---------------------------------# -# Dynamic Library Build - -.PHONY: dynamic-lib -dynamic-lib: $(TARGETDLL) addmanifest - -$(TARGETDLL) : $(LOHS) $(OBJS) $(EXTRADEPS) $(DEF_FILE) - @echo ''; echo Tecmake: linking $(@F) ... - $(ECHO)$(LINKER) $(LINKFLAGS) - @echo ''; echo 'Tecmake: Dynamic Library ($@) Done'; echo '' - - -#---------------------------------# -# Static Library Build - -.PHONY: static-lib -static-lib: $(TARGETLIB) - -$(TARGETDIR)/$(TARGETNAME).lib : $(LOHS) $(OBJS) $(EXTRADEPS) - @echo ''; echo Tecmake: librarian $(@F) ... - $(ECHO)$(LIBC) $(LIBFLAGS) - @echo ''; echo 'Tecmake: Static Library ($@) Done'; echo '' - -$(TARGETDIR)/lib$(TARGETNAME).a : $(LOHS) $(OBJS) $(EXTRADEPS) - @echo ''; echo Tecmake: librarian $(@F) ... - $(ECHO)$(LIBC) $(ARFLAGS) $@ $(OBJS) $(SLIB) - @echo ''; echo Tecmake: updating lib TOC $(@F) ... - $(ECHO)-$(RANLIB) $@ - @echo ''; echo 'Tecmake: Static Library ($@) Done'; echo '' - - -#---------------------------------# -# Application Build - -.PHONY: application -application: $(TARGETEXE) addmanifest - -$(TARGETEXE) : $(LOHS) $(OBJS) $(EXTRADEPS) - @echo ''; echo Tecmake: linking $(@F) ... - $(ECHO)$(LINKER) $(LINKFLAGS) - @echo ''; echo 'Tecmake: Application ($@) Done.'; echo '' - - -#---------------------------------# -# Application Scripts - -# Nomes dos scripts -SRELEASE = $(SRCDIR)/$(TARGETNAME).bat -EXEC := $(subst /,\,$(TARGETEXE)) - -.PHONY: scripts -ifdef NO_SCRIPTS - scripts: ; -else - scripts: $(SRELEASE) ; -endif - -$(SRELEASE): $(TARGETEXE) - @echo ''; echo 'Tecmake: generating script $(@F)' - @echo '@echo off' > $@ - @echo 'REM Script generated automatically by tecmake v$(VERSION)' >> $@ - @echo '$(EXEC) %*' >> $@ - - -#---------------------------------# -# Directories Creation - -.PHONY: directories -directories: $(OBJDIR) $(TARGETDIR) $(EXTRADIR) $(LOHDIR) - -$(OBJDIR) $(TARGETDIR): - if [ ! -d $@ ] ; then mkdir -p $@ ; fi - -ifdef EXTRADIR - $(EXTRADIR): - if [ ! -d $@ ] ; then mkdir -p $@ ; fi -else - $(EXTRADIR): ; -endif - -ifdef LOHDIR - $(LOHDIR): - if [ ! -d $@ ] ; then mkdir -p $@ ; fi -else - $(LOHDIR): ; -endif - - -#---------------------------------# -# Compilation Rules - -$(OBJDIR)/%.o: $(SRCDIR)/%.c - @echo ''; echo Tecmake: compiling $(<F) ... - $(ECHO)$(CC) -c $(CFLAGS) -o $@ $< - -$(OBJDIR)/%.o: $(SRCDIR)/%.cpp - @echo ''; echo Tecmake: compiling $(<F) ... - $(ECHO)$(CPPC) -c $(CXXFLAGS) -o $@ $< - -$(OBJDIR)/%.o: $(SRCDIR)/%.cxx - @echo ''; echo Tecmake: compiling $(<F) ... - $(ECHO)$(CPPC) -c $(CXXFLAGS) -o $@ $< - -$(OBJDIR)/%.o: $(SRCDIR)/%.cc - @echo ''; echo Tecmake: compiling $(<F) ... - $(ECHO)$(CPPC) -c $(CXXFLAGS) -o $@ $< - -$(OBJDIR)/%.obj: $(SRCDIR)/%.c - @echo ''; echo Tecmake: compiling $(<F) ... - $(ECHO)$(CC) $(CFLAGS) $< - -$(OBJDIR)/%.obj: $(SRCDIR)/%.cpp - @echo ''; echo Tecmake: compiling $(<F) ... - $(ECHO)$(CPPC) $(CXXFLAGS) $< - -$(OBJDIR)/%.obj: $(SRCDIR)/%.cxx - @echo ''; echo Tecmake: compiling $(<F) ... - $(ECHO)$(CPPC) $(CXXFLAGS) $< - -$(OBJDIR)/%.obj: $(SRCDIR)/%.cc - @echo ''; echo Tecmake: compiling $(<F) ... - $(ECHO)$(CPPC) $(CXXFLAGS) $< - -$(OBJDIR)/%.res: $(SRCDIR)/%.rc - @echo ''; echo Tecmake: compiling $(<F) ... - $(ECHO)$(RCC) $@ $(RCFLAGS) $< - -$(LOHDIR)/%.loh: $(OBJROOT)/%.lo - @echo ''; echo Tecmake: generating $(<F) ... - $(ECHO)$(BIN2C) $< > $@ - -$(OBJROOT)/%$(LO_SUFFIX).lo: $(SRCLUADIR)/%.lua - @echo ''; echo Tecmake: compiling $(<F) ... - $(ECHO)$(LUAC) -o $@ $< - -ifdef LOHPACK -$(LOHDIR)/$(LOHPACK): $(SRCLUA) - @echo ''; echo Tecmake: Generating $(<F) ... - $(ECHO)$(LUABIN) $(LUAPRE) $(LUAPREFLAGS) -l $(SRCLUADIR) -o $@ $(SRCLUA) -endif - - -#---------------------------------# -# Rule to add a manifest file to the generted binary -.PHONY: addmanifest -addmanifest: - ifdef NEW_VC_COMPILER - ifeq ($(GEN_MANIFEST), Yes) - @echo ''; echo Tecmake: adding Manifest ... - ifeq ($(MAKETYPE), DLL) - $(ECHO)$(MT) -manifest $(TARGETDLL).manifest "-outputresource:$(TARGETDLL);2" - endif - ifeq ($(MAKETYPE), APP) - $(ECHO)$(MT) -manifest $(TARGETEXE).manifest "-outputresource:$(TARGETEXE);1" - endif - endif - endif - - -#---------------------------------# -# Dependencies - -.PHONY: depend -depend: $(DEPEND) - -$(DEPEND): $(MAKENAME) - ifdef SRC - @echo "" > $(DEPEND) - @which gcc 2> /dev/null 1>&2 ;\ - if [ $$? -eq 0 ]; then \ - echo "Tecmake: Building Dependencies ... (can be slow)" ;\ - g++ $(DEPINCS) $(DEFINES) $(STDDEFS) $(DEPDEFS) -MM $(SOURCES) | \ - sed -e '1,$$s/^\([^ ]*\)\.o/$$(OBJDIR)\/\1.$(OBJEXT)/' > $(DEPEND) ;\ - else \ - echo "" ;\ - echo "Tecmake: error, g++ not found. Dependencies can not be built." ;\ - echo "Must set NO_DEPEND=Yes" ;\ - echo "" ;\ - exit 1 ;\ - fi - endif - -ifdef USE_NODEPEND - NO_DEPEND:=Yes -endif - -################### -ifndef NO_DEPEND -include $(DEPEND) -endif -################### - - -#---------------------------------# -# Management Rules - -.PHONY: clean-dir -clean-dir: - rm -fr $(OBJROOT) $(TARGETROOT) - -# Remove extra files -.PHONY: clean-extra -clean-extra: - rm -f $(DEPEND) $(SRELEASE) - -# Remove Lua object inclusion files -.PHONY: clean-lohs -clean-lohs: - rm -f $(LOS) $(LOHS) - -# Remove object files -.PHONY: clean-obj -clean-obj: - rm -f $(OBJS) - -# Remove target -.PHONY: clean-target -clean-target: - rm -f $(TARGET) - -# Remove target and object files -.PHONY: clean-all-obj -clean-all-obj: - @for d in $(UNAMES); do \ - (cd $(OBJROOT)/$$d; echo $(OBJ) | xargs rm -f) ;\ - done - -# Remove libraries and executables for all platforms -.PHONY: clean-all-target -clean-all-target: - @for d in $(UNAMES); do \ - (rm -f $(TARGETROOT)/$$d/$(TARGETNAME).exe $(TARGETROOT)/$$d/$(TARGETNAME).$(LIBEXT) $(TARGETROOT)/$$d/$(TARGETNAME).dll $(TARGETROOT)/$$d/$(TARGETNAME).exp) ;\ - done - -.PHONY: clean -clean: clean-target clean-obj - -.PHONY: clean-all -clean-all: clean-extra clean-lohs clean-all-target clean-all-obj - -# Rebuild target and object files -.PHONY: rebuild -rebuild: clean-extra clean-lohs clean-obj clean-target tecmake - -# Rebuild target without rebuilding object files -.PHONY: relink -relink: clean-target tecmake - - -#---------------------------------# - -.PHONY: version -version: - @echo "Tecmake Windows Version $(VERSION)" - -#---------------------------------# |