2009-02-21 09:33 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
* utils/hbmk2/hbmk2.prg
+ Added automatic selection of GUI/non-GNU modes for
core/contrib GTs. This can be overridden by user by
putting -gui (and related switches) _after_ -gt switch.
In normal cases this isn't necessary.
+ Invalid GT names are ignored, instead of creating
compile error in the stub.
+ GTs and FM are now requested from C stub just like they
are in hbmk script. This makes it possible to override
GT even for apps that already uses an official method
to choose a GT. hbmk2 uses function call also to set GT.
- Removed .prg stub.
! Fixed recent potential RTE when using darwin.
This commit is contained in:
@@ -8,6 +8,21 @@
|
||||
2009-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org)
|
||||
*/
|
||||
|
||||
2009-02-21 09:33 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
|
||||
* utils/hbmk2/hbmk2.prg
|
||||
+ Added automatic selection of GUI/non-GNU modes for
|
||||
core/contrib GTs. This can be overridden by user by
|
||||
putting -gui (and related switches) _after_ -gt switch.
|
||||
In normal cases this isn't necessary.
|
||||
+ Invalid GT names are ignored, instead of creating
|
||||
compile error in the stub.
|
||||
+ GTs and FM are now requested from C stub just like they
|
||||
are in hbmk script. This makes it possible to override
|
||||
GT even for apps that already uses an official method
|
||||
to choose a GT. hbmk2 uses function call also to set GT.
|
||||
- Removed .prg stub.
|
||||
! Fixed recent potential RTE when using darwin.
|
||||
|
||||
2009-02-21 00:15 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
|
||||
* harbour/contrib/gtwvg/gtwvg.c
|
||||
* harbour/contrib/gtwvg/wvggui.c
|
||||
@@ -24,7 +39,7 @@
|
||||
* harbour/contrib/hbwin/wapi_winuser.c
|
||||
! Mostly warning fixes for 64bits.
|
||||
|
||||
; Viktor, review me and plese send list of warnings
|
||||
; Viktor, review me and plese send list of warnings
|
||||
left after this.
|
||||
|
||||
2009-02-21 08:44 UTC+0100 Viktor Szakats (harbour.01 syenar hu)
|
||||
|
||||
@@ -145,7 +145,6 @@ FUNCTION Main( ... )
|
||||
"rddfpt" }
|
||||
|
||||
LOCAL s_cGT
|
||||
LOCAL s_cPRGSTUB
|
||||
LOCAL s_cCSTUB
|
||||
|
||||
LOCAL s_cHB_INSTALL_PREFIX
|
||||
@@ -214,7 +213,7 @@ FUNCTION Main( ... )
|
||||
LOCAL cBin_CompC
|
||||
LOCAL cBin_Link
|
||||
LOCAL nErrorLevel
|
||||
LOCAL tmp
|
||||
LOCAL tmp, array
|
||||
LOCAL cScriptFile
|
||||
LOCAL fhnd
|
||||
LOCAL lNOHBP
|
||||
@@ -397,6 +396,9 @@ FUNCTION Main( ... )
|
||||
RETURN 1
|
||||
ENDCASE
|
||||
|
||||
/* Setup default state */
|
||||
SetupForGT( cGTDEFAULT, @s_cGT, @s_lGUI )
|
||||
|
||||
/* Autodetect compiler */
|
||||
|
||||
IF Empty( t_cCOMP ) .OR. t_cCOMP == "bld"
|
||||
@@ -546,7 +548,7 @@ FUNCTION Main( ... )
|
||||
IF ValueIsT( GetEnv( "HB_NULRDD" ) ) ; s_lNULRDD := .T. ; ENDIF
|
||||
|
||||
IF Lower( Left( GetEnv( "HB_GT" ), 2 ) ) == "gt"
|
||||
s_cGT := GetEnv( "HB_GT" )
|
||||
SetupForGT( GetEnv( "HB_GT" ), @s_cGT, @s_lGUI )
|
||||
ENDIF
|
||||
|
||||
/* Process command line */
|
||||
@@ -662,7 +664,12 @@ FUNCTION Main( ... )
|
||||
OutErr( "hbmk: Warning: Invalid -main value ignored: " + tmp + hb_osNewLine() )
|
||||
ENDIF
|
||||
|
||||
CASE Lower( Left( cParam, 3 ) ) == "-gt" ; s_cGT := SubStr( cParam, 2 )
|
||||
CASE Lower( Left( cParam, 3 ) ) == "-gt"
|
||||
|
||||
IF ! SetupForGT( SubStr( cParam, 2 ), @s_cGT, @s_lGUI )
|
||||
OutErr( "hbmk: Warning: Invalid -gt value ignored: " + tmp + hb_osNewLine() )
|
||||
ENDIF
|
||||
|
||||
CASE Left( cParam, 2 ) == "-o"
|
||||
|
||||
tmp := PathSepToSelf( SubStr( cParam, 3 ) )
|
||||
@@ -726,25 +733,8 @@ FUNCTION Main( ... )
|
||||
cGTDEFAULT := "gtwvt"
|
||||
ENDIF
|
||||
|
||||
IF ( ! Empty( s_cGT ) .AND. !( s_cGT == cGTDEFAULT ) ) .OR. ;
|
||||
s_lFMSTAT != NIL
|
||||
|
||||
fhnd := hb_FTempCreateEx( @s_cPRGSTUB, ".", "hbsp_", ".prg" )
|
||||
IF fhnd != F_ERROR
|
||||
IF ! Empty( s_cGT )
|
||||
FWrite( fhnd, "ANNOUNCE HB_GTSYS" + hb_osNewLine() +;
|
||||
"REQUEST HB_GT_" + Upper( SubStr( s_cGT, 3 ) ) + "_DEFAULT" + hb_osNewLine() )
|
||||
ENDIF
|
||||
IF s_lFMSTAT != NIL
|
||||
FWrite( fhnd, "REQUEST " + iif( s_lFMSTAT, "HB_FM_STAT", "HB_FM_NOSTAT" ) + hb_osNewLine() )
|
||||
ENDIF
|
||||
FClose( fhnd )
|
||||
ELSE
|
||||
OutErr( "hbmk: Warning: Stub helper .prg program couldn't be created." + hb_osNewLine() )
|
||||
PauseForKey()
|
||||
RETURN 5
|
||||
ENDIF
|
||||
AAdd( s_aPRG, s_cPRGSTUB )
|
||||
IF s_cGT == cGTDEFAULT
|
||||
s_cGT := NIL
|
||||
ENDIF
|
||||
|
||||
/* Merge user libs from command line and envvar. Command line has priority. */
|
||||
@@ -803,19 +793,13 @@ FUNCTION Main( ... )
|
||||
|
||||
IF ( tmp := hb_run( cCommand ) ) != 0
|
||||
OutErr( "hbmk: Error: Running Harbour compiler. " + hb_ntos( tmp ) + ": '" + cCommand + "'" + hb_osNewLine() )
|
||||
IF ! Empty( s_cPRGSTUB )
|
||||
FErase( s_cPRGSTUB )
|
||||
ENDIF
|
||||
PauseForKey()
|
||||
RETURN 6
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
IF lStopAfterHarbour
|
||||
IF ! Empty( s_cPRGSTUB )
|
||||
FErase( s_cPRGSTUB )
|
||||
ENDIF
|
||||
ELSE
|
||||
IF ! lStopAfterHarbour
|
||||
|
||||
/* C compilation/linking */
|
||||
|
||||
s_aLIB3RD := {}
|
||||
@@ -962,12 +946,14 @@ FUNCTION Main( ... )
|
||||
CASE t_cARCH == "hpux"
|
||||
AAdd( s_aLIBSYS, "rt" )
|
||||
CASE t_cARCH == "darwin"
|
||||
DO CASE
|
||||
CASE s_cGT == "gtcrs"
|
||||
AAdd( s_aLIBSYS, "ncurses" )
|
||||
CASE s_cGT == "gtsln"
|
||||
AAdd( s_aLIBSYS, "slang" )
|
||||
ENDCASE
|
||||
IF s_cGT != NIL
|
||||
DO CASE
|
||||
CASE s_cGT == "gtcrs"
|
||||
AAdd( s_aLIBSYS, "ncurses" )
|
||||
CASE s_cGT == "gtsln"
|
||||
AAdd( s_aLIBSYS, "slang" )
|
||||
ENDCASE
|
||||
ENDIF
|
||||
ENDCASE
|
||||
|
||||
IF s_lFMSTAT != NIL .AND. s_lFMSTAT
|
||||
@@ -1307,7 +1293,10 @@ FUNCTION Main( ... )
|
||||
|
||||
/* HACK: Override entry point requested by user or detected by us,
|
||||
and override the GT if requested by user. */
|
||||
IF s_cMAIN != NIL
|
||||
IF s_cMAIN != NIL .OR. ;
|
||||
s_cGT != NIL .OR. ;
|
||||
s_lFMSTAT != NIL
|
||||
|
||||
fhnd := hb_FTempCreateEx( @s_cCSTUB, ".", "hbsc_", ".c" )
|
||||
IF fhnd != F_ERROR
|
||||
|
||||
@@ -1324,41 +1313,71 @@ FUNCTION Main( ... )
|
||||
OTHERWISE ; tmp := "_declspec( dllimport )"
|
||||
ENDCASE
|
||||
|
||||
FWrite( fhnd, '#include "hbapi.h"' + hb_osNewLine() +;
|
||||
'#include "hbinit.h"' + hb_osNewLine() +;
|
||||
'' + hb_osNewLine() +;
|
||||
'HB_EXTERN_BEGIN' + hb_osNewLine() +;
|
||||
'extern ' + tmp + ' void hb_vmSetLinkedMain( const char * szMain );' + hb_osNewLine() +;
|
||||
'HB_EXTERN_END' + hb_osNewLine() +;
|
||||
'' + hb_osNewLine() +;
|
||||
'HB_CALL_ON_STARTUP_BEGIN( _hb_hbmk_setdef_ )' + hb_osNewLine() +;
|
||||
' hb_vmSetLinkedMain( "' + Upper( s_cMAIN ) + '" );' + hb_osNewLine() +;
|
||||
'HB_CALL_ON_STARTUP_END( _hb_hbmk_setdef_ )' + hb_osNewLine() +;
|
||||
'' + hb_osNewLine() +;
|
||||
'#if defined( HB_PRAGMA_STARTUP )' + hb_osNewLine() +;
|
||||
' #pragma startup_hb_lnk_SetDefault_hbmk_' + hb_osNewLine() +;
|
||||
'#elif defined( HB_MSC_STARTUP )' + hb_osNewLine() +;
|
||||
' #if defined( HB_OS_WIN_64 )' + hb_osNewLine() +;
|
||||
' #pragma section( HB_MSC_START_SEGMENT, long, read )' + hb_osNewLine() +;
|
||||
' #endif' + hb_osNewLine() +;
|
||||
' #pragma data_seg( HB_MSC_START_SEGMENT )' + hb_osNewLine() +;
|
||||
' static HB_$INITSYM hb_vm_auto_hbmk_setdef_ = _hb_hbmk_setdef_;' + hb_osNewLine() +;
|
||||
' #pragma data_seg()' + hb_osNewLine() +;
|
||||
'#endif' + hb_osNewLine() )
|
||||
/* Create list of requested symbols */
|
||||
array := {}
|
||||
IF s_cMAIN != NIL
|
||||
/* NOTE: Request this function to generate link error, rather
|
||||
than starting with the wrong (default) function. */
|
||||
AAdd( array, Upper( iif( Left( s_cMAIN, 1 ) == "@", SubStr( s_cMAIN, 2 ), s_cMAIN ) ) )
|
||||
ENDIF
|
||||
IF s_cGT != NIL
|
||||
AAdd( array, "HB_GT_" + Upper( SubStr( s_cGT, 3 ) ) )
|
||||
ENDIF
|
||||
IF s_lFMSTAT != NIL
|
||||
AAdd( array, iif( s_lFMSTAT, "HB_FM_STAT", "HB_FM_NOSTAT" ) )
|
||||
ENDIF
|
||||
|
||||
/* 'extern ' + tmp + ' void hb_gtSetDefault( const char * szGtName );' + hb_osNewLine() +; */
|
||||
/* ' hb_gtSetDefault( "$gt" );' + hb_osNewLine() +; */
|
||||
/* Build C stub */
|
||||
FWrite( fhnd, '#include "hbapi.h"' + hb_osNewLine() )
|
||||
IF ! Empty( array )
|
||||
FWrite( fhnd, '' + hb_osNewLine() )
|
||||
AEval( array, {|tmp| FWrite( fhnd, 'HB_FUNC_EXTERN( ' + tmp + ' );' + hb_osNewLine() ) } )
|
||||
FWrite( fhnd, '' + hb_osNewLine() )
|
||||
FWrite( fhnd, 'void _hb_lnk_ForceLink_hbmk( void )' + hb_osNewLine() )
|
||||
FWrite( fhnd, '{' + hb_osNewLine() )
|
||||
AEval( array, {|tmp| FWrite( fhnd, ' HB_FUNC_EXEC( ' + tmp + ' );' + hb_osNewLine() ) } )
|
||||
FWrite( fhnd, '}' + hb_osNewLine() )
|
||||
FWrite( fhnd, '' + hb_osNewLine() )
|
||||
ENDIF
|
||||
|
||||
IF s_cGT != NIL .OR. ;
|
||||
s_cMAIN != NIL
|
||||
FWrite( fhnd, '#include "hbinit.h"' + hb_osNewLine() +;
|
||||
'' + hb_osNewLine() +;
|
||||
'HB_EXTERN_BEGIN' + hb_osNewLine() +;
|
||||
'extern ' + tmp + ' void hb_vmSetLinkedMain( const char * szMain );' + hb_osNewLine() +;
|
||||
'extern ' + tmp + ' void hb_gtSetDefault( const char * szGtName );' + hb_osNewLine() +;
|
||||
'HB_EXTERN_END' + hb_osNewLine() +;
|
||||
'' + hb_osNewLine() +;
|
||||
'HB_CALL_ON_STARTUP_BEGIN( _hb_hbmk_setdef_ )' + hb_osNewLine() )
|
||||
IF s_cGT != NIL
|
||||
FWrite( fhnd, ' hb_gtSetDefault( "' + Upper( SubStr( s_cGT, 3 ) ) + '" );' + hb_osNewLine() )
|
||||
ENDIF
|
||||
IF s_cMAIN != NIL
|
||||
FWrite( fhnd, ' hb_vmSetLinkedMain( "' + Upper( s_cMAIN ) + '" );' + hb_osNewLine() )
|
||||
ENDIF
|
||||
FWrite( fhnd, 'HB_CALL_ON_STARTUP_END( _hb_hbmk_setdef_ )' + hb_osNewLine() +;
|
||||
'' + hb_osNewLine() +;
|
||||
'#if defined( HB_PRAGMA_STARTUP )' + hb_osNewLine() +;
|
||||
' #pragma startup_hb_lnk_SetDefault_hbmk_' + hb_osNewLine() +;
|
||||
'#elif defined( HB_MSC_STARTUP )' + hb_osNewLine() +;
|
||||
' #if defined( HB_OS_WIN_64 )' + hb_osNewLine() +;
|
||||
' #pragma section( HB_MSC_START_SEGMENT, long, read )' + hb_osNewLine() +;
|
||||
' #endif' + hb_osNewLine() +;
|
||||
' #pragma data_seg( HB_MSC_START_SEGMENT )' + hb_osNewLine() +;
|
||||
' static HB_$INITSYM hb_vm_auto_hbmk_setdef_ = _hb_hbmk_setdef_;' + hb_osNewLine() +;
|
||||
' #pragma data_seg()' + hb_osNewLine() +;
|
||||
'#endif' + hb_osNewLine() )
|
||||
ENDIF
|
||||
FClose( fhnd )
|
||||
ELSE
|
||||
OutErr( "hbmk: Warning: Stub helper .c program couldn't be created." + hb_osNewLine() )
|
||||
IF ! Empty( s_cPRGSTUB )
|
||||
FErase( s_cPRGSTUB )
|
||||
ENDIF
|
||||
AEval( ListCook( s_aPRG, NIL, ".c" ), {|tmp| FErase( tmp ) } )
|
||||
PauseForKey()
|
||||
RETURN 5
|
||||
ENDIF
|
||||
AAdd( s_aC, s_cCSTUB )
|
||||
s_cCSTUB := NIL
|
||||
ENDIF
|
||||
|
||||
/* Library list assembly */
|
||||
@@ -1503,9 +1522,6 @@ FUNCTION Main( ... )
|
||||
|
||||
/* Cleanup */
|
||||
|
||||
IF ! Empty( s_cPRGSTUB )
|
||||
FErase( s_cPRGSTUB )
|
||||
ENDIF
|
||||
IF ! Empty( s_cCSTUB )
|
||||
FErase( s_cCSTUB )
|
||||
ENDIF
|
||||
@@ -1534,6 +1550,37 @@ FUNCTION Main( ... )
|
||||
|
||||
RETURN nErrorLevel
|
||||
|
||||
STATIC FUNCTION SetupForGT( cGT, /* @ */ s_cGT, /* @ */ s_lGUI )
|
||||
|
||||
IF IsValidHarbourID( cGT )
|
||||
|
||||
s_cGT := cGT
|
||||
|
||||
/* Setup default GUI mode for core/contrib GTs:
|
||||
(please don't add 3rd parties here) */
|
||||
SWITCH Lower( cGT )
|
||||
CASE "gtcgi"
|
||||
CASE "gtcrs"
|
||||
CASE "gtpca"
|
||||
CASE "gtsln"
|
||||
CASE "gtstd"
|
||||
CASE "gtwin"
|
||||
s_lGUI := .F.
|
||||
EXIT
|
||||
|
||||
CASE "gtgui"
|
||||
CASE "gtwvt"
|
||||
CASE "gtwvg" /* Harbour contrib */
|
||||
s_lGUI := .T.
|
||||
EXIT
|
||||
|
||||
ENDSWITCH
|
||||
|
||||
RETURN .T.
|
||||
ENDIF
|
||||
|
||||
RETURN .F.
|
||||
|
||||
STATIC FUNCTION SelfCOMP()
|
||||
LOCAL cCompiler := hb_Compiler()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user