2009-05-01 13:17 UTC+0200 Viktor Szakats (harbour.01 syenar hu)

* bin/postinst.bat
    + Added generation of libpq.lib from .dll for msvc. (not tested)
    + Added generation of QT implibs for msvc. (not tested)
    + Copying QT implibs for mingw.

  * source/common/hbverdsp.c
    ! Minor in comment.

  * utils/hbmk2/hbmk2.prg
    + Added MT support for C compilation phase.
      Single input compilers aren't covered yet (gcc, pocc).
    + Added -debugtime internal option to measure running time.
This commit is contained in:
Viktor Szakats
2009-05-01 11:18:17 +00:00
parent 6713cf1388
commit db3d6f99ab
4 changed files with 117 additions and 74 deletions

View File

@@ -17,6 +17,20 @@
past entries belonging to these authors: Viktor Szakats.
*/
2009-05-01 13:17 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* bin/postinst.bat
+ Added generation of libpq.lib from .dll for msvc. (not tested)
+ Added generation of QT implibs for msvc. (not tested)
+ Copying QT implibs for mingw.
* source/common/hbverdsp.c
! Minor in comment.
* utils/hbmk2/hbmk2.prg
+ Added MT support for C compilation phase.
Single input compilers aren't covered yet (gcc, pocc).
+ Added -debugtime internal option to measure running time.
2009-04-30 15:25 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/utils/hbmk2/Makefile
! do not use hbvmmt on platforms which does not support MT

View File

@@ -82,27 +82,32 @@ if "%HB_BUILD_IMPLIB%" == "yes" (
if "%HB_COMPILER%" == "msvc" (
if exist "%HB_DIR_ADS%\Redistribute\ace32.lib" copy /b /y "%HB_DIR_ADS%\Redistribute\ace32.lib" "%HB_LIB_INSTALL%\ace32.lib"
if exist "%HB_DIR_ADS%\ace32.lib" copy /b /y "%HB_DIR_ADS%\ace32.lib" "%HB_LIB_INSTALL%\ace32.lib"
if exist "%HB_DIR_ADS%\32bit\ace32.lib" copy /b /y "%HB_DIR_ADS%\32bit\ace32.lib" "%HB_LIB_INSTALL%\ace32.lib"
if exist "%HB_DIR_ALLEGRO%\lib\alleg.lib" copy /b /y "%HB_DIR_ALLEGRO%\lib\alleg.lib" "%HB_LIB_INSTALL%\alleg.lib"
if exist "%HB_DIR_APOLLO%\sde61.dll" call :P_MSVC_IMPLIB "%HB_DIR_APOLLO%\sde61.dll" "%HB_LIB_INSTALL%\sde61.lib"
if exist "%HB_DIR_BLAT%\full\blat.lib" copy /b /y "%HB_DIR_BLAT%\full\blat.lib" "%HB_LIB_INSTALL%\blat.lib"
if exist "%HB_DIR_CURL%\libcurl.dll" call :P_MSVC_IMPLIB "%HB_DIR_CURL%\libcurl.dll" "%HB_LIB_INSTALL%\libcurl.lib"
if exist "%HB_DIR_CURL%\bin\libcurl.dll" call :P_MSVC_IMPLIB "%HB_DIR_CURL%\bin\libcurl.dll" "%HB_LIB_INSTALL%\libcurl.lib"
if exist "%HB_DIR_FIREBIRD%\lib\fbclient_ms.lib" copy /b /y "%HB_DIR_FIREBIRD%\lib\fbclient_ms.lib" "%HB_LIB_INSTALL%\fbclient.lib"
if exist "%HB_DIR_FREEIMAGE%\Dist\FreeImage.lib" copy /b /y "%HB_DIR_FREEIMAGE%\Dist\FreeImage.lib" "%HB_LIB_INSTALL%\FreeImage.lib"
if exist "%HB_DIR_GD%\lib\bgd.lib" copy /b /y "%HB_DIR_GD%\lib\bgd.lib" "%HB_LIB_INSTALL%\bgd.lib"
if exist "%HB_DIR_LIBHARU%\libhpdf.lib" copy /b /y "%HB_DIR_LIBHARU%\libhpdf.lib" "%HB_LIB_INSTALL%\libhpdf.lib"
if exist "%HB_DIR_LIBHARU%\lib_dll\libhpdf.lib" copy /b /y "%HB_DIR_LIBHARU%\lib_dll\libhpdf.lib" "%HB_LIB_INSTALL%\libhpdf.lib"
if exist "%HB_DIR_MYSQL%\lib\opt\libmySQL.lib" copy /b /y "%HB_DIR_MYSQL%\lib\opt\libmySQL.lib" "%HB_LIB_INSTALL%\libmySQL.lib"
if exist "%HB_DIR_OPENSSL%\out32dll\libeay32.lib" copy /b /y "%HB_DIR_OPENSSL%\out32dll\libeay32.lib" "%HB_LIB_INSTALL%\libeay32.lib"
if exist "%HB_DIR_OPENSSL%\dll\libeay32.lib" copy /b /y "%HB_DIR_OPENSSL%\dll\libeay32.lib" "%HB_LIB_INSTALL%\libeay32.lib"
if exist "%HB_DIR_OPENSSL%\libeay32.lib" copy /b /y "%HB_DIR_OPENSSL%\libeay32.lib" "%HB_LIB_INSTALL%\libeay32.lib"
if exist "%HB_DIR_OPENSSL%\out32dll\ssleay32.lib" copy /b /y "%HB_DIR_OPENSSL%\out32dll\ssleay32.lib" "%HB_LIB_INSTALL%\ssleay32.lib"
if exist "%HB_DIR_OPENSSL%\dll\ssleay32.lib" copy /b /y "%HB_DIR_OPENSSL%\dll\ssleay32.lib" "%HB_LIB_INSTALL%\ssleay32.lib"
if exist "%HB_DIR_OPENSSL%\ssleay32.lib" copy /b /y "%HB_DIR_OPENSSL%\ssleay32.lib" "%HB_LIB_INSTALL%\ssleay32.lib"
if exist "%HB_DIR_PGSQL%\lib\libpq.lib" copy /b /y "%HB_DIR_PGSQL%\lib\libpq.lib" "%HB_LIB_INSTALL%\libpq.lib"
if exist "%HB_DIR_ADS%\Redistribute\ace32.lib" copy /b /y "%HB_DIR_ADS%\Redistribute\ace32.lib" "%HB_LIB_INSTALL%\ace32.lib"
if exist "%HB_DIR_ADS%\ace32.lib" copy /b /y "%HB_DIR_ADS%\ace32.lib" "%HB_LIB_INSTALL%\ace32.lib"
if exist "%HB_DIR_ADS%\32bit\ace32.lib" copy /b /y "%HB_DIR_ADS%\32bit\ace32.lib" "%HB_LIB_INSTALL%\ace32.lib"
if exist "%HB_DIR_ALLEGRO%\lib\alleg.lib" copy /b /y "%HB_DIR_ALLEGRO%\lib\alleg.lib" "%HB_LIB_INSTALL%\alleg.lib"
if exist "%HB_DIR_APOLLO%\sde61.dll" call :P_MSVC_IMPLIB "%HB_DIR_APOLLO%\sde61.dll" "%HB_LIB_INSTALL%\sde61.lib"
if exist "%HB_DIR_BLAT%\full\blat.lib" copy /b /y "%HB_DIR_BLAT%\full\blat.lib" "%HB_LIB_INSTALL%\blat.lib"
if exist "%HB_DIR_CURL%\libcurl.dll" call :P_MSVC_IMPLIB "%HB_DIR_CURL%\libcurl.dll" "%HB_LIB_INSTALL%\libcurl.lib"
if exist "%HB_DIR_CURL%\bin\libcurl.dll" call :P_MSVC_IMPLIB "%HB_DIR_CURL%\bin\libcurl.dll" "%HB_LIB_INSTALL%\libcurl.lib"
if exist "%HB_DIR_FIREBIRD%\lib\fbclient_ms.lib" copy /b /y "%HB_DIR_FIREBIRD%\lib\fbclient_ms.lib" "%HB_LIB_INSTALL%\fbclient.lib"
if exist "%HB_DIR_FREEIMAGE%\Dist\FreeImage.lib" copy /b /y "%HB_DIR_FREEIMAGE%\Dist\FreeImage.lib" "%HB_LIB_INSTALL%\FreeImage.lib"
if exist "%HB_DIR_GD%\lib\bgd.lib" copy /b /y "%HB_DIR_GD%\lib\bgd.lib" "%HB_LIB_INSTALL%\bgd.lib"
if exist "%HB_DIR_LIBHARU%\libhpdf.lib" copy /b /y "%HB_DIR_LIBHARU%\libhpdf.lib" "%HB_LIB_INSTALL%\libhpdf.lib"
if exist "%HB_DIR_LIBHARU%\lib_dll\libhpdf.lib" copy /b /y "%HB_DIR_LIBHARU%\lib_dll\libhpdf.lib" "%HB_LIB_INSTALL%\libhpdf.lib"
if exist "%HB_DIR_MYSQL%\lib\opt\libmySQL.lib" copy /b /y "%HB_DIR_MYSQL%\lib\opt\libmySQL.lib" "%HB_LIB_INSTALL%\libmySQL.lib"
if exist "%HB_DIR_OPENSSL%\out32dll\libeay32.lib" copy /b /y "%HB_DIR_OPENSSL%\out32dll\libeay32.lib" "%HB_LIB_INSTALL%\libeay32.lib"
if exist "%HB_DIR_OPENSSL%\dll\libeay32.lib" copy /b /y "%HB_DIR_OPENSSL%\dll\libeay32.lib" "%HB_LIB_INSTALL%\libeay32.lib"
if exist "%HB_DIR_OPENSSL%\libeay32.lib" copy /b /y "%HB_DIR_OPENSSL%\libeay32.lib" "%HB_LIB_INSTALL%\libeay32.lib"
if exist "%HB_DIR_OPENSSL%\out32dll\ssleay32.lib" copy /b /y "%HB_DIR_OPENSSL%\out32dll\ssleay32.lib" "%HB_LIB_INSTALL%\ssleay32.lib"
if exist "%HB_DIR_OPENSSL%\dll\ssleay32.lib" copy /b /y "%HB_DIR_OPENSSL%\dll\ssleay32.lib" "%HB_LIB_INSTALL%\ssleay32.lib"
if exist "%HB_DIR_OPENSSL%\ssleay32.lib" copy /b /y "%HB_DIR_OPENSSL%\ssleay32.lib" "%HB_LIB_INSTALL%\ssleay32.lib"
if exist "%HB_DIR_PGSQL%\bin\libpq.dll" call :P_MSVC_IMPLIB "%HB_DIR_PGSQL%\bin\libpq.dll" "%HB_LIB_INSTALL%\libpq.lib"
if exist "%HB_DIR_PGSQL%\lib\libpq.lib" copy /b /y "%HB_DIR_PGSQL%\lib\libpq.lib" "%HB_LIB_INSTALL%\libpq.lib"
if exist "%HB_DIR_QT%\bin\QtCore4.dll" call :P_MSVC_IMPLIB "%HB_DIR_QT%\bin\QtCore4.dll" "%HB_LIB_INSTALL%\QtCore4.lib"
if exist "%HB_DIR_QT%\bin\QtGui4.dll" call :P_MSVC_IMPLIB "%HB_DIR_QT%\bin\QtGui4.dll" "%HB_LIB_INSTALL%\QtGui4.lib"
if exist "%HB_DIR_QT%\bin\QtNetwork4.dll" call :P_MSVC_IMPLIB "%HB_DIR_QT%\bin\QtNetwork4.dll" "%HB_LIB_INSTALL%\QtNetwork4.lib"
if exist "%HB_DIR_QT%\bin\QtWebKit4.dll" call :P_MSVC_IMPLIB "%HB_DIR_QT%\bin\QtWebKit4.dll" "%HB_LIB_INSTALL%\QtWebKit4.lib"
goto END
)
@@ -129,6 +134,10 @@ if "%HB_BUILD_IMPLIB%" == "yes" (
if exist "%HB_DIR_OPENSSL%\dll\ssleay32.lib" copy /b /y "%HB_DIR_OPENSSL%\dll\ssleay32.lib" "%HB_LIB_INSTALL%\libssleay32.a"
if exist "%HB_DIR_OPENSSL%\ssleay32.lib" copy /b /y "%HB_DIR_OPENSSL%\ssleay32.lib" "%HB_LIB_INSTALL%\libssleay32.a"
if exist "%HB_DIR_PGSQL%\lib\libpq.lib" copy /b /y "%HB_DIR_PGSQL%\lib\libpq.lib" "%HB_LIB_INSTALL%\libpq.a"
if exist "%HB_DIR_QT%\lib\libQtCore4.a" copy /b /y "%HB_DIR_QT%\lib\libQtCore4.a" "%HB_LIB_INSTALL%\libQtCore4.a"
if exist "%HB_DIR_QT%\lib\libQtGui4.a" copy /b /y "%HB_DIR_QT%\lib\libQtGui4.a" "%HB_LIB_INSTALL%\libQtGui4.a"
if exist "%HB_DIR_QT%\lib\libQtNetwork4.a" copy /b /y "%HB_DIR_QT%\lib\libQtNetwork4.a" "%HB_LIB_INSTALL%\libQtNetwork4.a"
if exist "%HB_DIR_QT%\lib\libQtWebKit4.a" copy /b /y "%HB_DIR_QT%\lib\libQtWebKit4.a" "%HB_LIB_INSTALL%\libQtWebKit4.a"
goto END
)

View File

@@ -4,7 +4,7 @@
/*
* Harbour Project source code:
* Display build information - code moved from hb_ver.c
* Display build information
*
* Copyright 1999 {list of individual authors and e-mail addresses}
* www - http://www.harbour-project.org

View File

@@ -138,6 +138,7 @@ STATIC s_aINCPATH
STATIC s_aINCTRYPATH
STATIC s_lREBUILD := .F.
STATIC s_lDEBUGTIME := .F.
STATIC s_lDEBUGINC := .F.
STATIC s_lDEBUGSTUB := .F.
@@ -359,6 +360,7 @@ FUNCTION hbmk( aArgs )
LOCAL aCommand
#endif
LOCAL cOpt_CompC
LOCAL cOpt_CompCLoop
LOCAL cOpt_Link
LOCAL cOpt_Res
LOCAL cOpt_Lib
@@ -414,10 +416,12 @@ FUNCTION hbmk( aArgs )
hb_ntos( hb_Version( HB_VERSION_MINOR ) ) + "." +;
hb_ntos( hb_Version( HB_VERSION_RELEASE ) )
LOCAL aPRG_TODO
LOCAL aTODO
LOCAL aThreads
LOCAL thread
LOCAL nStart := secondscpu()
IF Empty( aArgs )
ShowHeader()
ShowHelp()
@@ -956,6 +960,7 @@ FUNCTION hbmk( aArgs )
CASE cParamL == "-opt" ; s_lOPT := .T.
CASE cParamL == "-opt-" .OR. ;
cParamL == "-noopt" ; s_lOPT := .F.
CASE cParamL == "-debugtime" ; s_lDEBUGTIME := .T.
CASE cParamL == "-debuginc" ; s_lDEBUGINC := .T.
CASE cParamL == "-debugstub" ; s_lDEBUGSTUB := .T.
CASE cParamL == "-nulrdd" ; s_lNULRDD := .T.
@@ -2446,9 +2451,9 @@ FUNCTION hbmk( aArgs )
#if defined( HBMK_INTEGRATED_COMPILER )
aThreads := {}
FOR EACH aPRG_TODO IN ArraySplit( s_aPRG_TODO, s_nJOBS )
FOR EACH aTODO IN ArraySplit( s_aPRG_TODO, s_nJOBS )
aCommand := ArrayAJoin( { { iif( lCreateLib .OR. lCreateDyn, "-n1", "-n2" ) },;
aPRG_TODO,;
aTODO,;
iif( s_lBLDFLGP, { " " + cSelfFlagPRG }, {} ),;
ListToArray( iif( ! Empty( GetEnv( "HB_USER_PRGFLAGS" ) ), " " + GetEnv( "HB_USER_PRGFLAGS" ), "" ) ),;
s_aOPTPRG } )
@@ -2456,7 +2461,7 @@ FUNCTION hbmk( aArgs )
IF s_lTRACE
IF ! s_lQuiet
IF hb_mtvm()
OutStd( "hbmk: Harbour compiler command (internal) job #" + hb_ntos( aPRG_TODO:__enumIndex() ) + ":" + hb_osNewLine() )
OutStd( "hbmk: Harbour compiler command (internal) job #" + hb_ntos( aTODO:__enumIndex() ) + ":" + hb_osNewLine() )
ELSE
OutStd( "hbmk: Harbour compiler command (internal):" + hb_osNewLine() )
ENDIF
@@ -2467,7 +2472,7 @@ FUNCTION hbmk( aArgs )
IF ! s_lDONTEXEC
IF hb_mtvm()
AAdd( aThreads, hb_threadStart( @hb_compile(), "", aCommand ) )
AAdd( aThreads, { hb_threadStart( @hb_compile(), "", aCommand ), aCommand } )
ELSE
IF ( tmp := hb_compile( "", aCommand ) ) != 0
OutErr( "hbmk: Error: Running Harbour compiler. " + hb_ntos( tmp ) + hb_osNewLine() )
@@ -2480,10 +2485,10 @@ FUNCTION hbmk( aArgs )
IF hb_mtvm()
FOR EACH thread IN aThreads
hb_threadJoin( thread, @tmp )
hb_threadJoin( thread[ 1 ], @tmp )
IF tmp != 0
OutErr( "hbmk: Error: Running Harbour compiler job #" + hb_ntos( thread:__enumIndex() ) + ". " + hb_ntos( tmp ) + hb_osNewLine() )
OutErr( ArrayToList( aCommand ) + hb_osNewLine() )
OutErr( ArrayToList( thread[ 2 ] ) + hb_osNewLine() )
RETURN 6
ENDIF
NEXT
@@ -2832,47 +2837,73 @@ FUNCTION hbmk( aArgs )
ENDIF
NEXT
ELSE
cOpt_CompC := StrTran( cOpt_CompC, "{LC}" , ArrayToList( ArrayJoin( ListDirExt( s_aPRG_TODO, cWorkDir, ".c" ), s_aC_TODO ) ) )
cOpt_CompC := StrTran( cOpt_CompC, "{OO}" , PathSepToTarget( FN_ExtSet( s_cPROGNAME, cObjExt ) ) )
cOpt_CompC := StrTran( cOpt_CompC, "{OW}" , PathSepToTarget( cWorkDir ) )
cOpt_CompC := AllTrim( cOpt_CompC )
aThreads := {}
FOR EACH aTODO IN ArraySplit( ArrayJoin( ListDirExt( s_aPRG_TODO, cWorkDir, ".c" ), s_aC_TODO ), s_nJOBS )
/* Handle moving the whole command line to a script, if requested. */
IF "{SCRIPT}" $ cOpt_CompC
fhnd := hb_FTempCreateEx( @cScriptFile, NIL, NIL, ".cpl" )
IF fhnd != F_ERROR
FWrite( fhnd, StrTran( cOpt_CompC, "{SCRIPT}", "" ) )
FClose( fhnd )
cOpt_CompC := "@" + cScriptFile
ELSE
OutErr( "hbmk: Warning: C compiler script couldn't be created, continuing in command line." + hb_osNewLine() )
cOpt_CompCLoop := AllTrim( StrTran( cOpt_CompC, "{LC}" , ArrayToList( aTODO ) ) )
/* Handle moving the whole command line to a script, if requested. */
IF "{SCRIPT}" $ cOpt_CompCLoop
fhnd := hb_FTempCreateEx( @cScriptFile, NIL, NIL, ".cpl" )
IF fhnd != F_ERROR
FWrite( fhnd, StrTran( cOpt_CompCLoop, "{SCRIPT}", "" ) )
FClose( fhnd )
cOpt_CompCLoop := "@" + cScriptFile
ELSE
OutErr( "hbmk: Warning: C compiler script couldn't be created, continuing in command line." + hb_osNewLine() )
ENDIF
ENDIF
ENDIF
cCommand := cBin_CompC + " " + cOpt_CompC
cCommand := cBin_CompC + " " + cOpt_CompCLoop
IF s_lTRACE
IF ! s_lQuiet
OutStd( "hbmk: C compiler command:" + hb_osNewLine() )
IF s_lTRACE
IF ! s_lQuiet
IF hb_mtvm()
OutStd( "hbmk: C compiler command job #" + hb_ntos( aTODO:__enumIndex() ) + ":" + hb_osNewLine() )
ELSE
OutStd( "hbmk: C compiler command:" + hb_osNewLine() )
ENDIF
ENDIF
OutStd( cCommand + hb_osNewLine() )
IF ! Empty( cScriptFile )
OutStd( "hbmk: C compiler script:" + hb_osNewLine() )
OutStd( hb_MemoRead( cScriptFile ) + hb_osNewLine() )
ENDIF
ENDIF
OutStd( cCommand + hb_osNewLine() )
IF ! s_lDONTEXEC
IF hb_mtvm()
AAdd( aThreads, { hb_threadStart( @hbmk_run(), cCommand ), cCommand } )
ELSE
IF ( tmp := hbmk_run( cCommand ) ) != 0
OutErr( "hbmk: Error: Running C compiler. " + hb_ntos( tmp ) + ":" + hb_osNewLine() )
IF ! s_lQuiet
OutErr( cCommand + hb_osNewLine() )
ENDIF
nErrorLevel := 6
ENDIF
ENDIF
ENDIF
IF ! Empty( cScriptFile )
OutStd( "hbmk: C compiler script:" + hb_osNewLine() )
OutStd( hb_MemoRead( cScriptFile ) + hb_osNewLine() )
FErase( cScriptFile )
ENDIF
ENDIF
NEXT
IF ! s_lDONTEXEC .AND. ( tmp := hbmk_run( cCommand ) ) != 0
OutErr( "hbmk: Error: Running C compiler. " + hb_ntos( tmp ) + ":" + hb_osNewLine() )
IF ! s_lQuiet
OutErr( cCommand + hb_osNewLine() )
ENDIF
nErrorLevel := 6
ENDIF
IF ! Empty( cScriptFile )
FErase( cScriptFile )
IF hb_mtvm()
FOR EACH thread IN aThreads
hb_threadJoin( thread[ 1 ], @tmp )
IF tmp != 0
OutErr( "hbmk: Error: Running C compiler job #" + hb_ntos( thread:__enumIndex() ) + ". " + hb_ntos( tmp ) + hb_osNewLine() )
IF ! s_lQuiet
OutErr( thread[ 2 ] + hb_osNewLine() )
ENDIF
nErrorLevel := 6
ENDIF
NEXT
ENDIF
ENDIF
ELSE
@@ -3203,6 +3234,10 @@ FUNCTION hbmk( aArgs )
ENDIF
ENDIF
IF s_lDEBUGTIME
OutStd( "hbmk: Running time: " + hb_ntos( secondscpu() - nStart ) + "s" + hb_osNewLine() )
ENDIF
RETURN nErrorLevel
STATIC FUNCTION SetupForGT( cGT, /* @ */ s_cGT, /* @ */ s_lGUI )
@@ -4963,9 +4998,6 @@ STATIC FUNCTION VCSDetect( cDir )
RETURN _VCS_UNKNOWN
STATIC FUNCTION VCSID( cDir, /* @ */ cType )
#ifdef _VCSID_USE_PROCESS
LOCAL hStdOut
#endif
LOCAL hnd, cStdOut
LOCAL nType := VCSDetect( cDir )
LOCAL cCommand
@@ -4992,17 +5024,6 @@ STATIC FUNCTION VCSID( cDir, /* @ */ cType )
IF ! Empty( cCommand )
#ifdef _VCSID_USE_PROCESS
/* This is cleaner, but won't work when using aliases/wrappers
for version control commands. */
hnd := hb_processOpen( cCommand,, @hStdOut )
IF hnd != F_ERROR
cStdOut := Space( 256 )
tmp := FRead( hStdOut, @cStdOut, Len( cStdOut ) )
cStdOut := Left( cStdOut, tmp )
hb_processClose( hnd )
FClose( hStdOut )
#else
hnd := hb_FTempCreateEx( @cTemp )
IF hnd != F_ERROR
FClose( hnd )
@@ -5010,7 +5031,6 @@ STATIC FUNCTION VCSID( cDir, /* @ */ cType )
hb_run( cCommand )
cStdOut := hb_MemoRead( cTemp )
FErase( cTemp )
#endif
SWITCH nType
CASE _VCS_SVN