diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 16aab00c88..6951db24b6 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -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 diff --git a/harbour/utils/hbmk2/hbmk2.hu_HU.po b/harbour/utils/hbmk2/hbmk2.hu_HU.po index 43cb0b35d1..761aee1cbf 100644 --- a/harbour/utils/hbmk2/hbmk2.hu_HU.po +++ b/harbour/utils/hbmk2/hbmk2.hu_HU.po @@ -4,8 +4,8 @@ #: hbmk2.prg:7106 #, c-format -msgid ".hbc options (they should come in separate lines): libs=[], hbcs=[<.hbc file[s]>], gt=[gtname], syslibs=[], 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=\\nLines starting with '#' char are ignored" -msgstr ".hbc opciók (külön sorokba írandók): libs=[], hbcs=[<.hbc nevek>], gt=[gtnév], syslibs=[], 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=\\n'#' karakterrel kezdődő sorokat figyelmen kívül hagyja" +msgid ".hbc options (they should come in separate lines): libs=[], hbcs=[<.hbc file[s]>], gt=[gtname], syslibs=[], 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=\\nLines starting with '#' char are ignored" +msgstr ".hbc opciók (külön sorokba írandók): libs=[], hbcs=[<.hbc nevek>], gt=[gtnév], syslibs=[], 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=\\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 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 lehet: full, partial (default), off" +msgid "control source header parsing (in incremental build mode)\\n 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 lehet: real, full, partial (default), off" #: hbmk2.prg:3299 hbmk2.prg:3333 #, c-format diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index f1e5f30f06..16191b4e1e 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -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=" , I_( "pass flag to output executable when -run option is used" ) },; { "-jobs=" , I_( "start n compilation threads (multiprocess platforms only)" ) },; { "-inc" , I_( "enable incremental build mode" ) },; - { "-[no]head[=]" , I_( "control source header parsing (in incremental build mode)\n can be: full, partial (default), off" ) },; + { "-[no]head[=]" , I_( "control source header parsing (in incremental build mode)\n can be: real, full, partial (default), off" ) },; { "-rebuild" , I_( "rebuild all (in incremental build mode)" ) },; { "-clean" , I_( "clean (in incremental build mode)" ) },; { "-workdir=" , 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, /etc/harbour, /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=[], hbcs=[<.hbc file[s]>], gt=[gtname], syslibs=[], 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=\nLines starting with '#' char are ignored" ),; + I_( ".hbc options (they should come in separate lines): libs=[], hbcs=[<.hbc file[s]>], gt=[gtname], syslibs=[], 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=\nLines starting with '#' char are ignored" ),; I_( "Platform filters are accepted in each .hbc line and with several options.\nFilter format: {[!][||]}. 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}, ${}. 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`".' ),; diff --git a/harbour/utils/hbmk2/hbmk2.pt_BR.po b/harbour/utils/hbmk2/hbmk2.pt_BR.po index d86158e644..c7d9bdd44b 100644 --- a/harbour/utils/hbmk2/hbmk2.pt_BR.po +++ b/harbour/utils/hbmk2/hbmk2.pt_BR.po @@ -4,8 +4,8 @@ #: hbmk2.prg:7106 #, c-format -msgid ".hbc options (they should come in separate lines): libs=[], hbcs=[<.hbc file[s]>], gt=[gtname], syslibs=[], 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=\\nLines starting with '#' char are ignored" -msgstr "As op‡äes em um arquivo .hbc devem estar em linhas separadas e sĆo: libs=[], hbcs=[<.hbc file[s]>], gt=[gtname], syslibs=[], 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=\\nLinhas iniciadas com '#' sĆo interpretadas como coment rios e serĆo ignoradas" +msgid ".hbc options (they should come in separate lines): libs=[], hbcs=[<.hbc file[s]>], gt=[gtname], syslibs=[], 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=\\nLines starting with '#' char are ignored" +msgstr "As op‡äes em um arquivo .hbc devem estar em linhas separadas e sĆo: libs=[], hbcs=[<.hbc file[s]>], gt=[gtname], syslibs=[], 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=\\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 can be: full, partial (default), off" -msgstr "controla a an lise de cabe‡alhos (no modo de compila‡Ćo incremental)\\n pode ser: full, partial (padrĆo), off" +msgid "control source header parsing (in incremental build mode)\\n can be: real, full, partial (default), off" +msgstr "controla a an lise de cabe‡alhos (no modo de compila‡Ćo incremental)\\n pode ser: real, full, partial (padrĆo), off" #: hbmk2.prg:3299 hbmk2.prg:3333 #, c-format