2010-07-18 14:57 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)

* contrib/make.hbs
  * contrib/hbpost.hbm
    % Internal simplifications, merged list of contribs into one.
    % Moved HB_BUILD_PARTS logic to .hbmk file.

  * contrib/sddodbc/sddodbc.c
    ! Applied previous patch for hbodbc to sddodbc.
      Thanks for Tamas Tevesz to supply the .dif.
This commit is contained in:
Viktor Szakats
2010-07-18 12:58:44 +00:00
parent 5523bae323
commit 1764c13194
4 changed files with 162 additions and 166 deletions

View File

@@ -16,6 +16,16 @@
The license applies to all entries newer than 2009-04-28.
*/
2010-07-18 14:57 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* contrib/make.hbs
* contrib/hbpost.hbm
% Internal simplifications, merged list of contribs into one.
% Moved HB_BUILD_PARTS logic to .hbmk file.
* contrib/sddodbc/sddodbc.c
! Applied previous patch for hbodbc to sddodbc.
Thanks for Tamas Tevesz to supply the .dif.
2010-07-18 12:38 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* contrib/make.hbs
+ Instead of having to list .hbi files explicitly,

View File

@@ -5,6 +5,8 @@
# 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"
-prgflag=-w3
-prgflag=-es2
-prgflag=-kmo

View File

@@ -33,76 +33,67 @@
/* ----------------------------------------------------------------------- */
/* external libs hosted locally */
STATIC s_aLibsPass0 := {}
STATIC s_aLibsPass1 := {;
"hbblink/hbblink.hbp" ,;
"hbbz2/hbbz2.hbp" ,; /* uses: bz2 (external) */
"hbclipsm/hbclipsm.hbp" ,;
"hbcomm/hbcomm.hbp" ,;
"hbct/hbct.hbp" ,;
"hbfoxpro/hbfoxpro.hbp" ,;
"hbfship/hbfship.hbp" ,;
"hbgt/hbgt.hbp" ,;
"hbmemio/hbmemio.hbp" ,;
"hbmisc/hbmisc.hbp" ,;
"hbmzip/hbmzip.hbp" ,; /* uses: minizip (external) */
"hbnetio/hbnetio.hbp" ,;
"hbnf/hbnf.hbp" ,;
"hbodbc/hbodbc.hbp" ,;
"hbsms/hbsms.hbp" ,;
"hbsqlit3/hbsqlit3.hbp" ,; /* uses: sqlite3 (external) */
"hbtpathy/hbtpathy.hbp" ,;
"hbwin/hbwin.hbp" ,;
"hbxpp/hbxpp.hbp" ,;
"rddbmcdx/hbbmcdx.hbp" }
STATIC s_aLibsPass2 := {;
"gtalleg/gtalleg.hbp" ,;
"gtalleg/gtallegs.hbp" ,;
"hbblat/hbblat.hbp" ,;
"hbcairo/hbcairo.hbp" ,;
"hbcups/hbcups.hbp" ,;
"hbcurl/hbcurl.hbp" ,;
"hbcurl/hbcurls.hbp" ,;
"hbfbird/hbfbird.hbp" ,;
"hbfimage/hbfimage.hbp" ,;
"hbgd/hbgd.hbp" ,; /* uses: hbct */
"hbhpdf/hbhpdf.hbp" ,;
"hbmysql/hbmysql.hbp" ,;
"hbpgsql/hbpgsql.hbp" ,;
"hbqt/hbqt.hbp" ,;
"hbqt/hbqtcore.hbp" ,;
"hbqt/hbqtcores.hbp" ,;
"hbqt/hbqtgui.hbp" ,;
"hbqt/hbqtguis.hbp" ,;
"hbqt/hbqtnetwork.hbp" ,;
"hbqt/hbqtnetworks.hbp" ,;
"hbqt/hbqts.hbp" ,;
"hbssl/hbssl.hbp" ,;
"hbssl/hbssls.hbp" ,;
"hbxbp/hbxbp.hbp" ,; /* uses: hbqt */
"rddads/rddads.hbp" ,;
"rddsql/rddsql.hbp" ,;
"sddfb/sddfb.hbp" ,; /* uses: rddsql */
"sddmy/sddmy.hbp" ,; /* uses: rddsql */
"sddoci/sddoci.hbp" ,; /* uses: rddsql */
"sddodbc/sddodbc.hbp" ,; /* uses: rddsql */
"sddpg/sddpg.hbp" ,; /* uses: rddsql */
"sddsqlt3/sddsqlt3.hbp" } /* uses: rddsql, sqlite3 (external) */
STATIC s_aLibsPass3 := {;
"gtwvg/gtwvg.hbp" ,; /* uses: hbwin */
"hbtip/hbtip.hbp" ,;
"hbtip/hbtipssl.hbp" ,; /* uses: hbssl */
"hbziparc/hbziparc.hbp" ,; /* uses: hbmzip */
"xhb/xhb.hbp" } /* uses: hbct, hbtip, hbwin */
STATIC s_aBins := {;
"hbdoc2/hbdoc2.hbp" ,;
"hbnetio/utils/hbnetio.hbp" ,; /* uses: hbnetio */
"hbide/hbide.hbp" } /* uses: hbxbp, hbqt */
STATIC s_aList := {;
{ 1, "hbblink/hbblink.hbp" },;
{ 1, "hbbz2/hbbz2.hbp" },; /* uses: bz2 (external) */
{ 1, "hbclipsm/hbclipsm.hbp" },;
{ 1, "hbcomm/hbcomm.hbp" },;
{ 1, "hbct/hbct.hbp" },;
{ 1, "hbfoxpro/hbfoxpro.hbp" },;
{ 1, "hbfship/hbfship.hbp" },;
{ 1, "hbgt/hbgt.hbp" },;
{ 1, "hbmemio/hbmemio.hbp" },;
{ 1, "hbmisc/hbmisc.hbp" },;
{ 1, "hbmzip/hbmzip.hbp" },; /* uses: minizip (external) */
{ 1, "hbnetio/hbnetio.hbp" },;
{ 1, "hbnf/hbnf.hbp" },;
{ 1, "hbodbc/hbodbc.hbp" },;
{ 1, "hbsms/hbsms.hbp" },;
{ 1, "hbsqlit3/hbsqlit3.hbp" },; /* uses: sqlite3 (external) */
{ 1, "hbtpathy/hbtpathy.hbp" },;
{ 1, "hbwin/hbwin.hbp" },;
{ 1, "hbxpp/hbxpp.hbp" },;
{ 1, "rddbmcdx/hbbmcdx.hbp" },;
{ 2, "gtalleg/gtalleg.hbp" },;
{ 2, "gtalleg/gtallegs.hbp" },;
{ 2, "hbblat/hbblat.hbp" },;
{ 2, "hbcairo/hbcairo.hbp" },;
{ 2, "hbcups/hbcups.hbp" },;
{ 2, "hbcurl/hbcurl.hbp" },;
{ 2, "hbcurl/hbcurls.hbp" },;
{ 2, "hbfbird/hbfbird.hbp" },;
{ 2, "hbfimage/hbfimage.hbp" },;
{ 2, "hbgd/hbgd.hbp" },; /* uses: hbct */
{ 2, "hbhpdf/hbhpdf.hbp" },;
{ 2, "hbmysql/hbmysql.hbp" },;
{ 2, "hbpgsql/hbpgsql.hbp" },;
{ 2, "hbqt/hbqt.hbp" },;
{ 2, "hbqt/hbqtcore.hbp" },;
{ 2, "hbqt/hbqtcores.hbp" },;
{ 2, "hbqt/hbqtgui.hbp" },;
{ 2, "hbqt/hbqtguis.hbp" },;
{ 2, "hbqt/hbqtnetwork.hbp" },;
{ 2, "hbqt/hbqtnetworks.hbp" },;
{ 2, "hbqt/hbqts.hbp" },;
{ 2, "hbssl/hbssl.hbp" },;
{ 2, "hbssl/hbssls.hbp" },;
{ 2, "hbxbp/hbxbp.hbp" },; /* uses: hbqt */
{ 2, "rddads/rddads.hbp" },;
{ 2, "rddsql/rddsql.hbp" },;
{ 2, "sddfb/sddfb.hbp" },; /* uses: rddsql */
{ 2, "sddmy/sddmy.hbp" },; /* uses: rddsql */
{ 2, "sddoci/sddoci.hbp" },; /* uses: rddsql */
{ 2, "sddodbc/sddodbc.hbp" },; /* uses: rddsql */
{ 2, "sddpg/sddpg.hbp" },; /* uses: rddsql */
{ 2, "sddsqlt3/sddsqlt3.hbp" },; /* uses: rddsql, sqlite3 (external) */
{ 3, "gtwvg/gtwvg.hbp" },; /* uses: hbwin */
{ 3, "hbtip/hbtip.hbp" },;
{ 3, "hbtip/hbtipssl.hbp" },; /* uses: hbssl */
{ 3, "hbziparc/hbziparc.hbp" },; /* uses: hbmzip */
{ 3, "xhb/xhb.hbp" },; /* uses: hbct, hbtip, hbwin */
{ 4, "hbdoc2/hbdoc2.hbp" },;
{ 4, "hbnetio/utils/hbnetio.hbp" },; /* uses: hbnetio */
{ 4, "hbide/hbide.hbp" }} /* uses: hbxbp, hbqt */
STATIC s_aAddons := {}
@@ -127,10 +118,10 @@ STATIC hActions := {;
STATIC s_cBase
STATIC s_cHome
STATIC s_cRoot
STATIC s_lTest
PROCEDURE Main( ... )
LOCAL tmp
s_cBase := ""
s_cHome := StrTran( hb_DirBase(), hb_ps(), "/" )
@@ -145,7 +136,11 @@ PROCEDURE Main( ... )
/* Making sure that user settings do not interfere with the std build process. */
hb_setenv( "HBMK_OPTIONS" )
s_aAddons := hb_ATokens( GetEnv( "HB_BUILD_ADDONS" ),, .T. )
FOR EACH tmp IN hb_ATokens( GetEnv( "HB_BUILD_ADDONS" ),, .T. )
IF ! Empty( tmp )
AAdd( s_aAddons, { 9, StrTran( tmp, "\", "/" ) } )
ENDIF
NEXT
IF Empty( GetEnv( "HB_HOST_BIN_DIR" ) )
StandAlone( ... )
@@ -171,9 +166,11 @@ PROCEDURE StandAlone( ... )
LOCAL aFile
LOCAL cType
LOCAL cProject
LOCAL aDept
LOCAL cBinDir
LOCAL cProject
LOCAL cBaseOptions
LOCAL nAction
@@ -231,10 +228,14 @@ PROCEDURE StandAlone( ... )
cProject := s_cBase + StrTran( aFile[ F_NAME ], "\", "/" )
FOR EACH tmp IN call_hbmk2_dept( s_cRoot + "bin" + hb_ps(), cProject, @cType )
OutStd( cProject + " depends on: " + tmp + hb_eol() )
NEXT
OutStd( cProject + " type: " + cType + hb_eol() )
call_hbmk2_dept( s_cRoot + "bin" + hb_ps(), cProject, @cType, @aDept )
OutStd( cProject + " type: " + cType )
IF ! Empty( aDept )
OutStd( " depends on: " )
AEval( aDept, {| tmp | OutStd( tmp ) } )
ENDIF
OutStd( hb_eol() )
IF cType $ "hbhrb|hbppo"
LOOP
@@ -267,11 +268,10 @@ PROCEDURE StandAlone( ... )
*/
PROCEDURE GNUMake( ... )
LOCAL aAll
LOCAL aList
LOCAL cType
LOCAL cBinDir
LOCAL aProject
LOCAL cProject
LOCAL cProjectDir
@@ -284,7 +284,6 @@ PROCEDURE GNUMake( ... )
LOCAL aParams
LOCAL aGNUMakeParams
LOCAL nAction
LOCAL tmp
/* Check if the requirements are met and if we have anything to do */
@@ -373,29 +372,25 @@ PROCEDURE GNUMake( ... )
cBinDir := GetEnv( "HB_HOST_BIN_DIR" ) + hb_ps()
aAll := {;
s_aLibsPass0,;
s_aLibsPass1,;
s_aLibsPass2,;
s_aLibsPass3,;
s_aBins,;
s_aAddons }
// OutStd( Len( aAll ) ) ; aAll := { { "rddads/rddads.hbp" } }
// OutStd( Len( s_aList ) ) ; s_aList := { { 1, "rddads/rddads.hbp" } }
OutStd( "! Calculating sorting order for contribs..." + hb_eol() )
FOR EACH aList IN aAll
FOR EACH cProject IN aList
IF ! Empty( cProject )
FOR EACH tmp IN call_hbmk2_dept( cBinDir, s_cBase + cProject, @cType )
OutStd( cProject + " depends on: " + tmp + hb_eol() )
NEXT
OutStd( cProject + " type: " + cType + hb_eol() )
ENDIF
NEXT
FOR EACH aProject IN s_aList
cProject := aProject[ 2 ]
ASize( aProject, 4 )
call_hbmk2_dept( cBinDir, s_cBase + cProject, @aProject[ 3 ], @aProject[ 4 ] )
// OutStd( cProject + " type: " + aProject[ 3 ] )
// IF ! Empty( aProject[ 4 ] )
// OutStd( " depends on: " )
// AEval( aProject[ 4 ], {| tmp | OutStd( tmp ) } )
// ENDIF
// OutStd( hb_eol() )
NEXT
ASort( s_aList, {| tmp, tmp1 | tmp[ 1 ] > tmp1[ 1 ] } )
/* Converting build options to hbmk2 options */
hb_setenv( "_HB_BUILD_INSTALL" )
@@ -419,88 +414,83 @@ PROCEDURE GNUMake( ... )
OutStd( hb_StrFormat( "! Contribs %1$s...", hActions[ nAction ] ) + hb_eol() )
FOR EACH aList IN aAll
FOR EACH cProject IN aList
FOR EACH aProject IN s_aList
IF ! Empty( cProject )
cProject := aProject[ 2 ]
cProjectDir := StrTran( FNameDirGet( PathSepToSelf( cProject ) ), "\", "/" )
cProject := s_cBase + StrTran( cProject, "\", "/" )
cProjectDir := StrTran( FNameDirGet( PathSepToSelf( cProject ) ), "\", "/" )
cProject := s_cBase + cProject
IF Empty( aFilter ) .OR. ;
iif( lFilterNegative,;
AScan( aFilter, {| tmp | tmp == cProjectDir } ) == 0,;
AScan( aFilter, {| tmp | tmp == cProjectDir } ) > 0 )
IF Empty( aFilter ) .OR. ;
iif( lFilterNegative,;
AScan( aFilter, {| tmp | tmp == cProjectDir } ) == 0,;
AScan( aFilter, {| tmp | tmp == cProjectDir } ) > 0 )
cType := get_hbmk2_project_type( cProject )
cType := get_hbmk2_project_type( cProject )
IF cType $ "hbhrb|hbppo"
LOOP
ENDIF
IF GetEnv( "HB_BUILD_PARTS" ) == "lib" .AND. ;
!( cType $ "hbimplib|hblib" )
LOOP
ENDIF
call_hbmk2( cBinDir, cProject, cBaseOptions, "" )
IF hb_FileExists( PathSepToSelf( FNameExtSet( cProject, ".hbi" ) ) )
call_hbmk2( cBinDir, FNameExtSet( cProject, ".hbi" ), cBaseOptions, "" )
ENDIF
/* Highly experimental */
IF cType == "hblib" .AND. GetEnv( "HB_BUILD_CONTRIB_DLL" ) == "yes" .AND. ;
!( GetEnv( "HB_BUILD_PARTS" ) == "lib" ) .AND. ;
hb_FileExists( PathSepToSelf( FNameExtSet( cProject, ".hbc" ) ) )
call_hbmk2( cBinDir, cProject, cBaseOptions, " -hbdyn -nohblib- -implib " + FNameExtSet( cProject, ".hbc" ) )
ENDIF
IF nAction == _ACT_INC_INST .OR. ;
nAction == _ACT_INC_REBUILD_INST
mk_hbd( PathSepToSelf( cProjectDir ) )
ENDIF
ELSE
/* OutStd( hb_StrFormat( "! project '%1$s' skipped", cProject ) + hb_eol() ) */
ENDIF
IF cType $ "hbhrb|hbppo"
LOOP
ENDIF
NEXT
call_hbmk2( cBinDir, cProject, cBaseOptions, "" )
IF hb_FileExists( PathSepToSelf( FNameExtSet( cProject, ".hbi" ) ) )
call_hbmk2( cBinDir, FNameExtSet( cProject, ".hbi" ), cBaseOptions, "" )
ENDIF
/* Highly experimental */
IF cType == "hblib" .AND. ;
GetEnv( "HB_BUILD_CONTRIB_DLL" ) == "yes" .AND. ;
hb_FileExists( PathSepToSelf( FNameExtSet( cProject, ".hbc" ) ) )
call_hbmk2( cBinDir, cProject, cBaseOptions, " -hbdyn -nohblib- -implib " + FNameExtSet( cProject, ".hbc" ) )
ENDIF
IF nAction == _ACT_INC_INST .OR. ;
nAction == _ACT_INC_REBUILD_INST
mk_hbd( PathSepToSelf( cProjectDir ) )
ENDIF
ELSE
/* OutStd( hb_StrFormat( "! project '%1$s' skipped", cProject ) + hb_eol() ) */
ENDIF
NEXT
ErrorLevel( 0 )
RETURN
STATIC FUNCTION call_hbmk2_dept( cBinDir, cProject, /* @ */ cType )
STATIC FUNCTION call_hbmk2_dept( cBinDir, cProject, /* @ */ cType, /* @ */ aDept )
LOCAL tmp, tmp1
LOCAL aList := {}
cType := ""
aDept := {}
hb_processRun( PathSepToSelf( cBinDir ) + "hbmk2 --hbinfo " + StrTran( cProject, "\", "/" ),, @tmp )
IF hb_processRun( PathSepToSelf( cBinDir ) + "hbmk2 --hbinfo " + StrTran( cProject, "\", "/" ),, @tmp ) == 0
IF ( tmp1 := At( "targettype{{", tmp ) ) > 0
tmp := SubStr( tmp, tmp1 + Len( "targettype{{" ) )
IF ( tmp1 := At( "}}", tmp ) ) > 0
cType := Left( tmp, tmp1 - 1 )
IF ( tmp1 := At( "targettype{{", tmp ) ) > 0
tmp := SubStr( tmp, tmp1 + Len( "targettype{{" ) )
IF ( tmp1 := At( "}}", tmp ) ) > 0
cType := Left( tmp, tmp1 - 1 )
ENDIF
ENDIF
IF ( tmp1 := At( "hbctree{{", tmp ) ) > 0
tmp := SubStr( tmp, tmp1 + Len( "hbctree{{" ) )
IF ( tmp1 := At( "}}", tmp ) ) > 0
tmp := StrTran( Left( tmp, tmp1 - 1 ), Chr( 13 ) )
FOR EACH tmp IN hb_ATokens( tmp, Chr( 10 ) )
IF ! Empty( tmp )
hb_FNameSplit( tmp,, @tmp1 )
AAdd( aDept, tmp1 )
ENDIF
NEXT
ENDIF
ENDIF
RETURN .T.
ENDIF
IF ( tmp1 := At( "hbctree{{", tmp ) ) > 0
tmp := SubStr( tmp, tmp1 + Len( "hbctree{{" ) )
IF ( tmp1 := At( "}}", tmp ) ) > 0
tmp := StrTran( Left( tmp, tmp1 - 1 ), Chr( 13 ) )
FOR EACH tmp IN hb_ATokens( tmp, Chr( 10 ) )
IF ! Empty( tmp )
hb_FNameSplit( tmp,, @tmp1 )
AAdd( aList, tmp1 )
ENDIF
NEXT
ENDIF
ENDIF
RETURN aList
RETURN .F.
STATIC FUNCTION call_hbmk2( cBinDir, cProject, cOptionsPre, cOptionsPost )
LOCAL nErrorLevel

View File

@@ -74,12 +74,6 @@
# if !defined( SQLLEN ) && !defined( SQLTCHAR )
typedef unsigned char SQLTCHAR;
# endif
# if !defined( SQLLEN )
# define SQLLEN SQLINTEGER
# endif
# if !defined( SQLULEN )
# define SQLULEN SQLUINTEGER
# endif
#endif
#if defined( UNICODE )