From bf2a4516c223a2e44fbaca9cd188b47d19b7b0f5 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Sat, 1 Dec 2012 11:20:35 +0000 Subject: [PATCH] 2012-12-01 12:17 UTC+0100 Viktor Szakats (harbour syenar.net) * utils/hbmk2/hbmk2.prg + automatically define HBMK_HAS_ macro if a given package is linked or loaded when running as script. F.e. HBMK_HAS_HBGD. The macro will have the value zero if there is no version information about the package and it will be 0x010203 if there is, via .hbc version=x[.y[.z]] directive. * extras/httpsrv/modules/showcounter.prg * extras/httpsrv/modulesg.hbp * extras/httpsrv/uhttpd.prg * extras/httpsrv/uhttpdgd.hbp + use HBMK_HAS_* macro instead of manually rolled solution --- harbour/ChangeLog.txt | 15 ++++++ .../extras/httpsrv/modules/showcounter.prg | 4 +- harbour/extras/httpsrv/modulesg.hbp | 3 +- harbour/extras/httpsrv/uhttpd.prg | 2 +- harbour/extras/httpsrv/uhttpdgd.hbp | 2 +- harbour/utils/hbmk2/hbmk2.prg | 47 ++++++++++++++----- 6 files changed, 55 insertions(+), 18 deletions(-) diff --git a/harbour/ChangeLog.txt b/harbour/ChangeLog.txt index 0b2e4c97de..5cddda5293 100644 --- a/harbour/ChangeLog.txt +++ b/harbour/ChangeLog.txt @@ -10,6 +10,21 @@ * Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment */ +2012-12-01 12:17 UTC+0100 Viktor Szakats (harbour syenar.net) + * utils/hbmk2/hbmk2.prg + + automatically define HBMK_HAS_ macro + if a given package is linked or loaded when running + as script. F.e. HBMK_HAS_HBGD. The macro will have + the value zero if there is no version information + about the package and it will be 0x010203 if there + is, via .hbc version=x[.y[.z]] directive. + + * extras/httpsrv/modules/showcounter.prg + * extras/httpsrv/modulesg.hbp + * extras/httpsrv/uhttpd.prg + * extras/httpsrv/uhttpdgd.hbp + + use HBMK_HAS_* macro instead of manually rolled solution + 2012-11-30 17:30 UTC+0100 Viktor Szakats (harbour syenar.net) * extras/hbusb/hbusb.hbc * extras/hbusb/tests/hbmk.hbm diff --git a/harbour/extras/httpsrv/modules/showcounter.prg b/harbour/extras/httpsrv/modules/showcounter.prg index 4e18238364..07869974ce 100644 --- a/harbour/extras/httpsrv/modules/showcounter.prg +++ b/harbour/extras/httpsrv/modules/showcounter.prg @@ -50,13 +50,11 @@ * */ -#if defined( GD_SUPPORT ) +#if defined( HBMK_HAS_HBGD ) MEMVAR _SERVER // defined in uHTTPD MEMVAR _REQUEST // defined in uHTTPD -#include "gd.ch" - #define IMAGES_IN ".." + hb_ps() + ".." + hb_ps() + ".." + hb_ps() + "contrib" + hb_ps() + "hbgd" + hb_ps() + "tests" + hb_ps() + "digits" + hb_ps() #define IMAGES_OUT ( _SERVER[ "DOCUMENT_ROOT" ] + hb_ps() + "counter" + hb_ps() ) diff --git a/harbour/extras/httpsrv/modulesg.hbp b/harbour/extras/httpsrv/modulesg.hbp index cddcdd7b28..2fffe85c3b 100644 --- a/harbour/extras/httpsrv/modulesg.hbp +++ b/harbour/extras/httpsrv/modulesg.hbp @@ -3,4 +3,5 @@ # @modules.hbp -hbgd.hbc -DGD_SUPPORT + +hbgd.hbc diff --git a/harbour/extras/httpsrv/uhttpd.prg b/harbour/extras/httpsrv/uhttpd.prg index f316093aea..c50c0414cd 100644 --- a/harbour/extras/httpsrv/uhttpd.prg +++ b/harbour/extras/httpsrv/uhttpd.prg @@ -94,7 +94,7 @@ REQUEST __HB_EXTERN__ #include "hbsocket.ch" -#ifdef GD_SUPPORT +#if defined( HBMK_HAS_HBGD ) // adding GD support REQUEST GDIMAGE, GDIMAGECHAR, GDCHART # define APP_GD_SUPPORT "_GD" diff --git a/harbour/extras/httpsrv/uhttpdgd.hbp b/harbour/extras/httpsrv/uhttpdgd.hbp index bb11d68969..be297b2968 100644 --- a/harbour/extras/httpsrv/uhttpdgd.hbp +++ b/harbour/extras/httpsrv/uhttpdgd.hbp @@ -4,4 +4,4 @@ @uhttpd.hbp -hbgd.hbc -DGD_SUPPORT +hbgd.hbc diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index ce4dac0b3d..fcdd4550db 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -261,6 +261,7 @@ EXTERNAL hbmk_KEYW #define _HBMK_WITH_TPL "HBMK_WITH_%1$s" #define _HBMK_HAS_TPL "HBMK_HAS_%1$s" #define _HBMK_HAS_TPL_LOCAL "HBMK_HAS_%1$s_LOCAL" +#define _HBMK_HAS_TPL_HBC "HBMK_HAS_%1$s" #define _HBMK_DIR_TPL "HBMK_DIR_%1$s" #define _HBMK_PLUGIN "__HBSCRIPT__HBMK_PLUGIN" #define _HBMK_SHELL "__HBSCRIPT__HBSHELL" @@ -3232,7 +3233,7 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel ) cParam := tmp1 := MacroProc( hbmk, cParam, aParam[ _PAR_cFileName ] ) cParam := PathMakeAbsolute( PathSepToSelf( cParam ), aParam[ _PAR_cFileName ] ) IF ! Empty( cParam ) - IF ! HBC_Find( hbmk, cParam ) + IF Empty( HBC_Find( hbmk, cParam ) ) IF Empty( aParam[ _PAR_cFileName ] ) _hbmk_OutErr( hbmk, hb_StrFormat( I_( "Warning: Cannot find %1$s" ), tmp1 ) ) ELSE @@ -5434,7 +5435,7 @@ FUNCTION hbmk( aArgs, nArgTarget, /* @ */ lPause, nLevel ) ELSE _hbmk_OutStd( hbmk, hb_StrFormat( I_( "Triggered by '%1$s' header: %2$s" ), cParam:__enumKey(), cParam ) ) ENDIF - IF ! HBC_Find( hbmk, cParam ) + IF Empty( HBC_Find( hbmk, cParam ) ) _hbmk_OutErr( hbmk, hb_StrFormat( I_( "Warning: Cannot find %1$s" ), cParam ) ) ENDIF ENDIF @@ -9772,10 +9773,10 @@ STATIC FUNCTION HBC_Find( hbmk, cFile, nNesting ) ENDIF IF lFound - HBC_ProcessOne( hbmk, hb_PathNormalize( cFile ), nNesting ) + RETURN HBC_ProcessOne( hbmk, hb_PathNormalize( cFile ), nNesting ) ENDIF - RETURN lFound + RETURN "" STATIC FUNCTION AutoConfPathList() @@ -9816,15 +9817,20 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel ) LOCAL lFound LOCAL tmp, tmp1 + LOCAL nVersion + LOCAL cVersion + IF hbmk[ _HBMK_lInfo ] _hbmk_OutStd( hbmk, hb_StrFormat( I_( "Processing: %1$s" ), cFileName ) ) ENDIF IF ! hbmk_hb_FileExists( cFileName ) _hbmk_OutErr( hbmk, hb_StrFormat( I_( "Error: Opening: %1$s" ), cFileName ) ) - RETURN .F. + RETURN "" ENDIF + nVersion := 0 + AAddNew( hbmk[ _HBMK_aDEPTHBC ], { cFileName, nNestingLevel - 1 } ) cFile := hbmk_MemoRead( cFileName ) /* NOTE: Intentionally using hbmk_MemoRead() which handles EOF char. */ @@ -9942,7 +9948,7 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel ) IF hb_FNameExt( cItem ) == ".hbc" cItem := PathMakeAbsolute( PathSepToSelf( cItem ), hb_FNameDir( cFileName ) ) IF nNestingLevel < _HBMK_NEST_MAX - IF ! HBC_Find( hbmk, cItem, nNestingLevel + 1 ) + IF Empty( HBC_Find( hbmk, cItem, nNestingLevel + 1 ) ) _hbmk_OutErr( hbmk, hb_StrFormat( I_( "Warning: Cannot find %1$s (referenced from %2$s)" ), tmp1, cFileName ) ) ENDIF ELSE @@ -9995,7 +10001,7 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel ) cItem := hb_FNameExtSet( cItem, ".hbc" ) ENDIF - IF ! HBC_Find( hbmk, cItem, nNestingLevel + 1 ) + IF Empty( HBC_Find( hbmk, cItem, nNestingLevel + 1 ) ) _hbmk_OutErr( hbmk, hb_StrFormat( I_( "Warning: Cannot find %1$s (referenced from %2$s)" ), tmp1, cFileName ) ) ENDIF ELSE @@ -10403,7 +10409,17 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel ) CASE Lower( Left( cLine, Len( "version=" ) ) ) == "version=" ; cLine := SubStr( cLine, Len( "version=" ) + 1 ) - /* Silently ignore */ + /* x.y.z where x,y,z >= 0 <= 255 */ + nVersion := 0 + FOR EACH tmp IN ASize( hb_ATokens( cLine, "." ), 3 ) + IF tmp != NIL + nVersion += Val( tmp ) + ENDIF + IF tmp:__enumIndex() > 2 + EXIT + ENDIF + nVersion *= 256 + NEXT CASE Lower( Left( cLine, Len( "keywords=" ) ) ) == "keywords=" ; cLine := SubStr( cLine, Len( "keywords=" ) + 1 ) @@ -10420,7 +10436,11 @@ STATIC FUNCTION HBC_ProcessOne( hbmk, cFileName, nNestingLevel ) ENDCASE NEXT - RETURN .T. + cVersion := "0x" + hb_NumToHex( nVersion, 6 ) + + AAdd( hbmk[ _HBMK_aOPTPRG ], "-D" + hb_StrFormat( _HBMK_HAS_TPL_HBC, StrToDefine( hb_FNameName( cFileName ) ) ) + "=" + cVersion ) + + RETURN cVersion STATIC FUNCTION IsGTRequested( hbmk, cWhichGT ) @@ -12811,6 +12831,7 @@ STATIC PROCEDURE __hbshell( cFile, ... ) LOCAL l_cHB_INSTALL_PREFIX LOCAL aOPTPRG LOCAL hHRB + LOCAL cVersion s_cDirBase_hbshell := hb_DirBase() s_cProgName_hbshell := hb_ProgName() @@ -12890,14 +12911,16 @@ STATIC PROCEDURE __hbshell( cFile, ... ) /* NOTE: - most filters and macros in .hbc files won't work in this mode */ + aOPTPRG := {} + FOR EACH tmp IN aExtension - IF ! HBC_Find( hbmk, cHBC := hb_FNameExtSet( tmp, ".hbc" ) ) + IF Empty( cVersion := HBC_Find( hbmk, cHBC := hb_FNameExtSet( tmp, ".hbc" ) ) ) OutErr( hb_StrFormat( I_( "Warning: Cannot find %1$s" ), cHBC ) + _OUT_EOL ) + ELSE + AAdd( aOPTPRG, "-D" + hb_StrFormat( _HBMK_HAS_TPL_HBC, StrToDefine( tmp ) ) + "=" + cVersion ) ENDIF NEXT - aOPTPRG := {} - FOR EACH tmp IN hbmk[ _HBMK_aINCPATH ] AAdd( aOPTPRG, "-I" + tmp ) NEXT