diff options
Diffstat (limited to 'src/tecmake.mak')
-rw-r--r-- | src/tecmake.mak | 102 |
1 files changed, 62 insertions, 40 deletions
diff --git a/src/tecmake.mak b/src/tecmake.mak index f894aa9..39904c8 100644 --- a/src/tecmake.mak +++ b/src/tecmake.mak @@ -8,7 +8,6 @@ # Tecmake Version VERSION = 4.1 - #---------------------------------# # First target .PHONY: build @@ -419,6 +418,7 @@ else endif ifneq ($(findstring Linux, $(TEC_UNAME)), ) + UNIX_LINUX = Yes ifdef BUILD_64 ifeq ($(TEC_SYSARCH), ia64) STDFLAGS += -fPIC @@ -435,6 +435,7 @@ ifneq ($(findstring Linux, $(TEC_UNAME)), ) endif ifneq ($(findstring IRIX, $(TEC_UNAME)), ) + UNIX_POSIX = Yes LD = ld STDLDFLAGS := -elf -shared -rdata_shared -soname lib$(TARGETNAME).so RANLIB := /bin/true @@ -455,6 +456,7 @@ ifneq ($(findstring IRIX, $(TEC_UNAME)), ) endif ifneq ($(findstring AIX, $(TEC_UNAME)), ) + UNIX_POSIX = Yes NO_DYNAMIC ?= Yes ifdef BUILD_64 ifdef USE_CC @@ -467,6 +469,7 @@ ifneq ($(findstring AIX, $(TEC_UNAME)), ) endif ifneq ($(findstring HP-UX, $(TEC_UNAME)), ) + UNIX_POSIX = Yes NO_DYNAMIC ?= Yes MOTIF_INC := /usr/include/Motif2.1 X11_LIBS := Xt Xext X11 @@ -479,6 +482,7 @@ ifneq ($(findstring HP-UX, $(TEC_UNAME)), ) endif ifneq ($(findstring SunOS, $(TEC_UNAME)), ) + UNIX_POSIX = Yes LD = ld STDLDFLAGS := -G X11_INC := /usr/openwin/share/include @@ -499,6 +503,7 @@ ifneq ($(findstring SunOS, $(TEC_UNAME)), ) endif ifneq ($(findstring MacOS, $(TEC_UNAME)), ) + UNIX_BSD = Yes X11_LIBS := Xmu Xp Xt Xext X11 X11_LIB := /usr/X11R6/lib X11_INC := /usr/X11R6/include @@ -514,6 +519,7 @@ ifneq ($(findstring MacOS, $(TEC_UNAME)), ) endif ifneq ($(findstring FreeBSD, $(TEC_UNAME)), ) + BSD = Yes X11_LIB := /usr/X11R6/lib X11_INC := /usr/X11R6/include endif @@ -591,7 +597,7 @@ ifdef USE_IUP3 override USE_IUP = Yes # Inside Tecgraf only ifndef IUP3_BUILD -# IUP := $(IUP)3 +# IUP := $(IUP)3 endif endif @@ -747,19 +753,20 @@ endif ifdef USE_CD CDSUFX := override USE_X11 = Yes - ifdef USE_IUP3 - ifdef USE_GDK - ifndef GTK_DEFAULT - CDSUFX := gdk + ifndef USE_CD_OLD + ifdef GTK_DEFAULT + ifdef USE_MOTIF + CDSUFX := x11 endif else - ifdef GTK_DEFAULT - CDSUFX := x11 + ifdef USE_GTK + CDSUFX := gdk endif endif endif ifdef USE_STATIC ifdef USE_XRENDER + CHECK_XRENDER = Yes SLIB += $(CD)/lib/$(TEC_UNAME_LIB_DIR)/libcdcontextplus.a LIBS += Xrender Xft endif @@ -776,6 +783,7 @@ ifdef USE_CD endif else ifdef USE_XRENDER + CHECK_XRENDER = Yes LIBS += cdcontextplus LIBS += Xrender Xft endif @@ -837,6 +845,7 @@ ifdef USE_MOTIF endif ifdef USE_GTK + CHECK_GTK = Yes ifneq ($(findstring MacOS, $(TEC_UNAME)), ) # Option 1 - Fink GTK port LDIR += $(GTK)/lib @@ -899,6 +908,8 @@ 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)) @@ -1001,15 +1012,15 @@ VPATH = .:$(foreach dir,$(P-SRC),$(if $(dir)="./",:$(dir))) .PHONY: tecmake ifeq ($(MAKETYPE), APP) - tecmake: print-start directories application scripts + tecmake: print-start system-check directories application scripts else ifeq ($(NO_DYNAMIC), Yes) - tecmake: print-start directories static-lib + tecmake: print-start system-check directories static-lib else ifeq ($(NO_STATIC), Yes) - tecmake: print-start directories dynamic-lib + tecmake: print-start system-check directories dynamic-lib else - tecmake: print-start directories static-lib dynamic-lib + tecmake: print-start system-check directories static-lib dynamic-lib endif endif endif @@ -1018,6 +1029,29 @@ endif print-start: @echo ''; echo 'Tecmake: starting [ $(TARGETNAME):$(TEC_UNAME) ]' +.PHONY: system-check +system-check: + ifdef CHECK_XRENDER + ifdef UNIX_POSIX + @echo ''; echo 'Tecmake: check failed, XRender NOT available in this system.'; echo ''; exit 1; + endif + endif + ifdef CHECK_GTK + 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 + endif + endif + ifdef CHECK_GDIPLUS + ifdef WIN_OTHER + @echo ''; echo 'Tecmake: check failed, GDI+ NOT available in this system.'; echo ''; exit 1; + endif + endif #---------------------------------# # Dynamic Library Build @@ -1026,7 +1060,7 @@ print-start: dynamic-lib: $(TARGETDIR)/$(TARGETDLIBNAME) $(TARGETDIR)/$(TARGETDLIBNAME) : $(LOHS) $(OBJS) $(EXTRADEPS) - @echo ''; echo Tecmake: linking $(<F)... + @echo ''; echo Tecmake: linking $(@F) ... $(ECHO)$(LD) $(STDLDFLAGS) -o $@ $(OBJS) $(SLIB) $(LFLAGS) @echo ''; echo 'Tecmake: Dynamic Library ($@) Done.'; echo '' @@ -1038,9 +1072,9 @@ $(TARGETDIR)/$(TARGETDLIBNAME) : $(LOHS) $(OBJS) $(EXTRADEPS) static-lib: $(TARGETDIR)/$(TARGETSLIBNAME) $(TARGETDIR)/$(TARGETSLIBNAME) : $(LOHS) $(OBJS) $(EXTRADEPS) - @echo ''; echo Tecmake: librarian $(<F)... + @echo ''; echo Tecmake: librarian $(@F) ... $(ECHO)$(AR) $(STDLFLAGS) $@ $(OBJS) $(SLIB) $(LCFLAGS) - @echo ''; echo Tecmake: updating lib TOC $(<F)... + @echo ''; echo Tecmake: updating lib TOC $(@F) ... $(ECHO)-$(RANLIB) $@ @echo ''; echo 'Tecmake: Static Library ($@) Done.'; echo '' @@ -1052,11 +1086,11 @@ $(TARGETDIR)/$(TARGETSLIBNAME) : $(LOHS) $(OBJS) $(EXTRADEPS) application: $(TARGETDIR)/$(TARGETAPPNAME) $(TARGETDIR)/$(TARGETAPPNAME) : $(LOHS) $(OBJS) $(EXTRADEPS) - @echo ''; echo Tecmake: linking $(<F)... + @echo ''; echo Tecmake: linking $(@F) ... $(ECHO)$(LINKER) -o $@ $(OBJS) $(SLIB) $(LFLAGS) @if [ ! -z "$(STRIP)" ]; then \ echo ''; echo 'Tecmake: striping debug information' ;\ - $(ECHO)strip $@ ;\ + strip $@ ;\ fi @echo ''; echo 'Tecmake: Application ($@) Done.'; echo '' @@ -1113,44 +1147,44 @@ endif # Compilation Rules $(OBJDIR)/%.o: $(SRCDIR)/%.c - @echo ''; echo Tecmake: compiling $(<F)... + @echo ''; echo Tecmake: compiling $(<F) ... $(ECHO)$(CC) -c $(CFLAGS) -o $@ $< $(OBJDIR)/%.o: $(SRCDIR)/%.cpp - @echo ''; echo Tecmake: compiling $(<F)... + @echo ''; echo Tecmake: compiling $(<F) ... $(ECHO)$(CPPC) -c $(CXXFLAGS) -o $@ $< $(OBJDIR)/%.o: $(SRCDIR)/%.cxx - @echo ''; echo Tecmake: compiling $(<F)... + @echo ''; echo Tecmake: compiling $(<F) ... $(ECHO)$(CPPC) -c $(CXXFLAGS) -o $@ $< $(OBJDIR)/%.o: $(SRCDIR)/%.cc - @echo ''; echo Tecmake: compiling $(<F)... + @echo ''; echo Tecmake: compiling $(<F) ... $(ECHO)$(CPPC) -c $(CXXFLAGS) -o $@ $< $(OBJDIR)/%.o: $(SRCDIR)/%.f - @echo ''; echo Tecmake: compiling $(<F)... + @echo ''; echo Tecmake: compiling $(<F) ... $(ECHO)$(FC) -c $(FFLAGS) -o $@ $< $(OBJDIR)/%.o: $(SRCDIR)/%.for - @echo ''; echo Tecmake: compiling $(<F)... + @echo ''; echo Tecmake: compiling $(<F) ... $(ECHO)$(FC) -c $(FFLAGS) -o $@ $< $(OBJDIR)/%.ro: $(SRCDIR)/%.rc - @echo ''; echo Tecmake: compiling $(<F)... + @echo ''; echo Tecmake: compiling $(<F) ... $(ECHO)$(RCC) $(RCFLAGS) -O coff -o $@ $< $(LOHDIR)/%.loh: $(OBJROOT)/%.lo - @echo ''; echo Tecmake: generating $(<F)... + @echo ''; echo Tecmake: generating $(<F) ... $(ECHO)$(BIN2C) $< > $@ $(OBJROOT)/%$(LO_SUFFIX).lo: $(SRCLUADIR)/%.lua - @echo ''; echo Tecmake: compiling $(<F)... + @echo ''; echo Tecmake: compiling $(<F) ... $(ECHO)$(LUAC) -o $@ $< ifdef LOHPACK $(LOHDIR)/$(LOHPACK): $(SRCLUA) - @echo ''; echo Tecmake: generating $(<F)... + @echo ''; echo Tecmake: generating $(<F) ... $(ECHO)$(LUABIN) $(LUAPRE) $(LUAPREFLAGS) -l $(SRCLUADIR) -o $@ $(SRCLUA) endif @@ -1158,7 +1192,6 @@ endif #---------------------------------# # Dependencies -# make depend # Build dependencies .PHONY: depend depend: $(DEPEND) @@ -1168,7 +1201,7 @@ $(DEPEND): $(MAKENAME) @echo "" > $(DEPEND) @which $(CPPC) 2> /dev/null 1>&2 ;\ if [ $$? -eq 0 ]; then \ - echo "Tecmake: Building Dependencies... (can be slow)" ;\ + echo "Tecmake: Building Dependencies ... [ $(DEPEND) ] (can be slow)" ;\ $(CPPC) $(DEPINCS) $(DEFINES) $(STDDEFS) -MM $(SOURCES) | \ sed -e '1,$$s/^\([^ ]\)/$$(OBJDIR)\/\1/' > $(DEPEND) ;\ else \ @@ -1190,57 +1223,47 @@ endif #---------------------------------# # Management Rules -# make clean-extra # Remove extra files .PHONY: clean-extra clean-extra: rm -f $(DEPEND) $(SRELEASE) so_locations -# make clean-lohs # Remove Lua object inclusion files .PHONY: clean-lohs clean-lohs: rm -f $(LOS) $(LOHS) -# make clean-obj # Remove object files .PHONY: clean-obj clean-obj: rm -f $(OBJS) -# make clean-target # Remove target .PHONY: clean-target clean-target: rm -f $(TARGET) -# make clean-dir .PHONY: clean-dir clean-dir: rm -fr $(OBJROOT) $(TARGETROOT) -# make clean # Remove target and object files .PHONY: clean clean: clean-target clean-obj -# make strip # Remove symbols from executables .PHONY: strip strip: test -r $(TARGETDIR)/$(TARGETAPPNAME) && strip $(TARGETDIR)/$(TARGETAPPNAME) -# make rebuild # Rebuild target and object files .PHONY: rebuild rebuild: clean-extra clean-lohs clean-obj clean-target tecmake -# make relink # Rebuild target without rebuilding object files .PHONY: relink relink: clean-target tecmake -# make clean-all-obj # Remove target and object files .PHONY: clean-all-obj clean-all-obj: @@ -1248,7 +1271,6 @@ clean-all-obj: (cd $(OBJROOT)/$$d; echo $(OBJ) | xargs rm -f) ;\ done -# make clean-all-target # Remove libraries and executables for all platforms .PHONY: clean-all-target clean-all-target: |