2012-12-16 03:07 UTC+0100 Viktor Szakats (harbour syenar.net)

+ config/win/bcc64.mk
  * config/global.mk
  * config/postinst.hb
  * config/win/bcc.mk
  * package/winuni/mpkg_win_uni.bat
  * package/winuni/mpkg_win_uni.nsi
  * README.txt
  * utils/hbmk2/hbmk2.prg
    + added rough cut support for bcc64 to the two make systems.
      Untested. Autodetection and some 32-bit specific tricks
      not implemented.
      bcc64 is based on clang and it's only a bcc "emulation"
      layer on top of it. At least it will be a good compiler
      now, but it's important to see that it's internally
      a clang compiler, so its behavior and raw options are
      gcc-like.
      Changes are based on xhb patches and bcc64 online docs:
         http://docwiki.embarcadero.com/RADStudio/XE3/en/Command_Line_Utilities_Index
This commit is contained in:
Viktor Szakats
2012-12-16 02:09:30 +00:00
parent 59eae7c33f
commit 6f495d1ac1
9 changed files with 172 additions and 39 deletions

View File

@@ -10,6 +10,26 @@
* Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment
*/
2012-12-16 03:07 UTC+0100 Viktor Szakats (harbour syenar.net)
+ config/win/bcc64.mk
* config/global.mk
* config/postinst.hb
* config/win/bcc.mk
* package/winuni/mpkg_win_uni.bat
* package/winuni/mpkg_win_uni.nsi
* README.txt
* utils/hbmk2/hbmk2.prg
+ added rough cut support for bcc64 to the two make systems.
Untested. Autodetection and some 32-bit specific tricks
not implemented.
bcc64 is based on clang and it's only a bcc "emulation"
layer on top of it. At least it will be a good compiler
now, but it's important to see that it's internally
a clang compiler, so its behavior and raw options are
gcc-like.
Changes are based on xhb patches and bcc64 online docs:
http://docwiki.embarcadero.com/RADStudio/XE3/en/Command_Line_Utilities_Index
2012-12-16 00:35 UTC+0100 Viktor Szakats (harbour syenar.net)
* include/hbcomp.h
* include/hbcompdf.h

View File

@@ -656,6 +656,7 @@ TABLE OF CONTENT
watcom - Open Watcom C/C++
bcc - Borland/CodeGear/Embarcadero C++ 4.x and above
bcc64 - Embarcadero C++ 6.5 and above
icc - Intel(R) C/C++
iccia64 - Intel(R) C/C++ IA-64 (Itanium)
pocc - Pelles C 4.5 and above
@@ -1490,6 +1491,7 @@ TABLE OF CONTENT
&nbsp;| host<br />plat | target<br />plat/comp | target<br />cpu
:---- | :------------- | :-------------------- | :---------------------------------------
| win | win/bcc | x86
| win | win/bcc64 | x86-64
| win | win/gcc | x86
| win | win/global | x86
| win | win/icc | x86
@@ -1542,6 +1544,7 @@ TABLE OF CONTENT
x | linux | win/mingw64 | x86-64
x | linux | win/watcom | x86
x | linux | win/bcc | x86 (requires WINE)
x | linux | win/bcc64 | x86-64 (requires WINE)
x | linux | os2/watcom | x86
x | linux | dos/watcom | x86
x | linux | dos/djgpp | x86

View File

@@ -499,7 +499,7 @@ ifeq ($(HB_PLATFORM),)
ifneq ($(filter $(HB_COMPILER),msvcarm msvcmips msvcsh mingwarm poccarm),)
HB_PLATFORM := wce
else
ifneq ($(filter $(HB_COMPILER),mingw mingw64 msvc msvc64 msvcia64 bcc xcc pocc pocc64),)
ifneq ($(filter $(HB_COMPILER),mingw mingw64 msvc msvc64 msvcia64 bcc bcc64 xcc pocc pocc64),)
HB_PLATFORM := win
endif
endif
@@ -749,6 +749,7 @@ ifeq ($(HB_COMPILER),)
endif
endif
else
# TODO: Add bcc64 autodetection
HB_COMP_PATH := $(call find_in_path_raw,bcc32.exe)
ifneq ($(HB_COMP_PATH),)
HB_COMPILER := bcc

View File

@@ -601,6 +601,8 @@ STATIC FUNCTION __hb_extern_get_list( cInputName )
cCommand := "wlib {I}"
CASE GetEnv( "HB_COMPILER" ) == "bcc"
cCommand := "tlib {I}, {T}"
CASE GetEnv( "HB_COMPILER" ) == "bcc64"
cCommand := "tlib64 {I}, {T}"
ENDCASE
IF ! Empty( cCommand ) .AND. ;

View File

@@ -4,13 +4,23 @@
# GNU Make file for Borland/CodeGear/Embarcadero C/C++ 32-bit (4.x-)
OBJ_EXT := .obj
LIB_PREF :=
LIB_EXT := .lib
ifeq ($(HB_COMPILER),bcc64)
OBJ_EXT := .o
LIB_PREF :=
LIB_EXT := .a
else
OBJ_EXT := .obj
LIB_PREF :=
LIB_EXT := .lib
endif
HB_DYN_COPT := -DHB_DYNLIB
CC := bcc32.exe
ifeq ($(HB_COMPILER),bcc64)
CC := bcc64.exe
else
CC := bcc32.exe
endif
CC_IN := -c
CC_OUT := -o
@@ -25,9 +35,13 @@ else
endif
ifneq ($(HB_BUILD_OPTIM),no)
# for some reason -6 generates the exact same code as -4 with both 5.5 and 5.8.
# -5 seems to be significantly slower than both. [vszakats]
CFLAGS += -d -6 -O2 -OS -Ov -Oi -Oc
ifeq ($(HB_COMPILER),bcc64)
CFLAGS += -d -O2 -OS -Ov -Oc
else
# for some reason -6 generates the exact same code as -4 with both 5.5 and 5.8.
# -5 seems to be significantly slower than both. [vszakats]
CFLAGS += -d -O2 -OS -Ov -Oc -Oi -6
endif
endif
ifeq ($(HB_BUILD_MODE),cpp)
@@ -35,7 +49,11 @@ ifeq ($(HB_BUILD_MODE),cpp)
endif
ifeq ($(HB_BUILD_DEBUG),yes)
CFLAGS += -y -v
ifeq ($(HB_COMPILER),bcc64)
CFLAGS += -g
else
CFLAGS += -v -y
endif
endif
ifneq ($(HB_HOST_PLAT_UNIX),)
@@ -71,14 +89,26 @@ RC := brcc32.exe
RC_OUT := -fo
RCFLAGS += -I. -I$(HB_HOST_INC)
LD := ilink32.exe
ifeq ($(HB_COMPILER),bcc64)
LD := ilink64.exe
else
LD := ilink32.exe
endif
LIBPATHS := $(foreach dir,$(LIB_DIR) $(3RDLIB_DIR),$(subst /,$(BACKSLASH),-L"$(dir)"))
LDFLAGS += $(LIBPATHS) -Gn -Tpe
LD_RULE = $(LD) $(LDFLAGS) $(HB_LDFLAGS) $(HB_USER_LDFLAGS) c0x32.obj $(filter-out %$(RES_EXT),$(^F)), "$(subst /,$(BACKSLASH),$(BIN_DIR)/$@)", nul, $(LDLIBS) cw32mt import32,, $(filter %$(RES_EXT),$(^F)) $(LDSTRIP)
ifeq ($(HB_COMPILER),bcc64)
LD_RULE = $(LD) $(LDFLAGS) $(HB_LDFLAGS) $(HB_USER_LDFLAGS) c0x64.obj $(filter-out %$(RES_EXT),$(^F)), "$(subst /,$(BACKSLASH),$(BIN_DIR)/$@)", nul, $(LDLIBS) cw64mt import64,, $(filter %$(RES_EXT),$(^F)) $(LDSTRIP)
else
LD_RULE = $(LD) $(LDFLAGS) $(HB_LDFLAGS) $(HB_USER_LDFLAGS) c0x32.obj $(filter-out %$(RES_EXT),$(^F)), "$(subst /,$(BACKSLASH),$(BIN_DIR)/$@)", nul, $(LDLIBS) cw32mt import32,, $(filter %$(RES_EXT),$(^F)) $(LDSTRIP)
endif
LDLIBS := $(strip $(HB_USER_LIBS) $(LIBS) $(3RDLIBS) $(SYSLIBS))
AR := tlib.exe
ifeq ($(HB_COMPILER),bcc64)
AR := tlib64.exe
else
AR := tlib.exe
endif
ARFLAGS += /P128
AR_RULE = $(AR) $(ARFLAGS) $(HB_AFLAGS) $(HB_USER_AFLAGS) "$(subst /,$(BACKSLASH),$(LIB_DIR)/$@)" $(foreach file,$(?F),-+$(file))
@@ -113,11 +143,19 @@ ifneq ($(HB_SHELL),sh)
endif
endif
DY := ilink32.exe
ifeq ($(HB_COMPILER),bcc64)
DY := ilink64.exe
else
DY := ilink32.exe
endif
DFLAGS += -q -Gn -C -aa -Tpd -Gi -x $(LIBPATHS)
DY_OUT :=
# NOTE: .lib extension not added to keep line short enough to work on Win9x/ME
DLIBS := $(HB_USER_LIBS) $(LIBS) $(3RDLIBS) $(SYSLIBS) cw32mt import32
ifeq ($(HB_COMPILER),bcc64)
DLIBS := $(HB_USER_LIBS) $(LIBS) $(3RDLIBS) $(SYSLIBS) cw64mt import64
else
DLIBS := $(HB_USER_LIBS) $(LIBS) $(3RDLIBS) $(SYSLIBS) cw32mt import32
endif
# NOTE: The empty line directly before 'endef' HAVE TO exist!
define dynlib_object

View File

@@ -0,0 +1,5 @@
#
# $Id$
#
include $(TOP)$(ROOT)config/$(HB_PLATFORM)/bcc.mk

View File

@@ -48,6 +48,7 @@ xcopy /y /s %~dp0..\..\pkg\dos\watcom\hb%HB_VL%wa\lib
xcopy /y /s %~dp0..\..\pkg\os2\watcom\harbour-%HB_VF%-os2-watcom\lib %HB_ABSROOT%lib\
xcopy /y /s %~dp0..\..\pkg\wce\mingwarm\harbour-%HB_VF%-wce-mingwarm\lib %HB_ABSROOT%lib\
xcopy /y /s %~dp0..\..\pkg\win\bcc\harbour-%HB_VF%-win-bcc\lib %HB_ABSROOT%lib\
xcopy /y /s %~dp0..\..\pkg\win\bcc64\harbour-%HB_VF%-win-bcc64\lib %HB_ABSROOT%lib\
xcopy /y /s %~dp0..\..\pkg\win\mingw\harbour-%HB_VF%-win-mingw\lib %HB_ABSROOT%lib\
xcopy /y /s %~dp0..\..\pkg\win\mingw64\harbour-%HB_VF%-win-mingw64\lib %HB_ABSROOT%lib\
xcopy /y /s %~dp0..\..\pkg\win\msvc\harbour-%HB_VF%-win-msvc\lib %HB_ABSROOT%lib\
@@ -142,6 +143,7 @@ echo "%HB_DR%lib\win\msvc\*.*" >> _hbfiles
echo "%HB_DR%lib\win\msvc64\*.*" >> _hbfiles
rem echo "%HB_DR%bin\harbour-%HB_VS%-bcc.dll" >> _hbfiles
echo "%HB_DR%lib\win\bcc\*.*" >> _hbfiles
echo "%HB_DR%lib\win\bcc64\*.*" >> _hbfiles
echo "%HB_DR%lib\win\watcom\*.*" >> _hbfiles
rem echo "%HB_DR%lib\win\pocc\*.*" >> _hbfiles
rem echo "%HB_DR%lib\win\pocc64\*.*" >> _hbfiles

View File

@@ -207,6 +207,14 @@ Section "Libs for Borland C" hb_lib_bcc
SectionEnd
!endif
!ifndef PKG_NO_COMP_BCC64
Section "Libs for Borland C x64" hb_lib_bcc64
SetOutPath $INSTDIR\bin
SetOutPath $INSTDIR\lib\win\bcc64
File "$%HB_ABSROOT%lib\win\bcc64\*.*"
SectionEnd
!endif
!ifndef PKG_NO_COMP_WATCOM
Section /o "Libs for Open Watcom" hb_lib_watcom
SetOutPath $INSTDIR\lib\win\watcom
@@ -385,6 +393,9 @@ SectionEnd
!ifndef PKG_NO_COMP_BCC
LangString DESC_hb_lib_bcc ${LANG_ENGLISH} "Harbour libs for Borland C"
!endif
!ifndef PKG_NO_COMP_BCC64
LangString DESC_hb_lib_bcc64 ${LANG_ENGLISH} "Harbour libs for Borland C x64"
!endif
!ifndef PKG_NO_COMP_WATCOM
LangString DESC_hb_lib_watcom ${LANG_ENGLISH} "Harbour libs for Open Watcom"
!endif
@@ -447,6 +458,9 @@ SectionEnd
!ifndef PKG_NO_COMP_BCC
!insertmacro MUI_DESCRIPTION_TEXT ${hb_lib_bcc} $(DESC_hb_lib_bcc)
!endif
!ifndef PKG_NO_COMP_BCC64
!insertmacro MUI_DESCRIPTION_TEXT ${hb_lib_bcc64} $(DESC_hb_lib_bcc64)
!endif
!ifndef PKG_NO_COMP_WATCOM
!insertmacro MUI_DESCRIPTION_TEXT ${hb_lib_watcom} $(DESC_hb_lib_watcom)
!endif

View File

@@ -1620,6 +1620,7 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel )
CASE "msvc64"
CASE "msvcia64"
CASE "bcc"
CASE "bcc64"
CASE "xcc"
CASE "pocc"
CASE "pocc64"
@@ -1762,7 +1763,7 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel )
{ {|| iif( FindInPath( "wcc386" ) == NIL, ;
FindInPath( "cl.exe" ), ;
NIL ) }, "msvc" }, ;
{ {|| _BCC_BIN_DETECT() }, "bcc" }, ;
{ {|| _BCC_BIN_DETECT() }, "bcc" }, ; /* TODO: Add bcc64 autodetection */
{ {|| iif( FindInPath( "dbgeng.lib", GetEnv( "LIB" ) ) != NIL .AND. ( tmp1 := FindInPath( "pocc.exe" ) ) != NIL, tmp1, NIL ) }, "pocc64" }, ;
{ {|| FindInPath( "pocc.exe" ) }, "pocc" }, ;
{ {|| iif( ( tmp1 := FindInPath( "icl.exe" ) ) != NIL .AND. "itanium" $ Lower( tmp1 ), tmp1, NIL ) }, "iccia64" }, ;
@@ -1772,7 +1773,7 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel )
#endif
aCOMPSUP := { ;
"mingw", "msvc", "bcc", "watcom", "icc", "pocc", "xcc", ;
"mingw64", "msvc64", "msvcia64", "iccia64", "pocc64" }
"mingw64", "msvc64", "msvcia64", "bcc64", "iccia64", "pocc64" }
l_aLIBHBGT := { "gtwin", "gtwvt", "gtgui" }
hbmk[ _HBMK_cGTDEFAULT ] := "gtwin"
hbmk[ _HBMK_cDynLibPrefix ] := ""
@@ -2047,7 +2048,7 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel )
/* Tweaks to compiler/platform environments */
IF hbmk[ _HBMK_cCOMP ] == "bcc"
IF hbmk[ _HBMK_cCOMP ] == "bcc" /* TODO: Add support for bcc64 */
/* NOTE: Hack to tweak bcc setup to include one additional
compiler lib dir to lib search path. */
IF Empty( cPath_CompC )
@@ -4562,7 +4563,7 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel )
cResPrefix := "OP res="
ENDIF
CASE hbmk[ _HBMK_cPLAT ] == "win" .AND. hbmk[ _HBMK_cCOMP ] == "bcc"
CASE hbmk[ _HBMK_cPLAT ] == "win" .AND. HBMK_ISCOMP( "bcc|bcc64" )
hbmk[ _HBMK_nCmd_FNF ] := _FNF_BCKSLASH
#if defined( __PLATFORM__UNIX )
hbmk[ _HBMK_nCmd_Esc ] := _ESC_NIX
@@ -4570,7 +4571,11 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel )
hbmk[ _HBMK_nCmd_Esc ] := _ESC_DBLQUOTE
#endif
IF hbmk[ _HBMK_lDEBUG ]
AAdd( hbmk[ _HBMK_aOPTC ], "-y -v" )
IF hbmk[ _HBMK_cCOMP ] == "bcc64"
AAdd( hbmk[ _HBMK_aOPTC ], "-g" )
ELSE
AAdd( hbmk[ _HBMK_aOPTC ], "-v -y" )
ENDIF
AAdd( hbmk[ _HBMK_aOPTL ], "-v" )
ELSE
AAdd( l_aCLEAN, PathSepToSelf( hb_FNameExtSet( hbmk[ _HBMK_cPROGNAME ], ".tds" ) ) )
@@ -4582,9 +4587,15 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel )
AAdd( hbmk[ _HBMK_aOPTC ], "-P" )
ENDIF
cLibPrefix := NIL
cLibExt := ".lib"
cObjExt := ".obj"
cBin_Lib := "tlib.exe"
IF hbmk[ _HBMK_cCOMP ] == "bcc64"
cLibExt := ".a"
cObjExt := ".o"
cBin_Lib := "tlib64.exe"
ELSE
cLibExt := ".lib"
cObjExt := ".obj"
cBin_Lib := "tlib.exe"
ENDIF
/* Only forward slash is accepted here as option prefix. */
cOpt_Lib := "/P128 {FA} {OL} {LO}{SCRIPT}"
cBin_LibHBX := cBin_Lib
@@ -4593,13 +4604,25 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel )
cImpLibExt := cLibLibExt
cLibObjPrefix := "-+ "
cOptIncMask := "-I{DI}"
cBin_CompC := "bcc32.exe"
IF hbmk[ _HBMK_cCOMP ] == "bcc64"
cBin_CompC := "bcc64.exe"
ELSE
cBin_CompC := "bcc32.exe"
ENDIF
cBin_CompCPP := cBin_CompC
cOpt_CompC := "-c -q -CP437"
IF hbmk[ _HBMK_lOPTIM ]
cOpt_CompC += " -d -6 -O2 -OS -Ov -Oi -Oc"
IF hbmk[ _HBMK_cCOMP ] == "bcc64"
cOpt_CompC += " -d -O2 -OS -Ov -Oc"
ELSE
cOpt_CompC += " -d -O2 -OS -Ov -Oc -Oi -6"
ENDIF
ENDIF
IF hbmk[ _HBMK_cCOMP ] == "bcc64"
cLibBCC_CRTL := "cw64mt.lib"
ELSE
cLibBCC_CRTL := "cw32mt.lib"
ENDIF
cLibBCC_CRTL := "cw32mt.lib"
IF hbmk[ _HBMK_lWINUNI ]
AAdd( hbmk[ _HBMK_aOPTC ], "-DUNICODE" )
ENDIF
@@ -4608,7 +4631,11 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel )
IF AScan( hbmk[ _HBMK_aOPTC ], {| tmp | tmp == "-tW" } ) == 0
AAdd( hbmk[ _HBMK_aOPTC ], "-tWM" )
ELSE
cLibBCC_CRTL := "cw32.lib"
IF hbmk[ _HBMK_cCOMP ] == "bcc64"
cLibBCC_CRTL := "cw64.lib"
ELSE
cLibBCC_CRTL := "cw32.lib"
ENDIF
ENDIF
ELSE
AAdd( hbmk[ _HBMK_aOPTC ], "-tWM" )
@@ -4623,11 +4650,23 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel )
cBin_Res := "brcc32.exe"
cOpt_Res := "{FR} {IR} -fo{OS}"
cResExt := ".res"
cBin_Link := "ilink32.exe"
IF hbmk[ _HBMK_cCOMP ] == "bcc64"
cBin_Link := "ilink64.exe"
ELSE
cBin_Link := "ilink32.exe"
ENDIF
cBin_Dyn := cBin_Link
cOpt_Link := "-Gn -Tpe -L{DL} {FL} " + iif( hbmk[ _HBMK_lGUI ], "c0w32.obj", "c0x32.obj" ) + " {LO}, {OE}, " + iif( hbmk[ _HBMK_lMAP ], "{OM}", "nul" ) + ", {LL} {LB} {LF} " + cLibBCC_CRTL + " import32.lib, {IM}, {LS}{SCRIPT}"
cOpt_Dyn := "-Gn -Tpd -L{DL} {FD} " + "c0d32.obj" + " {LO}, {OD}, " + iif( hbmk[ _HBMK_lMAP ], "{OM}", "nul" ) + ", {LL} {LB} {LF} " + cLibBCC_CRTL + " import32.lib, {IM}, {LS}{SCRIPT}"
bBlk_ImpLib := {| cSourceDLL, cTargetLib, cFlags | win_implib_command_bcc( hbmk, "implib.exe -c {FI} {OL} {ID}", cSourceDLL, cTargetLib, cFlags ) }
IF hbmk[ _HBMK_cCOMP ] == "bcc64"
cOpt_Link := "-Gn -Tpe -L{DL} {FL} " + iif( hbmk[ _HBMK_lGUI ], "c0w64.obj", "c0x64.obj" ) + " {LO}, {OE}, " + iif( hbmk[ _HBMK_lMAP ], "{OM}", "nul" ) + ", {LL} {LB} {LF} " + cLibBCC_CRTL + " import64.lib, {IM}, {LS}{SCRIPT}"
cOpt_Dyn := "-Gn -Tpd -L{DL} {FD} " + "c0d64.obj" + " {LO}, {OD}, " + iif( hbmk[ _HBMK_lMAP ], "{OM}", "nul" ) + ", {LL} {LB} {LF} " + cLibBCC_CRTL + " import64.lib, {IM}, {LS}{SCRIPT}"
ELSE
cOpt_Link := "-Gn -Tpe -L{DL} {FL} " + iif( hbmk[ _HBMK_lGUI ], "c0w32.obj", "c0x32.obj" ) + " {LO}, {OE}, " + iif( hbmk[ _HBMK_lMAP ], "{OM}", "nul" ) + ", {LL} {LB} {LF} " + cLibBCC_CRTL + " import32.lib, {IM}, {LS}{SCRIPT}"
cOpt_Dyn := "-Gn -Tpd -L{DL} {FD} " + "c0d32.obj" + " {LO}, {OD}, " + iif( hbmk[ _HBMK_lMAP ], "{OM}", "nul" ) + ", {LL} {LB} {LF} " + cLibBCC_CRTL + " import32.lib, {IM}, {LS}{SCRIPT}"
ENDIF
IF hbmk[ _HBMK_cCOMP ] == "bcc"
/* TODO: Add support for bcc64/mkexp */
bBlk_ImpLib := {| cSourceDLL, cTargetLib, cFlags | win_implib_command_bcc( hbmk, "implib.exe -c {FI} {OL} {ID}", cSourceDLL, cTargetLib, cFlags ) }
ENDIF
cLibPathPrefix := ""
cLibPathSep := ";"
IF hbmk[ _HBMK_lMAP ]
@@ -4649,8 +4688,13 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel )
[vszakats] */
/* AAdd( hbmk[ _HBMK_aOPTL ], "-Gi" ) */
/* AAdd( hbmk[ _HBMK_aOPTD ], "-Gi" ) */
cBin_Post := "implib.exe"
cOpt_Post := "-c {OI} {OB}"
IF hbmk[ _HBMK_cCOMP ] == "bcc64"
cBin_Post := "mkexp.exe"
cOpt_Post := "{OI} {OB}"
ELSE
cBin_Post := "implib.exe"
cOpt_Post := "-c {OI} {OB}"
ENDIF
ENDIF
IF ! Empty( hbmk[ _HBMK_cWorkDir ] )
AAdd( hbmk[ _HBMK_aOPTC ], "-n" + FNameEscape( hbmk[ _HBMK_cWorkDir ], hbmk[ _HBMK_nCmd_Esc ], hbmk[ _HBMK_nCmd_FNF ] ) )
@@ -4663,7 +4707,9 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel )
ENDIF
ENDIF
ENDIF
l_aLIBSHARED := { cHarbourDyn + cDL_Version_Alter + "-bcc" + cLibExt }
IF hbmk[ _HBMK_cCOMP ] == "bcc"
l_aLIBSHARED := { cHarbourDyn + cDL_Version_Alter + "-bcc" + cLibExt }
ENDIF
l_aLIBSHAREDPOST := { "hbmainstd", "hbmainwin" }
l_aLIBSYS := ArrayAJoin( { l_aLIBSYS, l_aLIBSYSCORE, l_aLIBSYSMISC } )
@@ -5698,7 +5744,7 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel )
tmp := ""
CASE HBMK_ISCOMP( "gcc|mingw|mingw64|mingwarm" )
tmp := "__attribute__ (( dllimport ))"
CASE HBMK_ISCOMP( "bcc|watcom" )
CASE HBMK_ISCOMP( "bcc|bcc64|watcom" )
tmp := "__declspec( dllimport )"
OTHERWISE
tmp := "_declspec( dllimport )"
@@ -6144,7 +6190,7 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel )
cFile += "#endif" + Chr( 10 )
cFile += 'CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "' + PathSepToForward( hbmk[ _HBMK_cMANIFEST ] ) + '"' + Chr( 10 )
ENDIF
IF ! Empty( hbmk[ _HBMK_aICON ] ) .AND. !( hbmk[ _HBMK_cCOMP ] == "bcc" ) /* BCC cannot handle certain new .ico files */
IF ! Empty( hbmk[ _HBMK_aICON ] ) .AND. ! HBMK_ISCOMP( "bcc|bcc64" ) /* BCC cannot handle certain new .ico files */
IF hbmk[ _HBMK_cPLAT ] == "os2"
AEval( hbmk[ _HBMK_aICON ], {| tmp, tmp1 | cFile += "ICON " + hb_ntos( tmp1 ) + ' DISCARDABLE "' + PathSepToForward( tmp ) + '"' + Chr( 10 ) } )
ELSE
@@ -8716,7 +8762,7 @@ STATIC FUNCTION FindLib( hbmk, cLib, aLIBPATH, cLibPrefix, cLibExt )
LOCAL tmp
/* Check libs in their full paths */
IF HBMK_ISCOMP( "msvc|msvc64|msvcarm|bcc|pocc|pocc64|poccarm|watcom" )
IF HBMK_ISCOMP( "msvc|msvc64|msvcarm|bcc|bcc64|pocc|pocc64|poccarm|watcom" )
IF ! Empty( hb_FNameDir( cLib ) )
IF hb_FileExists( cLib := hb_FNameExtSet( cLib, cLibExt ) )
RETURN cLib
@@ -8731,7 +8777,7 @@ STATIC FUNCTION FindLib( hbmk, cLib, aLIBPATH, cLibPrefix, cLibExt )
ENDIF
/* Check in current dir */
IF HBMK_ISCOMP( "msvc|msvc64|msvcarm|bcc|pocc|pocc64|poccarm|watcom" )
IF HBMK_ISCOMP( "msvc|msvc64|msvcarm|bcc|bcc64|pocc|pocc64|poccarm|watcom" )
IF ! Empty( tmp := LibExists( hbmk, "", cLib, cLibPrefix, cLibExt ) )
RETURN tmp
ENDIF
@@ -12121,6 +12167,7 @@ STATIC FUNCTION hbmk_CPU( hbmk )
RETURN "x86"
CASE hbmk[ _HBMK_cCOMP ] == "mingw64" .OR. ;
hbmk[ _HBMK_cCOMP ] == "msvc64" .OR. ;
hbmk[ _HBMK_cCOMP ] == "bcc64" .OR. ;
hbmk[ _HBMK_cCOMP ] == "pocc64"
RETURN "x86_64"
CASE hbmk[ _HBMK_cCOMP ] == "msvcia64" .OR. ;
@@ -12186,6 +12233,7 @@ FUNCTION hbmk_KEYW( hbmk, cFileName, cKeyword, cValue, cOperator )
CASE "allgcc" ; RETURN HBMK_ISCOMP( "gcc|mingw|mingw64|mingwarm|djgpp|gccomf|clang|open64|pcc" )
CASE "allmingw" ; RETURN HBMK_ISCOMP( "mingw|mingw64|mingwarm" )
CASE "allmsvc" ; RETURN HBMK_ISCOMP( "msvc|msvc64|msvcia64|msvcarm" )
CASE "allbcc" ; RETURN HBMK_ISCOMP( "bcc|bcc64" )
CASE "allpocc" ; RETURN HBMK_ISCOMP( "pocc|pocc64|poccarm" )
CASE "allicc" ; RETURN HBMK_ISCOMP( "icc|iccia64" )
CASE "xhb" ; RETURN _HBMODE_IS_XHB( hbmk[ _HBMK_nHBMODE ] )
@@ -12205,7 +12253,7 @@ FUNCTION hbmk_KEYW( hbmk, cFileName, cKeyword, cValue, cOperator )
"|bsd|hpux|sunos|beos|qnx|android|vxworks|symbian|linux|darwin|cygwin|minix|aix" +;
"|msvc|msvc64|msvcia64|msvcarm" +;
"|pocc|pocc64|poccarm|xcc" +;
"|mingw|mingw64|mingwarm|bcc|watcom" +;
"|mingw|mingw64|mingwarm|bcc|bcc64|watcom" +;
"|gcc|gccomf|djgpp" +;
"|hblib|hbdyn|hbdynvm|hbimplib|hbexe" +;
"|icc|iccia64|clang|open64|sunpro|diab|pcc" +;
@@ -14505,7 +14553,7 @@ STATIC PROCEDURE ShowHelp( hbmk, lLong )
I_( "Supported <comp> values for each supported <plat> value:" ), ;
" - linux : gcc, clang, icc, watcom, sunpro, open64, pcc", ;
" - darwin : gcc, clang, icc, pcc", ;
" - win : mingw, msvc, bcc, watcom, icc, pocc, xcc,", ;
" - win : mingw, msvc, bcc, bcc64, watcom, icc, pocc, xcc,", ;
" mingw64, msvc64, msvcia64, iccia64, pocc64", ;
" - wce : mingwarm, mingw, msvcarm, poccarm", ;
" - os2 : gcc, gccomf, watcom", ;