From 394831e5d444d93bef75a21f489a333b4968bbd7 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Mon, 16 Mar 2009 00:36:06 +0000 Subject: [PATCH] 2009-03-16 01:33 UTC+0100 Viktor Szakats (harbour.01 syenar hu) * bin/hb-mkdyn.bat * source/vm/maindllp.c * utils/hbmk2/hbmk2.prg + Added .dll generation for pocc. + Added -shared support for pocc. * utils/hbmk2/hbmk2.prg ! Warning after prev commit is fixed. * source/vm/Makefile * All win targets will generate maindllh lib. --- harbour/ChangeLog | 31 ++++++++++---- harbour/bin/hb-mkdyn.bat | 81 +++++++++++++++++++++++++++++++++++ harbour/source/vm/Makefile | 22 +--------- harbour/source/vm/maindllp.c | 2 + harbour/utils/hbmk2/hbmk2.prg | 5 ++- 5 files changed, 110 insertions(+), 31 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 879d751c0c..5660f51861 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,19 @@ 2009-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org) */ +2009-03-16 01:33 UTC+0100 Viktor Szakats (harbour.01 syenar hu) + * bin/hb-mkdyn.bat + * source/vm/maindllp.c + * utils/hbmk2/hbmk2.prg + + Added .dll generation for pocc. + + Added -shared support for pocc. + + * utils/hbmk2/hbmk2.prg + ! Warning after prev commit is fixed. + + * source/vm/Makefile + * All win targets will generate maindllh lib. + 2009-03-15 16:42 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com) * harbour/contrib/gtwvg/hbgtwvg.ch @@ -36,14 +49,14 @@ + Implemented a highly optimized GUI controls for CUI consoles. Implementation includes auto-destruction, data-substitution, enable/disable feast, etc. These controls are almost identical - which are available with Wvt_Draw*() namespace but with a - great difference that these are tied to the urrent GT and - are handelled transparently by the GT itself. Developer - has only to define it. The only requirement is that - SaveScreen()/RestScreen() needs to be changed to new - Modal GT window. Appln screens will never get blurred. It - also employs optimized double-buffering and hence almost - eliminates screen flickering. + which are available with Wvt_Draw*() namespace but with a + great difference that these are tied to the urrent GT and + are handelled transparently by the GT itself. Developer + has only to define it. The only requirement is that + SaveScreen()/RestScreen() needs to be changed to new + Modal GT window. Appln screens will never get blurred. It + also employs optimized double-buffering and hence almost + eliminates screen flickering. * harbour/contrib/gtwvg/wvgcore.c * harbour/contrib/gtwvg/wvgsink.c @@ -59,7 +72,7 @@ ! Demonstrated the latest implemention of CUI-GUI controls. See below. Please try option in the main menu. Also note the usage of Modal GT to simulate Alert() in new window. - Every GUI object returns a handle to it which may be used to + Every GUI object returns a handle to it which may be used to change its parameters. ; TOFIX( WINCE BUILDS ) - GetSystemDirectory() diff --git a/harbour/bin/hb-mkdyn.bat b/harbour/bin/hb-mkdyn.bat index 486cbce35f..bae0101bde 100644 --- a/harbour/bin/hb-mkdyn.bat +++ b/harbour/bin/hb-mkdyn.bat @@ -27,6 +27,7 @@ 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 @@ -284,6 +285,86 @@ del _hbsmt.txt cd .. rmdir _dll +: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%-pocc +set _DST_NAME_MT=harbourmt-%HB_DLL_VERSION%-pocc + +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 + +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 diff --git a/harbour/source/vm/Makefile b/harbour/source/vm/Makefile index 2ebdd52d83..30291e690a 100644 --- a/harbour/source/vm/Makefile +++ b/harbour/source/vm/Makefile @@ -17,6 +17,7 @@ ifeq ($(HB_ARCHITECTURE),win) DIRS = mainstd mainwin endif endif + DIRS += maindllh else ifeq ($(HB_ARCHITECTURE),os2) C_MAIN = mainstd.c @@ -25,27 +26,6 @@ else endif endif -ifeq ($(HB_ARCHITECTURE),win) - ifeq ($(HB_COMPILER),bcc) - DIRS += maindllh - endif - ifeq ($(HB_COMPILER),icc) - DIRS += maindllh - endif - ifeq ($(HB_COMPILER),msvc) - DIRS += maindllh - endif - ifeq ($(HB_COMPILER),msvc64) - DIRS += maindllh - endif - ifeq ($(HB_COMPILER),msvcia64) - DIRS += maindllh - endif - ifeq ($(HB_COMPILER),owatcom) - DIRS += maindllh - endif -endif - C_SOURCES=\ hvm.c \ arrays.c \ diff --git a/harbour/source/vm/maindllp.c b/harbour/source/vm/maindllp.c index d28437cb75..945d89a445 100644 --- a/harbour/source/vm/maindllp.c +++ b/harbour/source/vm/maindllp.c @@ -62,6 +62,8 @@ #define HB_DLL_NAME "harbour.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" #elif defined( _MSC_VER ) && defined( _M_X64 ) diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index b8e93a76cc..307315af2b 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -1652,7 +1652,6 @@ FUNCTION Main( ... ) ENDIF cBin_Dyn := cBin_Link cOpt_CompC := "/c /Ze /Go {FC} /I{DI} {LC}" - cOpt_Lib := "{FA} /out:{OL} {LO}" cOpt_Dyn := "{FD} /dll /out:{OD} {DL} {LO} {LL} {LS}" IF t_cCOMP == "pocc" AAdd( s_aOPTC, "/Ot" ) @@ -1682,6 +1681,10 @@ 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" ),; + "hbmainstd",; + "hbmainwin" } /* TODO */ CASE t_cARCH == "linux" .AND. t_cCOMP == "icc"