diff --git a/harbour/ChangeLog b/harbour/ChangeLog index fedc40637b..91c9c8bd43 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -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 diff --git a/harbour/bin/hb-mkimp.prg b/harbour/bin/hb-mkimp.prg deleted file mode 100644 index ef801845fa..0000000000 --- a/harbour/bin/hb-mkimp.prg +++ /dev/null @@ -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 diff --git a/harbour/bin/postinst.bat b/harbour/bin/postinst.bat index f89fce71e9..d72169f3a6 100644 --- a/harbour/bin/postinst.bat +++ b/harbour/bin/postinst.bat @@ -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 diff --git a/harbour/package/winuni/mpkg_win_uni.bat b/harbour/package/winuni/mpkg_win_uni.bat index 31e2d0dd68..8d039d92a5 100644 --- a/harbour/package/winuni/mpkg_win_uni.bat +++ b/harbour/package/winuni/mpkg_win_uni.bat @@ -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 diff --git a/harbour/package/winuni/mpkg_win_uni.nsi b/harbour/package/winuni/mpkg_win_uni.nsi index 12c4b52439..6c61869d50 100644 --- a/harbour/package/winuni/mpkg_win_uni.nsi +++ b/harbour/package/winuni/mpkg_win_uni.nsi @@ -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*.*" diff --git a/harbour/package/winuni/mpkg_win_uni_extra_copy.bat b/harbour/package/winuni/mpkg_win_uni_extra_copy.bat index cb6c9acd4b..19abf1d2db 100644 --- a/harbour/package/winuni/mpkg_win_uni_extra_copy.bat +++ b/harbour/package/winuni/mpkg_win_uni_extra_copy.bat @@ -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\ diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index a72688dc8d..2a649e8250 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -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 ]