From e70fa438ce0636a51d31f774bfde3a4fa35891a1 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Sat, 16 Jun 2012 22:20:54 +0000 Subject: [PATCH] 2012-06-17 00:18 UTC+0200 Viktor Szakats (harbour syenar.net) * utils/hbmk2/hbmk2.prg + will now gather a list of existing 3rd party dll dependencies using the file-group named 'depimplibsrc'. This list can be used to install these files to user-specific locations * contrib/hbpost.hbm + added global solution to install 3rd party dll dependencies, with minor fixes * contrib/hbblat/hbblat.hbp * contrib/hbcurl/hbcurl.hbp * contrib/hbssl/hbssl.hbp - deleted local solution to install 3rd party dll dependencies --- harbour/ChangeLog | 15 ++++++++ harbour/contrib/hbblat/hbblat.hbp | 2 - harbour/contrib/hbcurl/hbcurl.hbp | 3 -- harbour/contrib/hbpost.hbm | 1 + harbour/contrib/hbssl/hbssl.hbp | 7 ---- harbour/utils/hbmk2/hbmk2.prg | 64 ++++++++++++++++++------------- 6 files changed, 54 insertions(+), 38 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 9b7c12d8b6..1124e881bb 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,21 @@ The license applies to all entries newer than 2009-04-28. */ +2012-06-17 00:18 UTC+0200 Viktor Szakats (harbour syenar.net) + * utils/hbmk2/hbmk2.prg + + will now gather a list of existing 3rd party dll dependencies + using the file-group named 'depimplibsrc'. This list can + be used to install these files to user-specific locations + + * contrib/hbpost.hbm + + added global solution to install 3rd party dll dependencies, + with minor fixes + + * contrib/hbblat/hbblat.hbp + * contrib/hbcurl/hbcurl.hbp + * contrib/hbssl/hbssl.hbp + - deleted local solution to install 3rd party dll dependencies + 2012-06-16 22:16 UTC+0200 Viktor Szakats (harbour syenar.net) * contrib/make.hb + added textual hbmk2 results diff --git a/harbour/contrib/hbblat/hbblat.hbp b/harbour/contrib/hbblat/hbblat.hbp index 7ddbbbd614..c9c003f6cc 100644 --- a/harbour/contrib/hbblat/hbblat.hbp +++ b/harbour/contrib/hbblat/hbblat.hbp @@ -22,8 +22,6 @@ -instfile=inc:hbblat.ch -instfile=inc:hbblat.hbx -{hbdyn&win&HB_INSTALL_3RDDYN='yes'}-instfile=${HBMK_DIR_BLAT}/../blat.dll - hbblat.hbx blatwrp.c diff --git a/harbour/contrib/hbcurl/hbcurl.hbp b/harbour/contrib/hbcurl/hbcurl.hbp index 3f9be00ee1..3b158a6b2b 100644 --- a/harbour/contrib/hbcurl/hbcurl.hbp +++ b/harbour/contrib/hbcurl/hbcurl.hbp @@ -10,7 +10,4 @@ hbcurl.hbm -iflag={bcc}-a -{hbdyn&win&HB_INSTALL_3RDDYN='yes'}-instfile=${HBMK_DIR_CURL}/../libcurl.dll -{hbdyn&win&HB_INSTALL_3RDDYN='yes'}-instfile=${HBMK_DIR_CURL}/../bin/libcurl.dll - hbcurls.hbp diff --git a/harbour/contrib/hbpost.hbm b/harbour/contrib/hbpost.hbm index e39890eede..50266e3a2f 100644 --- a/harbour/contrib/hbpost.hbm +++ b/harbour/contrib/hbpost.hbm @@ -90,6 +90,7 @@ {_HB_BUILD_INSTALL&_HB_INSTALL_LIB&hblib}-instpath=${_HB_INSTALL_LIB}/ {_HB_BUILD_INSTALL&_HB_INSTALL_BIN&hbexe}-instpath=${_HB_INSTALL_BIN}/ {_HB_BUILD_INSTALL&_HB_INSTALL_DYN&hbdyn}-instpath=${_HB_INSTALL_DYN}/ +{_HB_BUILD_INSTALL&_HB_INSTALL_DYN&hbdyn&(win|os2)&HB_INSTALL_3RDDYN='yes'}-instpath=depimplibsrc:${_HB_INSTALL_DYN}/ {_HB_BUILD_INSTALL&_HB_INSTALL_INC&hblib}-instpath=inc:${_HB_INSTALL_INC}/ {_HB_BUILD_INSTALL&_HB_INSTALL_LIB}-instpath=implib:${_HB_INSTALL_LIB}/ {_HB_BUILD_INSTALL&_HB_INSTALL_ETC}-instpath=etc:${_HB_INSTALL_ETC}/ diff --git a/harbour/contrib/hbssl/hbssl.hbp b/harbour/contrib/hbssl/hbssl.hbp index 7da4048e77..1294d1a5fa 100644 --- a/harbour/contrib/hbssl/hbssl.hbp +++ b/harbour/contrib/hbssl/hbssl.hbp @@ -15,13 +15,6 @@ hbssl.hbm {allwin&HBMK_HAS_OPENSSL}-cflag=-I${HB_WITH_OPENSSL}/../inc32 -{hbdyn&win&HB_INSTALL_3RDDYN='yes'}-instfile=${HBMK_DIR_OPENSSL}/../out32dll/libeay32.dll -{hbdyn&win&HB_INSTALL_3RDDYN='yes'}-instfile=${HBMK_DIR_OPENSSL}/../out32dll/ssleay32.dll -{hbdyn&win&HB_INSTALL_3RDDYN='yes'}-instfile=${HBMK_DIR_OPENSSL}/../dll/libeay32.dll -{hbdyn&win&HB_INSTALL_3RDDYN='yes'}-instfile=${HBMK_DIR_OPENSSL}/../dll/ssleay32.dll -{hbdyn&win&HB_INSTALL_3RDDYN='yes'}-instfile=${HBMK_DIR_OPENSSL}/../libeay32.dll -{hbdyn&win&HB_INSTALL_3RDDYN='yes'}-instfile=${HBMK_DIR_OPENSSL}/../ssleay32.dll - -iflag={bcc}-a hbssls.hbp diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index f71ba64e42..d9740258e9 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -5377,10 +5377,10 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel ) /* Creating implibs requested in dependency specification */ - IF ! hbmk[ _HBMK_lStopAfterInit ] .AND. hbmk[ _HBMK_lDEPIMPLIB ] .AND. HB_ISBLOCK( bBlk_ImpLib ) + IF ! hbmk[ _HBMK_lStopAfterInit ] .AND. HB_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 ], "depimplib" ) + DoIMPLIB( hbmk, bBlk_ImpLib, cLibLibPrefix, cLibLibExt, tmp[ _HBMKDEP_aIMPLIBSRC ], tmp[ _HBMKDEP_cIMPLIBDST ], "depimplib", ! hbmk[ _HBMK_lDEPIMPLIB ] ) ENDIF NEXT ENDIF @@ -7210,7 +7210,7 @@ STATIC FUNCTION DoLink( hbmk ) RETURN .T. -STATIC FUNCTION DoIMPLIB( hbmk, bBlk_ImpLib, cLibLibPrefix, cLibLibExt, aIMPLIBSRC, cPROGNAME, cInstCat ) +STATIC FUNCTION DoIMPLIB( hbmk, bBlk_ImpLib, cLibLibPrefix, cLibLibExt, aIMPLIBSRC, cPROGNAME, cInstCat, lDoSrc ) LOCAL cMakeImpLibDLL LOCAL tmp, tmp1 LOCAL nNotFound @@ -7220,40 +7220,52 @@ STATIC FUNCTION DoIMPLIB( hbmk, bBlk_ImpLib, cLibLibPrefix, cLibLibExt, aIMPLIBS IF HB_ISBLOCK( bBlk_ImpLib ) IF ! Empty( aIMPLIBSRC ) + hb_default( @lDoSrc, .F. ) aToDelete := {} nNotFound := 0 FOR EACH cMakeImpLibDLL IN aIMPLIBSRC cMakeImpLibDLL := hb_FNameExtSetDef( cMakeImpLibDLL, ".dll" ) - tmp1 := cPROGNAME - hb_default( @tmp1, hb_FNameName( cMakeImpLibDLL ) ) - tmp := FN_CookLib( hb_FNameMerge( hbmk[ _HBMK_cPROGDIR ], tmp1 ), cLibLibPrefix, cLibLibExt ) - IF hbmk[ _HBMK_lCLEAN ] - AAddNew( aToDelete, tmp ) + IF lDoSrc + IF hb_FileExists( cMakeImpLibDLL ) + /* Keep a list of found dynamic library sources, allowing this + list to be used to install those dynamic libs */ + AAddNewINST( hbmk[ _HBMK_aINSTFILE ], { "depimplibsrc", cMakeImpLibDLL }, .T. ) + ENDIF ELSE - 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 ], { 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 ) ) - EXIT - CASE _HBMK_IMPLIB_NOTFOUND - ++nNotFound - EXIT - ENDSWITCH + tmp1 := cPROGNAME + hb_default( @tmp1, hb_FNameName( cMakeImpLibDLL ) ) + tmp := FN_CookLib( hb_FNameMerge( hbmk[ _HBMK_cPROGDIR ], tmp1 ), cLibLibPrefix, cLibLibExt ) + + IF hbmk[ _HBMK_lCLEAN ] + AAddNew( aToDelete, tmp ) + ELSE + 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 ], { 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 ) ) + EXIT + CASE _HBMK_IMPLIB_NOTFOUND + ++nNotFound + EXIT + ENDSWITCH + ENDIF ENDIF NEXT - IF nNotFound == Len( aIMPLIBSRC ) - _hbmk_OutErr( hbmk, hb_StrFormat( I_( "Warning: No import library sources were found." ) ) ) - ELSE - IF hbmk[ _HBMK_lCLEAN ] - AEval( aToDelete, {| tmp | FErase( tmp ) } ) + IF ! lDoSrc + IF nNotFound == Len( aIMPLIBSRC ) + _hbmk_OutErr( hbmk, hb_StrFormat( I_( "Warning: No import library sources were found." ) ) ) ELSE - lRetVal := .T. + IF hbmk[ _HBMK_lCLEAN ] + AEval( aToDelete, {| tmp | FErase( tmp ) } ) + ELSE + lRetVal := .T. + ENDIF ENDIF ENDIF ELSE