2010-07-30 20:17 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)

* utils/hbmk2/hbmk2.prg
    + Will now autodetect /bin/plat/comp bin dir, if present.
    ! Fixed to set dynlib dir to bin dir on non-*nix platforms.
      As a conseqeunce bin dir will now be added to the libpath
      list on these platforms. Allowing to access .dlls directly
      in compilers that support it (mingw).
    ! Fixed to use HB_INSTALL_PREFIX instead of bin dir as a base
      to find addons/contribs dir structures (for .hbc autofind).
    ! Fixed to really include hbmaindllp stub added in recent commit.
      Anyhow, loading contrib .dlls dynamically still don't work.

  * contrib/make.hbs
    ! Fixed to honor user setting when creating dynlib in stdalone mode.

  * contrib/hbcomm/hbcomm.prg
    * space @ EOL.
This commit is contained in:
Viktor Szakats
2010-07-30 18:18:12 +00:00
parent a7a0af8bdd
commit 464f958e32
4 changed files with 58 additions and 16 deletions

View File

@@ -16,6 +16,24 @@
The license applies to all entries newer than 2009-04-28.
*/
2010-07-30 20:17 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* utils/hbmk2/hbmk2.prg
+ Will now autodetect /bin/plat/comp bin dir, if present.
! Fixed to set dynlib dir to bin dir on non-*nix platforms.
As a conseqeunce bin dir will now be added to the libpath
list on these platforms. Allowing to access .dlls directly
in compilers that support it (mingw).
! Fixed to use HB_INSTALL_PREFIX instead of bin dir as a base
to find addons/contribs dir structures (for .hbc autofind).
! Fixed to really include hbmaindllp stub added in recent commit.
Anyhow, loading contrib .dlls dynamically still don't work.
* contrib/make.hbs
! Fixed to honor user setting when creating dynlib in stdalone mode.
* contrib/hbcomm/hbcomm.prg
* space @ EOL.
2010-07-30 18:13 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* utils/hbmk2/hbmk2.prg
+ Added -depimplib[-] option to contrib implib creation for

View File

@@ -74,7 +74,7 @@ FUNCTION INIT_PORT( cPort, nBaud, nData, nParity, nStop, nBufferSize )
hb_comSetDevice( nPort, cPort )
ENDIF
hb_comClose( nPort )
hb_comClose( nPort )
IF hb_comOpen( nPort )

View File

@@ -216,7 +216,7 @@ PROCEDURE Standalone( aParams, hPackageList )
GetEnv( "HB_BUILD_CONTRIB_DYN" ) == "yes" .AND. ;
hb_FileExists( PathSepToSelf( FNameExtSet( cProject, ".hbc" ) ) )
call_hbmk2( cProject, cOptions, " " + FNameExtSet( cProject, ".hbc" ) )
call_hbmk2( cProject, cOptions + cOptionsUser, " " + FNameExtSet( cProject, ".hbc" ) )
ENDIF
NEXT
ENDIF

View File

@@ -1686,7 +1686,15 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
/* Finish detecting bin/lib/include dirs */
IF Empty( l_cHB_INSTALL_BIN )
l_cHB_INSTALL_BIN := PathNormalize( DirAddPathSep( l_cHB_INSTALL_PREFIX ) + "bin" )
/* Autodetect multi-compiler/platform bin structure (also .dlls are in bin dir on non-*nix platforms) */
IF hb_DirExists( tmp := PathNormalize( DirAddPathSep( l_cHB_INSTALL_PREFIX ) ) + "bin" +;
hb_ps() + hbmk[ _HBMK_cPLAT ] +;
hb_ps() + hbmk[ _HBMK_cCOMP ] +;
iif( Empty( hbmk[ _HBMK_cBUILD ] ), "", PathSepToSelf( hbmk[ _HBMK_cBUILD ] ) ) )
l_cHB_INSTALL_BIN := tmp
ELSE
l_cHB_INSTALL_BIN := PathNormalize( DirAddPathSep( l_cHB_INSTALL_PREFIX ) + "bin" )
ENDIF
ENDIF
IF Empty( l_cHB_INSTALL_LIB )
/* Autodetect multi-compiler/platform lib structure */
@@ -1703,7 +1711,13 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
l_cHB_INSTALL_INC := PathNormalize( DirAddPathSep( l_cHB_INSTALL_PREFIX ) + "include" )
ENDIF
DEFAULT l_cHB_INSTALL_DYN TO l_cHB_INSTALL_LIB
IF l_cHB_INSTALL_DYN == NIL
IF hbmk[ _HBMK_cPLAT ] $ "win|wce|os2|dos"
l_cHB_INSTALL_DYN := l_cHB_INSTALL_BIN
ELSE
l_cHB_INSTALL_DYN := l_cHB_INSTALL_LIB
ENDIF
ENDIF
IF hbmk[ _HBMK_lInfo ]
hbmk_OutStd( hbmk, hb_StrFormat( I_( "Using Harbour: %1$s %2$s %3$s %4$s" ), l_cHB_INSTALL_BIN, l_cHB_INSTALL_INC, l_cHB_INSTALL_LIB, l_cHB_INSTALL_DYN ) )
@@ -1730,9 +1744,9 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
AAddNotEmpty( hbmk[ _HBMK_aINCPATH ], l_cHB_INSTALL_INC )
/* Add default search paths for .hbc files */
l_cHB_INSTALL_ADD := PathNormalize( l_cHB_INSTALL_BIN + hb_ps() + ".." )
AAdd( hbmk[ _HBMK_aLIBPATH ], l_cHB_INSTALL_ADD + hb_ps() + "contrib" + hb_ps() + "%{hb_name}" )
AAdd( hbmk[ _HBMK_aLIBPATH ], l_cHB_INSTALL_ADD + hb_ps() + "addons" + hb_ps() + "%{hb_name}" )
l_cHB_INSTALL_ADD := PathNormalize( DirAddPathSep( l_cHB_INSTALL_PREFIX ) )
AAdd( hbmk[ _HBMK_aLIBPATH ], l_cHB_INSTALL_ADD + "contrib" + hb_ps() + "%{hb_name}" )
AAdd( hbmk[ _HBMK_aLIBPATH ], l_cHB_INSTALL_ADD + "addons" + hb_ps() + "%{hb_name}" )
/* Build with shared libs by default, if we're installed to default system locations. */
@@ -4333,6 +4347,15 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
AAdd( hbmk[ _HBMK_aOPTC ], "-DHB_DYNLIB" )
ENDIF
ENDIF
#if 0
IF hbmk[ _HBMK_lCreateDyn ]
IF !( _HBMODE_IS_XHB( hbmk[ _HBMK_nHBMODE ] ) .OR. ;
hbmk[ _HBMK_nHBMODE ] == _HBMODE_HB10 .OR. ;
hbmk[ _HBMK_nHBMODE ] == _HBMODE_HB20 )
AAdd( hbmk[ _HBMK_aOPTPRG ], "-DHB_DYNLIB" )
ENDIF
ENDIF
#endif
ENDIF
/* Call plugins */
@@ -4733,16 +4756,16 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
ENDIF
ENDIF
lHBMAINDLLP := AScan( hbmk[ _HBMK_aLIBUSER ], {| tmp | hb_FileMatch( tmp, "hbmaindllp" ) } ) > 0
lHBMAINDLLP := lStopAfterCComp .AND. hbmk[ _HBMK_lCreateDyn ] .AND. ;
AScan( hbmk[ _HBMK_aLIBUSER ], {| tmp | hb_FileMatch( tmp, "hbmaindllp" ) } ) > 0
/* HACK: Override entry point requested by user or detected by us,
and override the GT if requested by user. */
IF ( ! lStopAfterCComp .OR. hbmk[ _HBMK_lDynVM ] ) .AND. ;
( l_cMAIN != NIL .OR. ;
! Empty( hbmk[ _HBMK_aLIBUSERGT ] ) .OR. ;
hbmk[ _HBMK_cGT ] != NIL .OR. ;
l_cCMAIN != NIL .OR. ;
lHBMAINDLLP )
IF ( ( ! lStopAfterCComp .OR. hbmk[ _HBMK_lDynVM ] ) .AND. ;
( l_cMAIN != NIL .OR. ;
! Empty( hbmk[ _HBMK_aLIBUSERGT ] ) .OR. ;
hbmk[ _HBMK_cGT ] != NIL .OR. ;
l_cCMAIN != NIL ) ) .OR. lHBMAINDLLP
l_cCSTUB := DirAddPathSep( hbmk[ _HBMK_cWorkDir ] ) + "_hbmkaut.c"
@@ -4786,10 +4809,11 @@ FUNCTION hbmk2( aArgs, nArgTarget, /* @ */ lPause, nLevel )
cFile := '/* This temp source file was generated by hbmk2 tool. */' + Chr( 10 ) +;
'/* You can safely delete it. */' + Chr( 10 ) +;
'' + Chr( 10 ) +;
'#include "hbapi.h"' + Chr( 10 )
'#include "hbapi.h"' + Chr( 10 ) +;
'' + Chr( 10 )
IF ! Empty( array ) .OR. l_cCMAIN != NIL
AEval( array, {| tmp, i | array[ i ] := FuncNameEncode( tmp ) } )
cFile += '' + Chr( 10 )
AEval( array, {| tmp | cFile += 'HB_FUNC_EXTERN( ' + tmp + ' );' + Chr( 10 ) } )
IF l_cCMAIN != NIL
IF ! Empty( array )