summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscuri <scuri>2010-11-09 02:30:16 +0000
committerscuri <scuri>2010-11-09 02:30:16 +0000
commitb4180286e7ab40c32ce663334c93f77e7c3f7e88 (patch)
tree734fb1450ca05acfa3f289389f772c69471490d3
parent2f7f60ad6f6924a7644f8a37ea1c4081bb3f262f (diff)
*** empty log message ***
-rw-r--r--src/Makefile43
-rw-r--r--src/tecmake.mak368
-rw-r--r--src/tecmakewin.mak1384
3 files changed, 1619 insertions, 176 deletions
diff --git a/src/Makefile b/src/Makefile
index 1ef8771..fc69f09 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1,42 +1,47 @@
+ifeq ($(OS), Windows_NT)
+ TECMAKE_CMD = $(MAKE) --no-print-directory -f tecmakewin.mak TEC_UNAME=$(TEC_UNAME)
+else
+ 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
do_all: cd_freetype cd_ftgl cd cd_pdflib cdpdf cdgl cdlua5 cdluapdf5 cdluagl5 cdluaim5
cd_freetype:
- @$(MAKE) --no-print-directory -f tecmake.mak MF=cd_freetype
+ @$(TECMAKE_CMD) MF=cd_freetype
cd_ftgl:
- @$(MAKE) --no-print-directory -f tecmake.mak MF=cd_ftgl
+ @$(TECMAKE_CMD) MF=cd_ftgl
cd:
- @$(MAKE) --no-print-directory -f tecmake.mak
+ @$(TECMAKE_CMD)
cdx11:
- @$(MAKE) --no-print-directory -f tecmake.mak USE_X11=Yes
+ @$(TECMAKE_CMD) USE_X11=Yes
cdgdk:
- @$(MAKE) --no-print-directory -f tecmake.mak USE_GDK=Yes
+ @$(TECMAKE_CMD) USE_GDK=Yes
cd_pdflib:
- @$(MAKE) --no-print-directory -f tecmake.mak MF=cd_pdflib
+ @$(TECMAKE_CMD) MF=cd_pdflib
cdpdf:
- @$(MAKE) --no-print-directory -f tecmake.mak MF=cdpdf
+ @$(TECMAKE_CMD) MF=cdpdf
cdgl:
- @$(MAKE) --no-print-directory -f tecmake.mak MF=cdgl
+ @$(TECMAKE_CMD) MF=cdgl
cdcontextplus:
- @$(MAKE) --no-print-directory -f tecmake.mak MF=cdcontextplus
+ @$(TECMAKE_CMD) MF=cdcontextplus
cdcairo:
- @$(MAKE) --no-print-directory -f tecmake.mak MF=cdcairo
+ @$(TECMAKE_CMD) MF=cdcairo
cdlua3:
- @$(MAKE) --no-print-directory -f tecmake.mak MF=cdlua3
+ @$(TECMAKE_CMD) MF=cdlua3
cdluapdf3:
- @$(MAKE) --no-print-directory -f tecmake.mak MF=cdluapdf3
+ @$(TECMAKE_CMD) MF=cdluapdf3
cdluagl3:
- @$(MAKE) --no-print-directory -f tecmake.mak MF=cdluagl3
+ @$(TECMAKE_CMD) MF=cdluagl3
cdlua5:
- @$(MAKE) --no-print-directory -f tecmake.mak MF=cdlua5
+ @$(TECMAKE_CMD) MF=cdlua5
cdluapdf5:
- @$(MAKE) --no-print-directory -f tecmake.mak MF=cdluapdf5
+ @$(TECMAKE_CMD) MF=cdluapdf5
cdluagl5:
- @$(MAKE) --no-print-directory -f tecmake.mak MF=cdluagl5
+ @$(TECMAKE_CMD) MF=cdluagl5
cdluacontextplus5:
- @$(MAKE) --no-print-directory -f tecmake.mak MF=cdluacontextplus5
+ @$(TECMAKE_CMD) MF=cdluacontextplus5
cdluacairo5:
- @$(MAKE) --no-print-directory -f tecmake.mak MF=cdluacairo5
+ @$(TECMAKE_CMD) MF=cdluacairo5
cdluaim5:
- @$(MAKE) --no-print-directory -f tecmake.mak MF=cdluaim5
+ @$(TECMAKE_CMD) MF=cdluaim5
diff --git a/src/tecmake.mak b/src/tecmake.mak
index 0d9109e..2426d5b 100644
--- a/src/tecmake.mak
+++ b/src/tecmake.mak
@@ -6,10 +6,11 @@
#---------------------------------#
# Tecmake Version
-VERSION = 4.1
+VERSION = 4.3
+
#---------------------------------#
-# First target
+# First target
.PHONY: build
build: tecmake
@@ -58,11 +59,20 @@ ifndef TEC_UNAME
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.)
@@ -87,14 +97,24 @@ ifndef TEC_UNAME
endif
# 64-bits Linux
- ifeq ($(TEC_SYSARCH), x64)
- BUILD_64=Yes
- TEC_UNAME:=$(TEC_UNAME)_64
+ 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
- ifeq ($(TEC_SYSARCH), ia64)
- BUILD_64=Yes
- TEC_UNAME:=$(TEC_UNAME)_ia64
+ # 64-bits FreeBSD
+ ifeq ($(TEC_SYSNAME), FreeBSD)
+ ifeq ($(TEC_SYSARCH), x64)
+ BUILD_64=Yes
+ TEC_UNAME:=$(TEC_UNAME)_64
+ endif
endif
# Solaris and Intel
@@ -126,9 +146,19 @@ sysinfo:
@echo 'TEC_SYSVERSION = $(TEC_SYSVERSION)'
@echo 'TEC_SYSMINOR = $(TEC_SYSMINOR)'
@echo 'TEC_SYSARCH = $(TEC_SYSARCH)'
- @echo 'TEC_UNAME = $(TEC_UNAME)'; echo ''
+ @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
@@ -178,32 +208,39 @@ 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 :=
+STDINCS :=
OPTFLAGS := -O2
STDLFLAGS := r
-DEBUGFLAGS := -g
+DEBUGFLAGS := -g
STDLDFLAGS := -shared
DLIBEXT := so
DLIBPRE := lib
APPEXT :=
-
-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
ifneq ($(findstring Linux24, $(TEC_UNAME)), )
- GTK_DEFAULT :=
-endif
+ 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
@@ -214,7 +251,7 @@ FF := $(TEC_TOOLCHAIN)g77
RANLIB := $(TEC_TOOLCHAIN)ranlib
AR := $(TEC_TOOLCHAIN)ar
DEBUGGER := $(TEC_TOOLCHAIN)gdb
-RCC := $(TEC_TOOLCHAIN)windres
+RCC := $(TEC_TOOLCHAIN)windres
# Remote build script
REMOTE = $(TECMAKE_HOME)/remote
@@ -238,7 +275,7 @@ include $(MAKENAME)
#---------------------------------#
-# Definitions of public variables
+# Definitions of public variables
ifdef LIBNAME
TARGETNAME = $(LIBNAME)
@@ -249,7 +286,7 @@ else
endif
ifndef TARGETNAME
- $(error LIBNAME nor APPNAME defined in $(MAKENAME))
+ $(error LIBNAME nor APPNAME defined in $(MAKENAME))
endif
PROJNAME ?= $(TARGETNAME)
@@ -284,7 +321,7 @@ endif
ifdef BUILD_64
ifneq ($(findstring SunOS, $(TEC_UNAME)), )
USE_CC = Yes
- BUILD_64_DIR = Yes
+ BUILD_64_DIR = Yes
endif
ifneq ($(findstring AIX, $(TEC_UNAME)), )
USE_CC = Yes
@@ -295,11 +332,11 @@ ifdef BUILD_64
BUILD_64_DIR = Yes
endif
endif
-
+
ifdef USE_CC
CC := cc
CPPC := CC
- STDFLAGS =
+ STDFLAGS =
UNAMES := $(UNAMES_CC)
ifdef USE_CC_DIR
TEC_UNAME := $(TEC_UNAME)cc
@@ -386,22 +423,22 @@ endif
# Definitions for X11
X11_LIBS := Xmu Xt Xext X11
-#X11_LIB :=
+#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
+#OPENGL_LIB :=
+#OPENGL_INC := #include <GL/gl.h> and possibly
MOTIFGL_LIB := GLw #include <GL/GLwMDrawA.h>
# Definitions for Motif
-#MOTIF_LIB :=
+#MOTIF_LIB :=
#MOTIF_INC := #include <Xm/Xm.h>
# Definitions for GLUT
-#GLUT_LIB :=
-#GLUT_INC :=
+#GLUT_LIB :=
+#GLUT_INC :=
# Definitions for GTK
ifdef GTK_BASE
@@ -431,7 +468,7 @@ ifneq ($(findstring Linux, $(TEC_UNAME)), )
X11_LIB := /usr/X11R6/lib
endif
X11_INC := /usr/X11R6/include
- MOTIFGL_LIB :=
+ MOTIFGL_LIB :=
endif
ifneq ($(findstring IRIX, $(TEC_UNAME)), )
@@ -440,8 +477,8 @@ ifneq ($(findstring IRIX, $(TEC_UNAME)), )
STDLDFLAGS := -elf -shared -rdata_shared -soname lib$(TARGETNAME).so
RANLIB := /bin/true
X11_LIBS := Xmu Xt X11
- ifdef BUILD_64
- ifdef USE_CC
+ ifdef BUILD_64
+ ifdef USE_CC
STDFLAGS += -64 -KPIC
STDLDFLAGS += -64
LINKER += -64
@@ -455,11 +492,11 @@ ifneq ($(findstring IRIX, $(TEC_UNAME)), )
MOTIF_INC = /usr/Motif-2.1/include
endif
-ifneq ($(findstring AIX, $(TEC_UNAME)), )
+ifneq ($(findstring AIX, $(TEC_UNAME)), )
UNIX_POSIX = Yes
NO_DYNAMIC ?= Yes
ifdef BUILD_64
- ifdef USE_CC
+ ifdef USE_CC
STDFLAGS += -q64 # to compilers C and C++
STDLFLAGS := -X64 $(STDLFLAGS) # to librarian
STDLDFLAGS += -64
@@ -493,10 +530,10 @@ ifneq ($(findstring SunOS, $(TEC_UNAME)), )
GLUT_LIB := /usr/local/glut-3.7/lib/glut
GLUT_INC := /usr/local/glut-3.7/include
ifdef BUILD_64
- ifdef USE_CC
+ 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
+ STDLDFLAGS += -64 -L/usr/lib/64 -L/usr/ucblib/sparcv9
LINKER += -xarch=v9
endif
endif
@@ -529,6 +566,9 @@ 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
#---------------------------------#
@@ -558,26 +598,26 @@ LUA52 ?= $(TECTOOLS_HOME)/lua52
# Library path order is reversed
ifdef USE_LUA
- LUASUFX :=
+ LUA_SUFFIX ?=
LIBLUASUFX := 3
endif
ifdef USE_LUA4
- LUASUFX := 4
+ LUA_SUFFIX ?= 4
LIBLUASUFX := 4
override USE_LUA = Yes
LUA := $(LUA4)
endif
ifdef USE_LUA5
- LUASUFX := 5
+ LUA_SUFFIX ?= 5
LIBLUASUFX := 5
override USE_LUA = Yes
LUA := $(LUA5)
endif
ifdef USE_LUA50
- LUASUFX := 50
+ LUA_SUFFIX ?= 50
LIBLUASUFX := 5
override USE_LUA = Yes
LUA := $(LUA50)
@@ -585,7 +625,7 @@ ifdef USE_LUA50
endif
ifdef USE_LUA51
- LUASUFX := 5.1
+ LUA_SUFFIX ?= 5.1
LIBLUASUFX := 51
override USE_LUA = Yes
LUA := $(LUA51)
@@ -593,7 +633,7 @@ ifdef USE_LUA51
endif
ifdef USE_LUA52
- LUASUFX := 52
+ LUA_SUFFIX ?= 52
LIBLUASUFX := 52
override USE_LUA = Yes
LUA := $(LUA52)
@@ -602,23 +642,23 @@ endif
ifdef USE_IUP3
override USE_IUP = Yes
-# Inside Tecgraf only
+# Inside Tecgraf only
ifndef IUP3_BUILD
# IUP := $(IUP)3
endif
-endif
+endif
ifdef USE_IUPBETA
IUP := $(IUP)/beta
-endif
+endif
ifdef USE_CDBETA
CD := $(CD)/beta
-endif
+endif
ifdef USE_IMBETA
IM := $(IM)/beta
-endif
+endif
ifdef USE_GLUT
override USE_OPENGL = Yes
@@ -645,7 +685,7 @@ ifdef USE_IUPCONTROLS
LIBS += iupcontrols
endif
endif
-
+
ifdef USE_IMLUA
override USE_IM = Yes
ifdef USE_STATIC
@@ -689,46 +729,46 @@ ifdef USE_LUA
LUA_LIB ?= $(LUA)/lib/$(TEC_UNAME_LIB_DIR)
ifdef USE_STATIC
ifndef NO_LUALIB
- SLIB += $(LUA_LIB)/liblualib$(LUASUFX).a
+ SLIB += $(LUA_LIB)/liblualib$(LUA_SUFFIX).a
endif
- SLIB += $(LUA_LIB)/liblua$(LUASUFX).a
+ SLIB += $(LUA_LIB)/liblua$(LUA_SUFFIX).a
else
ifndef NO_LUALIB
- LIBS += lualib$(LUASUFX)
+ LIBS += lualib$(LUA_SUFFIX)
endif
ifndef NO_LUALINK
- LIBS += lua$(LUASUFX)
+ LIBS += lua$(LUA_SUFFIX)
LDIR += $(LUA_LIB)
else
ifneq ($(findstring cygw, $(TEC_UNAME)), )
- LIBS += lua$(LUASUFX)
+ 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$(LUASUFX)
- LUAC := $(LUA_BIN)/luac$(LUASUFX)
- LUABIN := $(LUA_BIN)/lua$(LUASUFX)
+ BIN2C := $(LUA_BIN)/bin2c$(LUA_SUFFIX)
+ LUAC := $(LUA_BIN)/luac$(LUA_SUFFIX)
+ LUABIN := $(LUA_BIN)/lua$(LUA_SUFFIX)
endif
-ifdef USE_IUP
- IUPSUFX :=
+ifdef USE_IUP
+ IUP_SUFFIX ?=
ifdef USE_IUP3
ifdef GTK_DEFAULT
ifdef USE_MOTIF
- IUPSUFX := mot
+ IUP_SUFFIX := mot
else
override USE_GTK = Yes
override USE_GDK = Yes
endif
else
ifdef USE_GTK
- IUPSUFX := gtk
+ IUP_SUFFIX := gtk
else
override USE_MOTIF = Yes
endif
@@ -743,7 +783,7 @@ ifdef USE_IUP
ifdef USE_OPENGL
SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiupgl.a
endif
- SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiup$(IUPSUFX).a
+ SLIB += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)/libiup$(IUP_SUFFIX).a
else
ifdef USE_CD
LIBS += iupcd
@@ -751,23 +791,23 @@ ifdef USE_IUP
ifdef USE_OPENGL
LIBS += iupgl
endif
- LIBS += iup$(IUPSUFX)
+ LIBS += iup$(IUP_SUFFIX)
LDIR += $(IUP)/lib/$(TEC_UNAME_LIB_DIR)
endif
INCLUDES += $(IUP)/include
endif
ifdef USE_CD
- CDSUFX :=
+ CD_SUFFIX ?=
override USE_X11 = Yes
- ifndef USE_CD_OLD
+ ifndef USE_CD_OLD
ifdef GTK_DEFAULT
ifdef USE_MOTIF
- CDSUFX := x11
+ CD_SUFFIX := x11
endif
else
ifdef USE_GTK
- CDSUFX := gdk
+ CD_SUFFIX := gdk
endif
endif
endif
@@ -783,7 +823,7 @@ ifdef USE_CD
SLIB += $(CD)/lib/$(TEC_UNAME_LIB_DIR)/libcdcairo.a
LIBS += pangocairo-1.0 cairo
endif
- SLIB += $(CD)/lib/$(TEC_UNAME_LIB_DIR)/libcd$(CDSUFX).a
+ 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
@@ -800,11 +840,15 @@ ifdef USE_CD
LIBS += cdcairo
LIBS += pangocairo-1.0 cairo
endif
- LIBS += cd$(CDSUFX)
+ LIBS += cd$(CD_SUFFIX)
LDIR += $(CD)/lib/$(TEC_UNAME_LIB_DIR)
ifndef USE_GTK
# Freetype is already included in GTK
- LIBS += freetype
+ ifneq ($(findstring cygw, $(TEC_UNAME)), )
+ LIBS += freetype-6
+ else
+ LIBS += freetype
+ endif
endif
endif
INCLUDES += $(CD)/include
@@ -824,7 +868,7 @@ ifdef USE_GLUT
LIBS += glut
LDIR += $(GLUT_LIB)
STDINCS += $(GLUT_INC)
-endif
+endif
ifdef USE_OPENGL
override USE_X11 = Yes
@@ -836,7 +880,7 @@ ifdef USE_OPENGL
LIBS += $(OPENGL_LIBS)
LDIR += $(OPENGL_LIB)
STDINCS += $(OPENGL_INC)
-endif
+endif
ifdef USE_MOTIF
override USE_X11 = Yes
@@ -846,55 +890,61 @@ ifdef USE_MOTIF
ifneq ($(findstring Linux, $(TEC_UNAME)), )
X11_LIBS := Xpm $(X11_LIBS)
endif
- ifneq ($(findstring cygw, $(TEC_UNAME)), )
+ ifneq ($(findstring cygw, $(TEC_UNAME)), )
X11_LIBS := Xpm $(X11_LIBS)
endif
endif
ifdef USE_GTK
- 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
+ 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
- # if not the default, then include it for linker
- # must be before the default
- ifdef GTK_BASE
+ 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
- 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
@@ -910,26 +960,26 @@ ifdef USE_X11
LIBS += $(X11_LIBS)
LDIR += $(X11_LIB)
STDINCS += $(X11_INC)
-endif
+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
+ # 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
+endif
#---------------------------------#
# Building compilation flags that are sets
@@ -969,10 +1019,10 @@ TARGETDLIBNAME := $(DLIBPRE)$(TARGETNAME).$(DLIBEXT)
ifeq ($(MAKETYPE), APP)
TARGET := $(TARGETDIR)/$(TARGETAPPNAME)
else
- ifeq ($(NO_DYNAMIC), Yes)
+ ifeq ($(NO_DYNAMIC), Yes)
TARGET := $(TARGETDIR)/$(TARGETSLIBNAME)
else
- ifeq ($(NO_STATIC), Yes)
+ ifeq ($(NO_STATIC), Yes)
TARGET := $(TARGETDIR)/$(TARGETDLIBNAME)
else
TARGET := $(TARGETDIR)/$(TARGETSLIBNAME) $(TARGETDIR)/$(TARGETDLIBNAME)
@@ -1017,14 +1067,14 @@ VPATH = .:$(foreach dir,$(P-SRC),$(if $(dir)="./",:$(dir)))
#---------------------------------#
# Main Rule - Build Everything that it is necessary
-.PHONY: tecmake
+.PHONY: tecmake
ifeq ($(MAKETYPE), APP)
tecmake: print-start system-check directories application scripts
else
- ifeq ($(NO_DYNAMIC), Yes)
+ ifeq ($(NO_DYNAMIC), Yes)
tecmake: print-start system-check directories static-lib
else
- ifeq ($(NO_STATIC), Yes)
+ ifeq ($(NO_STATIC), Yes)
tecmake: print-start system-check directories dynamic-lib
else
tecmake: print-start system-check directories static-lib dynamic-lib
@@ -1044,14 +1094,14 @@ system-check:
endif
endif
ifdef CHECK_GTK
- ifdef UNIX_POSIX
- @echo ''; echo 'Tecmake: check failed, GTK NOT available in this system.'; echo ''; exit 1;
- else
- ifneq ($(findstring Linux24, $(TEC_UNAME)), )
- ifndef GTK_BASE
- @echo ''; echo 'Tecmake: check failed, GTK too OLD in this system.'; echo ''; exit 1;
- endif
- endif
+ 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
@@ -1059,7 +1109,7 @@ system-check:
@echo ''; echo 'Tecmake: check failed, GDI+ NOT available in this system.'; echo ''; exit 1;
endif
endif
-
+
#---------------------------------#
# Dynamic Library Build
@@ -1071,7 +1121,7 @@ $(TARGETDIR)/$(TARGETDLIBNAME) : $(LOHS) $(OBJS) $(EXTRADEPS)
$(ECHO)$(LD) $(STDLDFLAGS) -o $@ $(OBJS) $(SLIB) $(LFLAGS)
@echo ''; echo 'Tecmake: Dynamic Library ($@) Done.'; echo ''
-
+
#---------------------------------#
# Static Library Build
@@ -1085,7 +1135,7 @@ $(TARGETDIR)/$(TARGETSLIBNAME) : $(LOHS) $(OBJS) $(EXTRADEPS)
$(ECHO)-$(RANLIB) $@
@echo ''; echo 'Tecmake: Static Library ($@) Done.'; echo ''
-
+
#---------------------------------#
# Application Build
@@ -1101,7 +1151,7 @@ $(TARGETDIR)/$(TARGETAPPNAME) : $(LOHS) $(OBJS) $(EXTRADEPS)
fi
@echo ''; echo 'Tecmake: Application ($@) Done.'; echo ''
-
+
#---------------------------------#
# Application Scripts
@@ -1114,7 +1164,7 @@ ifdef NO_SCRIPTS
else
scripts: $(SRELEASE) ;
endif
-
+
$(SRELEASE): $(MAKENAME)
@echo ''; echo 'Tecmake: building script $(@F)'
@echo "#!/bin/csh" > $@
@@ -1125,7 +1175,7 @@ $(SRELEASE): $(MAKENAME)
@echo 'exec $(TARGETROOT)/$$TEC_UNAME/$(TARGETNAME) $$*' >> $@
@chmod a+x $@
-
+
#---------------------------------#
# Directories Creation
@@ -1195,7 +1245,7 @@ $(LOHDIR)/$(LOHPACK): $(SRCLUA)
$(ECHO)$(LUABIN) $(LUAPRE) $(LUAPREFLAGS) -l $(SRCLUADIR) -o $@ $(SRCLUA)
endif
-
+
#---------------------------------#
# Dependencies
@@ -1214,14 +1264,18 @@ $(DEPEND): $(MAKENAME)
else \
echo "" ;\
echo "Tecmake: error, $(CPPC) not found. Dependencies can not be built." ;\
- echo "Must set USE_NODEPEND=Yes." ;\
+ echo "Must set NO_DEPEND=Yes." ;\
echo "" ;\
exit 1 ;\
fi
endif
+ifdef USE_NODEPEND
+ NO_DEPEND:=Yes
+endif
+
###################
-ifndef USE_NODEPEND
+ifndef NO_DEPEND
include $(DEPEND)
endif
###################
@@ -1234,12 +1288,12 @@ endif
.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:
@@ -1263,11 +1317,11 @@ clean: clean-target clean-obj
strip:
test -r $(TARGETDIR)/$(TARGETAPPNAME) && strip $(TARGETDIR)/$(TARGETAPPNAME)
-# Rebuild target and object files
+# Rebuild target and object files
.PHONY: rebuild
rebuild: clean-extra clean-lohs clean-obj clean-target tecmake
-# Rebuild target without rebuilding object files
+# Rebuild target without rebuilding object files
.PHONY: relink
relink: clean-target tecmake
@@ -1284,7 +1338,7 @@ 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
diff --git a/src/tecmakewin.mak b/src/tecmakewin.mak
new file mode 100644
index 0000000..90506ed
--- /dev/null
+++ b/src/tecmakewin.mak
@@ -0,0 +1,1384 @@
+#-------------------------------------------------------------------------#
+#- 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)"
+
+#---------------------------------#