2009-10-01 17:58 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)

* INSTALL
  * utils/hbmk2/hbmk2.prg
  * config/os2/gcc.mk
  + config/os2/gccomf.mk
    + Added OS/2 GCC OMF support.
      This tries to fix resource support in hbmk2 compared to David's 
      solution. hbmk2 support is completely newly done, .mk support was imported 
      as is, with little change in actication logic.
    ! Fixed to use $(ECHOQUOTE) in some $(ECHO) command parameters.
    ; NOTE: Until we don't add autodetection for OMF supporting GCC versions, 
            it will have to be selected manually using HB_COMPILER=gccomf.
            Notice that for GCC 4.x this is obligatory since COFF support is 
            broken in these versions.
            Additional EMX* envvar options are left as an excercise for the 
            users, I intentionally didn't document these in INSTALL, as INSTALL 
            servers as Harbour documentation, not 3rd party tools like GCC.

  * config/global.mk
    ! Minor in comment.

  * contrib/hbqt/Makefile
  * contrib/hbqt/hbqts/Makefile
  * contrib/gtqtc/gtqtcs/Makefile
  * contrib/gtqtc/Makefile
    ! Disabled QT dependent parts for msvcia64 targets.
    ; Fails with error:
      ---
      z:\devl\qt\4.5.2\include\qtcore\../../src/corelib/tools/qvector.h(541) : warning C4346: 'QVector<T>::iterator' : dependent name is not a type
              prefix with 'typename' to indicate a type
      z:\devl\qt\4.5.2\include\qtcore\../../src/corelib/tools/qvector.h(541) : error C2143: syntax error : missing ';' before 'QVector<T>::insert'
      z:\devl\qt\4.5.2\include\qtcore\../../src/corelib/tools/qvector.h(541) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
      z:\devl\qt\4.5.2\include\qtcore\../../src/corelib/tools/qvector.h(541) : fatal error C1903: unable to recover from previous error(s); stopping compilation
      ---

  * package/winuni/HARBOUR_README_MINGWARM
    * Minor raw update to document newly found --force-local tar switch.
This commit is contained in:
Viktor Szakats
2009-10-01 16:04:11 +00:00
parent cdf567725a
commit d5ad4cb437
11 changed files with 141 additions and 40 deletions

View File

@@ -17,6 +17,44 @@
past entries belonging to author(s): Viktor Szakats.
*/
2009-10-01 17:58 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* INSTALL
* utils/hbmk2/hbmk2.prg
* config/os2/gcc.mk
+ config/os2/gccomf.mk
+ Added OS/2 GCC OMF support.
This tries to fix resource support in hbmk2 compared to David's
solution. hbmk2 support is completely newly done, .mk support was imported
as is, with little change in actication logic.
! Fixed to use $(ECHOQUOTE) in some $(ECHO) command parameters.
; NOTE: Until we don't add autodetection for OMF supporting GCC versions,
it will have to be selected manually using HB_COMPILER=gccomf.
Notice that for GCC 4.x this is obligatory since COFF support is
broken in these versions.
Additional EMX* envvar options are left as an excercise for the
users, I intentionally didn't document these in INSTALL, as INSTALL
servers as Harbour documentation, not 3rd party tools like GCC.
* config/global.mk
! Minor in comment.
* contrib/hbqt/Makefile
* contrib/hbqt/hbqts/Makefile
* contrib/gtqtc/gtqtcs/Makefile
* contrib/gtqtc/Makefile
! Disabled QT dependent parts for msvcia64 targets.
; Fails with error:
---
z:\devl\qt\4.5.2\include\qtcore\../../src/corelib/tools/qvector.h(541) : warning C4346: 'QVector<T>::iterator' : dependent name is not a type
prefix with 'typename' to indicate a type
z:\devl\qt\4.5.2\include\qtcore\../../src/corelib/tools/qvector.h(541) : error C2143: syntax error : missing ';' before 'QVector<T>::insert'
z:\devl\qt\4.5.2\include\qtcore\../../src/corelib/tools/qvector.h(541) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
z:\devl\qt\4.5.2\include\qtcore\../../src/corelib/tools/qvector.h(541) : fatal error C1903: unable to recover from previous error(s); stopping compilation
---
* package/winuni/HARBOUR_README_MINGWARM
* Minor raw update to document newly found --force-local tar switch.
2009-10-01 14:12 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rdd/dbfcdx/dbfcdx1.c
* harbour/source/rdd/dbf1.c

View File

@@ -107,8 +107,8 @@ HARBOUR
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%
set HB_USER_CFLAGS=-DTCPV40HDRS %HB_USER_CFLAGS%
set HB_USER_LDFLAGS=-LC:\usr\lib\tcpipv4 %HB_USER_LDFLAGS%
on Linux hosts
--------------
@@ -459,7 +459,8 @@ HARBOUR
os2
---
gcc - EMX GNU C
gcc - EMX GNU C 3.3.5 or lower
gccomf - EMX GNU C 3.3.5 or upper
watcom - Open Watcom C++
@@ -835,10 +836,15 @@ HARBOUR
for OS/2 hosts
--------------
--- GCC 3.3.x
--- GCC 3.3.4
C:\usr\bin\gccenv.cmd
os2-make
--- GCC 4.x
C:\usr\bin\gccenv.cmd
set HB_COMPILER=gccomf
os2-make
--- Open Watcom C++
SET WATCOM=C:\watcom
SET PATH=%WATCOM%\BINP;%WATCOM%\BINW;%PATH%

View File

@@ -942,7 +942,7 @@ endif
# Assemble relative path from OBJ_DIR to source.
GRANDP := $(subst $(subst x,x, ),,$(foreach item, $(subst /, ,$(OBJ_DIR)), ../))
# TODO: Set this in <arch>/<comp>.mk (compiler switches may influence it)
# TODO: Set this in <plat>/<comp>.mk (compiler switches may influence it)
HB_CPU :=
ifeq ($(HB_PLATFORM),win)
ifneq ($(filter $(HB_COMPILER),msvc64 mingw64 pocc64),)

View File

@@ -8,9 +8,15 @@ else
HB_CMP := gcc
endif
OBJ_EXT := .o
LIB_PREF :=
LIB_EXT := .a
ifeq ($(HB_COMPILER),gccomf)
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_COMPILER),gccomf)
CFLAGS += -Zomf
endif
ifneq ($(HB_BUILD_WARN),no)
CFLAGS += -Wall -W
endif
@@ -62,41 +72,59 @@ 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_COMPILER),gccomf)
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_COMPILER),gccomf)
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_COMPILER),gccomf)
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,)
@$(ECHO) LIBRARY $(DYNNAME) INITINSTANCE TERMINSTANCE >> __dyn__.def
@$(ECHO) PROTMODE >> __dyn__.def
@$(ECHO) CODE PRELOAD MOVEABLE DISCARDABLE >> __dyn__.def
@$(ECHO) DATA PRELOAD MOVEABLE MULTIPLE NONSHARED >> __dyn__.def
@$(ECHO) EXPORTS >> __dyn__.def
@$(ECHO) $(ECHOQUOTE)LIBRARY $(DYNNAME) INITINSTANCE TERMINSTANCE$(ECHOQUOTE) >> __dyn__.def
@$(ECHO) $(ECHOQUOTE)PROTMODE$(ECHOQUOTE) >> __dyn__.def
@$(ECHO) $(ECHOQUOTE)CODE PRELOAD MOVEABLE DISCARDABLE$(ECHOQUOTE) >> __dyn__.def
@$(ECHO) $(ECHOQUOTE)DATA PRELOAD MOVEABLE MULTIPLE NONSHARED$(ECHOQUOTE) >> __dyn__.def
@$(ECHO) $(ECHOQUOTE)EXPORTS$(ECHOQUOTE) >> __dyn__.def
$(foreach file,$^,$(dyn_object))
$(DY) $(DFLAGS) $(HB_USER_DFLAGS) $(DY_OUT)$(DYN_DIR)/$@ @__dyn__.tmp __dyn__.def $(DLIBS) $(DYSTRIP)
emximp -o $(IMP_FILE) $(DYN_DIR)/$@

View File

@@ -0,0 +1,10 @@
#
# $Id$
#
# GCC with OMF object format.
#
# This is available with GCC 3.3.5 as an option,
# and with GCC 4.x this an obligatory option.
include $(TOP)$(ROOT)config/$(HB_PLATFORM)/gcc.mk

View File

@@ -22,7 +22,7 @@ _DET_DSP_NAME := qt
_DET_VAR_INC_ := HB_INC_QT
_DET_VAR_HAS_ := HB_HAS_QT
_DET_FLT_PLAT := !dos !os2
_DET_FLT_COMP := !mingw64 !watcom !bcc !pocc !pocc64 !poccarm
_DET_FLT_COMP := !mingw64 !watcom !bcc !pocc !pocc64 !poccarm !msvcia64
_DET_INC_DEFP := /usr/include/qt4 /usr/lib/qt4/include /usr/include /Developer/qt/include
_DET_INC_HEAD := /Qt/qglobal.h
include $(TOP)$(ROOT)config/detfun.mk

View File

@@ -25,7 +25,7 @@ _DET_DSP_NAME := qt
_DET_VAR_INC_ := HB_INC_QT
_DET_VAR_HAS_ := HB_HAS_QT
_DET_FLT_PLAT := !dos !os2
_DET_FLT_COMP := !mingw64 !watcom !bcc !pocc !pocc64 !poccarm
_DET_FLT_COMP := !mingw64 !watcom !bcc !pocc !pocc64 !poccarm !msvcia64
_DET_INC_DEFP := /usr/include/qt4 /usr/lib/qt4/include /usr/include /Developer/qt/include
_DET_INC_HEAD := /Qt/qglobal.h
include $(TOP)$(ROOT)config/detfun.mk

View File

@@ -18,7 +18,7 @@ _DET_DSP_NAME := qt
_DET_VAR_INC_ := HB_INC_QT
_DET_VAR_HAS_ := HB_HAS_QT
_DET_FLT_PLAT := !dos !os2
_DET_FLT_COMP := !mingw64 !watcom !bcc !pocc !pocc64 !poccarm
_DET_FLT_COMP := !mingw64 !watcom !bcc !pocc !pocc64 !poccarm !msvcia64
_DET_INC_DEFP := /usr/include/qt4 /usr/lib/qt4/include /usr/include /Developer/qt/include
_DET_INC_HEAD := /Qt/qglobal.h
include $(TOP)$(ROOT)config/detfun.mk

View File

@@ -21,7 +21,7 @@ _DET_DSP_NAME := qt
_DET_VAR_INC_ := HB_INC_QT
_DET_VAR_HAS_ := HB_HAS_QT
_DET_FLT_PLAT := !dos !os2
_DET_FLT_COMP := !mingw64 !watcom !bcc !pocc !pocc64 !poccarm
_DET_FLT_COMP := !mingw64 !watcom !bcc !pocc !pocc64 !poccarm !msvcia64
_DET_INC_DEFP := /usr/include/qt4 /usr/lib/qt4/include /usr/include /Developer/qt/include
_DET_INC_HEAD := /Qt/qglobal.h
include $(TOP)$(ROOT)config/detfun.mk

View File

@@ -10,4 +10,6 @@ NOTES: - In order to unpack and *use* this package, you'll
- Unpack using these commands:
> bzip2 -d cegcc_mingw32ce_cygwin1.7_r1375.tar.bz2
> tar -xvf cegcc_mingw32ce_cygwin1.7_r1375.tar -h
OR
> tar --force-local -xvf cegcc_mingw32ce_cygwin1.7_r1375.tar
- Move content of /opt/mingw32ce directory to this one.

View File

@@ -947,7 +947,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
aCOMPDET := { { {|| FindInPath( "gcc" ) }, "gcc" },;
{ {|| FindInPath( "wpp386" ) }, "watcom" } }
#endif
aCOMPSUP := { "gcc", "watcom" }
aCOMPSUP := { "gcc", "gccomf", "watcom" }
l_aLIBHBGT := { "gtos2" }
hbmk[ _HBMK_cGTDEFAULT ] := "gtos2"
cDynLibNamePrefix := ""
@@ -1855,7 +1855,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
cParam := ArchCompFilter( hbmk, cParam )
IF ! Empty( cParam )
IF hbmk[ _HBMK_cCOMP ] $ "mingw|mingw64|mingwarm" .OR. ;
( hbmk[ _HBMK_cPLAT ] == "os2" .AND. hbmk[ _HBMK_cCOMP ] == "gcc" )
( hbmk[ _HBMK_cPLAT ] == "os2" .AND. hbmk[ _HBMK_cCOMP ] $ "gcc|gccomf" )
/* For MinGW/EMX GCC family add .res files as source input, as they
will need to be converted to coff format with windres (just
like plain .rc files) before feeding them to gcc. */
@@ -2409,7 +2409,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
ENDIF
ENDIF
CASE hbmk[ _HBMK_cPLAT ] == "os2" .AND. hbmk[ _HBMK_cCOMP ] == "gcc"
CASE hbmk[ _HBMK_cPLAT ] == "os2" .AND. hbmk[ _HBMK_cCOMP ] $ "gcc|gccomf"
IF hbmk[ _HBMK_lDEBUG ]
AAdd( hbmk[ _HBMK_aOPTC ], "-g" )
@@ -2417,7 +2417,11 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
cLibLibPrefix := "lib"
cLibPrefix := "-l"
cLibExt := ""
cObjExt := ".o"
IF hbmk[ _HBMK_cCOMP ] == "gccomf"
cObjExt := ".obj"
ELSE
cObjExt := ".o"
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 hbmk[ _HBMK_lOPTIM ]
@@ -2435,8 +2439,17 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
cOpt_Link := "{LO} {LA} {FL} {DL}"
cLibPathPrefix := "-L"
cLibPathSep := " "
cLibLibExt := ".a"
cBin_Lib := hbmk[ _HBMK_cCCPREFIX ] + "ar" + cCCEXT
IF hbmk[ _HBMK_cCOMP ] == "gccomf"
cLibLibExt := ".lib"
cBin_Lib := hbmk[ _HBMK_cCCPREFIX ] + "emxomfar" + cCCEXT
AAdd( hbmk[ _HBMK_aOPTC ], "-Zomf" )
AAdd( hbmk[ _HBMK_aOPTL ], "-Zomf" )
AAdd( hbmk[ _HBMK_aOPTD ], "-Zomf" )
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}" )
@@ -2473,7 +2486,11 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
cBin_Res := hbmk[ _HBMK_cCCPREFIX ] + "windres" + cCCEXT
cResExt := ".reso"
cOpt_Res := "{FR} {IR} -O coff -o {OS}"
IF hbmk[ _HBMK_cCOMP ] == "gccomf"
cOpt_Res := "{FR} {IR} -O omf -o {OS}"
ELSE
cOpt_Res := "{FR} {IR} -O coff -o {OS}"
ENDIF
IF ! Empty( hbmk[ _HBMK_cCCPATH ] )
cBin_Lib := FN_Escape( hbmk[ _HBMK_cCCPATH ] + hb_osPathSeparator() + cBin_Lib, nCmd_Esc )
@@ -6876,7 +6893,7 @@ FUNCTION hbmk_KEYW( hbmk, cKeyword )
IF ( cKeyword == "unix" .AND. ( hbmk[ _HBMK_cPLAT ] $ "bsd|hpux|sunos|beos|linux" .OR. hbmk[ _HBMK_cPLAT ] == "darwin" ) ) .OR. ;
( cKeyword == "allwin" .AND. hbmk[ _HBMK_cPLAT ] $ "win|wce" ) .OR. ;
( cKeyword == "allgcc" .AND. hbmk[ _HBMK_cCOMP ] $ "gcc|mingw|mingw64|mingwarm|cygwin|djgpp" ) .OR. ;
( cKeyword == "allgcc" .AND. hbmk[ _HBMK_cCOMP ] $ "gcc|mingw|mingw64|mingwarm|cygwin|djgpp|gccomf" ) .OR. ;
( cKeyword == "allmingw" .AND. hbmk[ _HBMK_cCOMP ] $ "mingw|mingw64|mingwarm" ) .OR. ;
( cKeyword == "allmsvc" .AND. hbmk[ _HBMK_cCOMP ] $ "msvc|msvc64|msvcia64|msvcarm" ) .OR. ;
( cKeyword == "allpocc" .AND. hbmk[ _HBMK_cCOMP ] $ "pocc|pocc64|poccarm" ) .OR. ;
@@ -7059,7 +7076,7 @@ STATIC PROCEDURE ShowHelp( lLong )
" - win : mingw, msvc, bcc, watcom, icc, pocc, cygwin, xcc,",;
" - mingw64, msvc64, msvcia64, iccia64, pocc64",;
" - wce : mingwarm, mingw, msvcarm, poccarm",;
" - os2 : gcc, watcom",;
" - os2 : gcc, gccomf, watcom",;
" - dos : djgpp, watcom",;
" - bsd : gcc",;
" - hpux : gcc",;