diff --git a/harbour/ChangeLog b/harbour/ChangeLog index c106b4b81d..18a0b63125 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,38 @@ 2009-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org) */ +2009-03-18 19:59 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) + * harbour/bin/hb-mkdyn.bat + * harbour/config/linux/icc.cf + * harbour/contrib/xhb/xhbcls.ch + * harbour/contrib/hbblat/tests/f_listtext.txt + * harbour/contrib/hbblat/tests/f_sample.txt + * harbour/contrib/hbblat/tests/f_ps.txt + * harbour/contrib/hbblat/tests/f_sample1.txt + * harbour/contrib/hbblat/tests/blattest.prg + * harbour/contrib/hbblat/tests/f_subjectline.txt + * harbour/contrib/hbblat/tests/blatcmd.prg + * harbour/contrib/hbblat/syntax.txt + * harbour/contrib/hbblat/hbblat.ch + * harbour/contrib/hbblat/blatcls.prg + * harbour/contrib/hbblat/blatwrp.c + * harbour/contrib/hbblat/Makefile + * harbour/contrib/examples/uhttpd/session.prg + * harbour/tests/ac_test2.prg + * harbour/tests/gtxfnt.prg + * updated SVN attributes + + * harbour/tests/speedtst.prg + * use chr(13)+chr(10) as EOL in outstd() in Clipper and XPP builds. + + * harbour/source/compiler/genc.c + ! fixed one printf modifier + + * harbour/source/compiler/gencc.c + * harbour/include/hbcompdf.h + % do not call hb_xvmExitProc() if hb_xvmEndProc() was not executed + inside function compiled by -gc3 + 2009-03-18 15:11 UTC+0100 Viktor Szakats (harbour.01 syenar hu) * bin/hb-mkdyn.bat + Added .dll generation support for win/icc. diff --git a/harbour/bin/hb-mkdyn.bat b/harbour/bin/hb-mkdyn.bat index f077e5251c..1cf0a5a11e 100644 --- a/harbour/bin/hb-mkdyn.bat +++ b/harbour/bin/hb-mkdyn.bat @@ -1,385 +1,385 @@ -@rem -@rem $Id$ -@rem - -@echo off - -rem --------------------------------------------------------------- -rem Copyright 2009 Viktor Szakats (harbour.01 syenar.hu) -rem See doc/license.txt for licensing terms. -rem --------------------------------------------------------------- - -rem NOTE: .prg files have to be compiled with -n1 -rem NOTE: .c files have to be compiled with -DHB_DYNLIB - -if not "%OS%" == "Windows_NT" ( echo This script needs Windows NT or newer. && goto END ) -if "%HB_ARCHITECTURE%" == "" ( echo HB_ARCHITECTURE needs to be set. && goto END ) -if "%HB_COMPILER%" == "" ( echo HB_COMPILER needs to be set. && goto END ) -if not "%HB_ARCHITECTURE%" == "win" goto END - -set HB_DLL_VERSION=11 -set HB_DLL_LIBS=hbcommon hbpp hbrtl hbmacro hblang hbcpage hbpcre hbzlib hbextern hbrdd rddntx rddnsx rddcdx rddfpt hbsix hbhsx hbusrrdd gtcgi gtpca gtstd gtwin gtwvt gtgui hbmaindllh -set HB_DLL_LIBS_ST=hbvm -set HB_DLL_LIBS_MT=hbvmmt - -if "%HB_COMPILER%" == "icc" goto DO_MSVC -if "%HB_COMPILER%" == "msvc" goto DO_MSVC -if "%HB_COMPILER%" == "msvc64" goto DO_MSVC -if "%HB_COMPILER%" == "msvcia64" goto DO_MSVC -if "%HB_COMPILER%" == "bcc" goto DO_BCC -if "%HB_COMPILER%" == "owatcom" goto DO_OWATCOM -if "%HB_COMPILER%" == "pocc" goto DO_POCC - -echo HB_COMPILER %HB_COMPILER% isn't supported. -goto END - -:DO_MSVC - -echo Making .dlls for %HB_COMPILER%... - -md _dll -cd _dll - -if "%HB_COMPILER%" == "icc" set _BIN_LIB=xilib -if not "%HB_COMPILER%" == "icc" set _BIN_LIB=lib -if "%HB_COMPILER%" == "icc" set _BIN_LINK=xilink -if not "%HB_COMPILER%" == "icc" set _BIN_LINK=link - -rem ; Extract neutral objects -echo.> _hboneut.txt -for %%f in (%HB_DLL_LIBS%) do ( - if exist "%HB_LIB_INSTALL%\%%f.lib" ( - echo Processing library: %%f - %_BIN_LIB% "%HB_LIB_INSTALL%\%%f.lib" /nologo /list > _hboraw.txt - for /F %%p in (_hboraw.txt) do ( - %_BIN_LIB% "%HB_LIB_INSTALL%\%%f.lib" /nologo /extract:%%p /out:%%p - echo %%p>> _hboneut.txt - ) - del _hboraw.txt - ) else ( echo Library not found: %HB_LIB_INSTALL%\%%f.lib ) -) - -md _st -cd _st -rem ; Extract ST objects -echo.> ..\_hbost.txt -for %%f in (%HB_DLL_LIBS_ST%) do ( - if exist "%HB_LIB_INSTALL%\%%f.lib" ( - echo Processing library: %%f - %_BIN_LIB% "%HB_LIB_INSTALL%\%%f.lib" /nologo /list > _hboraw.txt - for /F %%p in (_hboraw.txt) do ( - if not "%%p" == "maindll.obj" ( - if not "%%p" == "maindllp.obj" ( - %_BIN_LIB% "%HB_LIB_INSTALL%\%%f.lib" /nologo /extract:%%p /out:%%p - echo _st\%%p>> ..\_hbost.txt - ) - ) - ) - del _hboraw.txt - ) else ( echo Library not found: %HB_LIB_INSTALL%\%%f.lib ) -) -cd .. - -md _mt -cd _mt -rem ; Extract MT objects -echo.> ..\_hbomt.txt -for %%f in (%HB_DLL_LIBS_MT%) do ( - if exist "%HB_LIB_INSTALL%\%%f.lib" ( - echo Processing library: %%f - %_BIN_LIB% "%HB_LIB_INSTALL%\%%f.lib" /nologo /list > _hboraw.txt - for /F %%p in (_hboraw.txt) do ( - if not "%%p" == "maindll.obj" ( - if not "%%p" == "maindllp.obj" ( - %_BIN_LIB% "%HB_LIB_INSTALL%\%%f.lib" /nologo /extract:%%p /out:%%p - echo _mt\%%p>> ..\_hbomt.txt - ) - ) - ) - del _hboraw.txt - ) else ( echo Library not found: %HB_LIB_INSTALL%\%%f.lib ) -) -cd .. - -if "%HB_COMPILER%" == "icc" set _DST_NAME_ST=harbour-%HB_DLL_VERSION% -if "%HB_COMPILER%" == "icc" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION% -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... && %_BIN_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... && %_BIN_LINK% /nologo /dll /out:"%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll" @_hboneut.txt @_hbomt.txt user32.lib wsock32.lib advapi32.lib gdi32.lib - -if exist "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" move "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_ST%.lib" -if exist "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" move "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_MT%.lib" -if exist "%HB_BIN_INSTALL%\%_DST_NAME_ST%.exp" move "%HB_BIN_INSTALL%\%_DST_NAME_ST%.exp" "%HB_LIB_INSTALL%\%_DST_NAME_ST%.exp" -if exist "%HB_BIN_INSTALL%\%_DST_NAME_MT%.exp" move "%HB_BIN_INSTALL%\%_DST_NAME_MT%.exp" "%HB_LIB_INSTALL%\%_DST_NAME_MT%.exp" - -rem ; Cleanup -for /F %%o in (_hbost.txt) do ( del %%o ) -del _hbost.txt -rmdir _st - -for /F %%o in (_hbomt.txt) do ( del %%o ) -del _hbomt.txt -rmdir _mt - -for /F %%o in (_hboneut.txt) do ( del %%o ) -del _hboneut.txt -cd .. -rmdir _dll - -goto END - -:DO_BCC - -echo Making .dlls for %HB_COMPILER%... - -md _dll -cd _dll - -echo. c0d32.obj +> _hballst.txt -echo. c0d32.obj +> _hballmt.txt - -rem ; Extract neutral objects -echo.> _hboneut.txt -for %%f in (%HB_DLL_LIBS%) do ( - if exist "%HB_LIB_INSTALL%\%%f.lib" ( - echo Processing library: %%f - tlib "%HB_LIB_INSTALL%\%%f.lib", _hboraw.txt > nul - echo.> _hboraw2.txt - for /F "tokens=1,2" %%f in (_hboraw.txt) do ( - if "%%g" == "size" ( - echo %%f.obj >> _hboraw2.txt - ) - ) - del _hboraw.txt - for /F %%p in (_hboraw2.txt) do ( - tlib "%HB_LIB_INSTALL%\%%f.lib" * %%p > nul - echo %%p +>> _hballst.txt - echo %%p +>> _hballmt.txt - echo %%p>> _hboneut.txt - ) - del _hboraw2.txt - ) else ( echo Library not found: %HB_LIB_INSTALL%\%%f.lib ) -) - -md _st -cd _st -rem ; Extract ST objects -echo.> ..\_hbost.txt -for %%f in (%HB_DLL_LIBS_ST%) do ( - if exist "%HB_LIB_INSTALL%\%%f.lib" ( - echo Processing library: %%f - tlib "%HB_LIB_INSTALL%\%%f.lib", _hboraw.txt > nul - echo.> _hboraw2.txt - for /F "tokens=1,2" %%f in (_hboraw.txt) do ( - if "%%g" == "size" ( - echo %%f.obj >> _hboraw2.txt - ) - ) - del _hboraw.txt - for /F %%p in (_hboraw2.txt) do ( - if not "%%p" == "maindll.obj" ( - if not "%%p" == "maindllp.obj" ( - tlib "%HB_LIB_INSTALL%\%%f.lib" * %%p > nul - echo _st\%%p +>> ..\_hballst.txt - echo _st\%%p>> ..\_hbost.txt - ) - ) - ) - del _hboraw2.txt - ) else ( echo Library not found: %HB_LIB_INSTALL%\%%f.lib ) -) -cd .. - -md _mt -cd _mt -rem ; Extract MT objects -echo.> ..\_hbomt.txt -for %%f in (%HB_DLL_LIBS_MT%) do ( - if exist "%HB_LIB_INSTALL%\%%f.lib" ( - echo Processing library: %%f - tlib "%HB_LIB_INSTALL%\%%f.lib", _hboraw.txt > nul - echo.> _hboraw2.txt - for /F "tokens=1,2" %%f in (_hboraw.txt) do ( - if "%%g" == "size" ( - echo %%f.obj >> _hboraw2.txt - ) - ) - del _hboraw.txt - for /F %%p in (_hboraw2.txt) do ( - if not "%%p" == "maindll.obj" ( - if not "%%p" == "maindllp.obj" ( - tlib "%HB_LIB_INSTALL%\%%f.lib" * %%p > nul - echo _mt\%%p +>> ..\_hballmt.txt - echo _mt\%%p>> ..\_hbomt.txt - ) - ) - ) - del _hboraw2.txt - ) else ( echo Library not found: %HB_LIB_INSTALL%\%%f.lib ) -) -cd .. - -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 - -echo Making %_DST_NAME_ST%.dll... && ilink32 -q -Gn -C -aa -Tpd -Gi -x c0d32.obj @_hballst.txt -echo Making %_DST_NAME_MT%.dll... && ilink32 -q -Gn -C -aa -Tpd -Gi -x c0d32.obj @_hballmt.txt - -if exist "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" move "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_ST%.lib" -if exist "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" move "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_MT%.lib" - -del _hballst.txt -del _hballmt.txt - -rem ; Cleanup -for /F %%o in (_hbost.txt) do ( del %%o ) -del _hbost.txt -rmdir _st - -for /F %%o in (_hbomt.txt) do ( del %%o ) -del _hbomt.txt -rmdir _mt - -for /F %%o in (_hboneut.txt) do ( del %%o ) -del _hboneut.txt -cd .. -rmdir _dll - -goto END - -:DO_OWATCOM - -echo Making .dlls for %HB_COMPILER%... - -md _dll -cd _dll - -echo.> _hbsst.txt -echo.> _hbsmt.txt -for %%f in (%HB_DLL_LIBS%) do ( - echo FILE '%HB_LIB_INSTALL%\%%f.lib'>> _hbsst.txt - echo FILE '%HB_LIB_INSTALL%\%%f.lib'>> _hbsmt.txt -) - -copy /b /y "%HB_LIB_INSTALL%\%HB_DLL_LIBS_ST%.lib" . > nul && wlib -q -b "%HB_DLL_LIBS_ST%.lib" - mainwin.obj -copy /b /y "%HB_LIB_INSTALL%\%HB_DLL_LIBS_MT%.lib" . > nul && wlib -q -b "%HB_DLL_LIBS_MT%.lib" - mainwin.obj - -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% -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 - -if exist "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" move "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_ST%.lib" -if exist "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" move "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_MT%.lib" - -del %HB_DLL_LIBS_ST%.lib -del %HB_DLL_LIBS_MT%.lib - -del _hbsst.txt -del _hbsmt.txt -cd .. -rmdir _dll - -goto END - -:DO_POCC - -echo Making .dlls for %HB_COMPILER%... - -md _dll -cd _dll - -rem ; Extract neutral objects -echo.> _hboneut.txt -for %%f in (%HB_DLL_LIBS%) do ( - if exist "%HB_LIB_INSTALL%\%%f.lib" ( - echo Processing library: %%f - polib "%HB_LIB_INSTALL%\%%f.lib" /list /explode >> _hboneut.txt - ) else ( echo Library not found: %HB_LIB_INSTALL%\%%f.lib ) -) - -md _st -cd _st -rem ; Extract ST objects -echo.> ..\_hbost.txt -for %%f in (%HB_DLL_LIBS_ST%) do ( - if exist "%HB_LIB_INSTALL%\%%f.lib" ( - echo Processing library: %%f - polib "%HB_LIB_INSTALL%\%%f.lib" /list /explode > _hboraw.txt - for /F %%p in (_hboraw.txt) do ( - if not "%%p" == "maindll.obj" ( - if not "%%p" == "maindllp.obj" ( - echo _st\%%p>> ..\_hbost.txt - ) - ) - ) - del _hboraw.txt - ) else ( echo Library not found: %HB_LIB_INSTALL%\%%f.lib ) -) -cd .. - -md _mt -cd _mt -rem ; Extract MT objects -echo.> ..\_hbomt.txt -for %%f in (%HB_DLL_LIBS_MT%) do ( - if exist "%HB_LIB_INSTALL%\%%f.lib" ( - echo Processing library: %%f - polib "%HB_LIB_INSTALL%\%%f.lib" /list /explode > _hboraw.txt - for /F %%p in (_hboraw.txt) do ( - if not "%%p" == "maindll.obj" ( - if not "%%p" == "maindllp.obj" ( - echo _mt\%%p>> ..\_hbomt.txt - ) - ) - ) - del _hboraw.txt - ) else ( echo Library not found: %HB_LIB_INSTALL%\%%f.lib ) -) -cd .. - -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 - -polib "%HB_BIN_INSTALL%\%_DST_NAME_ST%.dll" /out:"%HB_LIB_INSTALL%\%_DST_NAME_ST%.lib" -polib "%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll" /out:"%HB_LIB_INSTALL%\%_DST_NAME_MT%.lib" - -rem ; Cleanup -for /F %%o in (_hbost.txt) do ( del %%o ) -if exist _st\maindll.obj del _st\maindll.obj -if exist _st\maindllp.obj del _st\maindllp.obj -del _hbost.txt -rmdir _st - -for /F %%o in (_hbomt.txt) do ( del %%o ) -if exist _mt\maindll.obj del _mt\maindll.obj -if exist _mt\maindllp.obj del _mt\maindllp.obj -del _hbomt.txt -rmdir _mt - -for /F %%o in (_hboneut.txt) do ( del %%o ) -del _hboneut.txt -cd .. -rmdir _dll - -goto END - -:END - -endlocal +@rem +@rem $Id$ +@rem + +@echo off + +rem --------------------------------------------------------------- +rem Copyright 2009 Viktor Szakats (harbour.01 syenar.hu) +rem See doc/license.txt for licensing terms. +rem --------------------------------------------------------------- + +rem NOTE: .prg files have to be compiled with -n1 +rem NOTE: .c files have to be compiled with -DHB_DYNLIB + +if not "%OS%" == "Windows_NT" ( echo This script needs Windows NT or newer. && goto END ) +if "%HB_ARCHITECTURE%" == "" ( echo HB_ARCHITECTURE needs to be set. && goto END ) +if "%HB_COMPILER%" == "" ( echo HB_COMPILER needs to be set. && goto END ) +if not "%HB_ARCHITECTURE%" == "win" goto END + +set HB_DLL_VERSION=11 +set HB_DLL_LIBS=hbcommon hbpp hbrtl hbmacro hblang hbcpage hbpcre hbzlib hbextern hbrdd rddntx rddnsx rddcdx rddfpt hbsix hbhsx hbusrrdd gtcgi gtpca gtstd gtwin gtwvt gtgui hbmaindllh +set HB_DLL_LIBS_ST=hbvm +set HB_DLL_LIBS_MT=hbvmmt + +if "%HB_COMPILER%" == "icc" goto DO_MSVC +if "%HB_COMPILER%" == "msvc" goto DO_MSVC +if "%HB_COMPILER%" == "msvc64" goto DO_MSVC +if "%HB_COMPILER%" == "msvcia64" goto DO_MSVC +if "%HB_COMPILER%" == "bcc" goto DO_BCC +if "%HB_COMPILER%" == "owatcom" goto DO_OWATCOM +if "%HB_COMPILER%" == "pocc" goto DO_POCC + +echo HB_COMPILER %HB_COMPILER% isn't supported. +goto END + +:DO_MSVC + +echo Making .dlls for %HB_COMPILER%... + +md _dll +cd _dll + +if "%HB_COMPILER%" == "icc" set _BIN_LIB=xilib +if not "%HB_COMPILER%" == "icc" set _BIN_LIB=lib +if "%HB_COMPILER%" == "icc" set _BIN_LINK=xilink +if not "%HB_COMPILER%" == "icc" set _BIN_LINK=link + +rem ; Extract neutral objects +echo.> _hboneut.txt +for %%f in (%HB_DLL_LIBS%) do ( + if exist "%HB_LIB_INSTALL%\%%f.lib" ( + echo Processing library: %%f + %_BIN_LIB% "%HB_LIB_INSTALL%\%%f.lib" /nologo /list > _hboraw.txt + for /F %%p in (_hboraw.txt) do ( + %_BIN_LIB% "%HB_LIB_INSTALL%\%%f.lib" /nologo /extract:%%p /out:%%p + echo %%p>> _hboneut.txt + ) + del _hboraw.txt + ) else ( echo Library not found: %HB_LIB_INSTALL%\%%f.lib ) +) + +md _st +cd _st +rem ; Extract ST objects +echo.> ..\_hbost.txt +for %%f in (%HB_DLL_LIBS_ST%) do ( + if exist "%HB_LIB_INSTALL%\%%f.lib" ( + echo Processing library: %%f + %_BIN_LIB% "%HB_LIB_INSTALL%\%%f.lib" /nologo /list > _hboraw.txt + for /F %%p in (_hboraw.txt) do ( + if not "%%p" == "maindll.obj" ( + if not "%%p" == "maindllp.obj" ( + %_BIN_LIB% "%HB_LIB_INSTALL%\%%f.lib" /nologo /extract:%%p /out:%%p + echo _st\%%p>> ..\_hbost.txt + ) + ) + ) + del _hboraw.txt + ) else ( echo Library not found: %HB_LIB_INSTALL%\%%f.lib ) +) +cd .. + +md _mt +cd _mt +rem ; Extract MT objects +echo.> ..\_hbomt.txt +for %%f in (%HB_DLL_LIBS_MT%) do ( + if exist "%HB_LIB_INSTALL%\%%f.lib" ( + echo Processing library: %%f + %_BIN_LIB% "%HB_LIB_INSTALL%\%%f.lib" /nologo /list > _hboraw.txt + for /F %%p in (_hboraw.txt) do ( + if not "%%p" == "maindll.obj" ( + if not "%%p" == "maindllp.obj" ( + %_BIN_LIB% "%HB_LIB_INSTALL%\%%f.lib" /nologo /extract:%%p /out:%%p + echo _mt\%%p>> ..\_hbomt.txt + ) + ) + ) + del _hboraw.txt + ) else ( echo Library not found: %HB_LIB_INSTALL%\%%f.lib ) +) +cd .. + +if "%HB_COMPILER%" == "icc" set _DST_NAME_ST=harbour-%HB_DLL_VERSION% +if "%HB_COMPILER%" == "icc" set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION% +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... && %_BIN_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... && %_BIN_LINK% /nologo /dll /out:"%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll" @_hboneut.txt @_hbomt.txt user32.lib wsock32.lib advapi32.lib gdi32.lib + +if exist "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" move "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_ST%.lib" +if exist "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" move "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_MT%.lib" +if exist "%HB_BIN_INSTALL%\%_DST_NAME_ST%.exp" move "%HB_BIN_INSTALL%\%_DST_NAME_ST%.exp" "%HB_LIB_INSTALL%\%_DST_NAME_ST%.exp" +if exist "%HB_BIN_INSTALL%\%_DST_NAME_MT%.exp" move "%HB_BIN_INSTALL%\%_DST_NAME_MT%.exp" "%HB_LIB_INSTALL%\%_DST_NAME_MT%.exp" + +rem ; Cleanup +for /F %%o in (_hbost.txt) do ( del %%o ) +del _hbost.txt +rmdir _st + +for /F %%o in (_hbomt.txt) do ( del %%o ) +del _hbomt.txt +rmdir _mt + +for /F %%o in (_hboneut.txt) do ( del %%o ) +del _hboneut.txt +cd .. +rmdir _dll + +goto END + +:DO_BCC + +echo Making .dlls for %HB_COMPILER%... + +md _dll +cd _dll + +echo. c0d32.obj +> _hballst.txt +echo. c0d32.obj +> _hballmt.txt + +rem ; Extract neutral objects +echo.> _hboneut.txt +for %%f in (%HB_DLL_LIBS%) do ( + if exist "%HB_LIB_INSTALL%\%%f.lib" ( + echo Processing library: %%f + tlib "%HB_LIB_INSTALL%\%%f.lib", _hboraw.txt > nul + echo.> _hboraw2.txt + for /F "tokens=1,2" %%f in (_hboraw.txt) do ( + if "%%g" == "size" ( + echo %%f.obj >> _hboraw2.txt + ) + ) + del _hboraw.txt + for /F %%p in (_hboraw2.txt) do ( + tlib "%HB_LIB_INSTALL%\%%f.lib" * %%p > nul + echo %%p +>> _hballst.txt + echo %%p +>> _hballmt.txt + echo %%p>> _hboneut.txt + ) + del _hboraw2.txt + ) else ( echo Library not found: %HB_LIB_INSTALL%\%%f.lib ) +) + +md _st +cd _st +rem ; Extract ST objects +echo.> ..\_hbost.txt +for %%f in (%HB_DLL_LIBS_ST%) do ( + if exist "%HB_LIB_INSTALL%\%%f.lib" ( + echo Processing library: %%f + tlib "%HB_LIB_INSTALL%\%%f.lib", _hboraw.txt > nul + echo.> _hboraw2.txt + for /F "tokens=1,2" %%f in (_hboraw.txt) do ( + if "%%g" == "size" ( + echo %%f.obj >> _hboraw2.txt + ) + ) + del _hboraw.txt + for /F %%p in (_hboraw2.txt) do ( + if not "%%p" == "maindll.obj" ( + if not "%%p" == "maindllp.obj" ( + tlib "%HB_LIB_INSTALL%\%%f.lib" * %%p > nul + echo _st\%%p +>> ..\_hballst.txt + echo _st\%%p>> ..\_hbost.txt + ) + ) + ) + del _hboraw2.txt + ) else ( echo Library not found: %HB_LIB_INSTALL%\%%f.lib ) +) +cd .. + +md _mt +cd _mt +rem ; Extract MT objects +echo.> ..\_hbomt.txt +for %%f in (%HB_DLL_LIBS_MT%) do ( + if exist "%HB_LIB_INSTALL%\%%f.lib" ( + echo Processing library: %%f + tlib "%HB_LIB_INSTALL%\%%f.lib", _hboraw.txt > nul + echo.> _hboraw2.txt + for /F "tokens=1,2" %%f in (_hboraw.txt) do ( + if "%%g" == "size" ( + echo %%f.obj >> _hboraw2.txt + ) + ) + del _hboraw.txt + for /F %%p in (_hboraw2.txt) do ( + if not "%%p" == "maindll.obj" ( + if not "%%p" == "maindllp.obj" ( + tlib "%HB_LIB_INSTALL%\%%f.lib" * %%p > nul + echo _mt\%%p +>> ..\_hballmt.txt + echo _mt\%%p>> ..\_hbomt.txt + ) + ) + ) + del _hboraw2.txt + ) else ( echo Library not found: %HB_LIB_INSTALL%\%%f.lib ) +) +cd .. + +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 + +echo Making %_DST_NAME_ST%.dll... && ilink32 -q -Gn -C -aa -Tpd -Gi -x c0d32.obj @_hballst.txt +echo Making %_DST_NAME_MT%.dll... && ilink32 -q -Gn -C -aa -Tpd -Gi -x c0d32.obj @_hballmt.txt + +if exist "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" move "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_ST%.lib" +if exist "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" move "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_MT%.lib" + +del _hballst.txt +del _hballmt.txt + +rem ; Cleanup +for /F %%o in (_hbost.txt) do ( del %%o ) +del _hbost.txt +rmdir _st + +for /F %%o in (_hbomt.txt) do ( del %%o ) +del _hbomt.txt +rmdir _mt + +for /F %%o in (_hboneut.txt) do ( del %%o ) +del _hboneut.txt +cd .. +rmdir _dll + +goto END + +:DO_OWATCOM + +echo Making .dlls for %HB_COMPILER%... + +md _dll +cd _dll + +echo.> _hbsst.txt +echo.> _hbsmt.txt +for %%f in (%HB_DLL_LIBS%) do ( + echo FILE '%HB_LIB_INSTALL%\%%f.lib'>> _hbsst.txt + echo FILE '%HB_LIB_INSTALL%\%%f.lib'>> _hbsmt.txt +) + +copy /b /y "%HB_LIB_INSTALL%\%HB_DLL_LIBS_ST%.lib" . > nul && wlib -q -b "%HB_DLL_LIBS_ST%.lib" - mainwin.obj +copy /b /y "%HB_LIB_INSTALL%\%HB_DLL_LIBS_MT%.lib" . > nul && wlib -q -b "%HB_DLL_LIBS_MT%.lib" - mainwin.obj + +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% +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 + +if exist "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" move "%HB_BIN_INSTALL%\%_DST_NAME_ST%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_ST%.lib" +if exist "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" move "%HB_BIN_INSTALL%\%_DST_NAME_MT%.lib" "%HB_LIB_INSTALL%\%_DST_NAME_MT%.lib" + +del %HB_DLL_LIBS_ST%.lib +del %HB_DLL_LIBS_MT%.lib + +del _hbsst.txt +del _hbsmt.txt +cd .. +rmdir _dll + +goto END + +:DO_POCC + +echo Making .dlls for %HB_COMPILER%... + +md _dll +cd _dll + +rem ; Extract neutral objects +echo.> _hboneut.txt +for %%f in (%HB_DLL_LIBS%) do ( + if exist "%HB_LIB_INSTALL%\%%f.lib" ( + echo Processing library: %%f + polib "%HB_LIB_INSTALL%\%%f.lib" /list /explode >> _hboneut.txt + ) else ( echo Library not found: %HB_LIB_INSTALL%\%%f.lib ) +) + +md _st +cd _st +rem ; Extract ST objects +echo.> ..\_hbost.txt +for %%f in (%HB_DLL_LIBS_ST%) do ( + if exist "%HB_LIB_INSTALL%\%%f.lib" ( + echo Processing library: %%f + polib "%HB_LIB_INSTALL%\%%f.lib" /list /explode > _hboraw.txt + for /F %%p in (_hboraw.txt) do ( + if not "%%p" == "maindll.obj" ( + if not "%%p" == "maindllp.obj" ( + echo _st\%%p>> ..\_hbost.txt + ) + ) + ) + del _hboraw.txt + ) else ( echo Library not found: %HB_LIB_INSTALL%\%%f.lib ) +) +cd .. + +md _mt +cd _mt +rem ; Extract MT objects +echo.> ..\_hbomt.txt +for %%f in (%HB_DLL_LIBS_MT%) do ( + if exist "%HB_LIB_INSTALL%\%%f.lib" ( + echo Processing library: %%f + polib "%HB_LIB_INSTALL%\%%f.lib" /list /explode > _hboraw.txt + for /F %%p in (_hboraw.txt) do ( + if not "%%p" == "maindll.obj" ( + if not "%%p" == "maindllp.obj" ( + echo _mt\%%p>> ..\_hbomt.txt + ) + ) + ) + del _hboraw.txt + ) else ( echo Library not found: %HB_LIB_INSTALL%\%%f.lib ) +) +cd .. + +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 + +polib "%HB_BIN_INSTALL%\%_DST_NAME_ST%.dll" /out:"%HB_LIB_INSTALL%\%_DST_NAME_ST%.lib" +polib "%HB_BIN_INSTALL%\%_DST_NAME_MT%.dll" /out:"%HB_LIB_INSTALL%\%_DST_NAME_MT%.lib" + +rem ; Cleanup +for /F %%o in (_hbost.txt) do ( del %%o ) +if exist _st\maindll.obj del _st\maindll.obj +if exist _st\maindllp.obj del _st\maindllp.obj +del _hbost.txt +rmdir _st + +for /F %%o in (_hbomt.txt) do ( del %%o ) +if exist _mt\maindll.obj del _mt\maindll.obj +if exist _mt\maindllp.obj del _mt\maindllp.obj +del _hbomt.txt +rmdir _mt + +for /F %%o in (_hboneut.txt) do ( del %%o ) +del _hboneut.txt +cd .. +rmdir _dll + +goto END + +:END + +endlocal diff --git a/harbour/include/hbcompdf.h b/harbour/include/hbcompdf.h index f1479d7da1..7685ce26a3 100644 --- a/harbour/include/hbcompdf.h +++ b/harbour/include/hbcompdf.h @@ -508,6 +508,7 @@ typedef struct _HB_LABEL_INFO BOOL fVerbose; BOOL fSetSeqBegin; BOOL fCondJump; + BOOL fEndRequest; int iNestedBlock; ULONG * pulLabels; } HB_LABEL_INFO, * PHB_LABEL_INFO; diff --git a/harbour/source/compiler/genc.c b/harbour/source/compiler/genc.c index 612b7fc9fc..5b9b36f89a 100644 --- a/harbour/source/compiler/genc.c +++ b/harbour/source/compiler/genc.c @@ -1584,7 +1584,7 @@ static HB_GENC_FUNC( hb_p_pushlonglong ) if( cargo->bVerbose ) { #ifdef HB_LONG_LONG_OFF - fprintf( cargo->yyc, "\t/* %f */", HB_PCODE_MKLONGLONG( &pFunc->pCode[ lPCodePos + 1 ] ) ); + fprintf( cargo->yyc, "\t/* %lf */", HB_PCODE_MKLONGLONG( &pFunc->pCode[ lPCodePos + 1 ] ) ); #else char szBuf[ 24 ]; fprintf( cargo->yyc, "\t/* %s */", hb_numToStr( szBuf, sizeof( szBuf ), diff --git a/harbour/source/compiler/gencc.c b/harbour/source/compiler/gencc.c index 077b332f01..4ecbf114dd 100644 --- a/harbour/source/compiler/gencc.c +++ b/harbour/source/compiler/gencc.c @@ -421,7 +421,10 @@ static HB_GENC_FUNC( hb_p_endproc ) if( lPCodePos < pFunc->lPCodePos - 1 ) { if( cargo->iNestedBlock ) + { + cargo->fEndRequest = TRUE; fprintf( cargo->yyc, "\thb_xvmEndProc();\n" ); + } fprintf( cargo->yyc, "\tbreak;\n" ); } return 1; @@ -2254,6 +2257,7 @@ void hb_compGenCRealCode( HB_COMP_DECL, PFUNCTION pFunc, FILE * yyc ) label_info.fVerbose = ( HB_COMP_PARAM->iGenCOutput == HB_COMPGENC_VERBOSE ); label_info.fSetSeqBegin = FALSE; label_info.fCondJump = FALSE; + label_info.fEndRequest = FALSE; label_info.iNestedBlock = 0; if( pFunc->lPCodePos == 0 ) label_info.pulLabels = NULL; @@ -2272,7 +2276,8 @@ void hb_compGenCRealCode( HB_COMP_DECL, PFUNCTION pFunc, FILE * yyc ) hb_compPCodeEval( pFunc, ( HB_PCODE_FUNC_PTR * ) pFuncTable, ( void * ) &label_info ); fprintf( yyc, " } while( 0 );\n" ); - fprintf( yyc, " hb_xvmExitProc();\n" ); + if( label_info.fEndRequest ) + fprintf( yyc, " hb_xvmExitProc();\n" ); fprintf( yyc, "}\n" ); if( label_info.pulLabels ) diff --git a/harbour/tests/speedtst.prg b/harbour/tests/speedtst.prg index 08fe2fa23a..b108b2afed 100644 --- a/harbour/tests/speedtst.prg +++ b/harbour/tests/speedtst.prg @@ -77,13 +77,17 @@ #command ?? => outstd() #ifdef __HARBOUR__ - #define EOL hb_OSNewLine() + #ifndef EOL + #define EOL hb_OSNewLine() + #endif #else #ifndef __CLIP__ #xtranslate secondsCPU() => seconds() - #endif - #ifndef EOL - #define EOL chr(10) + #ifndef EOL + #define EOL chr(10) + #endif + #else + #define EOL chr(13)+chr(10) #endif #endif