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

* utils/hbmk2/hbmk2.pt_BR.po
  * utils/hbmk2/hbmk2.hu_HU.po
  * utils/hbmk2/hbmk2.prg
    + Added support for new dependency checking method which uses 
      Harbour compiler to find out dependent files in incremental 
      mode. This of course only works for .prg sources, .c/rc source 
      dependency checking will continue to use simple method 
      which looks for '#include "' string.
      Enable new mode with: -head=real cmdline or "head=real" .hbc 
      option. When this mode is active .c/.rc dependency checking 
      will be set to default 'partial' level.
      NOTE: The activation method is tentative and will be finalized 
            after doing some functional and performance testing 
            with this new feature.
    ; TODO: Multimodule support in incremental mode isn't complete 
            and should be added. Currently all modules are considered 
            as equal dependencies of parent source. I'd appreciate if 
            this code would be peer-reviewed as I didn't make any 
            multimodule tests.
This commit is contained in:
Viktor Szakats
2009-10-13 15:52:57 +00:00
parent 1007cfa311
commit cba2bdd09f
4 changed files with 191 additions and 119 deletions

View File

@@ -17,6 +17,27 @@
past entries belonging to author(s): Viktor Szakats.
*/
2009-10-13 17:51 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
+ Added support for new dependency checking method which uses
Harbour compiler to find out dependent files in incremental
mode. This of course only works for .prg sources, .c/rc source
dependency checking will continue to use simple method
which looks for '#include "' string.
Enable new mode with: -head=real cmdline or "head=real" .hbc
option. When this mode is active .c/.rc dependency checking
will be set to default 'partial' level.
NOTE: The activation method is tentative and will be finalized
after doing some functional and performance testing
with this new feature.
; TODO: Multimodule support in incremental mode isn't complete
and should be added. Currently all modules are considered
as equal dependencies of parent source. I'd appreciate if
this code would be peer-reviewed as I didn't make any
multimodule tests.
2009-10-13 16:47 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/compiler/hbmain.c
* do not set TAB after last dependencies list generated by -sm

View File

@@ -4,8 +4,8 @@
#: hbmk2.prg:7106
#, c-format
msgid ".hbc options (they should come in separate lines): libs=[<libname[s]>], hbcs=[<.hbc file[s]>], gt=[gtname], syslibs=[<libname[s]>], prgflags=[Harbour flags], cflags=[C compiler flags], resflags=[resource compiler flags], ldflags=[linker flags], libpaths=[paths], sources=[source files], incpaths=[paths], inctrypaths=[paths], instpaths=[paths], gui|mt|shared|nulrdd|debug|opt|map|implib|strip|run|inc=[yes|no], cpp=[yes|no|def], compr=[yes|no|def|min|max], head=[off|partial|full], skip=[yes|no], echo=<text>\\nLines starting with '#' char are ignored"
msgstr ".hbc opciók (külön sorokba írandók): libs=[<libnevek>], hbcs=[<.hbc nevek>], gt=[gtnév], syslibs=[<libnevek>], prgflags=[Harbour opciók], cflags=[C fordító opciók], resflags=[erõforrás fordító kapcsolók], ldflags=[szerkesztõ kapcsolók], libpaths=[útvonalak], sources=[forrás fájlok], incpaths=[útvonalak], inctrypaths=[útvonalak], instpaths=[útvonalak], gui|mt|shared|nulrdd|debug|opt|map|implib|strip|run|inc=[yes|no], cpp=[yes|no|def], compr=[yes|no|def|min|max], head=[off|partial|full], skip=[yes|no], echo=<szöveg>\\n'#' karakterrel kezdõdõ sorokat figyelmen kívül hagyja"
msgid ".hbc options (they should come in separate lines): libs=[<libname[s]>], hbcs=[<.hbc file[s]>], gt=[gtname], syslibs=[<libname[s]>], prgflags=[Harbour flags], cflags=[C compiler flags], resflags=[resource compiler flags], ldflags=[linker flags], libpaths=[paths], sources=[source files], incpaths=[paths], inctrypaths=[paths], instpaths=[paths], gui|mt|shared|nulrdd|debug|opt|map|implib|strip|run|inc=[yes|no], cpp=[yes|no|def], compr=[yes|no|def|min|max], head=[off|partial|full|real], skip=[yes|no], echo=<text>\\nLines starting with '#' char are ignored"
msgstr ".hbc opciók (külön sorokba írandók): libs=[<libnevek>], hbcs=[<.hbc nevek>], gt=[gtnév], syslibs=[<libnevek>], prgflags=[Harbour opciók], cflags=[C fordító opciók], resflags=[erõforrás fordító kapcsolók], ldflags=[szerkesztõ kapcsolók], libpaths=[útvonalak], sources=[forrás fájlok], incpaths=[útvonalak], inctrypaths=[útvonalak], instpaths=[útvonalak], gui|mt|shared|nulrdd|debug|opt|map|implib|strip|run|inc=[yes|no], cpp=[yes|no|def], compr=[yes|no|def|min|max], head=[off|partial|full|real], skip=[yes|no], echo=<szöveg>\\n'#' karakterrel kezdõdõ sorokat figyelmen kívül hagyja"
#: hbmk2.prg:799
#, c-format
@@ -234,8 +234,8 @@ msgstr "teljes s
#: hbmk2.prg:7088
#, c-format
msgid "control source header parsing (in incremental build mode)\\n<m> can be: full, partial (default), off"
msgstr "finomhangolja a forrásállományok automatikus fejléc detektálást (lépcsõzetes üzemmódban)\\n<m> lehet: full, partial (default), off"
msgid "control source header parsing (in incremental build mode)\\n<m> can be: real, full, partial (default), off"
msgstr "finomhangolja a forrásállományok automatikus fejléc detektálást (lépcsõzetes üzemmódban)\\n<m> lehet: real, full, partial (default), off"
#: hbmk2.prg:3299 hbmk2.prg:3333
#, c-format

View File

@@ -146,6 +146,7 @@ REQUEST hbmk_KEYW
#define _HEAD_OFF 0
#define _HEAD_PARTIAL 1
#define _HEAD_FULL 2
#define _HEAD_REAL 3
#define _COMPDET_bBlock 1
#define _COMPDET_cCOMP 2
@@ -262,30 +263,37 @@ REQUEST hbmk_KEYW
#define _HBMK_lIGNOREERROR 52
#define _HBMK_lIMPLIB 53
#define _HBMK_cFIRST 54
#define _HBMK_aPRG 55
#define _HBMK_aC 56
#define _HBMK_aRESSRC 57
#define _HBMK_aRESCMP 58
#define _HBMK_aOBJUSER 59
#define _HBMK_aICON 60
#define _HBMK_lCreateLib 54
#define _HBMK_lCreateDyn 55
#define _HBMK_aPO 61
#define _HBMK_cHBL 62
#define _HBMK_cHBLDir 63
#define _HBMK_aLNG 64
#define _HBMK_cPO 65
#define _HBMK_lBLDFLGP 56
#define _HBMK_lBLDFLGC 57
#define _HBMK_lBLDFLGL 58
#define _HBMK_lDEBUGTIME 66
#define _HBMK_lDEBUGINC 67
#define _HBMK_lDEBUGSTUB 68
#define _HBMK_lDEBUGI18N 69
#define _HBMK_cFIRST 59
#define _HBMK_aPRG 60
#define _HBMK_aC 61
#define _HBMK_aRESSRC 62
#define _HBMK_aRESCMP 63
#define _HBMK_aOBJUSER 64
#define _HBMK_aICON 65
#define _HBMK_cCCPATH 70
#define _HBMK_cCCPREFIX 71
#define _HBMK_cCCPOSTFIX 72
#define _HBMK_aPO 66
#define _HBMK_cHBL 67
#define _HBMK_cHBLDir 68
#define _HBMK_aLNG 69
#define _HBMK_cPO 70
#define _HBMK_MAX_ 72
#define _HBMK_lDEBUGTIME 71
#define _HBMK_lDEBUGINC 72
#define _HBMK_lDEBUGSTUB 73
#define _HBMK_lDEBUGI18N 74
#define _HBMK_cCCPATH 75
#define _HBMK_cCCPREFIX 76
#define _HBMK_cCCPOSTFIX 77
#define _HBMK_MAX_ 77
#ifndef _HBMK_EMBEDDED_
@@ -553,9 +561,6 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
[vszakats] */
LOCAL l_lLIBGROUPING := .T.
LOCAL l_lBLDFLGP := .F.
LOCAL l_lBLDFLGC := .F.
LOCAL l_lBLDFLGL := .F.
LOCAL l_lCLEAN := .F.
LOCAL l_nJOBS := 1
@@ -623,8 +628,6 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
LOCAL lStopAfterCComp := .F.
LOCAL lAcceptCFlag := .F.
LOCAL lAcceptLDFlag := .F.
LOCAL lCreateLib := .F.
LOCAL lCreateDyn := .F.
LOCAL lAcceptLDClipper := .F.
LOCAL cWorkDir := NIL
@@ -641,10 +644,6 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
LOCAL cDir, cName, cExt
LOCAL headstate
LOCAL cSelfFlagPRG := hb_Version( HB_VERSION_FLAG_PRG )
LOCAL cSelfFlagC := hb_Version( HB_VERSION_FLAG_C )
LOCAL cSelfFlagL := hb_Version( HB_VERSION_FLAG_LINKER )
LOCAL cDL_Version_Alter
LOCAL cDL_Version
@@ -654,6 +653,9 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
LOCAL nStart := Seconds()
hbmk[ _HBMK_lCreateLib ] := .F.
hbmk[ _HBMK_lCreateDyn ] := .F.
hbmk[ _HBMK_lQuiet ] := .F.
hbmk[ _HBMK_lInfo ] := .F.
@@ -684,6 +686,10 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
hbmk[ _HBMK_lIGNOREERROR ] := .F.
hbmk[ _HBMK_lIMPLIB ] := .F.
hbmk[ _HBMK_lBLDFLGP ] := .F.
hbmk[ _HBMK_lBLDFLGC ] := .F.
hbmk[ _HBMK_lBLDFLGL ] := .F.
hbmk[ _HBMK_lDEBUGTIME ] := .F.
hbmk[ _HBMK_lDEBUGINC ] := .F.
hbmk[ _HBMK_lDEBUGSTUB ] := .F.
@@ -768,9 +774,9 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
CASE Left( cParamL, 6 ) == "-build=" ; hbmk[ _HBMK_cBUILD ] := SubStr( cParam, 8 )
CASE Left( cParamL, 6 ) == "-lang=" ; hbmk[ _HBMK_cUILNG ] := SubStr( cParam, 7 ) ; SetUILang( hbmk )
CASE cParamL == "-hbrun" ; lSkipBuild := .T. ; hbmk[ _HBMK_lRUN ] := .T.
CASE cParamL == "-hbraw" ; hbmk[ _HBMK_lInfo ] := .F. ; lStopAfterHarbour := .T. ; lStopAfterCComp := .T. ; lCreateLib := .F. ; lCreateDyn := .F. ; lAcceptCFlag := .F. ; lAcceptLDFlag := .F.
CASE cParamL == "-hbraw" ; hbmk[ _HBMK_lInfo ] := .F. ; lStopAfterHarbour := .T. ; lStopAfterCComp := .T. ; hbmk[ _HBMK_lCreateLib ] := .F. ; hbmk[ _HBMK_lCreateDyn ] := .F. ; lAcceptCFlag := .F. ; lAcceptLDFlag := .F.
CASE cParamL == "-hbcmp" .OR. ;
cParamL == "-clipper" ; hbmk[ _HBMK_lInfo ] := .F. ; lStopAfterHarbour := .F. ; lStopAfterCComp := .T. ; lCreateLib := .F. ; lCreateDyn := .F. ; lAcceptCFlag := .F. ; lAcceptLDFlag := .F.
cParamL == "-clipper" ; hbmk[ _HBMK_lInfo ] := .F. ; lStopAfterHarbour := .F. ; lStopAfterCComp := .T. ; hbmk[ _HBMK_lCreateLib ] := .F. ; hbmk[ _HBMK_lCreateDyn ] := .F. ; lAcceptCFlag := .F. ; lAcceptLDFlag := .F.
CASE cParamL == "-hbcc" ; hbmk[ _HBMK_lInfo ] := .F. ; lStopAfterHarbour := .F. ; lStopAfterCComp := .F. ; lAcceptCFlag := .T.
CASE cParamL == "-hblnk" ; hbmk[ _HBMK_lInfo ] := .F. ; lStopAfterHarbour := .F. ; lStopAfterCComp := .F. ; lAcceptLDFlag := .T.
CASE cParamL == "-rtlink" .OR. ;
@@ -1429,8 +1435,8 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
CASE cParamL == "-quiet" ; hbmk[ _HBMK_lQuiet ] := .T. ; hbmk[ _HBMK_lInfo ] := .F.
CASE cParamL == "-info" ; hbmk[ _HBMK_lInfo ] := .T.
CASE cParamL == "-pause" ; lPause := .T.
CASE cParamL == "-hblib" ; hbmk[ _HBMK_lInfo ] := .F. ; lStopAfterHarbour := .F. ; lStopAfterCComp := .T. ; lCreateLib := .T. ; lCreateDyn := .F.
CASE cParamL == "-hbdyn" ; hbmk[ _HBMK_lInfo ] := .F. ; lStopAfterHarbour := .F. ; lStopAfterCComp := .T. ; lCreateLib := .F. ; lCreateDyn := .T.
CASE cParamL == "-hblib" ; hbmk[ _HBMK_lInfo ] := .F. ; lStopAfterHarbour := .F. ; lStopAfterCComp := .T. ; hbmk[ _HBMK_lCreateLib ] := .T. ; hbmk[ _HBMK_lCreateDyn ] := .F.
CASE cParamL == "-hbdyn" ; hbmk[ _HBMK_lInfo ] := .F. ; lStopAfterHarbour := .F. ; lStopAfterCComp := .T. ; hbmk[ _HBMK_lCreateLib ] := .F. ; hbmk[ _HBMK_lCreateDyn ] := .T.
CASE cParamL == "-gui" .OR. ;
cParamL == "-mwindows" ; hbmk[ _HBMK_lGUI ] := .T. /* Compatibility */
CASE cParamL == "-std" .OR. ;
@@ -1448,13 +1454,13 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
CASE cParamL == "-nomiscsyslib-" ; l_lLIBSYSMISC := .T.
CASE cParamL == "-nolibgrouping" ; l_lLIBGROUPING := .F.
CASE cParamL == "-nolibgrouping-" ; l_lLIBGROUPING := .T.
CASE cParamL == "-bldf" ; l_lBLDFLGP := l_lBLDFLGC := l_lBLDFLGL := .T.
CASE cParamL == "-bldf-" ; l_lBLDFLGP := l_lBLDFLGC := l_lBLDFLGL := .F.
CASE cParamL == "-bldf" ; hbmk[ _HBMK_lBLDFLGP ] := hbmk[ _HBMK_lBLDFLGC ] := hbmk[ _HBMK_lBLDFLGL ] := .T.
CASE cParamL == "-bldf-" ; hbmk[ _HBMK_lBLDFLGP ] := hbmk[ _HBMK_lBLDFLGC ] := hbmk[ _HBMK_lBLDFLGL ] := .F.
CASE Left( cParamL, 6 ) == "-bldf="
cParam := SubStr( cParam, 7 )
l_lBLDFLGP := "p" $ cParam
l_lBLDFLGC := "c" $ cParam
l_lBLDFLGL := "l" $ cParam
hbmk[ _HBMK_lBLDFLGP ] := "p" $ cParam
hbmk[ _HBMK_lBLDFLGC ] := "c" $ cParam
hbmk[ _HBMK_lBLDFLGL ] := "l" $ cParam
CASE cParamL == "-debug" ; hbmk[ _HBMK_lDEBUG ] := .T.
CASE cParamL == "-debug-" .OR. ;
cParamL == "-nodebug" ; hbmk[ _HBMK_lDEBUG ] := .F.
@@ -1509,6 +1515,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
DO CASE
CASE SubStr( cParamL, 7 ) == "off" ; hbmk[ _HBMK_nHEAD ] := _HEAD_OFF
CASE SubStr( cParamL, 7 ) == "full" ; hbmk[ _HBMK_nHEAD ] := _HEAD_FULL
CASE SubStr( cParamL, 7 ) == "real" ; hbmk[ _HBMK_nHEAD ] := _HEAD_REAL
OTHERWISE ; hbmk[ _HBMK_nHEAD ] := _HEAD_PARTIAL
ENDCASE
@@ -1932,7 +1939,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
hbmk[ _HBMK_cFIRST ] := SubStr( hbmk[ _HBMK_cFIRST ], 2 )
ENDIF
IF lCreateDyn .AND. hbmk[ _HBMK_lSHARED ]
IF hbmk[ _HBMK_lCreateDyn ] .AND. hbmk[ _HBMK_lSHARED ]
hbmk[ _HBMK_lSHARED ] := .F.
ENDIF
@@ -1974,7 +1981,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
/* NOTE: We only use different shared object flags when compiling for
"( win || wce ) & !( allmingw | cygwin )". This may change in the future.
IMPORTANT: Keep this condition in sync with setting -DHB_DYNLIB C compiler flag */
IF lCreateDyn .AND. !( hbmk[ _HBMK_cCOMP ] $ "mingw|mingw64|mingwarm|cygwin" )
IF hbmk[ _HBMK_lCreateDyn ] .AND. !( hbmk[ _HBMK_cCOMP ] $ "mingw|mingw64|mingwarm|cygwin" )
DEFAULT cWorkDir TO FN_DirGet( l_cPROGNAME ) + _WORKDIR_DEF_ + hb_osPathSeparator() + "hbdyn"
ELSE
DEFAULT cWorkDir TO FN_DirGet( l_cPROGNAME ) + _WORKDIR_DEF_
@@ -2185,9 +2192,9 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
ENDIF
ENDIF
IF hbmk[ _HBMK_lSTRIP ]
IF lCreateLib .OR. hbmk[ _HBMK_cPLAT ] $ "darwin|sunos"
IF hbmk[ _HBMK_lCreateLib ] .OR. hbmk[ _HBMK_cPLAT ] $ "darwin|sunos"
cBin_Post := "strip"
IF lCreateDyn .OR. lCreateLib
IF hbmk[ _HBMK_lCreateDyn ] .OR. hbmk[ _HBMK_lCreateLib ]
cOpt_Post := "-S {OB}"
ELSE
cOpt_Post := "{OB}"
@@ -2198,7 +2205,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
ENDIF
ENDIF
IF lStopAfterCComp
IF ! lCreateLib .AND. ! lCreateDyn .AND. ( Len( hbmk[ _HBMK_aPRG ] ) + Len( hbmk[ _HBMK_aC ] ) ) == 1
IF ! hbmk[ _HBMK_lCreateLib ] .AND. ! hbmk[ _HBMK_lCreateDyn ] .AND. ( Len( hbmk[ _HBMK_aPRG ] ) + Len( hbmk[ _HBMK_aC ] ) ) == 1
IF hbmk[ _HBMK_cPLAT ] $ "darwin|sunos"
AAdd( hbmk[ _HBMK_aOPTC ], "-o {OO}" )
ELSE
@@ -2213,7 +2220,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
ENDIF
ENDIF
IF lCreateDyn .AND. !( hbmk[ _HBMK_cPLAT ] == "darwin" )
IF hbmk[ _HBMK_lCreateDyn ] .AND. !( hbmk[ _HBMK_cPLAT ] == "darwin" )
IF hbmk[ _HBMK_cPLAT ] $ "hpux|sunos"
AAdd( hbmk[ _HBMK_aOPTC ], "-fPIC" )
ELSE
@@ -2223,10 +2230,11 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
/* Always inherit/reproduce some flags from self */
IF "-mlp64" $ cSelfFlagC ; AAddNew( hbmk[ _HBMK_aOPTC ], "-mlp64" )
ELSEIF "-mlp32" $ cSelfFlagC ; AAddNew( hbmk[ _HBMK_aOPTC ], "-mlp32" )
ELSEIF "-m64" $ cSelfFlagC ; AAddNew( hbmk[ _HBMK_aOPTC ], "-m64" )
ELSEIF "-m32" $ cSelfFlagC ; AAddNew( hbmk[ _HBMK_aOPTC ], "-m32" )
tmp := hb_Version( HB_VERSION_FLAG_C )
IF "-mlp64" $ tmp ; AAddNew( hbmk[ _HBMK_aOPTC ], "-mlp64" )
ELSEIF "-mlp32" $ tmp ; AAddNew( hbmk[ _HBMK_aOPTC ], "-mlp32" )
ELSEIF "-m64" $ tmp ; AAddNew( hbmk[ _HBMK_aOPTC ], "-m64" )
ELSEIF "-m32" $ tmp ; AAddNew( hbmk[ _HBMK_aOPTC ], "-m32" )
ENDIF
/* Add system libraries */
@@ -2365,7 +2373,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
l_aLIBHBBASE_2 := iif( hbmk[ _HBMK_lMT ], aLIB_BASE_2_MT, aLIB_BASE_2 )
ENDIF
IF hbmk[ _HBMK_lSTRIP ]
IF lCreateLib
IF hbmk[ _HBMK_lCreateLib ]
cBin_Post := "strip"
cOpt_Post := "-S {OB}"
ELSE
@@ -2374,7 +2382,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
ENDIF
ENDIF
IF lStopAfterCComp
IF ! lCreateLib .AND. ! lCreateDyn .AND. ( Len( hbmk[ _HBMK_aPRG ] ) + Len( hbmk[ _HBMK_aC ] ) ) == 1
IF ! hbmk[ _HBMK_lCreateLib ] .AND. ! hbmk[ _HBMK_lCreateDyn ] .AND. ( Len( hbmk[ _HBMK_aPRG ] ) + Len( hbmk[ _HBMK_aC ] ) ) == 1
AAdd( hbmk[ _HBMK_aOPTC ], "-o{OO}" )
ENDIF
ELSE
@@ -2463,7 +2471,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
l_aLIBSYS := ArrayJoin( l_aLIBSYS, { "socket" } )
ENDIF
IF hbmk[ _HBMK_lSTRIP ]
IF lCreateLib
IF hbmk[ _HBMK_lCreateLib ]
IF hbmk[ _HBMK_cCOMP ] == "gccomf"
cBin_Post := "stripomf"
ELSE
@@ -2477,7 +2485,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
ENDIF
/* OS/2 needs a space between -o and file name following it */
IF lStopAfterCComp
IF ! lCreateLib .AND. ! lCreateDyn .AND. ( Len( hbmk[ _HBMK_aPRG ] ) + Len( hbmk[ _HBMK_aC ] ) ) == 1
IF ! hbmk[ _HBMK_lCreateLib ] .AND. ! hbmk[ _HBMK_lCreateDyn ] .AND. ( Len( hbmk[ _HBMK_aPRG ] ) + Len( hbmk[ _HBMK_aC ] ) ) == 1
AAdd( hbmk[ _HBMK_aOPTC ], "-o {OO}" )
ENDIF
ELSE
@@ -2543,7 +2551,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
l_aLIBSYS := ArrayJoin( l_aLIBSYS, { "m" } )
ENDIF
IF hbmk[ _HBMK_lSTRIP ]
IF lCreateLib
IF hbmk[ _HBMK_lCreateLib ]
cBin_Post := "strip"
cOpt_Post := "-S {OB}"
ELSE
@@ -2552,7 +2560,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
ENDIF
ENDIF
IF lStopAfterCComp
IF ! lCreateLib .AND. ! lCreateDyn .AND. ( Len( hbmk[ _HBMK_aPRG ] ) + Len( hbmk[ _HBMK_aC ] ) ) == 1
IF ! hbmk[ _HBMK_lCreateLib ] .AND. ! hbmk[ _HBMK_lCreateDyn ] .AND. ( Len( hbmk[ _HBMK_aPRG ] ) + Len( hbmk[ _HBMK_aC ] ) ) == 1
AAdd( hbmk[ _HBMK_aOPTC ], "-o{OO}" )
ENDIF
ELSE
@@ -2634,7 +2642,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
ELSE
cOpt_CompC += " {LC}"
ENDIF
IF lStopAfterCComp .AND. ! lCreateLib .AND. ! lCreateDyn
IF lStopAfterCComp .AND. ! hbmk[ _HBMK_lCreateLib ] .AND. ! hbmk[ _HBMK_lCreateDyn ]
IF ( Len( hbmk[ _HBMK_aPRG ] ) + Len( hbmk[ _HBMK_aC ] ) ) == 1
AAdd( hbmk[ _HBMK_aOPTC ], "-fo={OO}" )
ELSE
@@ -2653,7 +2661,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
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}"
IF lCreateDyn
IF hbmk[ _HBMK_lCreateDyn ]
AAdd( hbmk[ _HBMK_aLIBPATH ], PathSepToTarget( hbmk, GetEnv( "WATCOM") + hb_osPathSeparator() + "lib386" ) )
AAdd( hbmk[ _HBMK_aLIBPATH ], PathSepToTarget( hbmk, GetEnv( "WATCOM") + hb_osPathSeparator() + "lib386" + hb_osPathSeparator() + "linux" ) )
ENDIF
@@ -2781,7 +2789,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
AAdd( hbmk[ _HBMK_aOPTC ], "-n" + FN_Escape( PathSepToTarget( hbmk, cWorkDir ), nCmd_Esc ) )
ENDIF
ELSE
IF lStopAfterCComp .AND. ! lCreateLib .AND. ! lCreateDyn
IF lStopAfterCComp .AND. ! hbmk[ _HBMK_lCreateLib ] .AND. ! hbmk[ _HBMK_lCreateDyn ]
IF ( Len( hbmk[ _HBMK_aPRG ] ) + Len( hbmk[ _HBMK_aC ] ) ) == 1
AAdd( hbmk[ _HBMK_aOPTC ], "-o{OO}" )
ELSE
@@ -2892,7 +2900,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
AAdd( hbmk[ _HBMK_aOPTC ], "-Fo" + FN_Escape( PathSepToTarget( hbmk, cWorkDir ) + hb_osPathSeparator(), nCmd_Esc ) ) /* NOTE: Ending path sep is important. */
ENDIF
ELSE
IF lStopAfterCComp .AND. ! lCreateLib .AND. ! lCreateDyn
IF lStopAfterCComp .AND. ! hbmk[ _HBMK_lCreateLib ] .AND. ! hbmk[ _HBMK_lCreateDyn ]
IF ( Len( hbmk[ _HBMK_aPRG ] ) + Len( hbmk[ _HBMK_aC ] ) ) == 1
AAdd( hbmk[ _HBMK_aOPTC ], "-Fo{OO}" )
ELSE
@@ -3066,9 +3074,9 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
AAdd( hbmk[ _HBMK_aOPTL ], "-B -static" )
ENDIF
IF hbmk[ _HBMK_lSTRIP ]
IF lCreateLib .OR. hbmk[ _HBMK_cPLAT ] == "sunos"
IF hbmk[ _HBMK_lCreateLib ] .OR. hbmk[ _HBMK_cPLAT ] == "sunos"
cBin_Post := "strip"
IF lCreateDyn .OR. lCreateLib
IF hbmk[ _HBMK_lCreateDyn ] .OR. hbmk[ _HBMK_lCreateLib ]
cOpt_Post := "-S {OB}"
ELSE
cOpt_Post := "{OB}"
@@ -3079,14 +3087,14 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
ENDIF
ENDIF
IF lStopAfterCComp
IF ! lCreateLib .AND. ! lCreateDyn .AND. ( Len( hbmk[ _HBMK_aPRG ] ) + Len( hbmk[ _HBMK_aC ] ) ) == 1
IF ! hbmk[ _HBMK_lCreateLib ] .AND. ! hbmk[ _HBMK_lCreateDyn ] .AND. ( Len( hbmk[ _HBMK_aPRG ] ) + Len( hbmk[ _HBMK_aC ] ) ) == 1
AAdd( hbmk[ _HBMK_aOPTC ], "-o {OO}" )
ENDIF
ELSE
AAdd( hbmk[ _HBMK_aOPTL ], "-o {OE}" )
ENDIF
IF lCreateDyn
IF hbmk[ _HBMK_lCreateDyn ]
AAdd( hbmk[ _HBMK_aOPTC ], "-KPIC" )
ENDIF
@@ -3142,7 +3150,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
/* NOTE: We only use different shared object flags when compiling for
"( win || wce ) & !( allmingw | cygwin )". This may change in the future.
IMPORTANT: Keep this condition in sync with workdir default settings */
IF lCreateDyn .AND. !( hbmk[ _HBMK_cCOMP ] $ "mingw|mingw64|mingwarm|cygwin" )
IF hbmk[ _HBMK_lCreateDyn ] .AND. !( hbmk[ _HBMK_cCOMP ] $ "mingw|mingw64|mingwarm|cygwin" )
IF hbmk[ _HBMK_nHBMODE ] == _HBMODE_XHB .OR. ;
hbmk[ _HBMK_nHBMODE ] == _HBMODE_HB10
AAdd( hbmk[ _HBMK_aOPTC ], "-D__EXPORT__" )
@@ -3182,11 +3190,11 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
IF Empty( cExt ) .AND. ! Empty( cBinExt )
l_cPROGNAME := hb_FNameMerge( cDir, cName, cBinExt )
ENDIF
CASE lStopAfterCComp .AND. lCreateDyn
CASE lStopAfterCComp .AND. hbmk[ _HBMK_lCreateDyn ]
IF Empty( cExt ) .AND. ! Empty( cDynLibExt )
l_cPROGNAME := hb_FNameMerge( cDir, cName, cDynLibExt )
ENDIF
CASE lStopAfterCComp .AND. lCreateLib
CASE lStopAfterCComp .AND. hbmk[ _HBMK_lCreateLib ]
l_cPROGNAME := hb_FNameMerge( cDir, cLibLibPrefix + cName, iif( Empty( cLibLibExt ), cExt, cLibLibExt ) )
ENDCASE
ENDIF
@@ -3321,9 +3329,9 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
aThreads := {}
FOR EACH aTODO IN ArraySplit( l_aPRG_TODO, l_nJOBS )
aCommand := ArrayAJoin( { { iif( lCreateLib .OR. lCreateDyn, "-n1", "-n2" ) },;
aCommand := ArrayAJoin( { { iif( hbmk[ _HBMK_lCreateLib ] .OR. hbmk[ _HBMK_lCreateDyn ], "-n1", "-n2" ) },;
aTODO,;
iif( l_lBLDFLGP, { " " + cSelfFlagPRG }, {} ),;
iif( hbmk[ _HBMK_lBLDFLGP ], { " " + hb_Version( HB_VERSION_FLAG_PRG ) }, {} ),;
ListToArray( iif( ! Empty( GetEnv( "HB_USER_PRGFLAGS" ) ), " " + GetEnv( "HB_USER_PRGFLAGS" ), "" ) ),;
hbmk[ _HBMK_aOPTPRG ] } )
@@ -3385,9 +3393,9 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
/* Use external compiler */
cCommand := FN_Escape( DirAddPathSep( PathSepToSelf( l_cHB_BIN_INSTALL ) ) + cBin_CompPRG + cBinExt, nCmd_Esc ) +;
" " + iif( lCreateLib .OR. lCreateDyn, "-n1", iif( hbmk[ _HBMK_nHBMODE ] != _HBMODE_NATIVE, "-n", "-n2" ) ) +;
" " + iif( hbmk[ _HBMK_lCreateLib ] .OR. hbmk[ _HBMK_lCreateDyn ], "-n1", iif( hbmk[ _HBMK_nHBMODE ] != _HBMODE_NATIVE, "-n", "-n2" ) ) +;
" " + ArrayToList( l_aPRG_TODO,, nCmd_Esc ) +;
iif( l_lBLDFLGP, " " + cSelfFlagPRG, "" ) +;
iif( hbmk[ _HBMK_lBLDFLGP ], " " + hb_Version( HB_VERSION_FLAG_PRG ), "" ) +;
iif( ! Empty( GetEnv( "HB_USER_PRGFLAGS" ) ), " " + GetEnv( "HB_USER_PRGFLAGS" ), "" ) +;
iif( ! Empty( hbmk[ _HBMK_aOPTPRG ] ), " " + ArrayToList( hbmk[ _HBMK_aOPTPRG ] ), "" )
@@ -3861,9 +3869,9 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
nOpt_Esc := iif( "{SCRIPT}" $ cOpt_CompC, nScr_Esc, nCmd_Esc )
/* Order is significant */
cOpt_CompC := StrTran( cOpt_CompC, "{FC}" , iif( l_lBLDFLGC, cSelfFlagC + " ", "" ) +;
cOpt_CompC := StrTran( cOpt_CompC, "{FC}" , iif( hbmk[ _HBMK_lBLDFLGC ], hb_Version( HB_VERSION_FLAG_C ) + " ", "" ) +;
GetEnv( "HB_USER_CFLAGS" ) + " " + ArrayToList( hbmk[ _HBMK_aOPTC ] ) )
cOpt_CompC := StrTran( cOpt_CompC, "{FL}" , iif( l_lBLDFLGL, cSelfFlagL + " ", "" ) +;
cOpt_CompC := StrTran( cOpt_CompC, "{FL}" , iif( hbmk[ _HBMK_lBLDFLGL ], hb_Version( HB_VERSION_FLAG_LINKER ) + " ", "" ) +;
GetEnv( "HB_USER_LDFLAGS" ) + " " + ArrayToList( hbmk[ _HBMK_aOPTL ] ) )
cOpt_CompC := StrTran( cOpt_CompC, "{LR}" , ArrayToList( ArrayJoin( ListDirExt( hbmk[ _HBMK_aRESSRC ], cWorkDir, cResExt ), hbmk[ _HBMK_aRESCMP ] ),, nOpt_Esc ) )
cOpt_CompC := StrTran( cOpt_CompC, "{LO}" , ArrayToList( ArrayAJoin( { hbmk[ _HBMK_aOBJUSER ], ListCook( l_aPRG_DONE, cObjExt ), ListCook( l_aC_DONE, cObjExt ) } ),, nOpt_Esc, cObjPrefix ) )
@@ -4041,7 +4049,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
ENDIF
IF hbmk[ _HBMK_lREBUILD ] .OR. ;
( ! hbmk[ _HBMK_lINC ] .AND. lStopAfterCComp .AND. lCreateLib .AND. ! Empty( cBin_Lib ) ) /* non-incremental + static lib */
( ! hbmk[ _HBMK_lINC ] .AND. lStopAfterCComp .AND. hbmk[ _HBMK_lCreateLib ] .AND. ! Empty( cBin_Lib ) ) /* non-incremental + static lib */
IF hb_FileExists( PathSepToTarget( hbmk, l_cPROGNAME ) ) .AND. ;
FErase( PathSepToTarget( hbmk, l_cPROGNAME ) ) == F_ERROR
hbmk_OutErr( hb_StrFormat( I_( "Warning: Cannot delete existing target '%1$s'." ), l_cPROGNAME ) )
@@ -4060,7 +4068,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
nOpt_Esc := iif( "{SCRIPT}" $ cOpt_Link, nScr_Esc, nCmd_Esc )
/* Order is significant */
cOpt_Link := StrTran( cOpt_Link, "{FL}" , iif( l_lBLDFLGL, cSelfFlagL + " ", "" ) +;
cOpt_Link := StrTran( cOpt_Link, "{FL}" , iif( hbmk[ _HBMK_lBLDFLGL ], hb_Version( HB_VERSION_FLAG_LINKER ) + " ", "" ) +;
GetEnv( "HB_USER_LDFLAGS" ) + " " + ArrayToList( hbmk[ _HBMK_aOPTL ] ) )
cOpt_Link := StrTran( cOpt_Link, "{LO}" , ArrayToList( ArrayJoin( l_aOBJ, hbmk[ _HBMK_aOBJUSER ] ),, nOpt_Esc, cObjPrefix ) )
cOpt_Link := StrTran( cOpt_Link, "{LS}" , ArrayToList( ArrayJoin( ListDirExt( hbmk[ _HBMK_aRESSRC ], cWorkDir, cResExt ), hbmk[ _HBMK_aRESCMP ] ),, nOpt_Esc, cResPrefix ) )
@@ -4139,7 +4147,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
ENDIF
ENDIF
CASE lStopAfterCComp .AND. lCreateDyn .AND. ! Empty( cBin_Dyn )
CASE lStopAfterCComp .AND. hbmk[ _HBMK_lCreateDyn ] .AND. ! Empty( cBin_Dyn )
IF hbmk[ _HBMK_lINC ] .AND. ! hbmk[ _HBMK_lQuiet ]
hbmk_OutStd( hb_StrFormat( I_( "Creating dynamic library... %1$s" ), PathSepToTarget( hbmk, l_cPROGNAME ) ) )
@@ -4201,7 +4209,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
FErase( cScriptFile )
ENDIF
CASE lStopAfterCComp .AND. lCreateLib .AND. ! Empty( cBin_Lib )
CASE lStopAfterCComp .AND. hbmk[ _HBMK_lCreateLib ] .AND. ! Empty( cBin_Lib )
IF hbmk[ _HBMK_lINC ] .AND. ! hbmk[ _HBMK_lQuiet ]
hbmk_OutStd( hb_StrFormat( I_( "Creating static library... %1$s" ), PathSepToTarget( hbmk, l_cPROGNAME ) ) )
@@ -4278,7 +4286,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
IF ! hbmk[ _HBMK_lINC ] .OR. l_lCLEAN
AEval( ListDirExt( hbmk[ _HBMK_aPRG ], cWorkDir, ".c", .T. ), {|tmp| FErase( tmp ) } )
ENDIF
IF ! lStopAfterCComp .OR. lCreateLib .OR. lCreateDyn
IF ! lStopAfterCComp .OR. hbmk[ _HBMK_lCreateLib ] .OR. hbmk[ _HBMK_lCreateDyn ]
IF ! hbmk[ _HBMK_lINC ] .OR. l_lCLEAN
IF ! Empty( cResExt )
AEval( ListDirExt( hbmk[ _HBMK_aRESSRC ], cWorkDir, cResExt ), {|tmp| FErase( tmp ) } )
@@ -4292,7 +4300,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
ENDIF
IF nErrorLevel == 0 .AND. ! l_lCLEAN .AND. ! lTargetUpToDate .AND. ;
( ! lStopAfterCComp .OR. lCreateLib .OR. lCreateDyn )
( ! lStopAfterCComp .OR. hbmk[ _HBMK_lCreateLib ] .OR. hbmk[ _HBMK_lCreateDyn ] )
IF ! Empty( cBin_Post )
@@ -4348,7 +4356,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
#endif
IF hbmk[ _HBMK_nCOMPR ] != _COMPR_OFF .AND. ! lCreateLib .AND. ! Empty( cBin_Cprs )
IF hbmk[ _HBMK_nCOMPR ] != _COMPR_OFF .AND. ! hbmk[ _HBMK_lCreateLib ] .AND. ! Empty( cBin_Cprs )
/* Executable compression */
@@ -4416,7 +4424,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause )
ENDIF
IF ! lStopAfterHarbour .AND. ! lStopAfterCComp .AND. ;
! lCreateLib .AND. ! lCreateDyn .AND. ;
! hbmk[ _HBMK_lCreateLib ] .AND. ! hbmk[ _HBMK_lCreateDyn ] .AND. ;
nErrorLevel == 0 .AND. ! l_lCLEAN .AND. hbmk[ _HBMK_lRUN ]
cCommand := l_cPROGNAME
#if defined( __PLATFORM__UNIX )
@@ -4563,10 +4571,14 @@ STATIC FUNCTION FindNewerHeaders( hbmk, cFileName, cParentDir, tTimeParent, lInc
LOCAL fhnd
LOCAL nPos
LOCAL tTimeSelf
LOCAL tTimeDependency
LOCAL tmp
LOCAL cNameExtL
LOCAL cExt
LOCAL cHeader
LOCAL cModule
LOCAL cDependency
LOCAL aCommand
STATIC l_aExcl := { "windows.h", "ole2.h", "os2.h" }
@@ -4628,45 +4640,83 @@ STATIC FUNCTION FindNewerHeaders( hbmk, cFileName, cParentDir, tTimeParent, lInc
/* TODO: Add filter based on extension to avoid binary files */
/* NOTE: Beef up this section if you need a more intelligent source
parser. Notice that this code is meant to process both
.prg, .c and .res sources. Please try to keep it simple,
as speed and maintainability is also important. [vszakats] */
IF ! lCMode .AND. hbmk[ _HBMK_nHEAD ] == _HEAD_REAL
IF lIncTry .OR. hbmk[ _HBMK_nHEAD ] == _HEAD_FULL
cFile := MemoRead( cFileName )
ELSE
IF ( fhnd := FOpen( cFileName, FO_READ + FO_SHARED ) ) == F_ERROR
hbmk_OutStd( hb_StrFormat( "debuginc: Calling Harbour compiler to detect dependencies of %1$s", cFileName ) )
aCommand := ArrayAJoin( { { "-q0", "-sm", "-kj" },;
{ iif( hbmk[ _HBMK_lCreateLib ] .OR. hbmk[ _HBMK_lCreateDyn ], "-n1", "-n2" ) },;
{ cFileName },;
iif( hbmk[ _HBMK_lBLDFLGP ], { " " + hb_Version( HB_VERSION_FLAG_PRG ) }, {} ),;
ListToArray( iif( ! Empty( GetEnv( "HB_USER_PRGFLAGS" ) ), " " + GetEnv( "HB_USER_PRGFLAGS" ), "" ) ),;
hbmk[ _HBMK_aOPTPRG ] } )
IF ! ISCHARACTER( tmp := hb_compileBuf( "harbour", aCommand ) )
RETURN .F.
ENDIF
cFile := Space( 16384 )
FRead( fhnd, @cFile, Len( cFile ) )
FClose( fhnd )
ENDIF
cHeader := NIL
nPos := 1
DO WHILE .T.
IF ( tmp := hb_At( '#include "', cFile, nPos ) ) > 0
nPos := tmp + Len( '#include "' )
IF ( tmp := hb_At( '"', cFile, nPos ) ) > 0
cHeader := SubStr( cFile, nPos, tmp - nPos )
/* TODO: Module handling. */
FOR EACH cModule IN hb_ATokens( tmp, Chr( 9 ) )
IF ! Empty( cModule )
FOR EACH cDependency IN hb_ATokens( cModule, " " )
IF cDependency:__enumIndex() > 1 .AND. ; /* Skip own (module) name */
! Empty( cDependency )
IF hbmk[ _HBMK_lDEBUGINC ]
hbmk_OutStd( hb_StrFormat( "debuginc: HEADER (REAL) %1$s", cDependency ) )
ENDIF
IF ! hb_FGetDateTime( cDependency, @tTimeDependency )
RETURN .F.
ENDIF
IF tTimeDependency > tTimeParent
headstate[ _HEADSTATE_lAnyNewer ] := .T.
RETURN .T.
ENDIF
ENDIF
NEXT
ENDIF
NEXT
ELSE
/* NOTE: Beef up this section if you need a more intelligent source
parser. Notice that this code is meant to process both
.prg, .c and .res sources. Please try to keep it simple,
as speed and maintainability is also important. [vszakats] */
IF lIncTry .OR. hbmk[ _HBMK_nHEAD ] == _HEAD_FULL
cFile := MemoRead( cFileName )
ELSE
EXIT
IF ( fhnd := FOpen( cFileName, FO_READ + FO_SHARED ) ) == F_ERROR
RETURN .F.
ENDIF
cFile := Space( 16384 )
FRead( fhnd, @cFile, Len( cFile ) )
FClose( fhnd )
ENDIF
IF cHeader != NIL .AND. ;
FindNewerHeaders( hbmk, cHeader, iif( lCMode, FN_DirGet( cFileName ), cParentDir ), tTimeParent, lIncTry, lCMode, @headstate, nNestingLevel + 1 )
headstate[ _HEADSTATE_lAnyNewer ] := .T.
/* Let it continue if we want to scan for header locations */
IF ! lIncTry
RETURN .T.
cHeader := NIL
nPos := 1
DO WHILE .T.
IF ( tmp := hb_At( '#include "', cFile, nPos ) ) > 0
nPos := tmp + Len( '#include "' )
IF ( tmp := hb_At( '"', cFile, nPos ) ) > 0
cHeader := SubStr( cFile, nPos, tmp - nPos )
ENDIF
ELSE
EXIT
ENDIF
cHeader := NIL
ENDIF
ENDDO
IF cHeader != NIL .AND. ;
FindNewerHeaders( hbmk, cHeader, iif( lCMode, FN_DirGet( cFileName ), cParentDir ), tTimeParent, lIncTry, lCMode, @headstate, nNestingLevel + 1 )
headstate[ _HEADSTATE_lAnyNewer ] := .T.
/* Let it continue if we want to scan for header locations */
IF ! lIncTry
RETURN .T.
ENDIF
cHeader := NIL
ENDIF
ENDDO
ENDIF
RETURN headstate[ _HEADSTATE_lAnyNewer ]
@@ -5714,6 +5764,7 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel )
DO CASE
CASE Lower( cLine ) == "off" ; hbmk[ _HBMK_nHEAD ] := _HEAD_OFF
CASE Lower( cLine ) == "full" ; hbmk[ _HBMK_nHEAD ] := _HEAD_FULL
CASE Lower( cLine ) == "real" ; hbmk[ _HBMK_nHEAD ] := _HEAD_REAL
CASE Lower( cLine ) == "partial" ; hbmk[ _HBMK_nHEAD ] := _HEAD_PARTIAL
ENDCASE
@@ -7139,7 +7190,7 @@ STATIC PROCEDURE ShowHelp( lLong )
{ "-runflag=<f>" , I_( "pass flag to output executable when -run option is used" ) },;
{ "-jobs=<n>" , I_( "start n compilation threads (multiprocess platforms only)" ) },;
{ "-inc" , I_( "enable incremental build mode" ) },;
{ "-[no]head[=<m>]" , I_( "control source header parsing (in incremental build mode)\n<m> can be: full, partial (default), off" ) },;
{ "-[no]head[=<m>]" , I_( "control source header parsing (in incremental build mode)\n<m> can be: real, full, partial (default), off" ) },;
{ "-rebuild" , I_( "rebuild all (in incremental build mode)" ) },;
{ "-clean" , I_( "clean (in incremental build mode)" ) },;
{ "-workdir=<dir>" , hb_StrFormat( I_( "working directory for incremental build mode\n(default: %1$s/plat/comp)" ), _WORKDIR_BASE_ ) },;
@@ -7191,7 +7242,7 @@ STATIC PROCEDURE ShowHelp( lLong )
hb_StrFormat( I_( "%1$s option file in hbmk2 directory is always processed if it exists. On *nix platforms ~/.harbour, /etc/harbour, <base>/etc/harbour, <base>/etc are checked (in that order) before the hbmk2 directory. The file format is the same as .hbc." ), _HBMK_CFG_NAME ),;
hb_StrFormat( I_( "%1$s make script in current directory is always processed if it exists." ), _HBMK_AUTOHBM_NAME ),;
I_( ".hbc config files in current dir are automatically processed." ),;
I_( ".hbc options (they should come in separate lines): libs=[<libname[s]>], hbcs=[<.hbc file[s]>], gt=[gtname], syslibs=[<libname[s]>], prgflags=[Harbour flags], cflags=[C compiler flags], resflags=[resource compiler flags], ldflags=[linker flags], libpaths=[paths], sources=[source files], incpaths=[paths], inctrypaths=[paths], instpaths=[paths], gui|mt|shared|nulrdd|debug|opt|map|implib|strip|run|inc=[yes|no], cpp=[yes|no|def], compr=[yes|no|def|min|max], head=[off|partial|full], skip=[yes|no], echo=<text>\nLines starting with '#' char are ignored" ),;
I_( ".hbc options (they should come in separate lines): libs=[<libname[s]>], hbcs=[<.hbc file[s]>], gt=[gtname], syslibs=[<libname[s]>], prgflags=[Harbour flags], cflags=[C compiler flags], resflags=[resource compiler flags], ldflags=[linker flags], libpaths=[paths], sources=[source files], incpaths=[paths], inctrypaths=[paths], instpaths=[paths], gui|mt|shared|nulrdd|debug|opt|map|implib|strip|run|inc=[yes|no], cpp=[yes|no|def], compr=[yes|no|def|min|max], head=[off|partial|full|real], skip=[yes|no], echo=<text>\nLines starting with '#' char are ignored" ),;
I_( "Platform filters are accepted in each .hbc line and with several options.\nFilter format: {[!][<plat>|<comp>|<keyword>]}. Filters can be combined using '&', '|' operators and grouped by parantheses. Ex.: {win}, {gcc}, {linux|darwin}, {win&!pocc}, {(win|linux)&!watcom}, {unix&mt&gui}, -cflag={win}-DMYDEF, -stop{dos}, -stop{!allwin}, {allpocc|allgcc|allmingw|unix}, {allmsvc}, {x86|x86_64|ia64|arm}, {debug|nodebug|gui|std|mt|st|xhb}" ),;
I_( "Certain .hbc lines (libs=, hbcs=, prgflags=, cflags=, ldflags=, libpaths=, inctrypaths=, instpaths=, echo=) and corresponding command line parameters will accept macros: ${hb_root}, ${hb_dir}, ${hb_name}, ${hb_plat}, ${hb_comp}, ${hb_build}, ${hb_cpu}, ${hb_bin}, ${hb_lib}, ${hb_dyn}, ${hb_inc}, ${<envvar>}. libpaths= also accepts %{hb_name} which translates to the name of the .hbc file under search." ),;
I_( 'Options accepting macros also support command substitution. Enclose command inside ``, and, if the command contains space, also enclose in double quotes. F.e. "-cflag=`wx-config --cflags`", or ldflags={unix&gcc}"`wx-config --libs`".' ),;

View File

@@ -4,8 +4,8 @@
#: hbmk2.prg:7106
#, c-format
msgid ".hbc options (they should come in separate lines): libs=[<libname[s]>], hbcs=[<.hbc file[s]>], gt=[gtname], syslibs=[<libname[s]>], prgflags=[Harbour flags], cflags=[C compiler flags], resflags=[resource compiler flags], ldflags=[linker flags], libpaths=[paths], sources=[source files], incpaths=[paths], inctrypaths=[paths], instpaths=[paths], gui|mt|shared|nulrdd|debug|opt|map|implib|strip|run|inc=[yes|no], cpp=[yes|no|def], compr=[yes|no|def|min|max], head=[off|partial|full], skip=[yes|no], echo=<text>\\nLines starting with '#' char are ignored"
msgstr "As op‡äes em um arquivo .hbc devem estar em linhas separadas e sÆo: libs=[<libname[s]>], hbcs=[<.hbc file[s]>], gt=[gtname], syslibs=[<libname[s]>], prgflags=[flags do Harbour], cflags=[flags do compilador C], resflags=[flags do compilador de recursos], ldflags=[flags do linkeditor], libpaths=[paths], sources=[m¢dulos fontes], incpaths=[paths], inctrypaths=[paths], instpaths=[paths], gui|mt|shared|nulrdd|debug|opt|map|implib|strip|run|inc=[yes|no], cpp=[yes|no|def], compr=[yes|no|def|min|max], head=[off|partial|full], skip=[yes|no], echo=<text>\\nLinhas iniciadas com '#' sÆo interpretadas como coment rios e serÆo ignoradas"
msgid ".hbc options (they should come in separate lines): libs=[<libname[s]>], hbcs=[<.hbc file[s]>], gt=[gtname], syslibs=[<libname[s]>], prgflags=[Harbour flags], cflags=[C compiler flags], resflags=[resource compiler flags], ldflags=[linker flags], libpaths=[paths], sources=[source files], incpaths=[paths], inctrypaths=[paths], instpaths=[paths], gui|mt|shared|nulrdd|debug|opt|map|implib|strip|run|inc=[yes|no], cpp=[yes|no|def], compr=[yes|no|def|min|max], head=[off|partial|full|real], skip=[yes|no], echo=<text>\\nLines starting with '#' char are ignored"
msgstr "As op‡äes em um arquivo .hbc devem estar em linhas separadas e sÆo: libs=[<libname[s]>], hbcs=[<.hbc file[s]>], gt=[gtname], syslibs=[<libname[s]>], prgflags=[flags do Harbour], cflags=[flags do compilador C], resflags=[flags do compilador de recursos], ldflags=[flags do linkeditor], libpaths=[paths], sources=[m¢dulos fontes], incpaths=[paths], inctrypaths=[paths], instpaths=[paths], gui|mt|shared|nulrdd|debug|opt|map|implib|strip|run|inc=[yes|no], cpp=[yes|no|def], compr=[yes|no|def|min|max], head=[off|partial|full|real], skip=[yes|no], echo=<text>\\nLinhas iniciadas com '#' sÆo interpretadas como coment rios e serÆo ignoradas"
#: hbmk2.prg:799
#, c-format
@@ -234,8 +234,8 @@ msgstr "Ajuda detalhada"
#: hbmk2.prg:7088
#, c-format
msgid "control source header parsing (in incremental build mode)\\n<m> can be: full, partial (default), off"
msgstr "controla a an lise de cabe‡alhos (no modo de compila‡Æo incremental)\\n<m> pode ser: full, partial (padrÆo), off"
msgid "control source header parsing (in incremental build mode)\\n<m> can be: real, full, partial (default), off"
msgstr "controla a an lise de cabe‡alhos (no modo de compila‡Æo incremental)\\n<m> pode ser: real, full, partial (padrÆo), off"
#: hbmk2.prg:3299 hbmk2.prg:3333
#, c-format