From 41953affebced5a0a384d024b0f1e340d994664d Mon Sep 17 00:00:00 2001 From: David Arturo Macias Corona Date: Thu, 1 Oct 2009 09:41:25 +0000 Subject: [PATCH] 2009-10-01 4:25 UTC-0500 David Arturo Macias Corona (dmacias/at/mail.udg.mx) * harbour/config/os2/gcc.mk * harbour/utils/hbmk2/hbmk2.prg + Added support of OMF library format To select alternative OMF library format, use: set HB_OS2_OMF=yes * INSTALL + Added note for OMF library format --- harbour/ChangeLog | 9 +++++ harbour/INSTALL | 15 +++++++-- harbour/config/os2/gcc.mk | 63 +++++++++++++++++++++++++---------- harbour/utils/hbmk2/hbmk2.prg | 31 +++++++++++++++-- 4 files changed, 96 insertions(+), 22 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index ac93db8241..22d3bc4ceb 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,15 @@ past entries belonging to author(s): Viktor Szakats. */ +2009-10-01 4:25 UTC-0500 David Arturo Macias Corona (dmacias/at/mail.udg.mx) + * harbour/config/os2/gcc.mk + * harbour/utils/hbmk2/hbmk2.prg + + Added support of OMF library format + To select alternative OMF library format, use: + set HB_OS2_OMF=yes + * INSTALL + + Added note for OMF library format + 2009-09-30 23:15 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/source/rdd/dbf1.c * harbour/source/rdd/delim1.c diff --git a/harbour/INSTALL b/harbour/INSTALL index 36b02774e9..d7bde603eb 100644 --- a/harbour/INSTALL +++ b/harbour/INSTALL @@ -106,9 +106,18 @@ HARBOUR > hello You should see 'Hello world!' on screen. - NOTE: To select alternative TCP/IP stack, use these commands: - set HB_USER_CFLAGS=-DTCPV40HDRS %HB_USER_CFLAGS% - set HB_USER_LDFLAGS=-LC:\usr\lib\tcpipv4 %HB_USER_LDFLAGS% + NOTES: + a) To select older TCP/IP stack (<4.1), use these values: + set HB_USER_CFLAGS=-DTCPV40HDRS %HB_USER_CFLAGS% + set HB_USER_LDFLAGS=-LC:\usr\lib\tcpipv4 %HB_USER_LDFLAGS% + b) To select alternative OMF library format, use: + set HB_OS2_OMF=yes + For gcc settings you optionally can use these values: + set EMXOMFLD_TYPE=WLINK ( or prefered choice ) + set EMXOMFLD_LINKER=WL.EXE ( or prefered choice ) + If choice is WL.exe, modified OpenWatcom wlink.exe available in + ftp://ftp.netlabs.org/pub/gcc/wl-hll-r1.zip + and located somewhere in PATH on Linux hosts -------------- diff --git a/harbour/config/os2/gcc.mk b/harbour/config/os2/gcc.mk index 959557fd83..995499d383 100644 --- a/harbour/config/os2/gcc.mk +++ b/harbour/config/os2/gcc.mk @@ -8,9 +8,15 @@ else HB_CMP := gcc endif -OBJ_EXT := .o -LIB_PREF := -LIB_EXT := .a +ifeq ($(HB_OS2_OMF),yes) + OBJ_EXT := .obj + LIB_PREF := + LIB_EXT := .lib +else + OBJ_EXT := .o + LIB_PREF := + LIB_EXT := .a +endif CC := $(HB_CCPATH)$(HB_CCPREFIX)$(HB_CMP)$(HB_CCPOSTFIX) CC_IN := -c @@ -20,6 +26,10 @@ CPPFLAGS := -I. -I$(HB_INC_COMPILE) CFLAGS := LDFLAGS := +ifeq ($(HB_OS2_OMF),yes) + CFLAGS += -Zomf +endif + ifneq ($(HB_BUILD_WARN),no) CFLAGS += -Wall -W endif @@ -62,33 +72,52 @@ LDFLAGS += $(LIBPATHS) # #endef -# We have to use a script to overcome the AR limit of max 850 characters -# in commmand line -define create_library - $(if $(wildcard $(subst /,$(DIRSEP),$(LIB_FILE))),@$(RM) $(subst /,$(DIRSEP),$(LIB_FILE)),) - @$(ECHO) $(ECHOQUOTE)CREATE $(LIB_DIR)/$@$(ECHOQUOTE) > __lib__.tmp - for %i in ( *$(OBJ_EXT) ) do @$(ECHO) $(ECHOQUOTE)ADDMOD %i$(ECHOQUOTE) >> __lib__.tmp - @$(ECHO) $(ECHOQUOTE)SAVE$(ECHOQUOTE) >> __lib__.tmp - @$(ECHO) $(ECHOQUOTE)END$(ECHOQUOTE) >> __lib__.tmp - $(AR) $(ARFLAGS) $(HB_USER_AFLAGS) -M < __lib__.tmp -endef + +ifeq ($(HB_OS2_OMF),yes) + define create_library + $(if $(wildcard $(subst /,$(DIRSEP),$(LIB_FILE))),@$(RM) $(subst /,$(DIRSEP),$(LIB_FILE)),) + for %i in ( *$(OBJ_EXT) ) do $(AR) $(ARFLAGS) $(HB_USER_AFLAGS) -p128 r $(LIB_DIR)/$@ %i$(ECHOQUOTE) + endef +else + # We have to use a script to overcome the AR limit of max 850 characters + # in commmand line + define create_library + $(if $(wildcard $(subst /,$(DIRSEP),$(LIB_FILE))),@$(RM) $(subst /,$(DIRSEP),$(LIB_FILE)),) + @$(ECHO) $(ECHOQUOTE)CREATE $(LIB_DIR)/$@$(ECHOQUOTE) > __lib__.tmp + for %i in ( *$(OBJ_EXT) ) do @$(ECHO) $(ECHOQUOTE)ADDMOD %i$(ECHOQUOTE) >> __lib__.tmp + @$(ECHO) $(ECHOQUOTE)SAVE$(ECHOQUOTE) >> __lib__.tmp + @$(ECHO) $(ECHOQUOTE)END$(ECHOQUOTE) >> __lib__.tmp + $(AR) $(ARFLAGS) $(HB_USER_AFLAGS) -M < __lib__.tmp + endef +endif # Under OS/2 || isn't a command separator (inside a shell, that is); correct separator is & -AR := $(HB_CCPATH)$(HB_CCPREFIX)ar -ARFLAGS := -AR_RULE = $(create_library) $(ARSTRIP) & $(RM) __lib__.tmp + +ifeq ($(HB_OS2_OMF),yes) + AR := $(HB_CCPATH)$(HB_CCPREFIX)emxomfar + ARFLAGS := + AR_RULE = $(create_library) $(ARSTRIP) +else + AR := $(HB_CCPATH)$(HB_CCPREFIX)ar + ARFLAGS := + AR_RULE = $(create_library) $(ARSTRIP) & $(RM) __lib__.tmp +endif DY := $(CC) DFLAGS := -shared $(LIBPATHS) +ifeq ($(HB_OS2_OMF),yes) + DFLAGS += -Zomf +endif DY_OUT := $(LD_OUT) DLIBS := $(foreach lib,$(LIBS) $(SYSLIBS),-l$(lib)) # NOTE: The empty line directly before 'endef' HAS TO exist! define dyn_object - @$(ECHO) $(file)>> __dyn__.tmp + @$(ECHO) $(subst $(DIRSEP),/,$(file))>> __dyn__.tmp @emxexp $(file)>> __dyn__.def endef + define create_dynlib $(if $(wildcard __dyn__.tmp),@$(RM) __dyn__.tmp,) $(if $(wildcard __dyn__.def),@$(RM) __dyn__.def,) diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index 21883d25b6..c5154123f6 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -2417,8 +2417,18 @@ FUNCTION hbmk( aArgs, /* @ */ lPause ) cLibPrefix := "-l" cLibExt := "" cObjExt := ".o" + + IF ValueIsT( GetEnv( "HB_OS2_OMF" ) ) + cObjExt := ".obj" + ENDIF + cBin_CompC := hbmk[ _HBMK_cCCPREFIX ] + iif( hbmk[ _HBMK_lCPP ] != NIL .AND. hbmk[ _HBMK_lCPP ], "g++", "gcc" ) + hbmk[ _HBMK_cCCPOSTFIX ] + cCCEXT cOpt_CompC := "-c" + + IF ValueIsT( GetEnv( "HB_OS2_OMF" ) ) + cOpt_CompC += " -Zomf" + ENDIF + IF hbmk[ _HBMK_lOPTIM ] cOpt_CompC += " -O3" ENDIF @@ -2430,12 +2440,29 @@ FUNCTION hbmk( aArgs, /* @ */ lPause ) ENDIF cBin_Dyn := cBin_CompC cOpt_Dyn := "-shared {FD} -o {OD} {DL} {LO} {LL} {LB} {LS}" + IF ValueIsT( GetEnv( "HB_OS2_OMF" ) ) + cOpt_Dyn += " -Zomf" + ENDIF + cBin_Link := cBin_CompC + cOpt_Link := "{LO} {LA} {FL} {DL}" + + IF ValueIsT( GetEnv( "HB_OS2_OMF" ) ) + cOpt_Link += " -Zomf" + ENDIF + cLibPathPrefix := "-L" cLibPathSep := " " - cLibLibExt := ".a" - cBin_Lib := hbmk[ _HBMK_cCCPREFIX ] + "ar" + cCCEXT + + IF ValueIsT( GetEnv( "HB_OS2_OMF" ) ) + cLibLibExt := ".lib" + cBin_Lib := hbmk[ _HBMK_cCCPREFIX ] + "emxomfar" + cCCEXT + ELSE + cLibLibExt := ".a" + cBin_Lib := hbmk[ _HBMK_cCCPREFIX ] + "ar" + cCCEXT + ENDIF + cOpt_Lib := "{FA} rcs {OL} {LO}" IF hbmk[ _HBMK_lMAP ] AAdd( hbmk[ _HBMK_aOPTL ], "-Wl,-Map,{OM}" )