diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Makefile | 43 | ||||
| -rw-r--r-- | src/tecmake.mak | 368 | ||||
| -rw-r--r-- | src/tecmakewin.mak | 1384 | 
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)" + +#---------------------------------# | 
