From dccd59cf69f5cb7a721a25efbc63739d4bf74e17 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Tue, 17 Mar 2009 16:30:35 +0000 Subject: [PATCH] 2009-03-17 17:05 UTC+0100 Viktor Szakats (harbour.01 syenar hu) * bin/hb-mkdyn.sh * bin/hb-mkdyn.bat * source/vm/maindllp.c * utils/hbmk2/hbmk2.prg + Renamed all Windows Harbour .dlls to harbour-11.dll and harbourmt-11.dll. This means that MinGW will now have a versioned name to be in sync with other builds. It also means that -vc, -pocc, -ow postfixes are gone (and additionally DMC could also be supported). What remains is -x64 to signal an x64 and -ia64 to signal a IA64 build. Another thing which remains is -b32 (now renamed to -bcc to be in sync with rest of Harbour), because Borland has an non-standard name mangling, and while it can be made work with other compilers since the calling convention is the same, it requires the .dll user applications to be rebuilt with some implib tricks. Overall Borland isn't recommended for .dll creation. Please do further tests for binary compatibility. ; TOFIX: Location of .dll still differs for mingw/cygwin, they are created in lib while rest of compilers create it in bin. I think we should sync them by creating a copy of the .dlls in bin for mingw/cygwin. Przemek, could you help here? ; TOFIX: "Making ..." screen messages. I'll need some help here also. * bin/hb-mkdyn.sh * ${MAJOR} default set to 1. * make_gnu_os2.cmd * Minor formatting. * contrib/hbgd/gdwrp.c ! Minor correction to recent change. (avoiding warning for MinGW) --- harbour/ChangeLog | 36 +++++++++++++++++++++++++++++++++++ harbour/bin/hb-mkdyn.bat | 24 +++++++++++------------ harbour/bin/hb-mkdyn.sh | 4 ++-- harbour/contrib/hbgd/gdwrp.c | 8 ++++++-- harbour/make_gnu_os2.cmd | 4 ++-- harbour/source/vm/maindllp.c | 21 ++++++++++---------- harbour/utils/hbmk2/hbmk2.prg | 27 +++++++++++++------------- 7 files changed, 83 insertions(+), 41 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 7aa0ed3fd9..311db234b3 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,42 @@ 2009-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org) */ +2009-03-17 17:05 UTC+0100 Viktor Szakats (harbour.01 syenar hu) + * bin/hb-mkdyn.sh + * bin/hb-mkdyn.bat + * source/vm/maindllp.c + * utils/hbmk2/hbmk2.prg + + Renamed all Windows Harbour .dlls to harbour-11.dll and + harbourmt-11.dll. This means that MinGW will now have a versioned + name to be in sync with other builds. It also means that + -vc, -pocc, -ow postfixes are gone (and additionally DMC + could also be supported). What remains is -x64 to + signal an x64 and -ia64 to signal a IA64 build. Another thing + which remains is -b32 (now renamed to -bcc to be in sync with + rest of Harbour), because Borland has an non-standard + name mangling, and while it can be made work with other + compilers since the calling convention is the same, it requires + the .dll user applications to be rebuilt with some implib tricks. + Overall Borland isn't recommended for .dll creation. + Please do further tests for binary compatibility. + + ; TOFIX: Location of .dll still differs for mingw/cygwin, they + are created in lib while rest of compilers create it in + bin. I think we should sync them by creating a copy + of the .dlls in bin for mingw/cygwin. Przemek, could + you help here? + ; TOFIX: "Making ..." screen messages. I'll need some + help here also. + + * bin/hb-mkdyn.sh + * ${MAJOR} default set to 1. + + * make_gnu_os2.cmd + * Minor formatting. + + * contrib/hbgd/gdwrp.c + ! Minor correction to recent change. (avoiding warning for MinGW) + 2009-03-17 16:14 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/tests/speedtst.prg + added new tests of dynamic code blocks performance diff --git a/harbour/bin/hb-mkdyn.bat b/harbour/bin/hb-mkdyn.bat index 75e0ddfa8c..2c0363c2a8 100644 --- a/harbour/bin/hb-mkdyn.bat +++ b/harbour/bin/hb-mkdyn.bat @@ -95,12 +95,12 @@ for %%f in (%HB_DLL_LIBS_MT%) do ( ) cd .. -if "%HB_COMPILER%" == "msvc" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-vc -if "%HB_COMPILER%" == "msvc" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-vc -if "%HB_COMPILER%" == "msvc64" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-vc-x64 -if "%HB_COMPILER%" == "msvc64" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-vc-x64 -if "%HB_COMPILER%" == "msvcia64" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-vc-ia64 -if "%HB_COMPILER%" == "msvcia64" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-vc-ia64 +if "%HB_COMPILER%" == "msvc" set _DST_NAME_ST=harbour-%HB_DLL_VERSION% +if "%HB_COMPILER%" == "msvc" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION% +if "%HB_COMPILER%" == "msvc64" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-x64 +if "%HB_COMPILER%" == "msvc64" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-x64 +if "%HB_COMPILER%" == "msvcia64" set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-ia64 +if "%HB_COMPILER%" == "msvcia64" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-ia64 echo Making %_DST_NAME_ST%.dll... && link /nologo /dll /out:"%HB_BIN_INSTALL%\%_DST_NAME_ST%.dll" @_hboneut.txt @_hbost.txt user32.lib wsock32.lib advapi32.lib gdi32.lib echo Making %_DST_NAME_MT%.dll... && link /nologo /dll /out:"%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll" @_hboneut.txt @_hbomt.txt user32.lib wsock32.lib advapi32.lib gdi32.lib @@ -217,8 +217,8 @@ for %%f in (%HB_DLL_LIBS_MT%) do ( ) cd .. -set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-b32 -set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-b32 +set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-bcc +set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-bcc echo. , "%HB_BIN_INSTALL%\%_DST_NAME_ST%.dll",, cw32mt.lib import32.lib >> _hballst.txt echo. , "%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll",, cw32mt.lib import32.lib >> _hballmt.txt @@ -268,8 +268,8 @@ copy /b /y "%HB_LIB_INSTALL%\%HB_DLL_LIBS_MT%.lib" . > nul && wlib -q -b "%HB_DL echo FILE '%HB_DLL_LIBS_ST%.lib'>> _hbsst.txt echo FILE '%HB_DLL_LIBS_MT%.lib'>> _hbsmt.txt -set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-ow -set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-ow +set _DST_NAME_ST=harbour-%HB_DLL_VERSION% +set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION% echo Making %_DST_NAME_ST%.dll... && wlink OP QUIET SYS NT_DLL OP IMPLIB NAME '%HB_BIN_INSTALL%\%_DST_NAME_ST%.dll' @_hbsst.txt LIB user32.lib, wsock32.lib, advapi32.lib, gdi32.lib echo Making %_DST_NAME_MT%.dll... && wlink OP QUIET SYS NT_DLL OP IMPLIB NAME '%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll' @_hbsmt.txt LIB user32.lib, wsock32.lib, advapi32.lib, gdi32.lib @@ -343,8 +343,8 @@ for %%f in (%HB_DLL_LIBS_MT%) do ( ) cd .. -set _DST_NAME_ST=harbour-%HB_DLL_VERSION%-pocc -set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-pocc +set _DST_NAME_ST=harbour-%HB_DLL_VERSION% +set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION% echo Making %_DST_NAME_ST%.dll... && polink /nologo /dll /out:"%HB_BIN_INSTALL%\%_DST_NAME_ST%.dll" @_hboneut.txt @_hbost.txt user32.lib wsock32.lib advapi32.lib gdi32.lib echo Making %_DST_NAME_MT%.dll... && polink /nologo /dll /out:"%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll" @_hboneut.txt @_hbomt.txt user32.lib wsock32.lib advapi32.lib gdi32.lib diff --git a/harbour/bin/hb-mkdyn.sh b/harbour/bin/hb-mkdyn.sh index f9f8befaae..6bed25fde6 100755 --- a/harbour/bin/hb-mkdyn.sh +++ b/harbour/bin/hb-mkdyn.sh @@ -63,7 +63,7 @@ MINOR="${REVIS%%.*}" REVIS="${REVIS#${MINOR}}" REVIS="${REVIS#.}" REVIS="${REVIS%%.*}" -[ -n "${MAJOR}" ] || MAJOR=0 +[ -n "${MAJOR}" ] || MAJOR=1 [ -n "${MINOR}" ] || MINOR=1 [ -n "${REVIS}" ] || REVIS=0 VERSION="${MAJOR}.${MINOR}.${REVIS}" @@ -131,7 +131,7 @@ if [ "${SLIB_EXT}" = ".dylib" ]; then ln -sf "${FULLNAME}" "${DSTDIR}${BASE}.${MAJOR}${SLIB_EXT}" && \ ln -sf "${FULLNAME}" "${DSTDIR}${BASE}${SLIB_EXT}" elif [ "${SLIB_EXT}" = ".dll" ]; then - FULLNAME="${LIB_NAME}${SLIB_EXT}" + FULLNAME="${LIB_NAME}-${MAJOR}${MINOR}${SLIB_EXT}" if [ "$HB_COMPILER" = "mingwce" ]; then SYSLIBS=" -lwininet -lws2" else diff --git a/harbour/contrib/hbgd/gdwrp.c b/harbour/contrib/hbgd/gdwrp.c index a882b428af..46689b1493 100644 --- a/harbour/contrib/hbgd/gdwrp.c +++ b/harbour/contrib/hbgd/gdwrp.c @@ -57,8 +57,12 @@ /* NOTE: Do some initialization required by the GD headers. */ #if defined(HB_OS_WIN) - #define WIN32 - #define BGDWIN32 + #if !defined(WIN32) + #define WIN32 + #endif + #if !defined(BGDWIN32) + #define BGDWIN32 + #endif #endif #ifdef HAVE_CONFIG_H diff --git a/harbour/make_gnu_os2.cmd b/harbour/make_gnu_os2.cmd index fcc58441eb..734d48f014 100644 --- a/harbour/make_gnu_os2.cmd +++ b/harbour/make_gnu_os2.cmd @@ -36,13 +36,13 @@ rem compiler option for the define and either the LIBRARY_PATH or rem the -L compiler/linker option for the library. rem For building Harbour you can also use HB_USER_LDFLAGS environment variable, rem f.e. -rem SET HB_USER_LDFLAGS=-Le:\usr\lib\tcpipv4 +rem set HB_USER_LDFLAGS=-Le:\usr\lib\tcpipv4 rem rem If you are using newer OS2 version with tcp/ip stack >= 4.1 rem (eComStation, for example) and you do not need backward binary rem compatibility then you can disable it by setting HB_OS2_TCP32 rem environment variable, f.e. -rem SET HB_OS2_TCP32=yes +rem set HB_OS2_TCP32=yes if "%HB_OS2_TCP32%" == "yes" goto tcp32 if "%HB_OS2_TCP32%" == "YES" goto tcp32 diff --git a/harbour/source/vm/maindllp.c b/harbour/source/vm/maindllp.c index 945d89a445..fa9eff8a7d 100644 --- a/harbour/source/vm/maindllp.c +++ b/harbour/source/vm/maindllp.c @@ -59,19 +59,20 @@ #include "hbtypes.h" -#define HB_DLL_NAME "harbour.dll" +#define HB_DLL_NAME "harbour.dll" +#define HB_DLL_NAMEMT "harbourmt.dll" #if defined( __BORLANDC__ ) - #define HB_DLL_NAME2 "harbour-11-b32.dll" -#if defined( __POCC__ ) - #define HB_DLL_NAME2 "harbour-11-pocc.dll" -#elif defined( __WATCOMC__ ) - #define HB_DLL_NAME2 "harbour-11-ow.dll" + #define HB_DLL_NAME2 "harbour-11-bcc.dll" + #define HB_DLL_NAMEMT2 "harbourmt-11-bcc.dll" #elif defined( _MSC_VER ) && defined( _M_X64 ) - #define HB_DLL_NAME2 "harbour-11-vc-x64.dll" + #define HB_DLL_NAME2 "harbour-11-x64.dll" + #define HB_DLL_NAMEMT2 "harbourmt-11-x64.dll" #elif defined( _MSC_VER ) && defined( _M_IA64 ) - #define HB_DLL_NAME2 "harbour-11-vc-ia64.dll" -#elif defined( _MSC_VER ) - #define HB_DLL_NAME2 "harbour-11-vc.dll" + #define HB_DLL_NAME2 "harbour-11-ia64.dll" + #define HB_DLL_NAMEMT2 "harbourmt-11-ia64.dll" +#else + #define HB_DLL_NAME2 "harbour-11.dll" + #define HB_DLL_NAMEMT2 "harbourmt-11.dll" #endif #if defined(HB_OS_WIN) diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index bd277559e8..17ecb6b8c4 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -1309,7 +1309,8 @@ FUNCTION Main( ... ) s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "user32", "winspool", "gdi32", "comctl32", "comdlg32", "ole32", "oleaut32", "uuid", "wsock32", "ws2_32" } ) ENDIF ENDIF - s_aLIBSHARED := { iif( s_lMT, "harbourmt", "harbour" ) } + s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter,; + "harbour-" + cDL_Version_Alter ) } IF s_lFMSTAT != NIL .AND. s_lFMSTAT AAdd( s_aLIBFM, iif( s_lMT, "hbfmmt", "hbfm" ) ) @@ -1453,8 +1454,8 @@ FUNCTION Main( ... ) AAdd( s_aOPTL, "OP MAP" ) ENDIF s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "kernel32", "user32", "wsock32" } ) - s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-ow",; - "harbour-" + cDL_Version_Alter + "-ow" ),; + s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter,; + "harbour-" + cDL_Version_Alter ),; "hbmainstd",; "hbmainwin" } @@ -1579,8 +1580,8 @@ FUNCTION Main( ... ) IF s_lSHARED AAdd( s_aLIBPATH, "{DB}" ) ENDIF - s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-b32",; - "harbour-" + cDL_Version_Alter + "-b32" ),; + s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-bcc",; + "harbour-" + cDL_Version_Alter + "-bcc" ),; "hbmainstd",; "hbmainwin" } @@ -1635,18 +1636,18 @@ FUNCTION Main( ... ) s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "user32", "wsock32", "advapi32", "gdi32" } ) DO CASE CASE t_cCOMP $ "msvc|icc" - s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-vc",; - "harbour-" + cDL_Version_Alter + "-vc" ),; + s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter,; + "harbour-" + cDL_Version_Alter ),; "hbmainstd",; "hbmainwin" } CASE t_cCOMP == "msvc64" - s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-vc-x64",; - "harbour-" + cDL_Version_Alter + "-vc-x64" ),; + s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-x64",; + "harbour-" + cDL_Version_Alter + "-x64" ),; "hbmainstd",; "hbmainwin" } CASE t_cCOMP == "msvcia64" - s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-vc-ia64",; - "harbour-" + cDL_Version_Alter + "-vc-ia64" ),; + s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-ia64",; + "harbour-" + cDL_Version_Alter + "-ia64" ),; "hbmainstd",; "hbmainwin" } ENDCASE @@ -1718,8 +1719,8 @@ FUNCTION Main( ... ) AAdd( s_aOPTL, "/debug" ) ENDIF s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "kernel32", "user32", "wsock32", "advapi32", "gdi32" } ) - s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-pocc",; - "harbour-" + cDL_Version_Alter + "-pocc" ),; + s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter,; + "harbour-" + cDL_Version_Alter ),; "hbmainstd",; "hbmainwin" }