2011-05-11 12:50 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* utils/hbmk2/hbmk2.prg
+ added experimental -ldflag+=, -dflag+= cmdline options
and ldflags+= .hbc option. Such flags will be added after
libs, which may be useful in some situations, f.e. pkg-config
% only enclose libnames and paths inside single-quotes if
they contain any non-ascii, non-digig, non-., non-/ chars
! fixed .hbx generation on darwin
This commit is contained in:
@@ -16,6 +16,15 @@
|
||||
The license applies to all entries newer than 2009-04-28.
|
||||
*/
|
||||
|
||||
2011-05-11 12:50 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
|
||||
* utils/hbmk2/hbmk2.prg
|
||||
+ added experimental -ldflag+=, -dflag+= cmdline options
|
||||
and ldflags+= .hbc option. Such flags will be added after
|
||||
libs, which may be useful in some situations, f.e. pkg-config
|
||||
% only enclose libnames and paths inside single-quotes if
|
||||
they contain any non-ascii, non-digig, non-., non-/ chars
|
||||
! fixed .hbx generation on darwin
|
||||
|
||||
2011-05-11 02:52 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
|
||||
* include/hbtrace.ch
|
||||
* added way to disable HB_TR_ALWAYS
|
||||
|
||||
@@ -345,124 +345,126 @@ REQUEST hbmk_KEYW
|
||||
#define _HBMK_aOPTPRG 41
|
||||
#define _HBMK_aOPTRES 42
|
||||
#define _HBMK_aOPTL 43
|
||||
#define _HBMK_aOPTA 44
|
||||
#define _HBMK_aOPTD 45
|
||||
#define _HBMK_aOPTI 46
|
||||
#define _HBMK_lCPP 47
|
||||
#define _HBMK_lSHARED 48
|
||||
#define _HBMK_lSTATICFULL 49
|
||||
#define _HBMK_lSHAREDDIST 50
|
||||
#define _HBMK_lNULRDD 51
|
||||
#define _HBMK_lMAP 52
|
||||
#define _HBMK_lBEEP 53
|
||||
#define _HBMK_lSTRIP 54
|
||||
#define _HBMK_lOPTIM 55
|
||||
#define _HBMK_nCOMPR 56
|
||||
#define _HBMK_nWARN 57
|
||||
#define _HBMK_lRUN 58
|
||||
#define _HBMK_lINC 59
|
||||
#define _HBMK_lREBUILDPO 60
|
||||
#define _HBMK_lMINIPO 61
|
||||
#define _HBMK_lWINUNI 62
|
||||
#define _HBMK_nCONF 63
|
||||
#define _HBMK_lIGNOREERROR 64
|
||||
#define _HBMK_lIMPLIB 65
|
||||
#define _HBMK_lHBCPPMM 66
|
||||
#define _HBMK_aVAR 67
|
||||
#define _HBMK_hDEP 68
|
||||
#define _HBMK_aOPTLPOST 44
|
||||
#define _HBMK_aOPTA 45
|
||||
#define _HBMK_aOPTD 46
|
||||
#define _HBMK_aOPTDPOST 47
|
||||
#define _HBMK_aOPTI 48
|
||||
#define _HBMK_lCPP 49
|
||||
#define _HBMK_lSHARED 50
|
||||
#define _HBMK_lSTATICFULL 51
|
||||
#define _HBMK_lSHAREDDIST 52
|
||||
#define _HBMK_lNULRDD 53
|
||||
#define _HBMK_lMAP 54
|
||||
#define _HBMK_lBEEP 55
|
||||
#define _HBMK_lSTRIP 56
|
||||
#define _HBMK_lOPTIM 57
|
||||
#define _HBMK_nCOMPR 58
|
||||
#define _HBMK_nWARN 59
|
||||
#define _HBMK_lRUN 60
|
||||
#define _HBMK_lINC 61
|
||||
#define _HBMK_lREBUILDPO 62
|
||||
#define _HBMK_lMINIPO 63
|
||||
#define _HBMK_lWINUNI 64
|
||||
#define _HBMK_nCONF 65
|
||||
#define _HBMK_lIGNOREERROR 66
|
||||
#define _HBMK_lIMPLIB 67
|
||||
#define _HBMK_lHBCPPMM 68
|
||||
#define _HBMK_aVAR 69
|
||||
#define _HBMK_hDEP 70
|
||||
|
||||
#define _HBMK_lCreateLib 69
|
||||
#define _HBMK_lCreateDyn 70
|
||||
#define _HBMK_lCreateImpLib 71
|
||||
#define _HBMK_lCreatePPO 72
|
||||
#define _HBMK_lCreateHRB 73
|
||||
#define _HBMK_lCreateLib 71
|
||||
#define _HBMK_lCreateDyn 72
|
||||
#define _HBMK_lCreateImpLib 73
|
||||
#define _HBMK_lCreatePPO 74
|
||||
#define _HBMK_lCreateHRB 75
|
||||
|
||||
#define _HBMK_lDynVM 74
|
||||
#define _HBMK_lDynVM 76
|
||||
|
||||
#define _HBMK_lBLDFLGP 75
|
||||
#define _HBMK_lBLDFLGC 76
|
||||
#define _HBMK_lBLDFLGL 77
|
||||
#define _HBMK_lBLDFLGP 77
|
||||
#define _HBMK_lBLDFLGC 78
|
||||
#define _HBMK_lBLDFLGL 79
|
||||
|
||||
#define _HBMK_cFIRST 78
|
||||
#define _HBMK_aPRG 79
|
||||
#define _HBMK_aC 80
|
||||
#define _HBMK_aCPP 81
|
||||
#define _HBMK_aRESSRC 82
|
||||
#define _HBMK_aRESCMP 83
|
||||
#define _HBMK_aOBJUSER 84
|
||||
#define _HBMK_aICON 85
|
||||
#define _HBMK_cMANIFEST 86
|
||||
#define _HBMK_aIMPLIBSRC 87
|
||||
#define _HBMK_aDEF 88
|
||||
#define _HBMK_aINSTFILE 89
|
||||
#define _HBMK_hDEPTS 90
|
||||
#define _HBMK_aREQUEST 91
|
||||
#define _HBMK_cFIRST 80
|
||||
#define _HBMK_aPRG 81
|
||||
#define _HBMK_aC 82
|
||||
#define _HBMK_aCPP 83
|
||||
#define _HBMK_aRESSRC 84
|
||||
#define _HBMK_aRESCMP 85
|
||||
#define _HBMK_aOBJUSER 86
|
||||
#define _HBMK_aICON 87
|
||||
#define _HBMK_cMANIFEST 88
|
||||
#define _HBMK_aIMPLIBSRC 89
|
||||
#define _HBMK_aDEF 90
|
||||
#define _HBMK_aINSTFILE 91
|
||||
#define _HBMK_hDEPTS 92
|
||||
#define _HBMK_aREQUEST 93
|
||||
|
||||
#define _HBMK_aPO 92
|
||||
#define _HBMK_cHBL 93
|
||||
#define _HBMK_cHBLDir 94
|
||||
#define _HBMK_aLNG 95
|
||||
#define _HBMK_cPO 96
|
||||
#define _HBMK_aPO 94
|
||||
#define _HBMK_cHBL 95
|
||||
#define _HBMK_cHBLDir 96
|
||||
#define _HBMK_aLNG 97
|
||||
#define _HBMK_cPO 98
|
||||
|
||||
#define _HBMK_hPLUGINHRB 97
|
||||
#define _HBMK_hPLUGINVars 98
|
||||
#define _HBMK_aPLUGINPars 99
|
||||
#define _HBMK_hPLUGINExt 100
|
||||
#define _HBMK_hPLUGINHRB 99
|
||||
#define _HBMK_hPLUGINVars 100
|
||||
#define _HBMK_aPLUGINPars 101
|
||||
#define _HBMK_hPLUGINExt 102
|
||||
|
||||
#define _HBMK_lDEBUGTIME 101
|
||||
#define _HBMK_lDEBUGINC 102
|
||||
#define _HBMK_lDEBUGSTUB 103
|
||||
#define _HBMK_lDEBUGI18N 104
|
||||
#define _HBMK_lDEBUGDEPD 105
|
||||
#define _HBMK_lDEBUGPARS 106
|
||||
#define _HBMK_lDEBUGTIME 103
|
||||
#define _HBMK_lDEBUGINC 104
|
||||
#define _HBMK_lDEBUGSTUB 105
|
||||
#define _HBMK_lDEBUGI18N 106
|
||||
#define _HBMK_lDEBUGDEPD 107
|
||||
#define _HBMK_lDEBUGPARS 108
|
||||
|
||||
#define _HBMK_cCCPATH 107
|
||||
#define _HBMK_cCCPREFIX 108
|
||||
#define _HBMK_cCCPOSTFIX 109
|
||||
#define _HBMK_cCCEXT 110
|
||||
#define _HBMK_cCCPATH 109
|
||||
#define _HBMK_cCCPREFIX 110
|
||||
#define _HBMK_cCCPOSTFIX 111
|
||||
#define _HBMK_cCCEXT 112
|
||||
|
||||
#define _HBMK_cWorkDir 111
|
||||
#define _HBMK_cWorkDirDynSub 112
|
||||
#define _HBMK_nCmd_Esc 113
|
||||
#define _HBMK_nScr_Esc 114
|
||||
#define _HBMK_nCmd_FNF 115
|
||||
#define _HBMK_nScr_FNF 116
|
||||
#define _HBMK_nErrorLevel 117
|
||||
#define _HBMK_cWorkDir 113
|
||||
#define _HBMK_cWorkDirDynSub 114
|
||||
#define _HBMK_nCmd_Esc 115
|
||||
#define _HBMK_nScr_Esc 116
|
||||
#define _HBMK_nCmd_FNF 117
|
||||
#define _HBMK_nScr_FNF 118
|
||||
#define _HBMK_nErrorLevel 119
|
||||
|
||||
#define _HBMK_cPROGDIR 118
|
||||
#define _HBMK_cPROGNAME 119
|
||||
#define _HBMK_cPROGDIR 120
|
||||
#define _HBMK_cPROGNAME 121
|
||||
|
||||
#define _HBMK_hAUTOHBC 120 /* trigger header => .hbc associations */
|
||||
#define _HBMK_hAUTOHBCFOUND 121 /* trigger headers found */
|
||||
#define _HBMK_hAUTOHBC 122 /* trigger header => .hbc associations */
|
||||
#define _HBMK_hAUTOHBCFOUND 123 /* trigger headers found */
|
||||
|
||||
#define _HBMK_aDEPTHBC 122 /* .hbc references found */
|
||||
#define _HBMK_hDEPTSDIR 123 /* Header dirs found for dependencies */
|
||||
#define _HBMK_aDEPTHBC 124 /* .hbc references found */
|
||||
#define _HBMK_hDEPTSDIR 125 /* Header dirs found for dependencies */
|
||||
|
||||
#define _HBMK_lStopAfterInit 124
|
||||
#define _HBMK_lStopAfterHarbour 125
|
||||
#define _HBMK_lStopAfterInit 126
|
||||
#define _HBMK_lStopAfterHarbour 127
|
||||
|
||||
#define _HBMK_nCOMPVer 126
|
||||
#define _HBMK_lDEPIMPLIB 127 /* Generate import libs configured in dependecy specification */
|
||||
#define _HBMK_lInstForce 128 /* Force to install target even if was up to date */
|
||||
#define _HBMK_lAutoHBM 129 /* Toggles processing of hbmk.hbm file in current directory */
|
||||
#define _HBMK_lContainer 130 /* Target type: container */
|
||||
#define _HBMK_lShowLevel 131 /* Show project nesting level in all output lines */
|
||||
#define _HBMK_hFiles 132 /* Cache for the header parser (common for C and Harbour) */
|
||||
#define _HBMK_cDynLibPrefix 133 /* Dynamic lib filename prefix */
|
||||
#define _HBMK_cDynLibExt 134 /* Dynamic lib filename extension */
|
||||
#define _HBMK_aLINK 135 /* Links to be created and pointing to the target */
|
||||
#define _HBMK_hDEPTMACRO 136 /* Links to be created and pointing to the target */
|
||||
#define _HBMK_cC 137 /* C dialect */
|
||||
#define _HBMK_cCPP 138 /* C++ dialect */
|
||||
#define _HBMK_nCOMPVer 128
|
||||
#define _HBMK_lDEPIMPLIB 129 /* Generate import libs configured in dependecy specification */
|
||||
#define _HBMK_lInstForce 130 /* Force to install target even if was up to date */
|
||||
#define _HBMK_lAutoHBM 131 /* Toggles processing of hbmk.hbm file in current directory */
|
||||
#define _HBMK_lContainer 132 /* Target type: container */
|
||||
#define _HBMK_lShowLevel 133 /* Show project nesting level in all output lines */
|
||||
#define _HBMK_hFiles 134 /* Cache for the header parser (common for C and Harbour) */
|
||||
#define _HBMK_cDynLibPrefix 135 /* Dynamic lib filename prefix */
|
||||
#define _HBMK_cDynLibExt 136 /* Dynamic lib filename extension */
|
||||
#define _HBMK_aLINK 137 /* Links to be created and pointing to the target */
|
||||
#define _HBMK_hDEPTMACRO 138 /* Links to be created and pointing to the target */
|
||||
#define _HBMK_cC 139 /* C dialect */
|
||||
#define _HBMK_cCPP 140 /* C++ dialect */
|
||||
|
||||
#define _HBMK_aArgs 139
|
||||
#define _HBMK_nArgTarget 140
|
||||
#define _HBMK_lPause 141
|
||||
#define _HBMK_nLevel 142
|
||||
#define _HBMK_aArgs 141
|
||||
#define _HBMK_nArgTarget 142
|
||||
#define _HBMK_lPause 143
|
||||
#define _HBMK_nLevel 144
|
||||
|
||||
#define _HBMK_cHBX 143
|
||||
#define _HBMK_cHBX 145
|
||||
|
||||
#define _HBMK_MAX_ 143
|
||||
#define _HBMK_MAX_ 145
|
||||
|
||||
#define _HBMK_DEP_CTRL_MARKER ".control." /* must be an invalid path */
|
||||
|
||||
@@ -1966,8 +1968,10 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
|
||||
hbmk[ _HBMK_aOPTCPPX ] := {}
|
||||
hbmk[ _HBMK_aOPTRES ] := {}
|
||||
hbmk[ _HBMK_aOPTL ] := {}
|
||||
hbmk[ _HBMK_aOPTLPOST ] := {}
|
||||
hbmk[ _HBMK_aOPTA ] := {}
|
||||
hbmk[ _HBMK_aOPTD ] := {}
|
||||
hbmk[ _HBMK_aOPTDPOST ] := {}
|
||||
hbmk[ _HBMK_aOPTI ] := {}
|
||||
l_aOPTRUN := {}
|
||||
hbmk[ _HBMK_aRESSRC ] := {}
|
||||
@@ -2620,6 +2624,13 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
|
||||
AAdd( hbmk[ _HBMK_aOPTL ], PathSepToSelf( cParam, 2 ) )
|
||||
ENDIF
|
||||
|
||||
CASE Left( cParamL, Len( "-ldflag+=" ) ) == "-ldflag+="
|
||||
|
||||
cParam := MacroProc( hbmk, SubStr( cParam, Len( "-ldflag+=" ) + 1 ), aParam[ _PAR_cFileName ] )
|
||||
IF Left( cParam, 1 ) $ cOptPrefix
|
||||
AAdd( hbmk[ _HBMK_aOPTLPOST ], PathSepToSelf( cParam, 2 ) )
|
||||
ENDIF
|
||||
|
||||
CASE Left( cParamL, Len( "-dflag=" ) ) == "-dflag="
|
||||
|
||||
cParam := MacroProc( hbmk, SubStr( cParam, Len( "-dflag=" ) + 1 ), aParam[ _PAR_cFileName ] )
|
||||
@@ -2627,6 +2638,13 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
|
||||
AAdd( hbmk[ _HBMK_aOPTD ], PathSepToSelf( cParam, 2 ) )
|
||||
ENDIF
|
||||
|
||||
CASE Left( cParamL, Len( "-dflag+=" ) ) == "-dflag+="
|
||||
|
||||
cParam := MacroProc( hbmk, SubStr( cParam, Len( "-dflag+=" ) + 1 ), aParam[ _PAR_cFileName ] )
|
||||
IF Left( cParam, 1 ) $ cOptPrefix
|
||||
AAdd( hbmk[ _HBMK_aOPTDPOST ], PathSepToSelf( cParam, 2 ) )
|
||||
ENDIF
|
||||
|
||||
CASE Left( cParamL, Len( "-aflag=" ) ) == "-aflag="
|
||||
|
||||
cParam := MacroProc( hbmk, SubStr( cParam, Len( "-aflag=" ) + 1 ), aParam[ _PAR_cFileName ] )
|
||||
@@ -3227,6 +3245,7 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
|
||||
{LO} list of object files
|
||||
{LA} list of object archive (.a) files
|
||||
{LL} list of lib files
|
||||
{LF} list of lib files (as flag)
|
||||
{LB} list of lib files with paths
|
||||
{FC} flags for C compiler (user + automatic)
|
||||
{FL} flags for linker (user + automatic)
|
||||
@@ -3437,6 +3456,9 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
|
||||
ENDIF
|
||||
cBin_LibHBX := hbmk[ _HBMK_cCCPREFIX ] + "nm"
|
||||
cOpt_LibHBX := "-g" + iif( hbmk[ _HBMK_cPLAT ] == "darwin", "", " --defined-only -C" ) + " {LI}"
|
||||
IF hbmk[ _HBMK_cPLAT ] == "darwin"
|
||||
cLibHBX_Regex := "[[:space:]]T" + cLibHBX_Regex
|
||||
ENDIF
|
||||
IF l_lLIBGROUPING .AND. ;
|
||||
( hbmk[ _HBMK_cPLAT ] == "linux" .OR. ;
|
||||
hbmk[ _HBMK_cPLAT ] == "beos" .OR. ;
|
||||
@@ -3445,11 +3467,11 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
|
||||
hbmk[ _HBMK_cPLAT ] == "vxworks" .OR. ;
|
||||
hbmk[ _HBMK_cPLAT ] == "cygwin" .OR. ;
|
||||
hbmk[ _HBMK_cPLAT ] == "bsd" )
|
||||
AAdd( hbmk[ _HBMK_aOPTL ], "-Wl,--start-group {LL} {LB} -Wl,--end-group" )
|
||||
AAdd( hbmk[ _HBMK_aOPTD ], "-Wl,--start-group {LL} {LB} -Wl,--end-group" )
|
||||
AAdd( hbmk[ _HBMK_aOPTL ], "-Wl,--start-group {LL} {LB} {LF} -Wl,--end-group" )
|
||||
AAdd( hbmk[ _HBMK_aOPTD ], "-Wl,--start-group {LL} {LB} {LF} -Wl,--end-group" )
|
||||
ELSE
|
||||
AAdd( hbmk[ _HBMK_aOPTL ], "{LL} {LB}" )
|
||||
AAdd( hbmk[ _HBMK_aOPTD ], "{LL} {LB}" )
|
||||
AAdd( hbmk[ _HBMK_aOPTL ], "{LL} {LB} {LF}" )
|
||||
AAdd( hbmk[ _HBMK_aOPTD ], "{LL} {LB} {LF}" )
|
||||
l_aLIBHBBASE_2 := iif( hbmk[ _HBMK_lMT ], aLIB_BASE_2_MT, aLIB_BASE_2 )
|
||||
ENDIF
|
||||
IF hbmk[ _HBMK_lMAP ]
|
||||
@@ -3714,11 +3736,11 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
|
||||
AAdd( hbmk[ _HBMK_aOPTD ], "-Wl,--out-implib,{OI}" )
|
||||
ENDIF
|
||||
IF l_lLIBGROUPING .AND. HBMK_ISCOMP( "mingw|mingw64|mingwarm" )
|
||||
AAdd( hbmk[ _HBMK_aOPTL ], "-Wl,--start-group {LL} {LB} -Wl,--end-group" )
|
||||
AAdd( hbmk[ _HBMK_aOPTD ], "-Wl,--start-group {LL} {LB} -Wl,--end-group" )
|
||||
AAdd( hbmk[ _HBMK_aOPTL ], "-Wl,--start-group {LL} {LB} {LF} -Wl,--end-group" )
|
||||
AAdd( hbmk[ _HBMK_aOPTD ], "-Wl,--start-group {LL} {LB} {LF} -Wl,--end-group" )
|
||||
ELSE
|
||||
AAdd( hbmk[ _HBMK_aOPTL ], "{LL} {LB}" )
|
||||
AAdd( hbmk[ _HBMK_aOPTD ], "{LL} {LB}" )
|
||||
AAdd( hbmk[ _HBMK_aOPTL ], "{LL} {LB} {LF}" )
|
||||
AAdd( hbmk[ _HBMK_aOPTD ], "{LL} {LB} {LF}" )
|
||||
l_aLIBHBBASE_2 := iif( hbmk[ _HBMK_lMT ], aLIB_BASE_2_MT, aLIB_BASE_2 )
|
||||
ENDIF
|
||||
IF hbmk[ _HBMK_lSTRIP ]
|
||||
@@ -3813,7 +3835,7 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
|
||||
AAddNotEmpty( hbmk[ _HBMK_aOPTCX ], gcc_opt_lngc_fill( hbmk ) )
|
||||
AAddNotEmpty( hbmk[ _HBMK_aOPTCPPX ], gcc_opt_lngcpp_fill( hbmk ) )
|
||||
cBin_Dyn := cBin_CompC
|
||||
cOpt_Dyn := "-shared -o {OD} {LO} {LL} {LB} {FD} {IM} {DL} {LS}"
|
||||
cOpt_Dyn := "-shared -o {OD} {LO} {LL} {LB} {LF} {FD} {IM} {DL} {LS}"
|
||||
cBin_Link := cBin_CompC
|
||||
cOpt_Link := "{LO} {LA} {FL} {IM} {DL}"
|
||||
bBlk_ImpLib := {| cSourceDLL, cTargetLib | win_implib_copy( hbmk, cSourceDLL, cTargetLib ) }
|
||||
@@ -3841,7 +3863,7 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
|
||||
cBin_Post := "emximp"
|
||||
cOpt_Post := "-o {OI} {OB}"
|
||||
ENDIF
|
||||
AAdd( hbmk[ _HBMK_aOPTL ], "{LL} {LB}" )
|
||||
AAdd( hbmk[ _HBMK_aOPTL ], "{LL} {LB} {LF}" )
|
||||
l_aLIBHBBASE_2 := iif( hbmk[ _HBMK_lMT ], aLIB_BASE_2_MT, aLIB_BASE_2 )
|
||||
IF ! hbmk[ _HBMK_lSHARED ]
|
||||
l_aLIBSYS := ArrayJoin( l_aLIBSYS, { "socket" } )
|
||||
@@ -3926,7 +3948,7 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
|
||||
AAddNotEmpty( hbmk[ _HBMK_aOPTCX ], gcc_opt_lngc_fill( hbmk ) )
|
||||
AAddNotEmpty( hbmk[ _HBMK_aOPTCPPX ], gcc_opt_lngcpp_fill( hbmk ) )
|
||||
cBin_Dyn := "dxe3gen"
|
||||
cOpt_Dyn := "--whole-archive -U {FD} -o {OD} {DL} {LO} {LL} {LB} {LS}"
|
||||
cOpt_Dyn := "--whole-archive -U {FD} -o {OD} {DL} {LO} {LL} {LB} {LF} {LS}"
|
||||
cBin_Link := cBin_CompC
|
||||
cOpt_Link := "{LO} {LA} {FL} {DL}{SCRIPT}"
|
||||
cLibPathPrefix := "-L"
|
||||
@@ -3937,9 +3959,9 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
|
||||
cBin_LibHBX := hbmk[ _HBMK_cCCPREFIX ] + "nm" + hbmk[ _HBMK_cCCEXT ]
|
||||
cOpt_LibHBX := "-g --defined-only -C {LI}"
|
||||
IF l_lLIBGROUPING
|
||||
AAdd( hbmk[ _HBMK_aOPTL ], "-Wl,--start-group {LL} {LB} -Wl,--end-group" )
|
||||
AAdd( hbmk[ _HBMK_aOPTL ], "-Wl,--start-group {LL} {LB} {LF} -Wl,--end-group" )
|
||||
ELSE
|
||||
AAdd( hbmk[ _HBMK_aOPTL ], "{LL} {LB}" )
|
||||
AAdd( hbmk[ _HBMK_aOPTL ], "{LL} {LB} {LF}" )
|
||||
l_aLIBHBBASE_2 := iif( hbmk[ _HBMK_lMT ], aLIB_BASE_2_MT, aLIB_BASE_2 )
|
||||
ENDIF
|
||||
IF hbmk[ _HBMK_lMAP ]
|
||||
@@ -4068,22 +4090,22 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
|
||||
ENDIF
|
||||
cBin_Link := "wlink" + hbmk[ _HBMK_cCCEXT ]
|
||||
DO CASE
|
||||
CASE hbmk[ _HBMK_cPLAT ] == "linux" ; cOpt_Link := "OP quiet SYS linux {FL} NAME {OE} {LO} {DL} {LL} {LB}{SCRIPT}"
|
||||
CASE hbmk[ _HBMK_cPLAT ] == "dos" ; cOpt_Link := "OP quiet SYS dos32a {FL} NAME {OE} {LO} {DL} {LL} {LB}{SCRIPT}"
|
||||
CASE hbmk[ _HBMK_cPLAT ] == "win" ; cOpt_Link := "OP quiet {FL} {IM} NAME {OE} {LO} {DL} {LL} {LB} {LS}{SCRIPT}"
|
||||
CASE hbmk[ _HBMK_cPLAT ] == "os2" ; cOpt_Link := "OP quiet SYS os2v2 {FL} {IM} NAME {OE} {LO} {DL} {LL} {LB} {LS}{SCRIPT}"
|
||||
CASE hbmk[ _HBMK_cPLAT ] == "linux" ; cOpt_Link := "OP quiet SYS linux {FL} NAME {OE} {LO} {DL} {LL} {LB} {LF}{SCRIPT}"
|
||||
CASE hbmk[ _HBMK_cPLAT ] == "dos" ; cOpt_Link := "OP quiet SYS dos32a {FL} NAME {OE} {LO} {DL} {LL} {LB} {LF}{SCRIPT}"
|
||||
CASE hbmk[ _HBMK_cPLAT ] == "win" ; cOpt_Link := "OP quiet {FL} {IM} NAME {OE} {LO} {DL} {LL} {LB} {LF} {LS}{SCRIPT}"
|
||||
CASE hbmk[ _HBMK_cPLAT ] == "os2" ; cOpt_Link := "OP quiet SYS os2v2 {FL} {IM} NAME {OE} {LO} {DL} {LL} {LB} {LF} {LS}{SCRIPT}"
|
||||
ENDCASE
|
||||
cBin_Dyn := cBin_Link
|
||||
cDynObjPrefix := cObjPrefix
|
||||
DO CASE
|
||||
CASE hbmk[ _HBMK_cPLAT ] == "dos" ; cBin_Dyn := NIL
|
||||
CASE hbmk[ _HBMK_cPLAT ] == "linux" ; cOpt_Dyn := "OP quiet FORM elf dll OP exportall {FD} NAME {OD} {LO} {DL} {LL} {LB}{SCRIPT}"
|
||||
CASE hbmk[ _HBMK_cPLAT ] == "linux" ; cOpt_Dyn := "OP quiet FORM elf dll OP exportall {FD} NAME {OD} {LO} {DL} {LL} {LB} {LF}{SCRIPT}"
|
||||
IF hbmk[ _HBMK_lCreateDyn ]
|
||||
AAdd( hbmk[ _HBMK_aLIBPATH ], PathSepToSelf( GetEnv( "WATCOM") + hb_ps() + "lib386" ) )
|
||||
AAdd( hbmk[ _HBMK_aLIBPATH ], PathSepToSelf( GetEnv( "WATCOM") + hb_ps() + "lib386" + hb_ps() + "linux" ) )
|
||||
ENDIF
|
||||
CASE hbmk[ _HBMK_cPLAT ] == "win" ; cOpt_Dyn := "OP quiet SYS nt_dll {FD} {IM} NAME {OD} {LO} {DL} {LL} {LB} {LS}{SCRIPT}"
|
||||
CASE hbmk[ _HBMK_cPLAT ] == "os2" ; cOpt_Dyn := "OP quiet SYS os2v2_dll {FD} {IM} NAME {OD} {LO} {DL} {LL} {LB} {LS}{SCRIPT}"
|
||||
CASE hbmk[ _HBMK_cPLAT ] == "win" ; cOpt_Dyn := "OP quiet SYS nt_dll {FD} {IM} NAME {OD} {LO} {DL} {LL} {LB} {LF} {LS}{SCRIPT}"
|
||||
CASE hbmk[ _HBMK_cPLAT ] == "os2" ; cOpt_Dyn := "OP quiet SYS os2v2_dll {FD} {IM} NAME {OD} {LO} {DL} {LL} {LB} {LF} {LS}{SCRIPT}"
|
||||
ENDCASE
|
||||
IF HBMK_ISPLAT( "win|os2" ) .AND. ! Empty( hbmk[ _HBMK_aDEF ] )
|
||||
/* TODO: Watcom wlink requires a non-standard internal layout for .def files.
|
||||
@@ -4241,8 +4263,8 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
|
||||
cResExt := ".res"
|
||||
cBin_Link := "ilink32.exe"
|
||||
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} " + 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} " + cLibBCC_CRTL + " import32.lib, {IM}, {LS}{SCRIPT}"
|
||||
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 ) }
|
||||
cLibPathPrefix := ""
|
||||
cLibPathSep := ";"
|
||||
@@ -4341,7 +4363,7 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
|
||||
ENDIF
|
||||
cBin_CompCPP := cBin_CompC
|
||||
cOpt_Lib := "-nologo {FA} -out:{OL} {LO}{SCRIPT}"
|
||||
cOpt_Dyn := "-nologo {FD} {IM} -dll -out:{OD} {DL} {LO} {LL} {LB} {LS}{SCRIPT}"
|
||||
cOpt_Dyn := "-nologo {FD} {IM} -dll -out:{OD} {DL} {LO} {LL} {LB} {LF} {LS}{SCRIPT}"
|
||||
cOpt_CompC := "-nologo -c"
|
||||
cBin_LibHBX := "dumpbin.exe"
|
||||
cOpt_LibHBX := "-symbols {LI}"
|
||||
@@ -4395,7 +4417,7 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
|
||||
ENDIF
|
||||
cOpt_CompC += " {FC} {LC}"
|
||||
cOptIncMask := "-I{DI}"
|
||||
cOpt_Link := "-nologo -out:{OE} {LO} {DL} {FL} {IM} {LL} {LB} {LS}{SCRIPT}"
|
||||
cOpt_Link := "-nologo -out:{OE} {LO} {DL} {FL} {IM} {LL} {LB} {LF} {LS}{SCRIPT}"
|
||||
SWITCH hbmk[ _HBMK_cCOMP ]
|
||||
CASE "msvc" ; AAdd( hbmk[ _HBMK_aOPTI ], "-machine:x86" ) ; EXIT
|
||||
CASE "msvc64" ; AAdd( hbmk[ _HBMK_aOPTI ], "-machine:x64" ) ; EXIT
|
||||
@@ -4514,7 +4536,7 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
|
||||
hbmk[ _HBMK_cWorkDir ] := "."
|
||||
ENDIF
|
||||
cOptIncMask := "-I{DI}"
|
||||
cOpt_Dyn := "{FD} {IM} -dll -out:{OD} {DL} {LO} {LL} {LB} {LS}"
|
||||
cOpt_Dyn := "{FD} {IM} -dll -out:{OD} {DL} {LO} {LL} {LB} {LF} {LS}"
|
||||
bBlk_ImpLib := {| cSourceDLL, cTargetLib, cFlags | win_implib_command_pocc( hbmk, cBin_Lib + " {ID} -out:{OL}", cSourceDLL, cTargetLib, cFlags ) }
|
||||
cBin_LibHBX := "podump.exe"
|
||||
cOpt_LibHBX := "-symbols {LI}"
|
||||
@@ -4551,7 +4573,7 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
|
||||
IF hbmk[ _HBMK_lMT ]
|
||||
AAdd( hbmk[ _HBMK_aOPTC ], "-MT" )
|
||||
ENDIF
|
||||
cOpt_Link := "-out:{OE} {LO} {DL} {FL} {IM} {LL} {LB} {LS}"
|
||||
cOpt_Link := "-out:{OE} {LO} {DL} {FL} {IM} {LL} {LB} {LF} {LS}"
|
||||
cLibPathPrefix := "-libpath:"
|
||||
cLibPathSep := " "
|
||||
cDefPrefix := "-def:"
|
||||
@@ -4617,9 +4639,9 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
|
||||
cLibPathSep := " "
|
||||
cLibLibExt := ".a"
|
||||
cBin_Dyn := cBin_CompC
|
||||
cOpt_Dyn := "-G {FD} -o {OD} {DL} {LO} {LL} {LB} {LS}"
|
||||
cOpt_Dyn := "-G {FD} -o {OD} {DL} {LO} {LL} {LB} {LF} {LS}"
|
||||
IF ! lStopAfterCComp
|
||||
AAdd( hbmk[ _HBMK_aOPTL ], "{LL} {LB}" )
|
||||
AAdd( hbmk[ _HBMK_aOPTL ], "{LL} {LB} {LF}" )
|
||||
l_aLIBHBBASE_2 := iif( hbmk[ _HBMK_lMT ], aLIB_BASE_2_MT, aLIB_BASE_2 )
|
||||
ENDIF
|
||||
IF hbmk[ _HBMK_lMAP ]
|
||||
@@ -4756,8 +4778,8 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
|
||||
cLibPathPrefix := "-L"
|
||||
cLibPathSep := " "
|
||||
cLibLibExt := ".a"
|
||||
AAdd( hbmk[ _HBMK_aOPTL ], "{LL} {LB}" )
|
||||
AAdd( hbmk[ _HBMK_aOPTD ], "{LL} {LB}" )
|
||||
AAdd( hbmk[ _HBMK_aOPTL ], "{LL} {LB} {LF}" )
|
||||
AAdd( hbmk[ _HBMK_aOPTD ], "{LL} {LB} {LF}" )
|
||||
l_aLIBHBBASE_2 := iif( hbmk[ _HBMK_lMT ], aLIB_BASE_2_MT, aLIB_BASE_2 )
|
||||
IF hbmk[ _HBMK_lSTATICFULL ]
|
||||
AAdd( hbmk[ _HBMK_aOPTL ], "-Wl, -Xstatic" ) /* not tested */
|
||||
@@ -6181,6 +6203,7 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
|
||||
cOpt_Link := StrTran( cOpt_Link, "{LA}" , ArrayToList( l_aOBJA,, nOpt_Esc, nOpt_FNF ) )
|
||||
cOpt_Link := StrTran( cOpt_Link, "{LL}" , ArrayToList( l_aLIB,, nOpt_Esc, nOpt_FNF, cLibPrefix ) )
|
||||
cOpt_Link := StrTran( cOpt_Link, "{LB}" , ArrayToList( l_aLIBA,, nOpt_Esc, nOpt_FNF ) )
|
||||
cOpt_Link := StrTran( cOpt_Link, "{LF}" , iif( ! Empty( hbmk[ _HBMK_aOPTLPOST ] ), " " + ArrayToList( hbmk[ _HBMK_aOPTLPOST ] ), "" ) )
|
||||
cOpt_Link := StrTran( cOpt_Link, "{IM}" , ArrayToList( hbmk[ _HBMK_aDEF ],, nOpt_Esc, nOpt_FNF, cDefPrefix ) )
|
||||
cOpt_Link := StrTran( cOpt_Link, "{OE}" , FNameEscape( hbmk[ _HBMK_cPROGNAME ], nOpt_Esc, nOpt_FNF ) )
|
||||
cOpt_Link := StrTran( cOpt_Link, "{OM}" , FNameEscape( hb_FNameExtSet( hbmk[ _HBMK_cPROGNAME ], ".map" ), nOpt_Esc, nOpt_FNF ) )
|
||||
@@ -6293,6 +6316,7 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
|
||||
cOpt_Dyn := StrTran( cOpt_Dyn, "{LS}" , ArrayToList( ArrayJoin( ListDirExt( hbmk[ _HBMK_aRESSRC ], hbmk[ _HBMK_cWorkDir ], cResExt ), hbmk[ _HBMK_aRESCMP ] ),, nOpt_Esc, nOpt_FNF, cResPrefix ) )
|
||||
cOpt_Dyn := StrTran( cOpt_Dyn, "{LL}" , ArrayToList( l_aLIB,, nOpt_Esc, nOpt_FNF, cLibPrefix ) )
|
||||
cOpt_Dyn := StrTran( cOpt_Dyn, "{LB}" , ArrayToList( l_aLIBA,, nOpt_Esc, nOpt_FNF ) )
|
||||
cOpt_Dyn := StrTran( cOpt_Dyn, "{LF}" , iif( ! Empty( hbmk[ _HBMK_aOPTDPOST ] ), " " + ArrayToList( hbmk[ _HBMK_aOPTDPOST ] ), "" ) )
|
||||
cOpt_Dyn := StrTran( cOpt_Dyn, "{IM}" , ArrayToList( hbmk[ _HBMK_aDEF ],, nOpt_Esc, nOpt_FNF, cDefPrefix ) )
|
||||
cOpt_Dyn := StrTran( cOpt_Dyn, "{OD}" , FNameEscape( hbmk[ _HBMK_cPROGNAME ], nOpt_Esc, nOpt_FNF ) )
|
||||
cOpt_Dyn := StrTran( cOpt_Dyn, "{OM}" , FNameEscape( hb_FNameExtSet( hbmk[ _HBMK_cPROGNAME ], ".map" ), nOpt_Esc, nOpt_FNF ) )
|
||||
@@ -8924,7 +8948,9 @@ STATIC FUNCTION FNameEscape( cFileName, nEscapeMode, nFNNotation )
|
||||
ENDIF
|
||||
EXIT
|
||||
CASE _ESC_NIX
|
||||
cFileName := "'" + StrTran( cFileName, "'", "'\''" ) + "'"
|
||||
IF StrHasSpecialChar( cFileName )
|
||||
cFileName := "'" + StrTran( cFileName, "'", "'\''" ) + "'"
|
||||
ENDIF
|
||||
EXIT
|
||||
CASE _ESC_BCKSLASH
|
||||
cFileName := StrTran( cFileName, "\", "\\" )
|
||||
@@ -8933,6 +8959,15 @@ STATIC FUNCTION FNameEscape( cFileName, nEscapeMode, nFNNotation )
|
||||
|
||||
RETURN cFileName
|
||||
|
||||
STATIC FUNCTION StrHasSpecialChar( cString )
|
||||
LOCAL c
|
||||
FOR EACH c IN cString
|
||||
IF !( hb_asciiIsAlpha( c ) .OR. hb_asciiIsDigit( c ) .OR. c $ "/." )
|
||||
RETURN .T.
|
||||
ENDIF
|
||||
NEXT
|
||||
RETURN .F.
|
||||
|
||||
/* Remove all extensions from name */
|
||||
STATIC FUNCTION FNameNameGetNoExt( cFileName )
|
||||
LOCAL cName := cFileName
|
||||
@@ -9315,6 +9350,11 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel )
|
||||
AAddNewNotEmpty( hbmk[ _HBMK_aOPTL ], MacroProc( hbmk, StrStripQuote( cItem ), cFileName ) )
|
||||
NEXT
|
||||
|
||||
CASE Lower( Left( cLine, Len( "ldflags+=" ) ) ) == "ldflags+=" ; cLine := SubStr( cLine, Len( "ldflags+=" ) + 1 )
|
||||
FOR EACH cItem IN hb_ATokens( cLine,, .T. )
|
||||
AAddNewNotEmpty( hbmk[ _HBMK_aOPTLPOST ], MacroProc( hbmk, StrStripQuote( cItem ), cFileName ) )
|
||||
NEXT
|
||||
|
||||
CASE Lower( Left( cLine, Len( "pflags=" ) ) ) == "pflags=" ; cLine := SubStr( cLine, Len( "pflags=" ) + 1 )
|
||||
FOR EACH cItem IN hb_ATokens( cLine,, .T. )
|
||||
AAddNewNotEmpty( hbmk[ _HBMK_aPLUGINPars ], MacroProc( hbmk, StrStripQuote( cItem ), cFileName ) )
|
||||
|
||||
Reference in New Issue
Block a user