2010-07-21 20:37 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)

* src/rtl/stuff.c
    ! Fixed GPF in STUFF() when HB_SIZE is signed value.
      (HB_SIZE_SIGNED mode)

  * contrib/make.hbs
    % Normalized some dirs to give cleaner and shorter output.
    + Shows HB_BUILD_CONTRIBS value.
    ! Fixed to only generate doc once for multi-hbp packages (HBQT f.e.).
    % Internal cleanups.

  * contrib/hbqt/hbmk2_plugin_qt.hbs
    + Honor HB_WITH_QT also on OS/2.
    * Internal. Feedback is still not perfect.

  * utils/hbmk2/hbmk2.prg
    + Normalize implib source dirs, -o dirs, -workdir dirs.
    + Implibs automatically generated for dependencies are now put
      in the 'implib' install target category, so they can be controlled
      separately.

  * contrib/hbpost.hbm
    ! Fixed to only install new automatic implibs when HB_BUILD_IMPLIB=yes.
    ; TODO: Rename this setting to HB_INSTALL_IMPLIB (or some better
            name). Now implib are always made, this setting only controls
            whether to install them (f.e. we don't want to install them
            when creating package for distribution).
    - Deleted stuff belonging to stdalone -hbimplib targets. This
      method is deprecated inside contrib area.

  * config/global.mk
    - Do not show HB_CONTRIBLIBS value anymore.
This commit is contained in:
Viktor Szakats
2010-07-21 18:40:16 +00:00
parent 47228eeb7a
commit dde5e86839
7 changed files with 195 additions and 156 deletions

View File

@@ -16,6 +16,39 @@
The license applies to all entries newer than 2009-04-28.
*/
2010-07-21 20:37 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* src/rtl/stuff.c
! Fixed GPF in STUFF() when HB_SIZE is signed value.
(HB_SIZE_SIGNED mode)
* contrib/make.hbs
% Normalized some dirs to give cleaner and shorter output.
+ Shows HB_BUILD_CONTRIBS value.
! Fixed to only generate doc once for multi-hbp packages (HBQT f.e.).
% Internal cleanups.
* contrib/hbqt/hbmk2_plugin_qt.hbs
+ Honor HB_WITH_QT also on OS/2.
* Internal. Feedback is still not perfect.
* utils/hbmk2/hbmk2.prg
+ Normalize implib source dirs, -o dirs, -workdir dirs.
+ Implibs automatically generated for dependencies are now put
in the 'implib' install target category, so they can be controlled
separately.
* contrib/hbpost.hbm
! Fixed to only install new automatic implibs when HB_BUILD_IMPLIB=yes.
; TODO: Rename this setting to HB_INSTALL_IMPLIB (or some better
name). Now implib are always made, this setting only controls
whether to install them (f.e. we don't want to install them
when creating package for distribution).
- Deleted stuff belonging to stdalone -hbimplib targets. This
method is deprecated inside contrib area.
* config/global.mk
- Do not show HB_CONTRIBLIBS value anymore.
2010-07-21 16:14 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* contrib/hbblat/hbblat.hbp
! Added missed flag for bcc. (was there in .hbi)

View File

@@ -302,12 +302,6 @@ ifeq ($(HB_INIT_DONE),)
ifneq ($(HB_BUILD_PARTS),)
$(info ! HB_BUILD_PARTS: $(HB_BUILD_PARTS))
endif
ifneq ($(HB_CONTRIBLIBS),)
$(info ! HB_CONTRIBLIBS: $(HB_CONTRIBLIBS))
endif
ifneq ($(HB_CONTRIB_ADDONS),)
$(info ! HB_CONTRIB_ADDONS: $(HB_CONTRIB_ADDONS))
endif
ifneq ($(HB_EXTERNALLIBS),)
$(info ! HB_EXTERNALLIBS: $(HB_EXTERNALLIBS))
endif

View File

@@ -5,7 +5,7 @@
# These are mandatory in Harbour SVN, they will always
# override project options.
"{HB_BUILD_PARTS='lib'&!(hbimplib|hblib)}-stop=! Skipped because HB_BUILD_PARTS=lib"
"{HB_BUILD_PARTS='lib'&!hblib}-stop=! Skipped because HB_BUILD_PARTS=lib"
-prgflag=-w3
-prgflag=-es2
@@ -36,13 +36,14 @@
{(hbdyn|hbexe)&HB_BUILD_SHARED='yes'}-shared
{hblib|hbimplib}-o../lib/${hb_plat}/${hb_comp}${hb_build}/
{hblib}-o../lib/${hb_plat}/${hb_comp}${hb_build}/
{hbexe|hbdyn}-o../bin/${hb_plat}/${hb_comp}${hb_build}/
{hblib|hbimplib}-workdir=../lib/${hb_plat}/${hb_comp}${hb_build}/${hb_work}/${hb_outputname}${hb_workdynsub}
{hblib}-workdir=../lib/${hb_plat}/${hb_comp}${hb_build}/${hb_work}/${hb_outputname}${hb_workdynsub}
{hbexe|hbdyn}-workdir=../bin/${hb_plat}/${hb_comp}${hb_build}/${hb_work}/${hb_outputname}${hb_workdynsub}
{_HB_BUILD_INSTALL&(hblib|(hbimplib&HB_BUILD_IMPLIB='yes'))}-instpath=${_HB_LIB_INSTALL}/
{_HB_BUILD_INSTALL&hblib}-instpath=${_HB_LIB_INSTALL}/
{_HB_BUILD_INSTALL&hbexe}-instpath=${_HB_BIN_INSTALL}/
{_HB_BUILD_INSTALL&hbdyn}-instpath=${_HB_DYN_INSTALL}/
{_HB_BUILD_INSTALL&hblib}-instpath=inc:${_HB_INC_INSTALL}/
{_HB_BUILD_INSTALL&HB_BUILD_IMPLIB='yes'}-instpath=implib:${_HB_LIB_INSTALL}/

View File

@@ -135,122 +135,126 @@ FUNCTION hbmk2_plugin_qt( hbmk2 )
CASE "pre_prg"
IF ! hbmk2[ "lCLEAN" ] .AND. ;
! Empty( hbmk2[ "vars" ][ "aQRC_Src" ] ) .AND. ;
! Empty( hbmk2[ "vars" ][ "cRCC_BIN" ] )
! Empty( hbmk2[ "vars" ][ "aQRC_Src" ] )
/* Execute 'rcc' commands on input files */
IF ! Empty( hbmk2[ "vars" ][ "cRCC_BIN" ] )
FOR EACH cSrc, cDst, cPRG IN hbmk2[ "vars" ][ "aQRC_Src" ], hbmk2[ "vars" ][ "aQRC_Dst" ], hbmk2[ "vars" ][ "aQRC_PRG" ]
/* Execute 'rcc' commands on input files */
IF hbmk2[ "lINC" ] .AND. ! hbmk2[ "lREBUILD" ]
lBuildIt := ! hb_FGetDateTime( cDst, @tDst ) .OR. ;
! hb_FGetDateTime( cSrc, @tSrc ) .OR. ;
tSrc > tDst
ELSE
lBuildIt := .T.
ENDIF
FOR EACH cSrc, cDst, cPRG IN hbmk2[ "vars" ][ "aQRC_Src" ], hbmk2[ "vars" ][ "aQRC_Dst" ], hbmk2[ "vars" ][ "aQRC_PRG" ]
IF lBuildIt
cCommand := hbmk2[ "vars" ][ "cRCC_BIN" ] +;
" -binary" +;
" " + hbmk2_FNameEscape( hbmk2_PathSepToTarget( hbmk2, cSrc ), hbmk2[ "nCmd_Esc" ], hbmk2[ "nCmd_FNF" ] ) +;
" -o " + hbmk2_FNameEscape( hbmk2_PathSepToTarget( hbmk2, cDst ), hbmk2[ "nCmd_Esc" ], hbmk2[ "nCmd_FNF" ] )
IF hbmk2[ "lTRACE" ]
IF ! hbmk2[ "lQUIET" ]
hbmk2_OutStd( hbmk2, I_( "'rcc' command:" ) )
ENDIF
hbmk2_OutStdRaw( cCommand )
IF hbmk2[ "lINC" ] .AND. ! hbmk2[ "lREBUILD" ]
lBuildIt := ! hb_FGetDateTime( cDst, @tDst ) .OR. ;
! hb_FGetDateTime( cSrc, @tSrc ) .OR. ;
tSrc > tDst
ELSE
lBuildIt := .T.
ENDIF
IF ! hbmk2[ "lDONTEXEC" ]
IF ( nError := hb_processRun( cCommand ) ) != 0
hbmk2_OutErr( hbmk2, hb_StrFormat( I_( "Error: Running 'rcc' executable. %1$s" ), hb_ntos( nError ) ) )
IF ! hbmk2[ "lQUIET" ]
hbmk2_OutErrRaw( cCommand )
ENDIF
IF ! hbmk2[ "lIGNOREERROR" ]
cRetVal := "error"
EXIT
ENDIF
ELSE
/* Create little .prg stub which includes the binary */
cTmp := "/* WARNING: Automatically generated source file. DO NOT EDIT! */" + hb_eol() +;
hb_eol() +;
"#pragma -km+" + hb_eol() +;
hb_eol() +;
"FUNCTION hbqtres_" + hbmk2_FNameToSymbol( hbmk2_FNameNameGet( cSrc ) ) + "()" + hb_eol() +;
" #pragma __binarystreaminclude " + Chr( 34 ) + hbmk2_FNameNameExtGet( cDst ) + Chr( 34 ) + "|RETURN %s" + hb_eol()
IF lBuildIt
IF ! hb_MemoWrit( cPRG, cTmp )
hbmk2_OutErr( hbmk2, hb_StrFormat( "Error: Cannot create file: %1$s", cPRG ) )
cCommand := hbmk2[ "vars" ][ "cRCC_BIN" ] +;
" -binary" +;
" " + hbmk2_FNameEscape( hbmk2_PathSepToTarget( hbmk2, cSrc ), hbmk2[ "nCmd_Esc" ], hbmk2[ "nCmd_FNF" ] ) +;
" -o " + hbmk2_FNameEscape( hbmk2_PathSepToTarget( hbmk2, cDst ), hbmk2[ "nCmd_Esc" ], hbmk2[ "nCmd_FNF" ] )
IF hbmk2[ "lTRACE" ]
IF ! hbmk2[ "lQUIET" ]
hbmk2_OutStd( hbmk2, I_( "'rcc' command:" ) )
ENDIF
hbmk2_OutStdRaw( cCommand )
ENDIF
IF ! hbmk2[ "lDONTEXEC" ]
IF ( nError := hb_processRun( cCommand ) ) != 0
hbmk2_OutErr( hbmk2, hb_StrFormat( I_( "Error: Running 'rcc' executable. %1$s" ), hb_ntos( nError ) ) )
IF ! hbmk2[ "lQUIET" ]
hbmk2_OutErrRaw( cCommand )
ENDIF
IF ! hbmk2[ "lIGNOREERROR" ]
cRetVal := "error"
EXIT
ENDIF
ELSE
/* Create little .prg stub which includes the binary */
cTmp := "/* WARNING: Automatically generated source file. DO NOT EDIT! */" + hb_eol() +;
hb_eol() +;
"#pragma -km+" + hb_eol() +;
hb_eol() +;
"FUNCTION hbqtres_" + hbmk2_FNameToSymbol( hbmk2_FNameNameGet( cSrc ) ) + "()" + hb_eol() +;
" #pragma __binarystreaminclude " + Chr( 34 ) + hbmk2_FNameNameExtGet( cDst ) + Chr( 34 ) + "|RETURN %s" + hb_eol()
IF ! hb_MemoWrit( cPRG, cTmp )
hbmk2_OutErr( hbmk2, hb_StrFormat( "Error: Cannot create file: %1$s", cPRG ) )
IF ! hbmk2[ "lIGNOREERROR" ]
cRetVal := "error"
EXIT
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
NEXT
NEXT
ENDIF
ENDIF
IF ! hbmk2[ "lCLEAN" ] .AND. ;
! Empty( hbmk2[ "vars" ][ "aUIC_Src" ] ) .AND. ;
! Empty( hbmk2[ "vars" ][ "cUIC_BIN" ] )
! Empty( hbmk2[ "vars" ][ "aUIC_Src" ] )
/* Execute 'uic' commands on input files */
IF ! Empty( hbmk2[ "vars" ][ "cUIC_BIN" ] )
FOR EACH cSrc, cDst IN hbmk2[ "vars" ][ "aUIC_Src" ], hbmk2[ "vars" ][ "aUIC_Dst" ]
/* Execute 'uic' commands on input files */
IF hbmk2[ "lINC" ] .AND. ! hbmk2[ "lREBUILD" ]
lBuildIt := ! hb_FGetDateTime( cDst, @tDst ) .OR. ;
! hb_FGetDateTime( cSrc, @tSrc ) .OR. ;
tSrc > tDst
ELSE
lBuildIt := .T.
ENDIF
FOR EACH cSrc, cDst IN hbmk2[ "vars" ][ "aUIC_Src" ], hbmk2[ "vars" ][ "aUIC_Dst" ]
IF lBuildIt
FClose( hb_FTempCreateEx( @cTmp ) )
cCommand := hbmk2[ "vars" ][ "cUIC_BIN" ] +;
" " + hbmk2_FNameEscape( hbmk2_PathSepToTarget( hbmk2, cSrc ), hbmk2[ "nCmd_Esc" ], hbmk2[ "nCmd_FNF" ] ) +;
" -o " + hbmk2_FNameEscape( cTmp, hbmk2[ "nCmd_Esc" ], hbmk2[ "nCmd_FNF" ] )
IF hbmk2[ "lTRACE" ]
IF ! hbmk2[ "lQUIET" ]
hbmk2_OutStd( hbmk2, I_( "'uic' command:" ) )
ENDIF
hbmk2_OutStdRaw( cCommand )
IF hbmk2[ "lINC" ] .AND. ! hbmk2[ "lREBUILD" ]
lBuildIt := ! hb_FGetDateTime( cDst, @tDst ) .OR. ;
! hb_FGetDateTime( cSrc, @tSrc ) .OR. ;
tSrc > tDst
ELSE
lBuildIt := .T.
ENDIF
IF ! hbmk2[ "lDONTEXEC" ]
IF ( nError := hb_processRun( cCommand ) ) != 0
hbmk2_OutErr( hbmk2, hb_StrFormat( I_( "Error: Running 'uic' executable. %1$s" ), hb_ntos( nError ) ) )
IF lBuildIt
FClose( hb_FTempCreateEx( @cTmp ) )
cCommand := hbmk2[ "vars" ][ "cUIC_BIN" ] +;
" " + hbmk2_FNameEscape( hbmk2_PathSepToTarget( hbmk2, cSrc ), hbmk2[ "nCmd_Esc" ], hbmk2[ "nCmd_FNF" ] ) +;
" -o " + hbmk2_FNameEscape( cTmp, hbmk2[ "nCmd_Esc" ], hbmk2[ "nCmd_FNF" ] )
IF hbmk2[ "lTRACE" ]
IF ! hbmk2[ "lQUIET" ]
hbmk2_OutErrRaw( cCommand )
hbmk2_OutStd( hbmk2, I_( "'uic' command:" ) )
ENDIF
IF ! hbmk2[ "lIGNOREERROR" ]
FErase( cTmp )
cRetVal := "error"
EXIT
ENDIF
ELSE
IF ! uic_to_prg( hbmk2, cTmp, cDst, hbmk2_FNameToSymbol( hbmk2_FNameNameGet( cSrc ) ) )
hbmk2_OutStdRaw( cCommand )
ENDIF
IF ! hbmk2[ "lDONTEXEC" ]
IF ( nError := hb_processRun( cCommand ) ) != 0
hbmk2_OutErr( hbmk2, hb_StrFormat( I_( "Error: Running 'uic' executable. %1$s" ), hb_ntos( nError ) ) )
IF ! hbmk2[ "lQUIET" ]
hbmk2_OutErrRaw( cCommand )
ENDIF
IF ! hbmk2[ "lIGNOREERROR" ]
FErase( cTmp )
cRetVal := "error"
EXIT
ENDIF
ELSE
IF ! uic_to_prg( hbmk2, cTmp, cDst, hbmk2_FNameToSymbol( hbmk2_FNameNameGet( cSrc ) ) )
IF ! hbmk2[ "lIGNOREERROR" ]
FErase( cTmp )
cRetVal := "error"
EXIT
ENDIF
ENDIF
ENDIF
ENDIF
FErase( cTmp )
ENDIF
FErase( cTmp )
ENDIF
NEXT
NEXT
ENDIF
ENDIF
EXIT
@@ -258,46 +262,48 @@ FUNCTION hbmk2_plugin_qt( hbmk2 )
CASE "pre_c"
IF ! hbmk2[ "lCLEAN" ] .AND. ;
! Empty( hbmk2[ "vars" ][ "aMOC_Src" ] ) .AND. ;
! Empty( hbmk2[ "vars" ][ "cMOC_BIN" ] )
! Empty( hbmk2[ "vars" ][ "aMOC_Src" ] )
/* Execute 'moc' commands on input files */
IF ! Empty( hbmk2[ "vars" ][ "cMOC_BIN" ] )
FOR EACH cSrc, cDst IN hbmk2[ "vars" ][ "aMOC_Src" ], hbmk2[ "vars" ][ "aMOC_Dst" ]
/* Execute 'moc' commands on input files */
IF hbmk2[ "lINC" ] .AND. ! hbmk2[ "lREBUILD" ]
lBuildIt := ! hb_FGetDateTime( cDst, @tDst ) .OR. ;
! hb_FGetDateTime( cSrc, @tSrc ) .OR. ;
tSrc > tDst
ELSE
lBuildIt := .T.
ENDIF
FOR EACH cSrc, cDst IN hbmk2[ "vars" ][ "aMOC_Src" ], hbmk2[ "vars" ][ "aMOC_Dst" ]
IF lBuildIt
cCommand := hbmk2[ "vars" ][ "cMOC_BIN" ] +;
" " + hbmk2_FNameEscape( hbmk2_PathSepToTarget( hbmk2, cSrc ), hbmk2[ "nCmd_Esc" ], hbmk2[ "nCmd_FNF" ] ) +;
" -o " + hbmk2_FNameEscape( hbmk2_PathSepToTarget( hbmk2, cDst ), hbmk2[ "nCmd_Esc" ], hbmk2[ "nCmd_FNF" ] )
IF hbmk2[ "lTRACE" ]
IF ! hbmk2[ "lQUIET" ]
hbmk2_OutStd( hbmk2, I_( "'moc' command:" ) )
ENDIF
hbmk2_OutStdRaw( cCommand )
IF hbmk2[ "lINC" ] .AND. ! hbmk2[ "lREBUILD" ]
lBuildIt := ! hb_FGetDateTime( cDst, @tDst ) .OR. ;
! hb_FGetDateTime( cSrc, @tSrc ) .OR. ;
tSrc > tDst
ELSE
lBuildIt := .T.
ENDIF
IF ! hbmk2[ "lDONTEXEC" ] .AND. ( nError := hb_processRun( cCommand ) ) != 0
hbmk2_OutErr( hbmk2, hb_StrFormat( I_( "Error: Running 'moc' executable. %1$s" ), hb_ntos( nError ) ) )
IF ! hbmk2[ "lQUIET" ]
hbmk2_OutErrRaw( cCommand )
IF lBuildIt
cCommand := hbmk2[ "vars" ][ "cMOC_BIN" ] +;
" " + hbmk2_FNameEscape( hbmk2_PathSepToTarget( hbmk2, cSrc ), hbmk2[ "nCmd_Esc" ], hbmk2[ "nCmd_FNF" ] ) +;
" -o " + hbmk2_FNameEscape( hbmk2_PathSepToTarget( hbmk2, cDst ), hbmk2[ "nCmd_Esc" ], hbmk2[ "nCmd_FNF" ] )
IF hbmk2[ "lTRACE" ]
IF ! hbmk2[ "lQUIET" ]
hbmk2_OutStd( hbmk2, I_( "'moc' command:" ) )
ENDIF
hbmk2_OutStdRaw( cCommand )
ENDIF
IF ! hbmk2[ "lIGNOREERROR" ]
cRetVal := "error"
EXIT
IF ! hbmk2[ "lDONTEXEC" ] .AND. ( nError := hb_processRun( cCommand ) ) != 0
hbmk2_OutErr( hbmk2, hb_StrFormat( I_( "Error: Running 'moc' executable. %1$s" ), hb_ntos( nError ) ) )
IF ! hbmk2[ "lQUIET" ]
hbmk2_OutErrRaw( cCommand )
ENDIF
IF ! hbmk2[ "lIGNOREERROR" ]
cRetVal := "error"
EXIT
ENDIF
ENDIF
ENDIF
ENDIF
NEXT
NEXT
ENDIF
ENDIF
EXIT
@@ -334,7 +340,7 @@ STATIC FUNCTION qt_tool_detect( hbmk2, cName, cEnvQT, cEnvHB )
! hb_FileExists( cBIN := GetEnv( "HB_QTPATH" ) + cName )
cBIN := ""
IF hbmk2[ "cPLAT" ] == "win"
IF hbmk2[ "cPLAT" ] $ "win|os2"
hb_AIns( aEnvList, 1, "HB_WITH_QT", .T. )
@@ -342,7 +348,7 @@ STATIC FUNCTION qt_tool_detect( hbmk2, cName, cEnvQT, cEnvHB )
IF GetEnv( "HB_WITH_QT" ) == "no"
/* Return silently. It shall fail at dependency detection inside hbmk2 */
RETURN ""
RETURN NIL
ELSE
IF ! hb_FileExists( cBIN := hbmk2_PathNormalize( GetEnv( "HB_WITH_QT" ) + "\..\bin\" + cName + ".exe" ) )
hbmk2_OutErr( hbmk2, hb_StrFormat( "Warning: HB_WITH_QT points to incomplete QT installation. '%1$s' executable not found.", cName ) )

View File

@@ -179,7 +179,6 @@ PROCEDURE Standalone( ... )
LOCAL cBinDir
LOCAL hProject
LOCAL cProject
LOCAL cDir
LOCAL cOptions
@@ -258,7 +257,7 @@ PROCEDURE Standalone( ... )
aPairList := {}
FOR EACH hProject IN s_hPackageList[ "." ]
call_hbmk2_hbinfo( cBinDir, s_cBase + "." + "/" + hProject[ "cFileName" ], hProject )
call_hbmk2_hbinfo( cBinDir, s_cBase + hProject[ "cFileName" ], hProject )
DeptLinesToDeptPairList( aPairList, ".", hProject[ "aDept" ] )
NEXT
@@ -270,8 +269,9 @@ PROCEDURE Standalone( ... )
IF cDir == "." .AND. hProject[ "cType" ] $ "hbhrb|hbppo"
LOOP
ENDIF
cProject := s_cBase + iif( cDir == ".", "", s_cHome ) + cDir + "/" + hProject[ "cFileName" ]
call_hbmk2( cBinDir, cProject, iif( cDir == ".", cOptions + cOptionsUser, "" ), "" )
call_hbmk2( cBinDir,;
s_cBase + iif( cDir == ".", "", s_cHome + cDir + "/" ) + hProject[ "cFileName" ],;
iif( cDir == ".", cOptions + cOptionsUser, "" ), "" )
NEXT
NEXT
ENDIF
@@ -333,6 +333,10 @@ PROCEDURE GNUMake( ... )
cFilter := GetEnv( "HB_CONTRIBLIBS" )
ENDIF
IF ! Empty( cFilter )
OutStd( "! HB_BUILD_CONTRIBS: " + cFilter + hb_eol() )
ENDIF
IF cFilter == "no"
ErrorLevel( 0 )
RETURN
@@ -446,19 +450,20 @@ PROCEDURE GNUMake( ... )
OutStd( hb_StrFormat( "! Contribs %1$s...", hActions[ nAction ] ) + hb_eol() )
FOR EACH cDir IN aSortedList DESCEND
FOR EACH hProject IN s_hPackageList[ cDir ]
cProject := s_cBase + cDir + "/" + hProject[ "cFileName" ]
IF Empty( aFilter ) .OR. ;
iif( lFilterNegative,;
AScan( aFilter, {| tmp | tmp == cDir } ) == 0,;
AScan( aFilter, {| tmp | tmp == cDir } ) > 0 )
IF Empty( aFilter ) .OR. ;
iif( lFilterNegative,;
AScan( aFilter, {| tmp | tmp == cDir } ) == 0,;
AScan( aFilter, {| tmp | tmp == cDir } ) > 0 )
FOR EACH hProject IN s_hPackageList[ cDir ]
IF hProject[ "cType" ] $ "hbhrb|hbppo"
LOOP
ENDIF
cProject := s_cBase + cDir + "/" + hProject[ "cFileName" ]
call_hbmk2( cBinDir, cProject, cOptions, "" )
/* Highly experimental */
@@ -468,16 +473,16 @@ PROCEDURE GNUMake( ... )
call_hbmk2( cBinDir, cProject, cOptions, " -hbdyn -nohblib- -implib " + FNameExtSet( cProject, ".hbc" ) )
ENDIF
NEXT
/* Compile documentation */
IF nAction == _ACT_INC_INST .OR. ;
nAction == _ACT_INC_REBUILD_INST
mk_hbd( PathSepToSelf( cDir ) )
ENDIF
ELSE
/* OutStd( hb_StrFormat( "! project '%1$s' skipped", cProject ) + hb_eol() ) */
/* Compile documentation */
IF nAction == _ACT_INC_INST .OR. ;
nAction == _ACT_INC_REBUILD_INST
mk_hbd( PathSepToSelf( cDir ) )
ENDIF
NEXT
ELSE
/* OutStd( hb_StrFormat( "! package '%1$s' skipped due to custom filter", cDir ) + hb_eol() ) */
ENDIF
NEXT
OutStd( hb_eol() )

View File

@@ -68,10 +68,10 @@ HB_FUNC( STUFF )
if( nPos > 0 )
nPos--;
if( nPos > nText )
if( nPos < 0 || nPos > nText )
nPos = nText;
if( nDel > nText - nPos )
if( nDel < 0 || nDel > nText - nPos )
nDel = nText - nPos;
if( ( nTotalLen = nText + nInsert - nDel ) > 0 )

View File

@@ -2054,16 +2054,16 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause )
hb_FNameSplit( tmp, @cDir, @cName, @cExt )
DO CASE
CASE Empty( cDir )
tmp := PathMakeAbsolute( tmp, aParam[ _PAR_cFileName ] )
tmp := PathNormalize( PathMakeAbsolute( tmp, aParam[ _PAR_cFileName ] ) )
hb_FNameSplit( tmp, @cDir, @cName, @cExt )
IF hbmk[ _HBMK_cPROGDIR ] == NIL
hbmk[ _HBMK_cPROGDIR ] := cDir
ENDIF
hbmk[ _HBMK_cPROGNAME ] := FNameNameExtGet( tmp )
CASE ! Empty( cDir ) .AND. Empty( cName ) .AND. Empty( cExt )
hbmk[ _HBMK_cPROGDIR ] := PathMakeAbsolute( cDir, aParam[ _PAR_cFileName ] )
hbmk[ _HBMK_cPROGDIR ] := PathNormalize( PathMakeAbsolute( cDir, aParam[ _PAR_cFileName ] ) )
OTHERWISE /* ! Empty( cDir ) .AND. !( Empty( cName ) .AND. Empty( cExt ) ) */
hbmk[ _HBMK_cPROGDIR ] := PathMakeAbsolute( cDir, aParam[ _PAR_cFileName ] )
hbmk[ _HBMK_cPROGDIR ] := PathNormalize( PathMakeAbsolute( cDir, aParam[ _PAR_cFileName ] ) )
hbmk[ _HBMK_cPROGNAME ] := FNameNameExtGet( tmp )
ENDCASE
ENDIF
@@ -2224,7 +2224,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause )
CASE Left( cParamL, Len( "-workdir=" ) ) == "-workdir="
hbmk[ _HBMK_cWorkDir ] := PathMakeAbsolute( PathSepToSelf( MacroProc( hbmk, SubStr( cParam, Len( "-workdir=" ) + 1 ), aParam[ _PAR_cFileName ] ) ), aParam[ _PAR_cFileName ] )
hbmk[ _HBMK_cWorkDir ] := PathNormalize( PathMakeAbsolute( PathSepToSelf( MacroProc( hbmk, SubStr( cParam, Len( "-workdir=" ) + 1 ), aParam[ _PAR_cFileName ] ) ), aParam[ _PAR_cFileName ] ) )
CASE Left( cParamL, Len( "-vcshead=" ) ) == "-vcshead="
@@ -4256,7 +4256,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause )
/* ; */
IF ! hbmk[ _HBMK_lStopAfterInit ] .AND. hbmk[ _HBMK_lCreateImpLib ] .AND. ! lDumpInfo
DoIMPLIB( hbmk, bBlk_ImpLib, cLibLibPrefix, cLibLibExt, hbmk[ _HBMK_aIMPLIBSRC ], hbmk[ _HBMK_cPROGNAME ] )
DoIMPLIB( hbmk, bBlk_ImpLib, cLibLibPrefix, cLibLibExt, hbmk[ _HBMK_aIMPLIBSRC ], hbmk[ _HBMK_cPROGNAME ], "" )
hbmk[ _HBMK_lStopAfterInit ] := .T.
ENDIF
@@ -4494,7 +4494,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause )
IF ! hbmk[ _HBMK_lStopAfterInit ] .AND. hbmk[ _HBMK_lDEPIMPLIB ] .AND. ISBLOCK( bBlk_ImpLib )
FOR EACH tmp IN hbmk[ _HBMK_hDEP ]
IF tmp[ _HBMKDEP_lFound ] .AND. ! Empty( tmp[ _HBMKDEP_aIMPLIBSRC ] )
DoIMPLIB( hbmk, bBlk_ImpLib, cLibLibPrefix, cLibLibExt, tmp[ _HBMKDEP_aIMPLIBSRC ], tmp[ _HBMKDEP_cIMPLIBDST ] )
DoIMPLIB( hbmk, bBlk_ImpLib, cLibLibPrefix, cLibLibExt, tmp[ _HBMKDEP_aIMPLIBSRC ], tmp[ _HBMKDEP_cIMPLIBDST ], "implib" )
ENDIF
NEXT
ENDIF
@@ -5905,7 +5905,7 @@ STATIC PROCEDURE vxworks_env_init( hbmk )
RETURN
STATIC PROCEDURE DoIMPLIB( hbmk, bBlk_ImpLib, cLibLibPrefix, cLibLibExt, aIMPLIBSRC, cPROGNAME )
STATIC PROCEDURE DoIMPLIB( hbmk, bBlk_ImpLib, cLibLibPrefix, cLibLibExt, aIMPLIBSRC, cPROGNAME, cInstCat )
LOCAL cMakeImpLibDLL
LOCAL tmp, tmp1
LOCAL nNotFound
@@ -5929,7 +5929,7 @@ STATIC PROCEDURE DoIMPLIB( hbmk, bBlk_ImpLib, cLibLibPrefix, cLibLibExt, aIMPLIB
SWITCH Eval( bBlk_ImpLib, cMakeImpLibDLL, tmp, ArrayToList( hbmk[ _HBMK_aOPTI ] ) )
CASE _HBMK_IMPLIB_OK
hbmk_OutStd( hbmk, hb_StrFormat( I_( "Created import library: %1$s <= %2$s" ), tmp, cMakeImpLibDLL ) )
AAddNewINST( hbmk[ _HBMK_aINSTFILE ], { "", tmp }, .T. )
AAddNewINST( hbmk[ _HBMK_aINSTFILE ], { cInstCat, tmp }, .T. )
EXIT
CASE _HBMK_IMPLIB_FAILED
hbmk_OutErr( hbmk, hb_StrFormat( I_( "Error: Failed creating import library %1$s from %2$s." ), tmp, cMakeImpLibDLL ) )
@@ -6818,7 +6818,7 @@ STATIC FUNCTION dep_try_pkg_detection( hbmk, dep )
hbmk[ _HBMK_hDEPTSDIR ][ cIncludeDir ] := NIL
/* Adjust implib source names with component path */
FOR EACH tmp IN dep[ _HBMKDEP_aIMPLIBSRC ]
tmp := PathMakeAbsolute( tmp, DirAddPathSep( cIncludeDir ) )
tmp := PathNormalize( PathMakeAbsolute( tmp, DirAddPathSep( cIncludeDir ) ) )
NEXT
ENDIF
IF hbmk[ _HBMK_lDEBUGDEPD ]
@@ -6854,7 +6854,7 @@ STATIC FUNCTION dep_try_header_detection( hbmk, dep )
hbmk[ _HBMK_hDEPTSDIR ][ dep[ _HBMKDEP_cFound ] ] := NIL
/* Adjust implib source names with component path */
FOR EACH tmp IN dep[ _HBMKDEP_aIMPLIBSRC ]
tmp := PathMakeAbsolute( tmp, DirAddPathSep( dep[ _HBMKDEP_cFound ] ) )
tmp := PathNormalize( PathMakeAbsolute( tmp, DirAddPathSep( dep[ _HBMKDEP_cFound ] ) ) )
NEXT
dep[ _HBMKDEP_lFound ] := .T.
dep[ _HBMKDEP_lFoundLOCAL ] := ( aINCPATH:__enumIndex() == 2 )