diff options
author | scuri <scuri> | 2010-11-09 13:26:31 +0000 |
---|---|---|
committer | scuri <scuri> | 2010-11-09 13:26:31 +0000 |
commit | a17a4f5f15f041e8da07a1a8d2b67ca5a2e1ea41 (patch) | |
tree | a1af4811f506a92c7f5487cc495d4efde4d83bd3 /src | |
parent | 2957bb05cb822e28ce99c11ab177ae0f3f779ac3 (diff) |
*** empty log message ***
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile | 4 | ||||
-rw-r--r-- | src/tecmake.mak | 1358 | ||||
-rw-r--r-- | src/tecmakewin.mak | 1384 |
3 files changed, 2 insertions, 2744 deletions
diff --git a/src/Makefile b/src/Makefile index fc69f09..7db1e01 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,7 +1,7 @@ ifeq ($(OS), Windows_NT) - TECMAKE_CMD = $(MAKE) --no-print-directory -f tecmakewin.mak TEC_UNAME=$(TEC_UNAME) + TECMAKE_CMD = $(MAKE) --no-print-directory -f ../tecmakewin.mak TEC_UNAME=$(TEC_UNAME) else - TECMAKE_CMD = $(MAKE) --no-print-directory -f tecmake.mak + TECMAKE_CMD = $(MAKE) --no-print-directory -f ../tecmake.mak endif .PHONY: do_all cd_freetype cd_ftgl cd cdx11 cdgdk cd_pdflib cdpdf cdgl cdcontextplus cdcairo cdlua3 cdluapdf3 cdluagl3 cdlua5 cdluapdf5 cdluagl5 cdluacontextplus5 cdluacairo5 cdluaim5 diff --git a/src/tecmake.mak b/src/tecmake.mak deleted file mode 100644 index 2426d5b..0000000 --- a/src/tecmake.mak +++ /dev/null @@ -1,1358 +0,0 @@ -#-------------------------------------------------------------------------# -#- Tecmake (POSIX 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 - - -#---------------------------------# -# System Variables Definitions - -ifndef TEC_UNAME - # Base Defintions - TEC_SYSNAME:=$(shell uname -s) - TEC_SYSVERSION:=$(shell uname -r|cut -f1 -d.) - TEC_SYSMINOR:=$(shell uname -r|cut -f2 -d.) - TEC_SYSARCH:=$(shell uname -m) - - # Fixes - ifeq ($(TEC_SYSNAME), SunOS) - TEC_SYSARCH:=$(shell uname -p) - endif - ifeq ($(TEC_SYSNAME), IRIX) - TEC_SYSARCH:=$(shell uname -p) - endif - ifeq ($(TEC_SYSNAME), FreeBSD) - TEC_SYSMINOR:=$(shell uname -r|cut -f2 -d.|cut -f1 -d-) - endif - ifeq ($(TEC_SYSNAME), AIX) - TEC_SYSVERSION:=$(shell uname -v) - TEC_SYSMINOR:=$(shell uname -r) - TEC_SYSARCH:=ppc - endif - ifeq ($(TEC_SYSNAME), Darwin) - TEC_SYSNAME:=MacOS - TEC_SYSVERSION:=$(shell sw_vers -productVersion|cut -f1 -d.) - TEC_SYSMINOR:=$(shell sw_vers -productVersion|cut -f2 -d.) - TEC_SYSARCH:=$(shell uname -p) - endif - - ifeq ($(TEC_SYSARCH), i686) - TEC_SYSARCH:=x86 - endif - ifeq ($(TEC_SYSARCH), i386) - TEC_SYSARCH:=x86 - endif - ifeq ($(TEC_SYSARCH), powerpc) - TEC_SYSARCH:=ppc - endif - ifeq ($(TEC_SYSARCH), x86_64) - TEC_SYSARCH:=x64 - endif - ifeq ($(TEC_SYSARCH), amd64) - TEC_SYSARCH:=x64 - endif - - # Compose - TEC_SYSRELEASE:=$(TEC_SYSVERSION).$(TEC_SYSMINOR) - TEC_UNAME:=$(TEC_SYSNAME)$(TEC_SYSVERSION)$(TEC_SYSMINOR) - - # Cygwin - ifneq ($(findstring CYGWIN, $(TEC_SYSNAME)), ) - TEC_SYSNAME:=CYGWIN - TEC_UNAME:=cygw$(TEC_SYSVERSION)$(TEC_SYSMINOR) - endif - - # Linux 2.4 and GCC 3.x - ifeq ($(TEC_UNAME), Linux24) - GCCVER:=$(shell gcc -dumpversion|cut -f1 -d.) - ifeq ($(GCCVER), 3) - TEC_UNAME:=$(TEC_UNAME)g3 - endif - endif - - # Linux 2.6 and GCC 4.x - ifeq ($(TEC_UNAME), Linux26) - GCCVER:=$(shell gcc -dumpversion|cut -f1 -d.) - ifeq ($(GCCVER), 4) - TEC_UNAME:=$(TEC_UNAME)g4 - endif - endif - - # Linux and PowerPC - ifeq ($(TEC_SYSNAME), Linux) - ifeq ($(TEC_SYSARCH), ppc) - TEC_UNAME:=$(TEC_UNAME)ppc - endif - endif - - # 64-bits Linux - ifeq ($(TEC_SYSNAME), Linux) - ifeq ($(TEC_SYSARCH), x64) - BUILD_64=Yes - TEC_UNAME:=$(TEC_UNAME)_64 - endif - - ifeq ($(TEC_SYSARCH), ia64) - BUILD_64=Yes - TEC_UNAME:=$(TEC_UNAME)_ia64 - endif - endif - - # 64-bits FreeBSD - ifeq ($(TEC_SYSNAME), FreeBSD) - ifeq ($(TEC_SYSARCH), x64) - BUILD_64=Yes - TEC_UNAME:=$(TEC_UNAME)_64 - endif - endif - - # Solaris and Intel - ifeq ($(TEC_SYSNAME), SunOS) - ifeq ($(TEC_SYSARCH) , x86) - TEC_UNAME:=$(TEC_UNAME)x86 - endif - endif - - # MacOS and Intel - ifeq ($(TEC_SYSNAME), MacOS) - ifeq ($(TEC_SYSMINOR), 6) - TEC_SYSARCH:=x64 - else - ifeq ($(TEC_SYSARCH), x86) - TEC_UNAME:=$(TEC_UNAME)x86 - endif - endif - endif -endif - - -#---------------------------------# -# System Info -.PHONY: sysinfo -sysinfo: - @echo ''; echo 'Tecmake: System Info' - @echo 'TEC_SYSNAME = $(TEC_SYSNAME)' - @echo 'TEC_SYSVERSION = $(TEC_SYSVERSION)' - @echo 'TEC_SYSMINOR = $(TEC_SYSMINOR)' - @echo 'TEC_SYSARCH = $(TEC_SYSARCH)' - @echo 'TEC_UNAME = $(TEC_UNAME)' - @echo 'GTK_BASE = $(GTK_BASE)' - @echo 'X11_LIB = $(X11_LIB)' - @echo 'X11_INC = $(X11_INC)' - @echo 'MOTIF_LIB = $(MOTIF_LIB)' - @echo 'MOTIF_INC = $(MOTIF_INC)' - @echo 'GLUT_LIB = $(GLUT_LIB)' - @echo 'GLUT_INC = $(GLUT_INC)' - @echo 'OPENGL_LIB = $(OPENGL_LIB)' - @echo 'OPENGL_INC = $(OPENGL_INC)' - @echo '' - - -#---------------------------------# -# Known Platforms - -UNAMES = Linux24 Linux24g3 Linux24g3_64 Linux26 Linux26_64 Linux26g4 Linux26g4_64 Linux26_ia64 FreeBSD54 SunOS57 SunOS58 SunOS510 SunOS510_x86 AIX43 IRIX65 IRIX6465 - - -#---------------------------------# -# 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 -ifdef BUILD_64 - TEC_WORDSIZE = TEC_64 -else - TEC_WORDSIZE = TEC_32 -endif -endif - -# Itanium Exception -ifeq ($(TEC_SYSARCH), ia64) - TEC_BYTEORDER = TEC_LITTLEENDIAN - TEC_WORDSIZE = TEC_64 -endif - - -#---------------------------------# -# Compilation Flags -STDFLAGS := -Wall -STDDEFS := -DTEC_UNAME=$(TEC_UNAME) -DTEC_SYSNAME=$(TEC_SYSNAME) -D$(TEC_SYSNAME)=$(TEC_SYSRELEASE) -D$(TEC_BYTEORDER) -D$(TEC_WORDSIZE) -DFUNCPROTO=15 -STDINCS := -OPTFLAGS := -O2 -STDLFLAGS := r -DEBUGFLAGS := -g -STDLDFLAGS := -shared -DLIBEXT := so -DLIBPRE := lib -APPEXT := - -ifneq ($(findstring Linux24, $(TEC_UNAME)), ) - NO_GTK_DEFAULT = Yes -endif -ifeq ($(TEC_UNAME), Linux26) - NO_GTK_DEFAULT = Yes -endif -ifeq ($(TEC_UNAME), Linux26_64) - NO_GTK_DEFAULT = Yes -endif - -ifndef NO_GTK_DEFAULT - ifneq ($(findstring cygw, $(TEC_UNAME)), ) - GTK_DEFAULT = Yes - endif - ifneq ($(findstring Linux, $(TEC_UNAME)), ) - GTK_DEFAULT = Yes - endif - ifneq ($(findstring MacOS, $(TEC_UNAME)), ) - GTK_DEFAULT = Yes - endif - ifneq ($(findstring FreeBSD, $(TEC_UNAME)), ) - GTK_DEFAULT = Yes - endif -endif - -#---------------------------------# -# Tools - -CC := $(TEC_TOOLCHAIN)gcc -CPPC := $(TEC_TOOLCHAIN)g++ -FF := $(TEC_TOOLCHAIN)g77 -RANLIB := $(TEC_TOOLCHAIN)ranlib -AR := $(TEC_TOOLCHAIN)ar -DEBUGGER := $(TEC_TOOLCHAIN)gdb -RCC := $(TEC_TOOLCHAIN)windres - -# Remote build script -REMOTE = $(TECMAKE_HOME)/remote - -# Packed LOHs script -LUAPRE = $(TECMAKE_HOME)/luapre.lua - - -#---------------------------------# -# 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) - -DEPEND := $(TARGETNAME).dep - -ifdef DEPENDDIR - DEPEND := $(DEPENDDIR)/$(TARGETNAME).dep.$(TEC_UNAME) -endif - -ifeq ($(MAKETYPE), APP) - TARGETROOT ?= $(PROJDIR)/bin -else - TARGETROOT ?= $(PROJDIR)/lib -endif - -ifneq ($(PROJNAME), $(TARGETNAME)) - OBJROOT := $(OBJROOT)/$(TARGETNAME) -endif - -ifdef DBG - STDFLAGS += $(DEBUGFLAGS) - STDDEFS += -DDEBUG -else - STDDEFS += -DNDEBUG - ifdef OPT - STDFLAGS += $(OPTFLAGS) - STRIP ?= Yes - endif -endif - -ifdef BUILD_64 - ifneq ($(findstring SunOS, $(TEC_UNAME)), ) - USE_CC = Yes - BUILD_64_DIR = Yes - endif - ifneq ($(findstring AIX, $(TEC_UNAME)), ) - USE_CC = Yes - BUILD_64_DIR = Yes - endif - ifneq ($(findstring IRIX, $(TEC_UNAME)), ) - USE_CC = Yes - BUILD_64_DIR = Yes - endif -endif - -ifdef USE_CC - CC := cc - CPPC := CC - STDFLAGS = - UNAMES := $(UNAMES_CC) - ifdef USE_CC_DIR - TEC_UNAME := $(TEC_UNAME)cc - endif -endif - -ifdef BUILD_64 - ifdef BUILD_64_DIR - TEC_UNAME := $(TEC_UNAME)_64 - endif -endif - -TEC_UNAME_DIR ?= $(TEC_UNAME) -TEC_UNAME_LIB_DIR ?= $(TEC_UNAME) -ifdef DBG - ifdef DBG_LIB_DIR - TEC_UNAME_LIB_DIR := $(TEC_UNAME_DIR)d - endif - ifdef DBG_DIR - TEC_UNAME_DIR := $(TEC_UNAME_DIR)d - endif -endif - -OBJDIR := $(OBJROOT)/$(TEC_UNAME_DIR) -TARGETDIR := $(TARGETROOT)/$(TEC_UNAME_DIR) - -# Change linker if any C++ source -ifndef LINKER - ifneq "$(findstring .cpp, $(SRC))" "" - LINKER := $(CPPC) - LD := $(CPPC) - else - LINKER := $(CC) - LD := $(CC) - endif -endif - -ifdef NO_ECHO - ECHO:=@ -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) - LOH_SUBDIR ?= le64 - 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) - LO_SUFFIX ?= _le64 - else - LO_SUFFIX ?= - endif - endif -endif - - - -#---------------------------------# -# Platform specific variables - -# Definitions for X11 -X11_LIBS := Xmu Xt Xext X11 -#X11_LIB := -#X11_INC := #include <X11/X.h> - -# Definitions for OpenGL -OPENGL_LIBS := GLU GL -#OPENGL_LIB := -#OPENGL_INC := #include <GL/gl.h> and possibly -MOTIFGL_LIB := GLw #include <GL/GLwMDrawA.h> - -# Definitions for Motif -#MOTIF_LIB := -#MOTIF_INC := #include <Xm/Xm.h> - -# Definitions for GLUT -#GLUT_LIB := -#GLUT_INC := - -# Definitions for GTK -ifdef GTK_BASE - GTK := $(GTK_BASE) -else - ifneq ($(findstring MacOS, $(TEC_UNAME)), ) - # Option 1 - Fink GTK port - GTK = /sw - # Option 3 - GTK-OSX Framework - # GTK := /Users/cpts/gtk/inst - else - GTK = /usr - endif -endif - -ifneq ($(findstring Linux, $(TEC_UNAME)), ) - UNIX_LINUX = Yes - ifdef BUILD_64 - ifeq ($(TEC_SYSARCH), ia64) - STDFLAGS += -fPIC - X11_LIB := /usr/X11R6/lib - else - STDFLAGS += -m64 -fPIC - X11_LIB := /usr/X11R6/lib64 - endif - else - X11_LIB := /usr/X11R6/lib - endif - X11_INC := /usr/X11R6/include - MOTIFGL_LIB := -endif - -ifneq ($(findstring IRIX, $(TEC_UNAME)), ) - UNIX_POSIX = Yes - LD = ld - STDLDFLAGS := -elf -shared -rdata_shared -soname lib$(TARGETNAME).so - RANLIB := /bin/true - X11_LIBS := Xmu Xt X11 - ifdef BUILD_64 - ifdef USE_CC - STDFLAGS += -64 -KPIC - STDLDFLAGS += -64 - LINKER += -64 - endif - X11_LIB := /usr/lib64 - MOTIF_LIB := /usr/Motif-2.1/lib64 - else - X11_LIB := /usr/lib32 - MOTIF_LIB := /usr/Motif-2.1/lib32 - endif - MOTIF_INC = /usr/Motif-2.1/include -endif - -ifneq ($(findstring AIX, $(TEC_UNAME)), ) - UNIX_POSIX = Yes - NO_DYNAMIC ?= Yes - ifdef BUILD_64 - ifdef USE_CC - STDFLAGS += -q64 # to compilers C and C++ - STDLFLAGS := -X64 $(STDLFLAGS) # to librarian - STDLDFLAGS += -64 - LINKER += -q64 # to linker - endif - endif -endif - -ifneq ($(findstring HP-UX, $(TEC_UNAME)), ) - UNIX_POSIX = Yes - NO_DYNAMIC ?= Yes - MOTIF_INC := /usr/include/Motif2.1 - X11_LIBS := Xt Xext X11 - OPENGL_LIB := /opt/graphics/OpenGL/lib - OPENGL_INC := /opt/graphics/OpenGL/include - STDDEFS := -DTEC_UNAME=$(TEC_UNAME) -DTEC_SYSNAME=$(TEC_SYSNAME) -D$(TEC_BYTEORDER) -D$(TEC_WORDSIZE) -DFUNCPROTO=15 - CC := aCC - CPPC := aCC - LINKER := aCC -endif - -ifneq ($(findstring SunOS, $(TEC_UNAME)), ) - UNIX_POSIX = Yes - LD = ld - STDLDFLAGS := -G - X11_INC := /usr/openwin/share/include - X11_LIB := /usr/openwin/lib - MOTIF_INC := /usr/dt/share/include - MOTIF_LIB := /usr/dt/lib - OPENGL_INC := /usr/openwin/share/include/X11 - GLUT_LIB := /usr/local/glut-3.7/lib/glut - GLUT_INC := /usr/local/glut-3.7/include - ifdef BUILD_64 - ifdef USE_CC - STDFLAGS += -xarch=v9 -KPIC - # have to force these PATHs because of a conflict with standard PATHs - STDLDFLAGS += -64 -L/usr/lib/64 -L/usr/ucblib/sparcv9 - LINKER += -xarch=v9 - endif - endif -endif - -ifneq ($(findstring MacOS, $(TEC_UNAME)), ) - UNIX_BSD = Yes - X11_LIBS := Xmu Xp Xt Xext X11 - X11_LIB := /usr/X11R6/lib - X11_INC := /usr/X11R6/include - MOTIF_INC := /usr/OpenMotif/include - MOTIF_LIB := /usr/OpenMotif/lib - ifdef BUILD_DYLIB - STDLDFLAGS := -dynamiclib -Wl -fno-common -headerpad_max_install_names -undefined dynamic_lookup -install_name lib$(TARGETNAME).dylib - DLIBEXT := dylib - STDFLAGS += -fno-common - else - STDLDFLAGS := -bundle -undefined dynamic_lookup - endif - ifdef USE_OPENGL - ifeq ($(TEC_SYSMINOR), 5) - #Darwin9 Only - OpenGL bug fix for Fink, when the message bellow appears - # ld: cycle in dylib re-exports with /usr/X11R6/lib/libGL.dylib - LFLAGS += -dylib_file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib - endif - endif -endif - -ifneq ($(findstring FreeBSD, $(TEC_UNAME)), ) - BSD = Yes - X11_LIB := /usr/X11R6/lib - X11_INC := /usr/X11R6/include - ifeq ($(TEC_SYSARCH), x64) - STDFLAGS += -fPIC - endif -endif - -#---------------------------------# -# Allows an extra configuration file. -ifdef EXTRA_CONFIG -include $(EXTRA_CONFIG) -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 - ifndef IUP3_BUILD -# IUP := $(IUP)3 - endif -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 -endif - -ifdef USE_GDK - override USE_GTK = Yes -endif - -ifdef USE_IUPCONTROLS - override USE_CD = Yes - override USE_IUP = Yes - ifdef USE_IUPLUA - ifdef USE_STATIC - SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiupluacontrols$(LIBLUASUFX).a - else - LIBS += iupluacontrols$(LIBLUASUFX) - endif - override USE_CDLUA = Yes - endif - ifdef USE_STATIC - SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiupcontrols.a - else - LIBS += iupcontrols - endif -endif - -ifdef USE_IMLUA - override USE_IM = Yes - ifdef USE_STATIC - SLIB += $(IM)/lib/$(TEC_UNAME_LIB_DIR)/libimlua$(LIBLUASUFX).a - else - LIBS += imlua$(LIBLUASUFX) - endif -endif - -ifdef USE_CDLUA - override USE_CD = Yes - ifdef USE_STATIC - SLIB += $(CD)/lib/$(TEC_UNAME_LIB_DIR)/libcdlua$(LIBLUASUFX).a - else - LIBS += cdlua$(LIBLUASUFX) - endif -endif - -ifdef USE_IUPLUA - override USE_IUP = Yes - ifdef USE_STATIC - ifdef USE_CD - SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiupluacd$(LIBLUASUFX).a - endif - ifdef USE_OPENGL - SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiupluagl$(LIBLUASUFX).a - endif - SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiuplua$(LIBLUASUFX).a - else - ifdef USE_CD - LIBS += iupluacd$(LIBLUASUFX) - endif - ifdef USE_OPENGL - LIBS += iupluagl$(LIBLUASUFX) - endif - LIBS += iuplua$(LIBLUASUFX) - endif -endif - -ifdef USE_LUA - LUA_LIB ?= $(LUA)/lib/$(TEC_UNAME_LIB_DIR) - ifdef USE_STATIC - ifndef NO_LUALIB - SLIB += $(LUA_LIB)/liblualib$(LUA_SUFFIX).a - endif - SLIB += $(LUA_LIB)/liblua$(LUA_SUFFIX).a - else - ifndef NO_LUALIB - LIBS += lualib$(LUA_SUFFIX) - endif - ifndef NO_LUALINK - LIBS += lua$(LUA_SUFFIX) - LDIR += $(LUA_LIB) - else - ifneq ($(findstring cygw, $(TEC_UNAME)), ) - LIBS += lua$(LUA_SUFFIX) - LDIR += $(LUA_LIB) - endif - endif - endif - - LUA_INC ?= $(LUA)/include - INCLUDES += $(LUA_INC) - - LUA_BIN ?= $(LUA)/bin/$(TEC_UNAME) - BIN2C := $(LUA_BIN)/bin2c$(LUA_SUFFIX) - LUAC := $(LUA_BIN)/luac$(LUA_SUFFIX) - LUABIN := $(LUA_BIN)/lua$(LUA_SUFFIX) -endif - -ifdef USE_IUP - IUP_SUFFIX ?= - ifdef USE_IUP3 - ifdef GTK_DEFAULT - ifdef USE_MOTIF - IUP_SUFFIX := mot - else - override USE_GTK = Yes - override USE_GDK = Yes - endif - else - ifdef USE_GTK - IUP_SUFFIX := gtk - else - override USE_MOTIF = Yes - endif - endif - else - override USE_MOTIF = Yes - endif - ifdef USE_STATIC - ifdef USE_CD - SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiupcd.a - endif - ifdef USE_OPENGL - SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiupgl.a - endif - SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiup$(IUP_SUFFIX).a - else - ifdef USE_CD - LIBS += iupcd - endif - ifdef USE_OPENGL - LIBS += iupgl - endif - LIBS += iup$(IUP_SUFFIX) - LDIR += $(IUP)/lib/$(TEC_UNAME_LIB_DIR) - endif - INCLUDES += $(IUP)/include -endif - -ifdef USE_CD - CD_SUFFIX ?= - override USE_X11 = Yes - ifndef USE_CD_OLD - ifdef GTK_DEFAULT - ifdef USE_MOTIF - CD_SUFFIX := x11 - endif - else - ifdef USE_GTK - CD_SUFFIX := gdk - endif - endif - endif - ifdef USE_STATIC - ifdef USE_XRENDER - CHECK_XRENDER = Yes - SLIB += $(CD)/lib/$(TEC_UNAME_LIB_DIR)/libcdcontextplus.a - LIBS += Xrender Xft - endif - ifdef USE_CAIRO - # To use Cairo with X11 base driver (NOT for GDK) - # Can NOT be used together with XRender - SLIB += $(CD)/lib/$(TEC_UNAME_LIB_DIR)/libcdcairo.a - LIBS += pangocairo-1.0 cairo - endif - SLIB += $(CD)/lib/$(TEC_UNAME_LIB_DIR)/libcd$(CD_SUFFIX).a - ifndef USE_GTK - # Freetype is already included in GTK - SLIB += $(CD)/lib/$(TEC_UNAME_LIB_DIR)/libfreetype.a - endif - else - ifdef USE_XRENDER - CHECK_XRENDER = Yes - LIBS += cdcontextplus - LIBS += Xrender Xft - endif - ifdef USE_CAIRO - # To use Cairo with X11 base driver (NOT for GDK) - # Can NOT be used together with XRender - LIBS += cdcairo - LIBS += pangocairo-1.0 cairo - endif - LIBS += cd$(CD_SUFFIX) - LDIR += $(CD)/lib/$(TEC_UNAME_LIB_DIR) - ifndef USE_GTK - # Freetype is already included in GTK - ifneq ($(findstring cygw, $(TEC_UNAME)), ) - LIBS += freetype-6 - else - LIBS += freetype - endif - endif - endif - INCLUDES += $(CD)/include -endif - -ifdef USE_IM - ifdef USE_STATIC - SLIB += $(IM)/lib/$(TEC_UNAME_LIB_DIR)/libim.a - else - LIBS += im - LDIR += $(IM)/lib/$(TEC_UNAME_LIB_DIR) - endif - INCLUDES += $(IM)/include -endif - -ifdef USE_GLUT - LIBS += glut - LDIR += $(GLUT_LIB) - STDINCS += $(GLUT_INC) -endif - -ifdef USE_OPENGL - override USE_X11 = Yes - ifdef USE_MOTIF - ifndef USE_IUP3 - LIBS += $(MOTIFGL_LIB) - endif - endif - LIBS += $(OPENGL_LIBS) - LDIR += $(OPENGL_LIB) - STDINCS += $(OPENGL_INC) -endif - -ifdef USE_MOTIF - override USE_X11 = Yes - LIBS += Xm - LDIR += $(MOTIF_LIB) - STDINCS += $(MOTIF_INC) - ifneq ($(findstring Linux, $(TEC_UNAME)), ) - X11_LIBS := Xpm $(X11_LIBS) - endif - ifneq ($(findstring cygw, $(TEC_UNAME)), ) - X11_LIBS := Xpm $(X11_LIBS) - endif -endif - -ifdef USE_GTK - ifdef USE_PKGCONFIG - # get compile/link flags via pkg-config - STDFLAGS += $(shell pkg-config --cflags gtk+-2.0 gdk-2.0) - LIBS += $(shell pkg-config --libs gtk+-2.0 gdk-2.0) - else - CHECK_GTK = Yes - ifneq ($(findstring MacOS, $(TEC_UNAME)), ) - # Option 1 - Fink GTK port - LDIR += $(GTK)/lib - override USE_X11 = Yes - LIBS += gtk-x11-2.0 gdk-x11-2.0 pangox-1.0 - # Option 2 - Imendio Framework - # STDINCS += /Library/Frameworks/Gtk.framework/Headers - # STDINCS += /Library/Frameworks/GLib.framework/Headers - # STDINCS += /Library/Frameworks/Cairo.framework/Headers - # LFLAGS += -framework Gtk - # Option 3 - GTK-OSX Framework - # LDIR += $(GTK)/lib - # LFLAGS += -framework Carbon - # LIBS += gtk-quartz-2.0 gdk-quartz-2.0 pangoft2-1.0 - - LIBS += freetype - else - # if not the default, then include it for linker - # must be before the default - ifdef GTK_BASE - LDIR += $(GTK)/lib - endif - override USE_X11 = Yes - LIBS += gtk-x11-2.0 gdk-x11-2.0 pangox-1.0 - endif - - LIBS += gdk_pixbuf-2.0 pango-1.0 gobject-2.0 gmodule-2.0 glib-2.0 - STDINCS += $(GTK)/include/atk-1.0 $(GTK)/include/gtk-2.0 $(GTK)/include/cairo $(GTK)/include/pango-1.0 $(GTK)/include/glib-2.0 - - ifeq ($(TEC_SYSARCH), x64) - STDINCS += $(GTK)/lib64/glib-2.0/include $(GTK)/lib64/gtk-2.0/include - # Add also these to avoid errors in systems that lib64 does not exists - STDINCS += $(GTK)/lib/glib-2.0/include $(GTK)/lib/gtk-2.0/include - else - ifeq ($(TEC_SYSARCH), ia64) - STDINCS += $(GTK)/lib64/glib-2.0/include $(GTK)/lib64/gtk-2.0/include - else - STDINCS += $(GTK)/lib/glib-2.0/include $(GTK)/lib/gtk-2.0/include - endif - endif - ifneq ($(findstring FreeBSD, $(TEC_UNAME)), ) - STDINCS += /lib/X11R6/include/gtk-2.0 - endif - endif -endif - -ifdef USE_QT - override USE_X11 = Yes - LIBS += QtGui QtCore - QT_BASE_INC := /usr/include/qt4 - STDINCS += $(QT_BASE_INC) $(QT_BASE_INC)/QtCore $(QT_BASE_INC)/QtGui - STDDEFS += -DQT_DLL -DQT_QT3SUPPORT_LIB -DQT3_SUPPORT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -endif - -ifdef USE_X11 - LIBS += $(X11_LIBS) - LDIR += $(X11_LIB) - STDINCS += $(X11_INC) -endif - -LIBS += m - -ifneq ($(findstring cygw, $(TEC_UNAME)), ) - WIN_OTHER := Yes - - # 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)) - - DLIBEXT := dll - APPEXT := .exe - # Use the cyg prefix to indicate that it is a Cygwin Posix DLL - DLIBPRE := cyg - - STDLDFLAGS += -Wl,--out-implib=$(TARGETDIR)/lib$(TARGETNAME).dll.a -endif - -#---------------------------------# -# Building compilation flags that are sets - -DEPINCS ?= $(INCLUDES) -DEPINCS := $(addprefix -I, $(DEPINCS)) - -INCLUDES := $(addprefix -I, $(INCLUDES)) -STDINCS := $(addprefix -I, $(STDINCS)) -EXTRAINCS := $(addprefix -I, $(EXTRAINCS)) -DEFINES := $(addprefix -D, $(DEFINES)) - -LIBS := $(addprefix -l, $(LIBS)) -ifdef LDIR - LDIR := $(addprefix -L, $(LDIR)) -endif - - -#---------------------------------# -# Definitions of private variables - -# Library flags for application and dynamic library linker -LFLAGS += $(LDIR) $(LIBS) -# C compiler flags -CFLAGS = $(FLAGS) $(STDFLAGS) $(INCLUDES) $(STDINCS) $(EXTRAINCS) $(DEFINES) $(STDDEFS) -# C++ compiler flags -CXXFLAGS = $(CPPFLAGS) $(STDFLAGS) $(INCLUDES) $(STDINCS) $(EXTRAINCS) $(DEFINES) $(STDDEFS) - -# Sources with relative path -SOURCES := $(addprefix $(SRCDIR)/, $(SRC)) - -TARGETAPPNAME := $(TARGETNAME)$(APPEXT) -TARGETSLIBNAME := lib$(TARGETNAME).a -TARGETDLIBNAME := $(DLIBPRE)$(TARGETNAME).$(DLIBEXT) - -# Target for applications or libraries -ifeq ($(MAKETYPE), APP) - TARGET := $(TARGETDIR)/$(TARGETAPPNAME) -else - ifeq ($(NO_DYNAMIC), Yes) - TARGET := $(TARGETDIR)/$(TARGETSLIBNAME) - else - ifeq ($(NO_STATIC), Yes) - TARGET := $(TARGETDIR)/$(TARGETDLIBNAME) - else - TARGET := $(TARGETDIR)/$(TARGETSLIBNAME) $(TARGETDIR)/$(TARGETDLIBNAME) - endif - endif -endif - -# OBJ: list of .o, without path -# OBJS: list of .o with relative path -OBJ = $(notdir $(SRC)) -OBJ := $(OBJ:.c=.o) -OBJ := $(OBJ:.cpp=.o) -OBJ := $(OBJ:.cxx=.o) -OBJ := $(OBJ:.cc=.o) -OBJ := $(OBJ:.f=.o) -OBJ := $(OBJ:.for=.o) -OBJ := $(OBJ:.rc=.ro) -OBJS = $(addprefix $(OBJDIR)/, $(OBJ)) - -ifdef LOHPACK - # Package with all LOHs - LOHS := $(LOHDIR)/$(LOHPACK) - LOHDIRS := -else - # LOH: list of .loh, without path - # LOHS: list of .loh, with relative path - 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 - -# Construct VPATH variable -P-SRC = $(dir $(SRC)) -P-SRC += $(dir $(SRCLUA)) -VPATH = .:$(foreach dir,$(P-SRC),$(if $(dir)="./",:$(dir))) - - -#---------------------------------# -# Main Rule - Build Everything that it is necessary - -.PHONY: tecmake -ifeq ($(MAKETYPE), APP) - tecmake: print-start system-check directories application scripts -else - ifeq ($(NO_DYNAMIC), Yes) - tecmake: print-start system-check directories static-lib - else - ifeq ($(NO_STATIC), Yes) - tecmake: print-start system-check directories dynamic-lib - else - tecmake: print-start system-check directories static-lib dynamic-lib - endif - endif -endif - -.PHONY: print-start -print-start: - @echo ''; echo 'Tecmake: starting [ $(TARGETNAME):$(TEC_UNAME) ]' - -.PHONY: system-check -system-check: - ifdef CHECK_XRENDER - ifdef UNIX_POSIX - @echo ''; echo 'Tecmake: check failed, XRender NOT available in this system.'; echo ''; exit 1; - endif - endif - ifdef CHECK_GTK - ifndef GTK_BASE - ifdef UNIX_POSIX - @echo ''; echo 'Tecmake: check failed, GTK NOT available in this system.'; echo ''; exit 1; - else - ifneq ($(findstring Linux24, $(TEC_UNAME)), ) - @echo ''; echo 'Tecmake: check failed, GTK too OLD in this system.'; echo ''; exit 1; - endif - endif - endif - endif - ifdef CHECK_GDIPLUS - ifdef WIN_OTHER - @echo ''; echo 'Tecmake: check failed, GDI+ NOT available in this system.'; echo ''; exit 1; - endif - endif - -#---------------------------------# -# Dynamic Library Build - -.PHONY: dynamic-lib -dynamic-lib: $(TARGETDIR)/$(TARGETDLIBNAME) - -$(TARGETDIR)/$(TARGETDLIBNAME) : $(LOHS) $(OBJS) $(EXTRADEPS) - @echo ''; echo Tecmake: linking $(@F) ... - $(ECHO)$(LD) $(STDLDFLAGS) -o $@ $(OBJS) $(SLIB) $(LFLAGS) - @echo ''; echo 'Tecmake: Dynamic Library ($@) Done.'; echo '' - - -#---------------------------------# -# Static Library Build - -.PHONY: static-lib -static-lib: $(TARGETDIR)/$(TARGETSLIBNAME) - -$(TARGETDIR)/$(TARGETSLIBNAME) : $(LOHS) $(OBJS) $(EXTRADEPS) - @echo ''; echo Tecmake: librarian $(@F) ... - $(ECHO)$(AR) $(STDLFLAGS) $@ $(OBJS) $(SLIB) $(LCFLAGS) - @echo ''; echo Tecmake: updating lib TOC $(@F) ... - $(ECHO)-$(RANLIB) $@ - @echo ''; echo 'Tecmake: Static Library ($@) Done.'; echo '' - - -#---------------------------------# -# Application Build - -.PHONY: application -application: $(TARGETDIR)/$(TARGETAPPNAME) - -$(TARGETDIR)/$(TARGETAPPNAME) : $(LOHS) $(OBJS) $(EXTRADEPS) - @echo ''; echo Tecmake: linking $(@F) ... - $(ECHO)$(LINKER) -o $@ $(OBJS) $(SLIB) $(LFLAGS) - @if [ ! -z "$(STRIP)" ]; then \ - echo ''; echo 'Tecmake: striping debug information' ;\ - strip $@ ;\ - fi - @echo ''; echo 'Tecmake: Application ($@) Done.'; echo '' - - -#---------------------------------# -# Application Scripts - -# Script name -SRELEASE := $(SRCDIR)/$(TARGETNAME) - -.PHONY: scripts -ifdef NO_SCRIPTS - scripts: ; -else - scripts: $(SRELEASE) ; -endif - -$(SRELEASE): $(MAKENAME) - @echo ''; echo 'Tecmake: building script $(@F)' - @echo "#!/bin/csh" > $@ - @echo "# Script generated automatically by tecmake v$(VERSION)" >> $@ - @echo "# Remove the comment bellow to set the LD_LIBRARY_PATH if needed." >> $@ - @echo '#setenv LD_LIBRARY_PATH $(MYLIB1)/lib/$${TEC_UNAME}:$(MYLIB2)/lib/$${TEC_UNAME}:$$LD_LIBRARY_PATH' >> $@ - @echo 'if ( -r app.env ) source app.env' >> $@ - @echo 'exec $(TARGETROOT)/$$TEC_UNAME/$(TARGETNAME) $$*' >> $@ - @chmod a+x $@ - - -#---------------------------------# -# 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)/%.o: $(SRCDIR)/%.f - @echo ''; echo Tecmake: compiling $(<F) ... - $(ECHO)$(FC) -c $(FFLAGS) -o $@ $< - -$(OBJDIR)/%.o: $(SRCDIR)/%.for - @echo ''; echo Tecmake: compiling $(<F) ... - $(ECHO)$(FC) -c $(FFLAGS) -o $@ $< - -$(OBJDIR)/%.ro: $(SRCDIR)/%.rc - @echo ''; echo Tecmake: compiling $(<F) ... - $(ECHO)$(RCC) $(RCFLAGS) -O coff -o $@ $< - -$(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 - - -#---------------------------------# -# Dependencies - -# Build dependencies -.PHONY: depend -depend: $(DEPEND) - -$(DEPEND): $(MAKENAME) - ifdef SRC - @echo "" > $(DEPEND) - @which $(CPPC) 2> /dev/null 1>&2 ;\ - if [ $$? -eq 0 ]; then \ - echo "Tecmake: Building Dependencies ... [ $(DEPEND) ] (can be slow)" ;\ - $(CPPC) $(DEPINCS) $(DEFINES) $(STDDEFS) -MM $(SOURCES) | \ - sed -e '1,$$s/^\([^ ]\)/$$(OBJDIR)\/\1/' > $(DEPEND) ;\ - else \ - echo "" ;\ - echo "Tecmake: error, $(CPPC) 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 - -# Remove extra files -.PHONY: clean-extra -clean-extra: - rm -f $(DEPEND) $(SRELEASE) so_locations - -# 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) - -.PHONY: clean-dir -clean-dir: - rm -fr $(OBJROOT) $(TARGETROOT) - -# Remove target and object files -.PHONY: clean -clean: clean-target clean-obj - -# Remove symbols from executables -.PHONY: strip -strip: - test -r $(TARGETDIR)/$(TARGETAPPNAME) && strip $(TARGETDIR)/$(TARGETAPPNAME) - -# 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 - -# 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) $(TARGETROOT)/$$d/$(TARGETSLIBNAME) $(TARGETROOT)/$$d/$(TARGETDLIBNAME)) ;\ - done - -#---------------------------------# -# Remote build -# There must be aliases in DNS for the known UNAMES -.PHONY: $(UNAMES) -$(UNAMES): - @cwd=`csh -c "\\pwd"` ; home=`csh -c "cd;\\pwd"` ;\ - dir=`echo $$cwd | sed -e "s|$$home/||"` ;\ - xterm -bg black -fg lightblue -T "Tecmake: $@ ($(TARGETNAME))" -e ssh $@ $(REMOTE) $$dir $(TECMAKEFLAGS) $(MAKEFLAGS) & 2> /dev/null - - -#---------------------------------# - -.PHONY: version -version: - @echo "Tecmake Posix Version $(VERSION)" - -#---------------------------------# 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)" - -#---------------------------------# |