2010-05-25 13:31 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* utils/hbmk2/hbmk2.prg
+ Added experimental feature to aid external dependency
detection. Key header files can now be specified using
'-keyheader=' option. In case such key headers are not
found when evaluating '-inctrypath' conditional header
directories. The goal is to make hbmk2 capable of
replacing GNU Make for all of our contribs. F.e.:
'clean':
{HB_HOST_BIN_DIR}/hbmk2 hbfbird/hbfbird.hbp hbsms/hbsms.hbp -o../lib/${hb_plat}/${hb_comp}/ -clean
simple make:
{HB_HOST_BIN_DIR}/hbmk2 hbfbird/hbfbird.hbp hbsms/hbsms.hbp -o../lib/${hb_plat}/${hb_comp}/
'install':
{HB_HOST_BIN_DIR}/hbmk2 hbfbird/hbfbird.hbp hbsms/hbsms.hbp -o../lib/${hb_plat}/${hb_comp}/ -instpath=${HB_LIB_INSTALL}/ -info
% Minor cleanup to some plugin API functions.
* utils/hbmk2/examples/plug_moc.prg
% Minor cleanup.
* contrib/sddoci/tests/test1.prg
+ Showing field length and decimals.
This commit is contained in:
@@ -17,6 +17,29 @@
|
||||
past entries belonging to author(s): Viktor Szakats.
|
||||
*/
|
||||
|
||||
2010-05-25 13:31 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
|
||||
* utils/hbmk2/hbmk2.prg
|
||||
+ Added experimental feature to aid external dependency
|
||||
detection. Key header files can now be specified using
|
||||
'-keyheader=' option. In case such key headers are not
|
||||
found when evaluating '-inctrypath' conditional header
|
||||
directories. The goal is to make hbmk2 capable of
|
||||
replacing GNU Make for all of our contribs. F.e.:
|
||||
'clean':
|
||||
{HB_HOST_BIN_DIR}/hbmk2 hbfbird/hbfbird.hbp hbsms/hbsms.hbp -o../lib/${hb_plat}/${hb_comp}/ -clean
|
||||
simple make:
|
||||
{HB_HOST_BIN_DIR}/hbmk2 hbfbird/hbfbird.hbp hbsms/hbsms.hbp -o../lib/${hb_plat}/${hb_comp}/
|
||||
'install':
|
||||
{HB_HOST_BIN_DIR}/hbmk2 hbfbird/hbfbird.hbp hbsms/hbsms.hbp -o../lib/${hb_plat}/${hb_comp}/ -instpath=${HB_LIB_INSTALL}/ -info
|
||||
|
||||
% Minor cleanup to some plugin API functions.
|
||||
|
||||
* utils/hbmk2/examples/plug_moc.prg
|
||||
% Minor cleanup.
|
||||
|
||||
* contrib/sddoci/tests/test1.prg
|
||||
+ Showing field length and decimals.
|
||||
|
||||
2010-05-25 13:20 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/include/hbapi.h
|
||||
* harbour/src/vm/hashes.c
|
||||
|
||||
@@ -28,7 +28,7 @@ PROCEDURE Main()
|
||||
? "DB struct:", HB_VALTOEXP( DBSTRUCT() )
|
||||
? "-5-"
|
||||
FOR tmp := 1 TO FCount()
|
||||
? FIELDNAME( tmp ), HB_FIELDTYPE( tmp )
|
||||
? FIELDNAME( tmp ), HB_FIELDTYPE( tmp ), HB_FIELDLEN( tmp ), HB_FIELDDEC( tmp )
|
||||
NEXT
|
||||
? "-6-"
|
||||
INKEY( 0 )
|
||||
|
||||
@@ -34,7 +34,8 @@ FUNCTION hbmk2_plugin_moc( hbmk2 )
|
||||
|
||||
aMOC := {}
|
||||
FOR EACH tmp IN hbmk2[ "params" ]
|
||||
IF Lower( hbmk2_FNameExtGet( tmp ) ) $ ".h|.hpp"
|
||||
IF Lower( hbmk2_FNameExtGet( tmp ) ) == ".h" .OR. ;
|
||||
Lower( hbmk2_FNameExtGet( tmp ) ) == ".hpp"
|
||||
AAdd( aMOC, tmp )
|
||||
ENDIF
|
||||
NEXT
|
||||
|
||||
@@ -317,55 +317,56 @@ REQUEST hbmk_KEYW
|
||||
#define _HBMK_lIMPLIB 59
|
||||
#define _HBMK_lHBCPPMM 60
|
||||
#define _HBMK_aVAR 61
|
||||
#define _HBMK_hKEYHEADER 62
|
||||
|
||||
#define _HBMK_lCreateLib 62
|
||||
#define _HBMK_lCreateDyn 63
|
||||
#define _HBMK_lCreateImpLib 64
|
||||
#define _HBMK_lCreateLib 63
|
||||
#define _HBMK_lCreateDyn 64
|
||||
#define _HBMK_lCreateImpLib 65
|
||||
|
||||
#define _HBMK_lDynVM 65
|
||||
#define _HBMK_lDynVM 66
|
||||
|
||||
#define _HBMK_lBLDFLGP 66
|
||||
#define _HBMK_lBLDFLGC 67
|
||||
#define _HBMK_lBLDFLGL 68
|
||||
#define _HBMK_lBLDFLGP 67
|
||||
#define _HBMK_lBLDFLGC 68
|
||||
#define _HBMK_lBLDFLGL 69
|
||||
|
||||
#define _HBMK_cFIRST 69
|
||||
#define _HBMK_aPRG 70
|
||||
#define _HBMK_aC 71
|
||||
#define _HBMK_aCPP 72
|
||||
#define _HBMK_aRESSRC 73
|
||||
#define _HBMK_aRESCMP 74
|
||||
#define _HBMK_aOBJUSER 75
|
||||
#define _HBMK_aICON 76
|
||||
#define _HBMK_aIMPLIBSRC 77
|
||||
#define _HBMK_aDEF 78
|
||||
#define _HBMK_hDEPTS 79
|
||||
#define _HBMK_cFIRST 70
|
||||
#define _HBMK_aPRG 71
|
||||
#define _HBMK_aC 72
|
||||
#define _HBMK_aCPP 73
|
||||
#define _HBMK_aRESSRC 74
|
||||
#define _HBMK_aRESCMP 75
|
||||
#define _HBMK_aOBJUSER 76
|
||||
#define _HBMK_aICON 77
|
||||
#define _HBMK_aIMPLIBSRC 78
|
||||
#define _HBMK_aDEF 79
|
||||
#define _HBMK_hDEPTS 80
|
||||
|
||||
#define _HBMK_aPO 80
|
||||
#define _HBMK_cHBL 81
|
||||
#define _HBMK_cHBLDir 82
|
||||
#define _HBMK_aLNG 83
|
||||
#define _HBMK_cPO 84
|
||||
#define _HBMK_aPO 81
|
||||
#define _HBMK_cHBL 82
|
||||
#define _HBMK_cHBLDir 83
|
||||
#define _HBMK_aLNG 84
|
||||
#define _HBMK_cPO 85
|
||||
|
||||
#define _HBMK_aPLUGIN 85
|
||||
#define _HBMK_hPLUGINHRB 86
|
||||
#define _HBMK_hPLUGINVars 87
|
||||
#define _HBMK_aPLUGINPars 88
|
||||
#define _HBMK_aPLUGIN 86
|
||||
#define _HBMK_hPLUGINHRB 87
|
||||
#define _HBMK_hPLUGINVars 88
|
||||
#define _HBMK_aPLUGINPars 89
|
||||
|
||||
#define _HBMK_lDEBUGTIME 89
|
||||
#define _HBMK_lDEBUGINC 90
|
||||
#define _HBMK_lDEBUGSTUB 91
|
||||
#define _HBMK_lDEBUGI18N 92
|
||||
#define _HBMK_lDEBUGTIME 90
|
||||
#define _HBMK_lDEBUGINC 91
|
||||
#define _HBMK_lDEBUGSTUB 92
|
||||
#define _HBMK_lDEBUGI18N 93
|
||||
|
||||
#define _HBMK_cCCPATH 93
|
||||
#define _HBMK_cCCPREFIX 94
|
||||
#define _HBMK_cCCPOSTFIX 95
|
||||
#define _HBMK_cCCEXT 96
|
||||
#define _HBMK_cCCPATH 94
|
||||
#define _HBMK_cCCPREFIX 95
|
||||
#define _HBMK_cCCPOSTFIX 96
|
||||
#define _HBMK_cCCEXT 97
|
||||
|
||||
#define _HBMK_cWorkDir 97
|
||||
#define _HBMK_nCmd_Esc 98
|
||||
#define _HBMK_nScr_Esc 99
|
||||
#define _HBMK_cWorkDir 98
|
||||
#define _HBMK_nCmd_Esc 99
|
||||
#define _HBMK_nScr_Esc 100
|
||||
|
||||
#define _HBMK_MAX_ 99
|
||||
#define _HBMK_MAX_ 100
|
||||
|
||||
#ifndef _HBMK_EMBEDDED_
|
||||
|
||||
@@ -796,6 +797,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause )
|
||||
hbmk[ _HBMK_lIMPLIB ] := .F.
|
||||
hbmk[ _HBMK_lHBCPPMM ] := .F.
|
||||
hbmk[ _HBMK_aVAR ] := {}
|
||||
hbmk[ _HBMK_hKEYHEADER ] := { => }
|
||||
|
||||
hbmk[ _HBMK_lBLDFLGP ] := .F.
|
||||
hbmk[ _HBMK_lBLDFLGC ] := .F.
|
||||
@@ -1961,6 +1963,13 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause )
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
CASE Left( cParamL, Len( "-keyheader=" ) ) == "-keyheader="
|
||||
|
||||
cParam := MacroProc( hbmk, tmp := SubStr( cParam, Len( "-keyheader=" ) + 1 ), aParam[ _PAR_cFileName ] )
|
||||
IF ! Empty( cParam )
|
||||
hbmk[ _HBMK_hKEYHEADER ][ cParam ] := NIL
|
||||
ENDIF
|
||||
|
||||
CASE Left( cParamL, Len( "-stop" ) ) == "-stop"
|
||||
|
||||
lStopAfterInit := .T.
|
||||
@@ -3977,6 +3986,30 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause )
|
||||
NEXT
|
||||
ENDIF
|
||||
|
||||
/* Check if we've found all key headers */
|
||||
|
||||
tmp1 := {}
|
||||
FOR EACH tmp IN hbmk[ _HBMK_hKEYHEADER ]
|
||||
IF tmp == NIL
|
||||
AAdd( tmp1, tmp:__enumKey() )
|
||||
IF hbmk[ _HBMK_lDEBUGINC ]
|
||||
hbmk_OutStd( hbmk, hb_StrFormat( "debuginc: KEYHEADER %1$s: missing", tmp:__enumKey() ) )
|
||||
ENDIF
|
||||
ELSE
|
||||
IF hbmk[ _HBMK_lDEBUGINC ]
|
||||
hbmk_OutStd( hbmk, hb_StrFormat( "debuginc: KEYHEADER %1$s %2$s", tmp:__enumKey(), tmp ) )
|
||||
ENDIF
|
||||
ENDIF
|
||||
NEXT
|
||||
|
||||
IF ! Empty( tmp1 )
|
||||
hbmk_OutErr( hbmk, hb_StrFormat( I_( "Warning: Missing header dependency: %1$s" ), ArrayToList( tmp1, ", " ) ) )
|
||||
IF hbmk[ _HBMK_lBEEP ]
|
||||
DoBeep( .F. )
|
||||
ENDIF
|
||||
RETURN 10
|
||||
ENDIF
|
||||
|
||||
/* Harbour compilation */
|
||||
|
||||
IF ! lSkipBuild .AND. ! lStopAfterInit .AND. Len( l_aPRG_TODO ) > 0 .AND. ! hbmk[ _HBMK_lCLEAN ] .AND. hbmk[ _HBMK_nHBMODE ] != _HBMODE_RAW_C
|
||||
@@ -5747,6 +5780,9 @@ STATIC FUNCTION FindHeader( hbmk, cFileName, cParentDir, aINCTRYPATH )
|
||||
/* Add these dir to include paths */
|
||||
IF AScan( hbmk[ _HBMK_aINCPATH ], { |tmp| tmp == cDir } ) == 0
|
||||
AAdd( hbmk[ _HBMK_aINCPATH ], DirDelPathSep( PathSepToSelf( cDir ) ) )
|
||||
IF cFileName $ hbmk[ _HBMK_hKEYHEADER ]
|
||||
hbmk[ _HBMK_hKEYHEADER ][ cFileName ] := cDir
|
||||
ENDIF
|
||||
IF hbmk[ _HBMK_lInfo ]
|
||||
hbmk_OutStd( hbmk, hb_StrFormat( I_( "Autodetected header dir for %1$s: %2$s" ), cFileName, cDir ) )
|
||||
ENDIF
|
||||
@@ -5929,28 +5965,38 @@ FUNCTION hbmk2_OutStdRaw( ... ) ; RETURN ( OutStd( ... ), OutStd( _OUT_EO
|
||||
FUNCTION hbmk2_OutErrRaw( ... ) ; RETURN ( OutErr( ... ), OutErr( _OUT_EOL ) )
|
||||
|
||||
FUNCTION hbmk2_OutStd( ctx, cText )
|
||||
RETURN hbmk_OutStd( ctx[ s_cSecToken ], hb_StrFormat( I_( "plugin: %1$s" ), cText ) )
|
||||
LOCAL hbmk := ctx[ s_cSecToken ]
|
||||
RETURN hbmk_OutStd( hbmk, hb_StrFormat( I_( "plugin: %1$s" ), cText ) )
|
||||
|
||||
FUNCTION hbmk2_OutErr( ctx, cText )
|
||||
RETURN hbmk_OutErr( ctx[ s_cSecToken ], hb_StrFormat( I_( "plugin: %1$s" ), cText ) )
|
||||
LOCAL hbmk := ctx[ s_cSecToken ]
|
||||
RETURN hbmk_OutErr( hbmk, hb_StrFormat( I_( "plugin: %1$s" ), cText ) )
|
||||
|
||||
FUNCTION hbmk2_PathSepToTarget( ctx, ... )
|
||||
RETURN PathSepToTarget( ctx[ s_cSecToken ], ... )
|
||||
LOCAL hbmk := ctx[ s_cSecToken ]
|
||||
RETURN PathSepToTarget( hbmk, ... )
|
||||
|
||||
FUNCTION hbmk2_AddInput_PRG( ctx, cFileName )
|
||||
AAdd( ctx[ s_cSecToken ][ _HBMK_aPRG ], cFileName )
|
||||
LOCAL hbmk := ctx[ s_cSecToken ]
|
||||
AAdd( hbmk[ _HBMK_aPRG ], PathSepToTarget( hbmk, cFileName ) )
|
||||
DEFAULT hbmk[ _HBMK_cFIRST ] TO PathSepToSelf( cFileName )
|
||||
RETURN NIL
|
||||
|
||||
FUNCTION hbmk2_AddInput_C( ctx, cFileName )
|
||||
AAdd( ctx[ s_cSecToken ][ _HBMK_aC ], cFileName )
|
||||
LOCAL hbmk := ctx[ s_cSecToken ]
|
||||
AAdd( hbmk[ _HBMK_aC ], PathSepToTarget( hbmk, cFileName ) )
|
||||
DEFAULT hbmk[ _HBMK_cFIRST ] TO PathSepToSelf( cFileName )
|
||||
RETURN NIL
|
||||
|
||||
FUNCTION hbmk2_AddInput_CPP( ctx, cFileName )
|
||||
AAdd( ctx[ s_cSecToken ][ _HBMK_aCPP ], cFileName )
|
||||
LOCAL hbmk := ctx[ s_cSecToken ]
|
||||
AAdd( hbmk[ _HBMK_aCPP ], PathSepToTarget( hbmk, cFileName ) )
|
||||
DEFAULT hbmk[ _HBMK_cFIRST ] TO PathSepToSelf( cFileName )
|
||||
RETURN NIL
|
||||
|
||||
FUNCTION hbmk2_AddInput_RC( ctx, cFileName )
|
||||
AAdd( ctx[ s_cSecToken ][ _HBMK_aRESSRC ], cFileName )
|
||||
LOCAL hbmk := ctx[ s_cSecToken ]
|
||||
AAdd( hbmk[ _HBMK_aRESSRC ], PathSepToTarget( hbmk, cFileName ) )
|
||||
RETURN NIL
|
||||
|
||||
/* ; */
|
||||
@@ -9217,6 +9263,7 @@ STATIC PROCEDURE ShowHelp( hbmk, lLong )
|
||||
{ "-bldf[-]" , I_( "inherit all/no (default) flags from Harbour build" ) },;
|
||||
{ "-bldf=[p][c][l]" , I_( "inherit .prg/.c/linker flags (or none) from Harbour build" ) },;
|
||||
{ "-inctrypath=<p>" , I_( "additional path to autodetect .c header locations" ) },;
|
||||
{ "-keyheader=<file>" , I_( "add header requirement. Build will stop if header is not found (EXPERIMENTAL)" ) },;
|
||||
{ "-prgflag=<f>" , I_( "pass flag to Harbour" ) },;
|
||||
{ "-cflag=<f>" , I_( "pass flag to C compiler" ) },;
|
||||
{ "-resflag=<f>" , I_( "pass flag to resource compiler (Windows only)" ) },;
|
||||
|
||||
Reference in New Issue
Block a user