2009-04-13 20:50 UTC+0200 Viktor Szakats (harbour.01 syenar hu)

* utils/hbmk2/hbmk2.prg
    * Added separate compile and link phases for gcc family.
      Please retest, this may cause regressions.
    * win/bcc made to use separate compile/link phases in all
      cases.
    + Added simple progress in -inc mode.
    ! Fixed to detect target timestamp in hblib/hbdyn modes.
This commit is contained in:
Viktor Szakats
2009-04-13 19:03:28 +00:00
parent 20cd02917b
commit bba5548d6e
2 changed files with 150 additions and 119 deletions

View File

@@ -8,6 +8,15 @@
2009-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org)
*/
2009-04-13 20:50 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* utils/hbmk2/hbmk2.prg
* Added separate compile and link phases for gcc family.
Please retest, this may cause regressions.
* win/bcc made to use separate compile/link phases in all
cases.
+ Added simple progress in -inc mode.
! Fixed to detect target timestamp in hblib/hbdyn modes.
2009-04-13 19:52 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* utils/hbmk2/hbmk2.prg
+ Added support for incremental build mode. Still a work in

View File

@@ -118,7 +118,8 @@
- separate link from C compilation for all compilers
- handle libs? (problematic)
- creating intermediate files in '_arch/comp' subdir
- 'clean' option? */
- 'clean' option?
- fix to remove stub object */
/* PLANNING:
hbgtwvg.hbp
@@ -1224,16 +1225,6 @@ PROCEDURE Main( ... )
/* Incremental */
IF s_lINC
DO CASE
CASE lCreateLib ; cTarget := PathSepToTarget( FN_ExtSet( cLibLibPrefix + s_cPROGNAME, cLibLibExt ) )
CASE lCreateDyn ; cTarget := PathSepToTarget( FN_ExtSet( s_cPROGNAME, cDynLibExt ) )
OTHERWISE ; cTarget := PathSepToTarget( FN_ExtSet( s_cPROGNAME, cBinExt ) )
ENDCASE
tTARGET := NIL
hb_FGetDateTime( cTarget, @tTarget )
s_aPRG_TODO := {}
FOR EACH tmp IN s_aPRG
IF ! hb_FGetDateTime( tmp, @tmp1 ) .OR. ;
@@ -1253,6 +1244,10 @@ PROCEDURE Main( ... )
IF ! lStopAfterInit .AND. Len( s_aPRG_TODO ) > 0
IF s_lINC .AND. ! t_lQuiet
OutStd( "Compiling Harbour sources..." + hb_osNewLine() )
ENDIF
PlatformPRGFlags( s_aOPTPRG )
#if defined( HBMK_INTEGRATED_COMPILER )
@@ -1397,27 +1392,30 @@ PROCEDURE Main( ... )
cBin_Lib := t_cCCPREFIX + "ar"
cOpt_Lib := "{FA} rcs {OL} {LO}"
cBin_CompC := t_cCCPREFIX + iif( t_cCOMP == "gpp" .OR. s_lCPP, "g++", "gcc" )
cOpt_CompC := "-c -O3 {FC} {LC} -I{DI}"
cBin_Link := cBin_CompC
cOpt_Link := "{LO} {LA} {FL} {DL}"
IF ! Empty( t_cCCPATH )
cBin_Lib := t_cCCPATH + "/" + cBin_Lib
cBin_CompC := t_cCCPATH + "/" + cBin_CompC
cBin_Link := t_cCCPATH + "/" + cBin_Link
ENDIF
cOpt_CompC := "{LC} {LO} {LA} -O3 {FC} -I{DI} {DL}"
cLibPathPrefix := "-L"
cLibPathSep := " "
IF ! lStopAfterCComp
IF t_cARCH == "linux" .OR. ;
t_cARCH == "bsd"
cOpt_CompC += " -Wl,--start-group {LL} -Wl,--end-group"
AAdd( s_aOPTL, "-Wl,--start-group {LL} -Wl,--end-group" )
ELSE
cOpt_CompC += " {LL}"
AAdd( s_aOPTL, "{LL}" )
aLIB_BASE2 := ArrayAJoin( { aLIB_BASE2, { "hbcommon", "hbrtl" }, s_aLIBVM } )
ENDIF
ENDIF
IF s_lMAP
cOpt_CompC += " -Wl,-Map {OM}"
AAdd( s_aOPTL, "-Wl,-Map {OM}" )
ENDIF
IF s_lSTATICFULL
cOpt_CompC += " -static"
AAdd( s_aOPTL, "-static" )
ENDIF
IF t_cARCH == "darwin"
AAdd( s_aOPTC, "-no-cpp-precomp" )
@@ -1431,19 +1429,18 @@ PROCEDURE Main( ... )
AAdd( s_aOPTC, "-s" )
ENDIF
IF lStopAfterCComp
AAdd( s_aOPTC, "-c" )
IF ! lCreateLib .AND. ! lCreateDyn .AND. ( Len( s_aPRG ) + Len( s_aC ) ) == 1
IF t_cARCH == "darwin"
AAdd( s_aOPTC, "-o {OO}" )
AAdd( s_aOPTL, "-o {OO}" )
ELSE
AAdd( s_aOPTC, "-o{OO}" )
AAdd( s_aOPTL, "-o{OO}" )
ENDIF
ENDIF
ELSE
IF t_cARCH == "darwin"
AAdd( s_aOPTC, "-o {OE}" )
AAdd( s_aOPTL, "-o {OE}" )
ELSE
AAdd( s_aOPTC, "-o{OE}" )
AAdd( s_aOPTL, "-o{OE}" )
ENDIF
ENDIF
@@ -1532,7 +1529,9 @@ PROCEDURE Main( ... )
cLibExt := ""
cObjExt := ".o"
cBin_CompC := t_cCCPREFIX + "gcc.exe"
cOpt_CompC := "{LC} {LO} {LA} {LR} -O3 {FC} -I{DI} {DL}"
cOpt_CompC := "-c -O3 {FC} {LC} -I{DI}"
cBin_Link := cBin_CompC
cOpt_Link := "{LO} {LA} {LS} {FL} {DL}"
cLibPathPrefix := "-L"
cLibPathSep := " "
cLibLibExt := ".a"
@@ -1542,25 +1541,26 @@ PROCEDURE Main( ... )
IF ! Empty( t_cCCPATH )
cBin_Lib := t_cCCPATH + "\" + cBin_Lib
cBin_CompC := t_cCCPATH + "\" + cBin_CompC
cBin_Link := t_cCCPATH + "\" + cBin_Link
ENDIF
IF !( t_cARCH == "wce" )
IF s_lGUI
cOpt_CompC += " -mwindows"
AAdd( s_aOPTL, "-mwindows" )
ELSE
cOpt_CompC += " -mconsole"
AAdd( s_aOPTL, "-mconsole" )
ENDIF
ENDIF
IF s_lMAP
cOpt_CompC += " -Wl,-Map {OM}"
AAdd( s_aOPTL, "-Wl,-Map {OM}" )
ENDIF
IF s_lSHARED
AAdd( s_aLIBPATH, "{DB}" )
ENDIF
IF ! lStopAfterCComp
IF t_cCOMP $ "mingw|mingw64|mingwarm"
cOpt_CompC += " -Wl,--start-group {LL} -Wl,--end-group"
AAdd( s_aOPTL, "-Wl,--start-group {LL} -Wl,--end-group" )
ELSE
cOpt_CompC += " {LL}"
AAdd( s_aOPTL, "{LL}" )
aLIB_BASE2 := ArrayAJoin( { aLIB_BASE2, { "hbcommon", "hbrtl" }, s_aLIBVM } )
ENDIF
ENDIF
@@ -1568,12 +1568,11 @@ PROCEDURE Main( ... )
AAdd( s_aOPTC, "-s" )
ENDIF
IF lStopAfterCComp
AAdd( s_aOPTC, "-c" )
IF ! lCreateLib .AND. ! lCreateDyn .AND. ( Len( s_aPRG ) + Len( s_aC ) ) == 1
AAdd( s_aOPTC, "-o{OO}" )
AAdd( s_aOPTL, "-o{OO}" )
ENDIF
ELSE
AAdd( s_aOPTC, "-o{OE}" )
AAdd( s_aOPTL, "-o{OE}" )
ENDIF
IF ! s_lSHARED
s_aLIBSYS := ArrayAJoin( { s_aLIBSYS, s_aLIBSYSCORE, s_aLIBSYSMISC } )
@@ -1612,17 +1611,18 @@ PROCEDURE Main( ... )
cLibExt := ""
cObjExt := ".o"
cBin_CompC := "gcc.exe"
/* OS/2 needs a space between -o and file name following it */
cOpt_CompC := "{LC} {LO} -O3 {FC} -I{DI} {DL}"
cOpt_CompC := "-c -O3 {FC} {LC} -I{DI}"
cBin_Link := cBin_CompC
cOpt_Link := "{LO} {LA} {FL} {DL}"
cLibPathPrefix := "-L"
cLibPathSep := " "
IF s_lMAP
cOpt_CompC += " -Wl,-Map {OM}"
AAdd( s_aOPTL, "-Wl,-Map {OM}" )
ENDIF
IF s_lSHARED
AAdd( s_aLIBPATH, "{DB}" )
ENDIF
cOpt_CompC += " {LL}"
AAdd( s_aOPTL, "{LL}" )
aLIB_BASE2 := ArrayAJoin( { aLIB_BASE2, { "hbcommon", "hbrtl" }, s_aLIBVM } )
IF ! s_lSHARED
s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "socket" } )
@@ -1630,13 +1630,13 @@ PROCEDURE Main( ... )
IF s_lSTRIP
AAdd( s_aOPTC, "-s" )
ENDIF
/* OS/2 needs a space between -o and file name following it */
IF lStopAfterCComp
AAdd( s_aOPTC, "-c" )
IF ! lCreateLib .AND. ! lCreateDyn .AND. ( Len( s_aPRG ) + Len( s_aC ) ) == 1
AAdd( s_aOPTC, "-o {OO}" )
AAdd( s_aOPTL, "-o {OO}" )
ENDIF
ELSE
AAdd( s_aOPTC, "-o {OE}" )
AAdd( s_aOPTL, "-o {OE}" )
ENDIF
IF s_lFMSTAT != NIL .AND. s_lFMSTAT
@@ -1650,13 +1650,15 @@ PROCEDURE Main( ... )
cLibExt := ""
cObjExt := ".o"
cBin_CompC := "gcc.exe"
cOpt_CompC := "{LC} {LO} {LA} -O3 {FC} -I{DI} {DL}{SCRIPT}"
cOpt_CompC := "-c -O3 {FC} {LC} -I{DI}{SCRIPT}"
cBin_Link := cBin_CompC
cOpt_Link := "{LO} {LA} {FL} {DL}{SCRIPT}"
cLibPathPrefix := "-L"
cLibPathSep := " "
IF t_cCOMP == "djgpp"
cOpt_CompC += " -Wl,--start-group {LL} -Wl,--end-group"
AAdd( s_aOPTL, "-Wl,--start-group {LL} -Wl,--end-group" )
ELSE
cOpt_CompC += " {LL}"
AAdd( s_aOPTL, "{LL}" )
aLIB_BASE2 := ArrayAJoin( { aLIB_BASE2, { "hbcommon", "hbrtl" }, s_aLIBVM } )
ENDIF
IF ! s_lSHARED
@@ -1666,12 +1668,11 @@ PROCEDURE Main( ... )
AAdd( s_aOPTC, "-s" )
ENDIF
IF lStopAfterCComp
AAdd( s_aOPTC, "-c" )
IF ! lCreateLib .AND. ! lCreateDyn .AND. ( Len( s_aPRG ) + Len( s_aC ) ) == 1
AAdd( s_aOPTC, "-o{OO}" )
AAdd( s_aOPTL, "-o{OO}" )
ENDIF
ELSE
AAdd( s_aOPTC, "-o{OE}" )
AAdd( s_aOPTL, "-o{OE}" )
ENDIF
IF s_lFMSTAT != NIL .AND. s_lFMSTAT
@@ -1829,22 +1830,12 @@ PROCEDURE Main( ... )
cLibLibExt := cLibExt
cLibObjPrefix := "-+ "
cBin_CompC := "bcc32.exe"
IF ( Len( s_aRESSRC ) + Len( s_aRESCMP ) ) > 0
cOpt_CompC := "-c -q -tWM -O2 -OS -Ov -Oi -Oc -d {FC} -I{DI} {LC}"
cBin_Res := "brcc32.exe"
cOpt_Res := "{LR}"
cResExt := ".res"
cBin_Link := "ilink32.exe"
cOpt_Link := "-Gn -C -ap -Tpe -L{DL} {FL} c0d32.obj {LO}, {OE}, " + iif( s_lMAP, "{OM}", "nul" ) + ", cw32mt.lib {LL} import32.lib,, {LS}{SCRIPT}"
ELSE
cOpt_CompC := "-q -tWM -O2 -OS -Ov -Oi -Oc -d {FC} -I{DI} -L{DL} {LC} {LO} {LL}"
IF lStopAfterCComp
AAdd( s_aOPTC, "-c" )
ENDIF
IF s_lMAP
AAdd( s_aOPTC, "-M" )
ENDIF
ENDIF
cOpt_CompC := "-c -q -tWM -O2 -OS -Ov -Oi -Oc -d {FC} -I{DI} {LC}"
cBin_Res := "brcc32.exe"
cOpt_Res := "{LR}"
cResExt := ".res"
cBin_Link := "ilink32.exe"
cOpt_Link := "-Gn -C -ap -Tpe -L{DL} {FL} c0d32.obj {LO}, {OE}, " + iif( s_lMAP, "{OM}", "nul" ) + ", cw32mt.lib {LL} import32.lib,, {LS}{SCRIPT}"
cLibPathPrefix := ""
cLibPathSep := ";"
IF lStopAfterCComp .AND. ! lCreateLib .AND. ! lCreateDyn
@@ -1934,7 +1925,6 @@ PROCEDURE Main( ... )
AAdd( s_aOPTL, "/manifest:no" )
ENDIF
IF lStopAfterCComp .AND. ! lCreateLib .AND. ! lCreateDyn
AAdd( s_aOPTC, "-c" )
IF ( Len( s_aPRG ) + Len( s_aC ) ) == 1
AAdd( s_aOPTC, "-Fo{OO}" )
ELSE
@@ -2217,6 +2207,10 @@ PROCEDURE Main( ... )
IF Len( s_aRESSRC_TODO ) > 0 .AND. ! Empty( cBin_Res )
IF s_lINC .AND. ! t_lQuiet
OutStd( "Compiling resources..." + hb_osNewLine() )
ENDIF
/* Compiling resource */
cOpt_Res := StrTran( cOpt_Res, "{FR}" , GetEnv( "HB_USER_RESFLAGS" ) )
@@ -2328,18 +2322,22 @@ PROCEDURE Main( ... )
IF ! Empty( cBin_CompC )
IF s_lINC .AND. ! t_lQuiet
OutStd( "Compiling..." + hb_osNewLine() )
ENDIF
/* Compiling */
/* Order is significant */
cOpt_CompC := StrTran( cOpt_CompC, "{FC}" , iif( s_lBLDFLGC, cSelfFlagC + " ", "" ) +;
GetEnv( "HB_USER_CFLAGS" ) + " " + ArrayToList( s_aOPTC ) )
cOpt_CompC := StrTran( cOpt_CompC, "{FL}" , iif( s_lBLDFLGL, cSelfFlagL + " ", "" ) +;
GetEnv( "HB_USER_LDFLAGS" ) + " " + ArrayToList( s_aOPTL ) )
cOpt_CompC := StrTran( cOpt_CompC, "{LR}" , ArrayToList( ArrayJoin( ListDirExt( s_aRESSRC, "", cResExt ), s_aRESCMP ) ) )
cOpt_CompC := StrTran( cOpt_CompC, "{LO}" , ArrayToList( ArrayAJoin( { ListCook( s_aOBJUSER, cObjPrefix ), ListCook( s_aPRG_DONE, cObjPrefix, cObjExt ), ListCook( s_aC_DONE, cObjPrefix, cObjExt ) } ) ) )
cOpt_CompC := StrTran( cOpt_CompC, "{LS}" , ArrayToList( ListCook( ArrayJoin( ListDirExt( s_aRESSRC, "", cResExt ), s_aRESCMP ), cResPrefix ) ) )
cOpt_CompC := StrTran( cOpt_CompC, "{LA}" , ArrayToList( s_aOBJA ) )
cOpt_CompC := StrTran( cOpt_CompC, "{LL}" , ArrayToList( s_aLIB ) )
cOpt_CompC := StrTran( cOpt_CompC, "{FC}" , iif( s_lBLDFLGC, cSelfFlagC + " ", "" ) +;
GetEnv( "HB_USER_CFLAGS" ) + " " + ArrayToList( s_aOPTC ) )
cOpt_CompC := StrTran( cOpt_CompC, "{FL}" , iif( s_lBLDFLGL, cSelfFlagL + " ", "" ) +;
GetEnv( "HB_USER_LDFLAGS" ) + " " + ArrayToList( s_aOPTL ) )
cOpt_CompC := StrTran( cOpt_CompC, "{OD}" , PathSepToTarget( FN_DirGet( s_cPROGNAME ) ) )
cOpt_CompC := StrTran( cOpt_CompC, "{OE}" , PathSepToTarget( FN_ExtSet( s_cPROGNAME, cBinExt ) ) )
cOpt_CompC := StrTran( cOpt_CompC, "{OM}" , PathSepToTarget( FN_ExtSet( s_cPROGNAME, ".map" ) ) )
@@ -2419,60 +2417,72 @@ PROCEDURE Main( ... )
ENDIF
IF nErrorLevel == 0
lTargetUpToDate := .F.
IF s_lINC .AND. tTarget != NIL
lTargetUpToDate := .T.
IF lTargetUpToDate
FOR EACH tmp IN s_aOBJ
IF ! hb_FGetDateTime( tmp, @tmp1 ) .OR. tmp1 > tTarget
lTargetUpToDate := .F.
EXIT
ENDIF
NEXT
ENDIF
IF lTargetUpToDate
FOR EACH tmp IN s_aOBJUSER
IF ! hb_FGetDateTime( tmp, @tmp1 ) .OR. tmp1 > tTarget
lTargetUpToDate := .F.
EXIT
ENDIF
NEXT
ENDIF
IF lTargetUpToDate
FOR EACH tmp IN s_aOBJA
IF ! hb_FGetDateTime( tmp, @tmp1 ) .OR. tmp1 > tTarget
lTargetUpToDate := .F.
EXIT
ENDIF
NEXT
ENDIF
IF lTargetUpToDate
FOR EACH tmp IN s_aRESSRC
IF ! hb_FGetDateTime( FN_ExtSet( tmp, cResExt ), @tmp1 ) .OR. tmp1 > tTarget
lTargetUpToDate := .F.
EXIT
ENDIF
NEXT
ENDIF
IF lTargetUpToDate
FOR EACH tmp IN s_aRESCMP
IF ! hb_FGetDateTime( tmp, @tmp1 ) .OR. tmp1 > tTarget
lTargetUpToDate := .F.
EXIT
ENDIF
NEXT
ENDIF
IF s_lINC
DO CASE
CASE lCreateLib ; cTarget := PathSepToTarget( FN_ExtSet( cLibLibPrefix + s_cPROGNAME, cLibLibExt ) )
CASE lCreateDyn ; cTarget := PathSepToTarget( FN_ExtSet( s_cPROGNAME, cDynLibExt ) )
OTHERWISE ; cTarget := PathSepToTarget( FN_ExtSet( s_cPROGNAME, cBinExt ) )
ENDCASE
IF hb_FGetDateTime( cTarget, @tTarget )
lTargetUpToDate := .T.
IF lTargetUpToDate
FOR EACH tmp IN s_aOBJ
IF ! hb_FGetDateTime( tmp, @tmp1 ) .OR. tmp1 > tTarget
lTargetUpToDate := .F.
EXIT
ENDIF
NEXT
ENDIF
IF lTargetUpToDate
FOR EACH tmp IN s_aOBJUSER
IF ! hb_FGetDateTime( tmp, @tmp1 ) .OR. tmp1 > tTarget
lTargetUpToDate := .F.
EXIT
ENDIF
NEXT
ENDIF
IF lTargetUpToDate
FOR EACH tmp IN s_aOBJA
IF ! hb_FGetDateTime( tmp, @tmp1 ) .OR. tmp1 > tTarget
lTargetUpToDate := .F.
EXIT
ENDIF
NEXT
ENDIF
IF lTargetUpToDate
FOR EACH tmp IN s_aRESSRC
IF ! hb_FGetDateTime( FN_ExtSet( tmp, cResExt ), @tmp1 ) .OR. tmp1 > tTarget
lTargetUpToDate := .F.
EXIT
ENDIF
NEXT
ENDIF
IF lTargetUpToDate
FOR EACH tmp IN s_aRESCMP
IF ! hb_FGetDateTime( tmp, @tmp1 ) .OR. tmp1 > tTarget
lTargetUpToDate := .F.
EXIT
ENDIF
NEXT
ENDIF
#if 0
/* We need a way to find and pick libraries according to linker rules. */
IF lTargetUpToDate
FOR EACH tmp IN s_aLIB
IF ! hb_FGetDateTime( tmp, @tmp1 ) .OR. tmp1 > tTarget
lTargetUpToDate := .F.
EXIT
ENDIF
NEXT
ENDIF
/* We need a way to find and pick libraries according to linker rules. */
IF lTargetUpToDate
FOR EACH tmp IN s_aLIB
IF ! hb_FGetDateTime( tmp, @tmp1 ) .OR. tmp1 > tTarget
lTargetUpToDate := .F.
EXIT
ENDIF
NEXT
ENDIF
#endif
ENDIF
ENDIF
ENDIF
@@ -2484,15 +2494,19 @@ PROCEDURE Main( ... )
DO CASE
CASE ! lStopAfterCComp .AND. ! Empty( cBin_Link )
IF s_lINC .AND. ! t_lQuiet
OutStd( "Linking..." + hb_osNewLine() )
ENDIF
/* Linking */
/* Order is significant */
cOpt_Link := StrTran( cOpt_Link, "{FL}" , iif( s_lBLDFLGL, cSelfFlagL + " ", "" ) +;
GetEnv( "HB_USER_LDFLAGS" ) + " " + ArrayToList( s_aOPTL ) )
cOpt_Link := StrTran( cOpt_Link, "{LO}" , ArrayToList( ListCook( ArrayJoin( s_aOBJ, s_aOBJUSER ), cObjPrefix ) ) )
cOpt_Link := StrTran( cOpt_Link, "{LS}" , ArrayToList( ListCook( ArrayJoin( ListDirExt( s_aRESSRC, "", cResExt ), s_aRESCMP ), cResPrefix ) ) )
cOpt_Link := StrTran( cOpt_Link, "{LA}" , ArrayToList( s_aOBJA ) )
cOpt_Link := StrTran( cOpt_Link, "{LL}" , ArrayToList( s_aLIB ) )
cOpt_Link := StrTran( cOpt_Link, "{FL}" , iif( s_lBLDFLGL, cSelfFlagL + " ", "" ) +;
GetEnv( "HB_USER_LDFLAGS" ) + " " + ArrayToList( s_aOPTL ) )
cOpt_Link := StrTran( cOpt_Link, "{OE}" , PathSepToTarget( FN_ExtSet( s_cPROGNAME, cBinExt ) ) )
cOpt_Link := StrTran( cOpt_Link, "{OM}" , PathSepToTarget( FN_ExtSet( s_cPROGNAME, ".map" ) ) )
cOpt_Link := StrTran( cOpt_Link, "{DL}" , ArrayToList( ListCook( s_aLIBPATH, cLibPathPrefix ), cLibPathSep ) )
@@ -2537,12 +2551,16 @@ PROCEDURE Main( ... )
CASE lStopAfterCComp .AND. lCreateLib .AND. ! Empty( cBin_Lib )
IF s_lINC .AND. ! t_lQuiet
OutStd( "Creating static library..." + hb_osNewLine() )
ENDIF
/* Lib creation (static) */
/* Order is significant */
cOpt_Lib := StrTran( cOpt_Lib, "{FA}" , GetEnv( "HB_USER_AFLAGS" ) + " " + ArrayToList( s_aOPTA ) )
cOpt_Lib := StrTran( cOpt_Lib, "{LO}" , ArrayToList( ListCook( ArrayJoin( s_aOBJ, s_aOBJUSER ), cLibObjPrefix ) ) )
cOpt_Lib := StrTran( cOpt_Lib, "{LL}" , ArrayToList( s_aLIB ) )
cOpt_Lib := StrTran( cOpt_Lib, "{FA}" , GetEnv( "HB_USER_AFLAGS" ) + " " + ArrayToList( s_aOPTA ) )
cOpt_Lib := StrTran( cOpt_Lib, "{OL}" , PathSepToTarget( FN_ExtSet( cLibLibPrefix + s_cPROGNAME, cLibLibExt ) ) )
cOpt_Lib := StrTran( cOpt_Lib, "{DL}" , ArrayToList( ListCook( s_aLIBPATH, cLibPathPrefix ), cLibPathSep ) )
cOpt_Lib := StrTran( cOpt_Lib, "{DB}" , s_cHB_BIN_INSTALL )
@@ -2586,13 +2604,17 @@ PROCEDURE Main( ... )
CASE lStopAfterCComp .AND. lCreateDyn .AND. ! Empty( cBin_Dyn )
IF s_lINC .AND. ! t_lQuiet
OutStd( "Creating dynamic library..." + hb_osNewLine() )
ENDIF
/* Lib creation (dynamic) */
/* Order is significant */
cOpt_Dyn := StrTran( cOpt_Dyn, "{FD}" , GetEnv( "HB_USER_DFLAGS" ) + " " + ArrayToList( s_aOPTD ) )
cOpt_Dyn := StrTran( cOpt_Dyn, "{LO}" , ArrayToList( ListCook( ArrayJoin( s_aOBJ, s_aOBJUSER ), cDynObjPrefix ) ) )
cOpt_Dyn := StrTran( cOpt_Dyn, "{LS}" , ArrayToList( ListCook( ArrayJoin( ListDirExt( s_aRESSRC, "", cResExt ), s_aRESCMP ), cResPrefix ) ) )
cOpt_Dyn := StrTran( cOpt_Dyn, "{LL}" , ArrayToList( s_aLIB ) )
cOpt_Dyn := StrTran( cOpt_Dyn, "{FD}" , GetEnv( "HB_USER_DFLAGS" ) + " " + ArrayToList( s_aOPTD ) )
cOpt_Dyn := StrTran( cOpt_Dyn, "{OD}" , PathSepToTarget( FN_ExtSet( s_cPROGNAME, cDynLibExt ) ) )
cOpt_Dyn := StrTran( cOpt_Dyn, "{OM}" , PathSepToTarget( FN_ExtSet( s_cPROGNAME, ".map" ) ) )
cOpt_Dyn := StrTran( cOpt_Dyn, "{DL}" , ArrayToList( ListCook( s_aLIBPATH, cLibPathPrefix ), cLibPathSep ) )