# # $Id$ # include $(TOP)$(ROOT)config/$(HB_ARCHITECTURE)/global.cf OBJ_EXT = .o EXE_EXT = .exe LIB_PREF = LIB_EXT = .a CC = gcc CC_IN = -c CC_OUT = -o CPPFLAGS = -I. -I$(TOP)include -I$(HB_INC_COMPILE) CFLAGS = -W -Wall -O2 -DHB_OS_OS2 -fsigned-char # 26/03/2004 - # added -DTCPV40HDRS to compile with GCC 3.2.2 on OS/2 v4.0 with mixed 16/32 bit tcp/ip stack # to be removed if compiled on a tcp/ip stack >= 4.1 (eComStation, for example) CFLAGS += -DTCPV40HDRS ifeq ($(HB_LEX),SIMPLEX) CFLAGS += -DSIMPLEX endif LD = gcc LDFLAGS = LD_OUT = -o $(SPACE) ifeq ($(C_MAIN),) ifeq ($(HB_GT_LIB),os2pm) # If building a PM program, override the main object. LDFLAGS +=$(TOP)$(ROOT)source/vm/$(HB_ARCH)/mainpm.o endif endif # Add all libraries specified in CONTRIBS and LIBS. ifeq ($(HB_LIB_COMPILE),) LINKPATHS += $(foreach lib, $(CONTRIBS), -L$(TOP)$(ROOT)contrib/$(lib)/$(HB_ARCH)) LINKPATHS += $(foreach lib, $(LIBS), -L$(TOP)$(ROOT)source/$(lib)/$(HB_ARCH)) else LINKPATHS += -L$(HB_LIB_COMPILE) endif #LINKLIBS += -Wl,-( LINKLIBS += $(foreach lib, $(CONTRIBS), -l$(subst lib,,$(lib))) LINKLIBS += $(foreach lib, $(LIBS), -l$(lib)) # If LIBS specifies the rdd library, add all DB drivers. ifeq ($(findstring rdd,$(LIBS)),rdd) LINKPATHS += $(foreach drv, $(HB_DB_DRIVERS), -L$(TOP)$(ROOT)source/rdd/$(drv)/$(HB_ARCH)) LINKLIBS += $(foreach drv, $(HB_DB_DRIVERS), -l$(drv)) # add a last round of rtl/vm to solve positional interdependencies (at the moment hbrun requires this) LINKLIBS += -lrtl -lvm endif # Add the specified GT driver library ifeq ($(findstring rtl,$(LIBS)),rtl) ifeq ($(C_MAIN),) ifeq ($(HB_GT_LIB),os2pm) # Special handling for PM mode LINKPATHS += -L$(TOP)$(ROOT)contrib/hgf/$(HB_GT_LIB)/$(HB_ARCH) LINKLIBS += -l$(HB_GT_LIB) LINKPATHS += -L$(TOP)$(ROOT)source/rtl/gtos2/$(HB_ARCH) LINKLIBS += -lgtos2 else LINKPATHS += -L$(TOP)$(ROOT)source/rtl/$(HB_GT_LIB)/$(HB_ARCH) LINKLIBS += -l$(HB_GT_LIB) endif endif endif #LINKLIBS += -Wl,-) # statical linking with GCC 3.2.2 libc as not require its presence on user system LDFLAGS += $(LINKPATHS) ifeq ($(C_MAIN),) ifeq ($(HB_GT_LIB),os2pm) # Override the default link rule in order to add a call to emxbind LD_RULE = $(LD) $(CFLAGS) $(LD_OUT)$@ $^ $(LDFLAGS) $(L_USR) $(LINKLIBS) & emxbind -ep $@ endif endif # Note: The empty line directly before 'endef' HAVE TO exist! # It causes that every echo command will be separated by LF define lib_object echo ADDMOD $(file) >> __lib__.tmp endef # We have to use a script to overcome the AR limit of max 850 characters # in commmand line define create_library IF EXIST $@ $(RM) $@ echo CREATE $@ > __lib__.tmp $(foreach file, $^, $(lib_object)) echo SAVE >> __lib__.tmp echo END >> __lib__.tmp $(AR) -M < __lib__.tmp endef # Under OS/2 || isn't a command separator (inside a shell, that is); correct separator is & AR = ar ARFLAGS = $(A_USR) AR_RULE = $(create_library) & $(RM) __lib__.tmp include $(TOP)$(ROOT)config/rules.cf