From a6569d6ef939ecd6a8ba0fb8e1a50100d9d6a56e Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Sun, 15 Mar 2009 23:40:53 +0000 Subject: [PATCH] 2009-03-16 00:38 UTC+0100 Viktor Szakats (harbour.01 syenar hu) * bin/postinst.bat + Added owatcom and pocc support for implib generation. * utils/hbmk2/hbmk2.prg + Fixed win/pocc support. + Added resource support for win/pocc. + Added .dll support for win/pocc. + Added win/xcc support (untested). + -DHB_DYNLIB is passed to C compiler in -hbdyn (.dll) mode for win targets. (still need fixing to create usable .dlls) ; NOTE: pocc support is very limited as pocc compiler doesn't support multiple input files. --- harbour/ChangeLog | 14 +++++++++ harbour/bin/postinst.bat | 54 +++++++++++++++++++++++++++++++++++ harbour/utils/hbmk2/hbmk2.prg | 42 ++++++++++++++++++++------- 3 files changed, 99 insertions(+), 11 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 433980fb93..316b9fb67e 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,20 @@ 2009-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org) */ +2009-03-16 00:38 UTC+0100 Viktor Szakats (harbour.01 syenar hu) + * bin/postinst.bat + + Added owatcom and pocc support for implib generation. + + * utils/hbmk2/hbmk2.prg + + Fixed win/pocc support. + + Added resource support for win/pocc. + + Added .dll support for win/pocc. + + Added win/xcc support (untested). + + -DHB_DYNLIB is passed to C compiler in -hbdyn (.dll) mode + for win targets. (still need fixing to create usable .dlls) + ; NOTE: pocc support is very limited as pocc compiler doesn't + support multiple input files. + 2009-03-15 20:51 UTC+0100 Viktor Szakats (harbour.01 syenar hu) * INSTALL + Documented cross-build config for minwgce. diff --git a/harbour/bin/postinst.bat b/harbour/bin/postinst.bat index 52ebc07fc3..7e2e031d11 100644 --- a/harbour/bin/postinst.bat +++ b/harbour/bin/postinst.bat @@ -97,6 +97,60 @@ if "%HB_BUILD_IMPLIB%" == "yes" ( goto END ) + + if "%HB_COMPILER%" == "pocc" ( + + if exist "%HB_DIR_ADS%\Redistribute\ace32.lib" copy /b /y "%HB_DIR_ADS%\Redistribute\ace32.lib" "%HB_LIB_INSTALL%\ace32.lib" + if exist "%HB_DIR_ADS%\ace32.lib" copy /b /y "%HB_DIR_ADS%\ace32.lib" "%HB_LIB_INSTALL%\ace32.lib" + if exist "%HB_DIR_ADS%\32bit\ace32.lib" copy /b /y "%HB_DIR_ADS%\32bit\ace32.lib" "%HB_LIB_INSTALL%\ace32.lib" + if exist "%HB_DIR_ALLEGRO%\lib\alleg.lib" copy /b /y "%HB_DIR_ALLEGRO%\lib\alleg.lib" "%HB_LIB_INSTALL%\alleg.lib" + if exist "%HB_DIR_APOLLO%\sde61.dll" polib "%HB_DIR_APOLLO%\sde61.dll" /out:"%HB_LIB_INSTALL%\sde61.lib" + if exist "%HB_DIR_BLAT%\full\blat.lib" copy /b /y "%HB_DIR_BLAT%\full\blat.lib" "%HB_LIB_INSTALL%\blat.lib" + if exist "%HB_DIR_CURL%\libcurl.dll" polib "%HB_DIR_CURL%\libcurl.dll" /out:"%HB_LIB_INSTALL%\libcurl.lib" + if exist "%HB_DIR_CURL%\bin\libcurl.dll" polib "%HB_DIR_CURL%\bin\libcurl.dll" /out:"%HB_LIB_INSTALL%\libcurl.lib" + if exist "%HB_DIR_FIREBIRD%\lib\fbclient_ms.lib" copy /b /y "%HB_DIR_FIREBIRD%\lib\fbclient_ms.lib" "%HB_LIB_INSTALL%\fbclient.lib" + if exist "%HB_DIR_FREEIMAGE%\Dist\FreeImage.lib" copy /b /y "%HB_DIR_FREEIMAGE%\Dist\FreeImage.lib" "%HB_LIB_INSTALL%\FreeImage.lib" + if exist "%HB_DIR_GD%\lib\bgd.lib" copy /b /y "%HB_DIR_GD%\lib\bgd.lib" "%HB_LIB_INSTALL%\bgd.lib" + if exist "%HB_DIR_LIBHARU%\libhpdf.lib" copy /b /y "%HB_DIR_LIBHARU%\libhpdf.lib" "%HB_LIB_INSTALL%\libhpdf.lib" + if exist "%HB_DIR_LIBHARU%\lib_dll\libhpdf.lib" copy /b /y "%HB_DIR_LIBHARU%\lib_dll\libhpdf.lib" "%HB_LIB_INSTALL%\libhpdf.lib" + if exist "%HB_DIR_MYSQL%\lib\opt\libmySQL.lib" copy /b /y "%HB_DIR_MYSQL%\lib\opt\libmySQL.lib" "%HB_LIB_INSTALL%\libmySQL.lib" + if exist "%HB_DIR_OPENSSL%\out32dll\libeay32.lib" copy /b /y "%HB_DIR_OPENSSL%\out32dll\libeay32.lib" "%HB_LIB_INSTALL%\libeay32.lib" + if exist "%HB_DIR_OPENSSL%\dll\libeay32.lib" copy /b /y "%HB_DIR_OPENSSL%\dll\libeay32.lib" "%HB_LIB_INSTALL%\libeay32.lib" + if exist "%HB_DIR_OPENSSL%\libeay32.lib" copy /b /y "%HB_DIR_OPENSSL%\libeay32.lib" "%HB_LIB_INSTALL%\libeay32.lib" + if exist "%HB_DIR_OPENSSL%\out32dll\ssleay32.lib" copy /b /y "%HB_DIR_OPENSSL%\out32dll\ssleay32.lib" "%HB_LIB_INSTALL%\ssleay32.lib" + if exist "%HB_DIR_OPENSSL%\dll\ssleay32.lib" copy /b /y "%HB_DIR_OPENSSL%\dll\ssleay32.lib" "%HB_LIB_INSTALL%\ssleay32.lib" + if exist "%HB_DIR_OPENSSL%\ssleay32.lib" copy /b /y "%HB_DIR_OPENSSL%\ssleay32.lib" "%HB_LIB_INSTALL%\ssleay32.lib" + if exist "%HB_DIR_PGSQL%\lib\libpq.lib" copy /b /y "%HB_DIR_PGSQL%\lib\libpq.lib" "%HB_LIB_INSTALL%\libpq.lib" + + goto END + ) + + if "%HB_COMPILER%" == "owatcom" ( + + if exist "%HB_DIR_ADS%\Redistribute\ace32.lib" wlib.exe -q -o="%HB_LIB_INSTALL%\ace32.lib" "%HB_DIR_ADS%\Redistribute\ace32.dll" + if exist "%HB_DIR_ADS%\ace32.lib" wlib.exe -q -o="%HB_LIB_INSTALL%\ace32.lib" "%HB_DIR_ADS%\ace32.dll" + if exist "%HB_DIR_ADS%\32bit\ace32.lib" wlib.exe -q -o="%HB_LIB_INSTALL%\ace32.lib" "%HB_DIR_ADS%\32bit\ace32.dll" + if exist "%HB_DIR_ALLEGRO%\lib\alleg.lib" wlib.exe -q -o="%HB_LIB_INSTALL%\alleg.lib" "%HB_DIR_ALLEGRO%\bin\alleg42.dll" + if exist "%HB_DIR_APOLLO%\sde61.dll" wlib.exe -q -o="%HB_LIB_INSTALL%\sde61.lib" "%HB_DIR_APOLLO%\sde61.dll" + if exist "%HB_DIR_BLAT%\full\blat.lib" wlib.exe -q -o="%HB_LIB_INSTALL%\blat.lib" "%HB_DIR_BLAT%\full\blat.dll" + if exist "%HB_DIR_CURL%\libcurl.dll" wlib.exe -q -o="%HB_LIB_INSTALL%\libcurl.lib" "%HB_DIR_CURL%\libcurl.dll" + if exist "%HB_DIR_CURL%\bin\libcurl.dll" wlib.exe -q -o="%HB_LIB_INSTALL%\libcurl.lib" "%HB_DIR_CURL%\bin\libcurl.dll" + if exist "%HB_DIR_FIREBIRD%\lib\fbclient_ms.lib" wlib.exe -q -o="%HB_LIB_INSTALL%\fbclient.lib" "%HB_LIB_INSTALL%\fblient.lib" + if exist "%HB_DIR_FREEIMAGE%\Dist\FreeImage.lib" wlib.exe -q -o="%HB_LIB_INSTALL%\FreeImage.lib" "%HB_DIR_FREEIMAGE%\Dist\FreeImage.dll" + if exist "%HB_DIR_GD%\lib\bgd.lib" wlib.exe -q -o="%HB_LIB_INSTALL%\bgd.lib" "%HB_DIR_GD%\bin\bgd.dll" + if exist "%HB_DIR_LIBHARU%\libhpdf.lib" wlib.exe -q -o="%HB_LIB_INSTALL%\libhpdf.lib" "%HB_DIR_LIBHARU%\libhpdf.dll" + if exist "%HB_DIR_LIBHARU%\lib_dll\libhpdf.lib" wlib.exe -q -o="%HB_LIB_INSTALL%\libhpdf.lib" "%HB_DIR_LIBHARU%\lib_dll\libhpdf.dll" + if exist "%HB_DIR_MYSQL%\lib\opt\libmySQL.lib" wlib.exe -q -o="%HB_LIB_INSTALL%\libmySQL.lib" "%HB_DIR_MYSQL%\bin\libmySQL.dll" + if exist "%HB_DIR_OPENSSL%\out32dll\libeay32.lib" wlib.exe -q -o="%HB_LIB_INSTALL%\libeay32.lib" "%HB_DIR_OPENSSL%\out32dll\libeay32.dll" + if exist "%HB_DIR_OPENSSL%\dll\libeay32.lib" wlib.exe -q -o="%HB_LIB_INSTALL%\libeay32.lib" "%HB_DIR_OPENSSL%\dll\libeay32.dll" + if exist "%HB_DIR_OPENSSL%\libeay32.lib" wlib.exe -q -o="%HB_LIB_INSTALL%\libeay32.lib" "%HB_DIR_OPENSSL%\libeay32.dll" + if exist "%HB_DIR_OPENSSL%\out32dll\ssleay32.lib" wlib.exe -q -o="%HB_LIB_INSTALL%\ssleay32.lib" "%HB_DIR_OPENSSL%\out32dll\ssleay32.dll" + if exist "%HB_DIR_OPENSSL%\dll\ssleay32.lib" wlib.exe -q -o="%HB_LIB_INSTALL%\ssleay32.lib" "%HB_DIR_OPENSSL%\dll\ssleay32.dll" + if exist "%HB_DIR_OPENSSL%\ssleay32.lib" wlib.exe -q -o="%HB_LIB_INSTALL%\ssleay32.lib" "%HB_DIR_OPENSSL%\ssleay32.dll" + if exist "%HB_DIR_PGSQL%\lib\libpq.lib" wlib.exe -q -o="%HB_LIB_INSTALL%\libpq.lib" "%HB_DIR_PGSQL%\lib\libpq.dll" + + goto END + ) ) ) diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index 7581fb3a6e..b8e93a76cc 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -1624,9 +1624,12 @@ FUNCTION Main( ... ) cResExt := ".res" ENDIF - CASE t_cARCH == "win" .AND. t_cCOMP == "pocc" + CASE ( t_cARCH == "win" .AND. t_cCOMP == "pocc" ) .OR. ; + ( t_cARCH == "win" .AND. t_cCOMP == "xcc" ) + /* TODO: pocc doesn't support multiple .c input files. This means we need to do the heavy lifting. */ + IF s_lGUI AAdd( s_aOPTL, "/subsystem:windows" ) ELSE @@ -1636,23 +1639,37 @@ FUNCTION Main( ... ) cLibExt := ".lib" cObjExt := ".obj" cLibLibExt := cLibExt - cBin_CompC := "pocc.exe" - cOpt_CompC := "/Ze /Go /Ot /Tx86-coff {FC} /I{DI} {LC}" - cBin_Lib := "polib.exe" + IF t_cCOMP == "xcc" + cBin_CompC := "xcc.exe" + cBin_Lib := "xlib.exe" + cBin_Link := "xlink.exe" + cBin_Res := "xrc.exe" + ELSE + cBin_CompC := "pocc.exe" + cBin_Lib := "polib.exe" + cBin_Link := "polink.exe" + cBin_Res := "porc.exe" + 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" ) + AAdd( s_aOPTC, "/Tx86-coff" ) + ENDIF + cOpt_Res := "{LR}" + cResExt := ".res" cOpt_Lib := "{FA} /out:{OL} {LO}" IF s_lMT AAdd( s_aOPTC, "/MT" ) ENDIF IF lStopAfterCComp - AAdd( s_aOPTC, "/c" ) IF ( Len( s_aPRG ) + Len( s_aC ) ) == 1 AAdd( s_aOPTC, "/Fo{OO}" ) ENDIF - ELSE - AAdd( s_aOPTC, "/Fo{OE}" ) ENDIF - cBin_Link := "polink.exe" - cOpt_Link := "{LO} {DL} {FL} {LL}" + cOpt_Link := "{LO} {DL} {FL} {LL} {LS}" cLibPathPrefix := "/libpath:" cLibPathSep := " " IF s_lSHARED @@ -1664,7 +1681,7 @@ FUNCTION Main( ... ) IF s_lDEBUG AAdd( s_aOPTL, "/debug" ) ENDIF - s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "user32", "wsock32", "advapi32", "gdi32" } ) + s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "kernel32", "user32", "wsock32", "advapi32", "gdi32" } ) /* TODO */ CASE t_cARCH == "linux" .AND. t_cCOMP == "icc" @@ -1675,9 +1692,12 @@ FUNCTION Main( ... ) s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "wininet", "ws2", "commdlg", "commctrl", "uuid", "ole32" } ) ENDIF CASE t_cARCH == "win" .AND. t_cCOMP == "msvcce" /* NOTE: Cross-platform: wince/ARM on win/x86 */ - CASE t_cARCH == "win" .AND. t_cCOMP == "xcc" ENDCASE + IF lCreateDyn .AND. t_cARCH == "win" + AAdd( s_aOPTC, "-DHB_DYNLIB" ) + ENDIF + /* Do entry function detection on platform required and supported */ IF ! lStopAfterCComp .AND. s_cMAIN == NIL tmp := iif( Lower( FN_ExtGet( s_cFIRST ) ) == ".prg" .OR. Empty( FN_ExtGet( s_cFIRST ) ), FN_ExtSet( s_cFIRST, ".c" ), s_cFIRST )