2010-03-22 01:33 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)

* utils/hbmk2/hbmk2.prg
    + Added undocumented '-mkimplibms' option to allow for users
      to make bcc implib happy for some .dlls (translated to
      -a implib.exe option). Ugly solution, needed because bcc 
      chose not to follow standards.

  * bin/postinst.bat
    + Some adjustments to hbmk2-based implib generation cmdlines.
    + Added exception to use static ocilibs with mingw.

  * bin/postinst.bat
  - bin/hb-mkimp.prg
  * package/winuni/mpkg_win_uni_extra_copy.bat
  * package/winuni/mpkg_win_uni.bat
  * package/winuni/mpkg_win_uni.nsi
    + Switched HB_BUILD_IMPLIB build option to use hbmk2
      to create implibs instead of local solution (hb-mkimp.prg).
      Note, this means that implibs will now always be
      created dynamically from .dll, even when a package
      offers pre-built .lib for the compiler. This will
      in practice cause a change msvc and pocc compilers.
      This also means that from now on it's enough to have
      the .dll to create implibs.
      It's also easier for users to create implibs using
      hbmk2 any time, so it's possible that HB_BUILD_IMPLIB
      build-time option will be deleted in the future.
    ; Not tested yet.
This commit is contained in:
Viktor Szakats
2010-03-22 00:34:28 +00:00
parent e41a40e72f
commit e808b13bc1
7 changed files with 69 additions and 239 deletions

View File

@@ -17,6 +17,35 @@
past entries belonging to author(s): Viktor Szakats.
*/
2010-03-22 01:33 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* utils/hbmk2/hbmk2.prg
+ Added undocumented '-mkimplibms' option to allow for users
to make bcc implib happy for some .dlls (translated to
-a implib.exe option). Ugly solution, needed because bcc
chose not to follow standards.
* bin/postinst.bat
+ Some adjustments to hbmk2-based implib generation cmdlines.
+ Added exception to use static ocilibs with mingw.
* bin/postinst.bat
- bin/hb-mkimp.prg
* package/winuni/mpkg_win_uni_extra_copy.bat
* package/winuni/mpkg_win_uni.bat
* package/winuni/mpkg_win_uni.nsi
+ Switched HB_BUILD_IMPLIB build option to use hbmk2
to create implibs instead of local solution (hb-mkimp.prg).
Note, this means that implibs will now always be
created dynamically from .dll, even when a package
offers pre-built .lib for the compiler. This will
in practice cause a change msvc and pocc compilers.
This also means that from now on it's enough to have
the .dll to create implibs.
It's also easier for users to create implibs using
hbmk2 any time, so it's possible that HB_BUILD_IMPLIB
build-time option will be deleted in the future.
; Not tested yet.
2010-03-22 01:02 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* utils/hbmk2/hbmk2.prg
+ Finishing touches to -mkimplib option:
@@ -38,7 +67,7 @@
for bcc and leave it off. This leaves implibs
working for most .dlls we currently use, but will
break some (blat, curl, cairo, pq, alleg from
contrib).
contrib). [DONE - with hack]
* config/win/xcc.mk
* utils/hbmk2/hbmk2.prg

View File

@@ -1,206 +0,0 @@
/*
* $Id$
*/
/*
* Copyright 2009-2010 Viktor Szakats (harbour.01 syenar.hu)
* See COPYING for licensing terms.
*
* Create import libs for various Windows compilers
*
* This script requires:
* - C compiler in PATH
* - HB_COMPILER and HB_LIB_INSTALL envvars set
* - HB_WITH_* envvars pointing to installed 3rd party _headers_
*/
/* TOFIX: Ugly hack to avoid #include "fileio.ch" */
#define F_ERROR ( -1 )
PROCEDURE Main( cCompiler, cLibDir )
LOCAL aLibs
LOCAL hComps
LOCAL lib
LOCAL comp
LOCAL cBase
LOCAL cSource
LOCAL cTarget
LOCAL lDone
IF ! hb_isString( cCompiler )
cCompiler := GetEnv( "HB_COMPILER" )
ENDIF
IF ! hb_isString( cLibDir )
cLibDir := GetEnv( "HB_LIB_INSTALL" )
ENDIF
IF ! Empty( cLibDir )
OutStd( "! Making import libs...", hb_osNewLine() )
#define _L_NAME 1
#define _L_BASE 2
#define _L_DLL 3
#define _L_DLLMS 4 /* Controls BCC's iditoic -a implib flag. */
#define _L_LIBMS 5
#define _L_LIBMS64 6
#define _L_LIBA 7
aLibs := {;
{ "ace32" , "HB_WITH_ADS" , "Redistribute\ace32.dll" , .F. , "Redistribute\ace32.lib" , , }, ;
{ "ace32" , "HB_WITH_ADS" , "ace32.dll" , .F. , "ace32.lib" , , }, ;
{ "ace32" , "HB_WITH_ADS" , "32bit\ace32.dll" , .F. , "32bit\ace32.lib" , , }, ;
{ "alleg" , "HB_WITH_ALLEGRO" , "..\bin\alleg42.dll" , .T. , "..\lib\alleg.lib" , , }, ;
{ "sde61" , "HB_WITH_APOLLO" , "..\sde61.dll" , .F. , , , }, ;
{ "sde7" , "HB_WITH_APOLLO" , "..\sde7.dll" , .F. , , , }, ;
{ "blat" , "HB_WITH_BLAT" , "..\blat.dll" , .T. , "..\blat.lib" , , }, ;
{ "cairo" , "HB_WITH_CAIRO" , "..\..\bin\libcairo-2.dll" , .T. , "..\..\lib\cairo.lib" , , "..\..\lib\libcairo.dll.a" }, ;
{ "libcurl" , "HB_WITH_CURL" , "..\libcurl.dll" , .T. , , , "..\lib\libcurl.a" }, ;
{ "libcurl" , "HB_WITH_CURL" , "..\bin\libcurl.dll" , .T. , , , "..\lib\libcurldll.a" }, ;
{ "fbclient" , "HB_WITH_FIREBIRD" , "..\bin\fbclient.dll" , .F. , "..\lib\fbclient_ms.lib" , , }, ;
{ "FreeImage" , "HB_WITH_FREEIMAGE" , "..\Dist\FreeImage.dll" , .F. , "..\Dist\FreeImage.lib" , , }, ;
{ "bgd" , "HB_WITH_GD" , "..\bin\bgd.dll" , .F. , "..\lib\bgd.lib" , , }, ;
{ "libhpdf" , "HB_WITH_LIBHARU" , "..\libhpdf.dll" , .F. , "..\libhpdf.lib" , , }, ;
{ "libhpdf" , "HB_WITH_LIBHARU" , "..\lib_dll\libhpdf.dll" , .F. , "..\lib_dll\libhpdf.lib" , , }, ;
{ "libmysql" , "HB_WITH_MYSQL" , "..\bin\libmySQL.dll" , .F. , "..\lib\opt\libmySQL.lib" , , }, ;
{ "ociliba" , "HB_WITH_OCILIB" , "..\lib32\ociliba.dll" , .F. , "..\lib32\ociliba.lib" , "..\lib64\ociliba.lib" , "..\lib32\libociliba.a" }, ;
{ "ocilibm" , "HB_WITH_OCILIB" , "..\lib32\ocilibm.dll" , .F. , "..\lib32\ocilibm.lib" , "..\lib64\ocilibm.lib" , "..\lib32\libocilibm.a" }, ;
{ "ocilibw" , "HB_WITH_OCILIB" , "..\lib32\ocilibw.dll" , .F. , "..\lib32\ocilibw.lib" , "..\lib64\ocilibw.lib" , "..\lib32\libocilibw.a" }, ;
{ "libeay32" , "HB_WITH_OPENSSL" , "..\out32dll\libeay32.dll" , .T. , "..\out32dll\libeay32.lib" , , }, ;
{ "ssleay32" , "HB_WITH_OPENSSL" , "..\out32dll\ssleay32.dll" , .T. , "..\out32dll\ssleay32.lib" , , }, ;
{ "libeay32" , "HB_WITH_OPENSSL" , "..\dll\libeay32.dll" , .T. , "..\dll\libeay32.lib" , , }, ;
{ "ssleay32" , "HB_WITH_OPENSSL" , "..\dll\ssleay32.dll" , .T. , "..\dll\ssleay32.lib" , , }, ;
{ "libeay32" , "HB_WITH_OPENSSL" , "..\libeay32.dll" , .T. , "..\libeay32.lib" , , }, ;
{ "ssleay32" , "HB_WITH_OPENSSL" , "..\ssleay32.dll" , .T. , "..\ssleay32.lib" , , }, ;
{ "libpq" , "HB_WITH_PGSQL" , "..\lib\libpq.dll" , .T. , "..\lib\libpq.lib" , , } }
#define _C_LIBPREFIX 1
#define _C_LIBEXT 2
#define _C_PROC_DLL 3
#define _C_PROC_LIBMS 4
#define _C_PROC_LIBMS64 5
#define _C_PROC_LIBA 6
hComps := {;
"mingw" => { "lib", ".a" , {| s, t | hb_FCopy( s, t ) != F_ERROR }, {| s, t | hb_FCopy( s, t ) != F_ERROR }, NIL, {| s, t | hb_FCopy( s, t ) != F_ERROR } }, ;
"mingw64" => { "lib", ".a" , {| s, t | hb_FCopy( s, t ) != F_ERROR }, NIL, {| s, t | hb_FCopy( s, t ) != F_ERROR }, {| s, t | hb_FCopy( s, t ) != F_ERROR } }, ;
"msvc" => { "" , ".lib", {| s, t | MSVC_implib( s, t, "x86" ) }, {| s, t | hb_FCopy( s, t ) != F_ERROR }, NIL, NIL }, ;
"msvc64" => { "" , ".lib", {| s, t | MSVC_implib( s, t, "x64" ) }, NIL, {| s, t | hb_FCopy( s, t ) != F_ERROR }, NIL }, ;
"msvcia64" => { "" , ".lib", {| s, t | MSVC_implib( s, t, "ia86" ) }, NIL, NIL, NIL }, ;
"msvcarm" => { "" , ".lib", {| s, t | MSVC_implib( s, t, "arm" ) }, NIL, NIL, NIL }, ;
"xcc" => { "" , ".lib", {| s, t | hb_processRun( "xLib " + FN_Escape( s ) + " /out:" + FN_Escape( t ) ) == 0 }, {| s, t | hb_FCopy( s, t ) != F_ERROR }, NIL, NIL }, ;
"pocc" => { "" , ".lib", {| s, t | hb_processRun( "polib " + FN_Escape( s ) + " /out:" + FN_Escape( t ) ) == 0 }, {| s, t | hb_FCopy( s, t ) != F_ERROR }, NIL, NIL }, ;
"pocc64" => { "" , ".lib", {| s, t | hb_processRun( "polib " + FN_Escape( s ) + " /out:" + FN_Escape( t ) ) == 0 }, NIL, {| s, t | hb_FCopy( s, t ) != F_ERROR }, NIL }, ;
"watcom" => { "" , ".lib", {| s, t | hb_processRun( "wlib -q -o=" + FN_Escape( t ) + " " + FN_Escape( s ) ) == 0 }, NIL, NIL, NIL }, ;
"bcc" => { "" , ".lib", {| s, t, lib | hb_processRun( "implib " + iif( lib[ _L_DLLMS ], "-a", "" ) + " " + FN_Escape( t ) + " " + FN_Escape( s ) ) == 0 }, NIL, NIL, NIL } }
IF Lower( cCompiler ) $ hComps
comp := hb_HGet( hComps, Lower( cCompiler ) )
FOR EACH lib IN aLibs
lDone := .F.
cSource := ""
IF ! Empty( cBase := GetEnv( lib[ _L_BASE ] ) )
cTarget := DirAddPathSep( cLibDir ) + comp[ _C_LIBPREFIX ] + lib[ _L_NAME ] + comp[ _C_LIBEXT ]
IF ! lDone .AND. ! Empty( comp[ _C_PROC_LIBA ] ) .AND. ! Empty( lib[ _L_LIBA ] )
cSource := DirAddPathSep( cBase ) + lib[ _L_LIBA ]
IF hb_FileExists( cSource )
lDone := Eval( comp[ _C_PROC_LIBA ], cSource, cTarget, lib )
ENDIF
ENDIF
IF ! lDone .AND. ! Empty( comp[ _C_PROC_LIBMS64 ] ) .AND. ! Empty( lib[ _L_LIBMS64 ] )
cSource := DirAddPathSep( cBase ) + lib[ _L_LIBMS64 ]
IF hb_FileExists( cSource )
lDone := Eval( comp[ _C_PROC_LIBMS64 ], cSource, cTarget, lib )
ENDIF
ENDIF
IF ! lDone .AND. ! Empty( comp[ _C_PROC_LIBMS ] ) .AND. ! Empty( lib[ _L_LIBMS ] )
cSource := DirAddPathSep( cBase ) + lib[ _L_LIBMS ]
IF hb_FileExists( cSource )
lDone := Eval( comp[ _C_PROC_LIBMS ], cSource, cTarget, lib )
ENDIF
ENDIF
IF ! lDone .AND. ! Empty( comp[ _C_PROC_DLL ] ) .AND. ! Empty( lib[ _L_DLL ] )
cSource := DirAddPathSep( cBase ) + lib[ _L_DLL ]
IF hb_FileExists( cSource )
lDone := Eval( comp[ _C_PROC_DLL ], cSource, cTarget, lib )
ENDIF
ENDIF
ENDIF
IF lDone
OutStd( "! Import library created: " + cTarget )
OutStd( " <= " + cSource )
OutStd( hb_osNewLine() )
ENDIF
NEXT
ENDIF
ENDIF
RETURN
STATIC FUNCTION MSVC_implib( s, t, cMode )
LOCAL lSuccess := .F.
LOCAL cExports
LOCAL fhnd
LOCAL cDef
LOCAL cLine
LOCAL tmp
LOCAL aCols
LOCAL cFuncList
IF hb_processRun( "dumpbin -exports " + FN_Escape( s ),, @cExports ) == 0
cFuncList := "LIBRARY " + Chr( 34 ) + FN_NameExtGet( s ) + Chr( 34 ) + hb_osNewLine() +;
"EXPORTS" + hb_osNewLine()
cExports := StrTran( cExports, Chr( 13 ) + Chr( 10 ), Chr( 10 ) )
tmp := At( "ordinal hint", cExports )
IF tmp > 0
cExports := SubStr( cExports, tmp + Len( "ordinal hint" ) )
ENDIF
FOR EACH cLine IN hb_ATokens( cExports, Chr( 10 ) )
IF ! Empty( cLine )
aCols := hb_ATokens( cLine )
IF Len( aCols ) >= 4
cFuncList += aCols[ 4 ] + hb_osNewLine()
ENDIF
ENDIF
NEXT
fhnd := hb_FTempCreateEx( @cDef )
IF fhnd != F_ERROR
FWrite( fhnd, cFuncList )
FClose( fhnd )
lSuccess := ( hb_processRun( "lib -nologo -machine:" + cMode + " -def:" + FN_Escape( cDef ) + " -out:" + FN_Escape( t ) ) == 0 )
FErase( cDef )
ENDIF
ENDIF
RETURN lSuccess
STATIC FUNCTION FN_Escape( cFileName )
RETURN Chr( 34 ) + cFileName + Chr( 34 )
STATIC FUNCTION FN_NameExtGet( cFileName )
LOCAL cName, cExt
hb_FNameSplit( cFileName,, @cName, @cExt )
RETURN hb_FNameMerge( NIL, cName, cExt )
STATIC FUNCTION DirAddPathSep( cDir )
IF ! Empty( cDir ) .AND. !( Right( cDir, 1 ) == hb_osPathSeparator() )
cDir += hb_osPathSeparator()
ENDIF
RETURN cDir

View File

@@ -81,34 +81,37 @@ if "%HB_SHELL%" == "nt" goto _SH_NT
if not "%HB_BUILD_IMPLIB%" == "yes" goto _NO_IMPLIB
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=ace32 "%HB_WITH_ADS%\Redistribute\ace32.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=ace32 "%HB_WITH_ADS%\ace32.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=ace32 "%HB_WITH_ADS%\32bit\ace32.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=alleg "%HB_WITH_ALLEGRO%\..\bin\alleg42.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=sde61 "%HB_WITH_APOLLO%\..\sde61.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=sde7 "%HB_WITH_APOLLO%\..\sde7.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=blat "%HB_WITH_BLAT%\..\blat.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=cairo "%HB_WITH_CAIRO%\..\..\bin\libcairo-2.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=libcurl "%HB_WITH_CURL%\..\libcurl.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=libcurl "%HB_WITH_CURL%\..\bin\libcurl.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=fbclient "%HB_WITH_FIREBIRD%\..\bin\fbclient.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=FreeImage "%HB_WITH_FREEIMAGE%\..\Dist\FreeImage.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=bgd "%HB_WITH_GD%\..\bin\bgd.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=libhpdf "%HB_WITH_LIBHARU%\..\libhpdf.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=libhpdf "%HB_WITH_LIBHARU%\..\lib_dll\libhpdf.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=libmysql "%HB_WITH_MYSQL%\..\bin\libmySQL.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=ociliba "%HB_WITH_OCILIB%\..\lib32\ociliba.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=ocilibm "%HB_WITH_OCILIB%\..\lib32\ocilibm.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=ocilibw "%HB_WITH_OCILIB%\..\lib32\ocilibw.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=libeay32 "%HB_WITH_OPENSSL%\..\out32dll\libeay32.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=ssleay32 "%HB_WITH_OPENSSL%\..\out32dll\ssleay32.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=libeay32 "%HB_WITH_OPENSSL%\..\dll\libeay32.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=ssleay32 "%HB_WITH_OPENSSL%\..\dll\ssleay32.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=libeay32 "%HB_WITH_OPENSSL%\..\libeay32.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=ssleay32 "%HB_WITH_OPENSSL%\..\ssleay32.dll"
rem "%HB_HOST_BIN_DIR%\hbmk2" -mkimplib=libpq "%HB_WITH_PGSQL%..\lib\libpq.dll"
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\ace32" "%HB_WITH_ADS%\Redistribute\ace32.dll"
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\ace32" "%HB_WITH_ADS%\ace32.dll"
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\ace32" "%HB_WITH_ADS%\32bit\ace32.dll"
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\alleg" "%HB_WITH_ALLEGRO%\..\bin\alleg42.dll" -mkimplibms
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\sde61" "%HB_WITH_APOLLO%\..\sde61.dll"
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\sde7" "%HB_WITH_APOLLO%\..\sde7.dll"
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\blat" "%HB_WITH_BLAT%\..\blat.dll" -mkimplibms
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\cairo" "%HB_WITH_CAIRO%\..\..\bin\libcairo-2.dll" -mkimplibms
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\libcurl" "%HB_WITH_CURL%\..\libcurl.dll" -mkimplibms
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\libcurl" "%HB_WITH_CURL%\..\bin\libcurl.dll" -mkimplibms
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\fbclient" "%HB_WITH_FIREBIRD%\..\bin\fbclient.dll"
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\FreeImage" "%HB_WITH_FREEIMAGE%\..\Dist\FreeImage.dll"
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\bgd" "%HB_WITH_GD%\..\bin\bgd.dll"
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\libhpdf" "%HB_WITH_LIBHARU%\..\libhpdf.dll"
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\libhpdf" "%HB_WITH_LIBHARU%\..\lib_dll\libhpdf.dll"
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\libmysql" "%HB_WITH_MYSQL%\..\bin\libmySQL.dll"
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\ociliba" "%HB_WITH_OCILIB%\..\lib32\ociliba.dll"
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\ocilibm" "%HB_WITH_OCILIB%\..\lib32\ocilibm.dll"
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\ocilibw" "%HB_WITH_OCILIB%\..\lib32\ocilibw.dll"
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\libeay32" "%HB_WITH_OPENSSL%\..\out32dll\libeay32.dll" -mkimplibms
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\ssleay32" "%HB_WITH_OPENSSL%\..\out32dll\ssleay32.dll" -mkimplibms
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\libeay32" "%HB_WITH_OPENSSL%\..\dll\libeay32.dll" -mkimplibms
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\ssleay32" "%HB_WITH_OPENSSL%\..\dll\ssleay32.dll" -mkimplibms
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\libeay32" "%HB_WITH_OPENSSL%\..\libeay32.dll" -mkimplibms
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\ssleay32" "%HB_WITH_OPENSSL%\..\ssleay32.dll" -mkimplibms
"%HB_HOST_BIN_DIR%\hbmk2" "-mkimplib=%HB_LIB_INSTALL%\libpq" "%HB_WITH_PGSQL%..\lib\libpq.dll" -mkimplibms
"%HB_HOST_BIN_DIR%\hbrun" --hb:gtcgi "%~dp0hb-mkimp.prg"
rem ; Exception: We use static libs with mingw.
if "%HB_COMPILER%" == "mingw" copy /b /y "%HB_WITH_OCILIB%\..\lib32\libociliba.a" "%HB_LIB_INSTALL%\libociliba.a"
if "%HB_COMPILER%" == "mingw" copy /b /y "%HB_WITH_OCILIB%\..\lib32\libocilibm.a" "%HB_LIB_INSTALL%\libocilibm.a"
if "%HB_COMPILER%" == "mingw" copy /b /y "%HB_WITH_OCILIB%\..\lib32\libocilibw.a" "%HB_LIB_INSTALL%\libocilibw.a"
:_NO_IMPLIB

View File

@@ -19,7 +19,6 @@ echo "hb20\INSTALL" >> _hbfiles
echo "hb20\COPYING" >> _hbfiles
echo "hb20\TODO" >> _hbfiles
echo "hb20\ChangeLog*" >> _hbfiles
echo "hb20\bin\hb-mkimp.prg" >> _hbfiles
echo "hb20\bin\harbour-20.dll" >> _hbfiles
echo "hb20\bin\harbourmt-20.dll" >> _hbfiles
echo "hb20\bin\harbour.exe" >> _hbfiles

View File

@@ -106,7 +106,6 @@ Section "Main components" hb_main
File "$%HB_ROOT%hb20\bin\hbrun.exe"
File "$%HB_ROOT%hb20\bin\hbtest.exe"
File "$%HB_ROOT%hb20\bin\hbformat.exe"
File "$%HB_ROOT%hb20\bin\hb-mkimp.prg"
File "$%HB_ROOT%hb20\bin\hbmk.cfg"
File "$%HB_ROOT%hb20\bin\upx*.*"

View File

@@ -10,7 +10,6 @@
xcopy /y RELNOTES F:\hb\hb20\
xcopy /y /s ..\..\examples\*.* F:\hb\hb20\examples\
xcopy /y /s ..\..\tests\*.* F:\hb\hb20\tests\
xcopy /y ..\..\bin\hb-mkimp.prg F:\hb\hb20\bin\
xcopy /y HARBOUR_README_ADDONS F:\hb\hb20\addons\
xcopy /y HARBOUR_README_DJGPP F:\hb\hb20\comp\djgpp\
xcopy /y HARBOUR_README_MINGW F:\hb\hb20\comp\mingw\

View File

@@ -702,6 +702,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause )
LOCAL lMakeImpLib := .F.
LOCAL cMakeImpLibDLL := NIL
LOCAL cMakeImpLibLib := NIL
LOCAL lMakeImpLibMS_bcc := .F.
LOCAL cWorkDir := NIL
@@ -1750,6 +1751,13 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause )
lMakeImpLib := .T.
cMakeImpLibLib := SubStr( cParam, Len( "-mkimplib=" ) + 1 )
/* NOTE: Undocumented option to enable -a option when calling bcc implib tool.
This is needed for some .dlls to make them work with bcc, because
bcc chose not to follow name-mangling/callconv standard. */
CASE cParamL == "-mkimplibms"
lMakeImpLibMS_bcc := .T.
CASE lMakeImpLib .AND. Empty( cMakeImpLibDLL )
cMakeImpLibDLL := PathProc( cParam, aParam[ _PAR_cFileName ] )
@@ -3120,8 +3128,7 @@ FUNCTION hbmk2( aArgs, /* @ */ lPause )
cBin_Dyn := cBin_Link
cOpt_Link := '-Gn -Tpe -L{DL} {FL} ' + iif( hbmk[ _HBMK_lGUI ], "c0w32.obj", "c0x32.obj" ) + " {LO}, {OE}, " + iif( hbmk[ _HBMK_lMAP ], "{OM}", "nul" ) + ", {LL} {LB} cw32mt.lib import32.lib,, {LS}{SCRIPT}"
cOpt_Dyn := '-Gn -Tpd -L{DL} {FD} ' + "c0d32.obj" + " {LO}, {OD}, " + iif( hbmk[ _HBMK_lMAP ], "{OM}", "nul" ) + ", {LL} {LB} cw32mt.lib import32.lib,, {LS}{SCRIPT}"
/* TODO: Add support for idiotic BCC -a option. */
bBlk_ImpLib := {| s, t | win_implib_command( "implib {FI} {OL} {ID}", nCmd_Esc, s, t, "" ) }
bBlk_ImpLib := {| s, t | win_implib_command( "implib {FI} {OL} {ID}", nCmd_Esc, s, t, iif( lMakeImpLibMS_bcc, "-a", "" ) ) }
cLibPathPrefix := ""
cLibPathSep := ";"
IF hbmk[ _HBMK_lMAP ]