diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 528349229b..d8169c8d77 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,26 @@ 2009-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org) */ +2009-04-07 16:33 UTC+0200 Viktor Szakats (harbour.01 syenar hu) + * bin/postinst.bat + ! Fixed shared executable creation for cross-builds. + + * utils/hbmk2/hbmk2.hbm + * utils/hbi18n/hbi18n.hbm + % Added -nulrdd. This will remove the hbmk2 build size overhead + compared to GNU Make built executables. + + * utils/hbmk2/hbmk2.prg + ! Don't add the same libdir twice in some cases. + + Added support for wce arch in remaining places. + ! Added hbmainwin and hbmainstd for mingw targets. + This should fix some failing shared lib scenarios I've + experienced with minwgce. I hope it doesn't break + everything else (tested mingw64 and mingw scenarios worked). + * Internal change to handle shared libname separately + so that special extensions and handling can be added + for it, if needed. + 2009-04-07 12:58 UTC+0200 Viktor Szakats (harbour.01 syenar hu) * external/libhpdf/Makefile ! Disabled for wce arch and mingwce comp. @@ -850,7 +870,7 @@ with -DHB_DYNLIB. IMO this macro should be ignored in MinGW builds as there is no separate DLL build and non-DLL. [ I cannot fix this. ] - Until then I had to a hack to starter batch files. + Until then I had to add a hack to starter batch files. * mpkg_win.bat * Switched to use make_gnu.bat instead of make_gnu.sh to build diff --git a/harbour/bin/postinst.bat b/harbour/bin/postinst.bat index 9349765887..eea4efd4a7 100644 --- a/harbour/bin/postinst.bat +++ b/harbour/bin/postinst.bat @@ -39,13 +39,12 @@ if not "%HB_DYNLIB%" == "yes" goto _SKIP_DLL_BIN call %~dp0hb-mkdyn.bat setlocal - set _HB_BIN_INSTALL=%HB_BIN_INSTALL% - if not "%HB_BIN_COMPILE%" == "" set HB_BIN_INSTALL=%HB_BIN_COMPILE% - if exist "%_HB_BIN_INSTALL%\*.dll" ( - %HB_BIN_INSTALL%\hbmk2 -q0 -shared -o%_HB_BIN_INSTALL%\hbrun-dll %~dp0..\utils\hbrun\hbrun.hbm -lhbcplr -lhbpp -lhbcommon - %HB_BIN_INSTALL%\hbmk2 -q0 -shared -o%_HB_BIN_INSTALL%\hbmk2-dll %~dp0..\utils\hbmk2\hbmk2.hbm -lhbcplr -lhbpp -lhbcommon - %HB_BIN_INSTALL%\hbmk2 -q0 -shared -o%_HB_BIN_INSTALL%\hbtest-dll %~dp0..\utils\hbtest\hbtest.hbm - %HB_BIN_INSTALL%\hbmk2 -q0 -shared -o%_HB_BIN_INSTALL%\hbi18n-dll %~dp0..\utils\hbi18n\hbi18n.hbm + if "%HB_BIN_COMPILE%" == "" set HB_BIN_COMPILE=%HB_BIN_INSTALL% + if exist "%HB_BIN_INSTALL%\*.dll" ( + %HB_BIN_COMPILE%\hbmk2 -q0 -shared -o%HB_BIN_INSTALL%\hbrun-dll %~dp0..\utils\hbrun\hbrun.hbm -lhbcplr -lhbpp -lhbcommon + %HB_BIN_COMPILE%\hbmk2 -q0 -shared -o%HB_BIN_INSTALL%\hbmk2-dll %~dp0..\utils\hbmk2\hbmk2.hbm -lhbcplr -lhbpp -lhbcommon + %HB_BIN_COMPILE%\hbmk2 -q0 -shared -o%HB_BIN_INSTALL%\hbtest-dll %~dp0..\utils\hbtest\hbtest.hbm + %HB_BIN_COMPILE%\hbmk2 -q0 -shared -o%HB_BIN_INSTALL%\hbi18n-dll %~dp0..\utils\hbi18n\hbi18n.hbm ) endlocal diff --git a/harbour/utils/hbi18n/hbi18n.hbm b/harbour/utils/hbi18n/hbi18n.hbm index edf09e5135..87bf965441 100644 --- a/harbour/utils/hbi18n/hbi18n.hbm +++ b/harbour/utils/hbi18n/hbi18n.hbm @@ -2,4 +2,5 @@ # $Id$ # +-nulrdd hbi18n.prg diff --git a/harbour/utils/hbmk2/hbmk2.hbm b/harbour/utils/hbmk2/hbmk2.hbm index 01480006a8..b7b05aff1f 100644 --- a/harbour/utils/hbmk2/hbmk2.hbm +++ b/harbour/utils/hbmk2/hbmk2.hbm @@ -2,4 +2,5 @@ # $Id$ # +-nulrdd hbmk2.prg diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index 7cc50e48c4..b0bb5b9967 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -213,6 +213,7 @@ PROCEDURE Main( ... ) LOCAL s_aRESSRC LOCAL s_aRESCMP LOCAL s_aLIBSHARED + LOCAL s_aLIBSHAREDPOST LOCAL s_aLIB LOCAL s_aLIBVM LOCAL s_aLIBUSER @@ -758,7 +759,7 @@ PROCEDURE Main( ... ) /* Add main Harbour library dir to lib path list */ AAddNotEmpty( s_aLIBPATH, s_cHB_LIB_INSTALL ) - IF ! Empty( s_cHB_DYN_INSTALL ) + IF ! Empty( s_cHB_DYN_INSTALL ) .AND. !( s_cHB_DYN_INSTALL == s_cHB_LIB_INSTALL ) AAddNotEmpty( s_aLIBPATH, s_cHB_DYN_INSTALL ) ENDIF @@ -1234,7 +1235,7 @@ PROCEDURE Main( ... ) CASE t_cARCH $ "bsd|linux|hpux|sunos" .OR. t_cARCH == "darwin" /* Separated to avoid match with 'win' */ s_aLIBSHARED := { iif( s_lMT, cPrefix + cDynLibNamePrefix + "harbourmt" + cPostfix + cDynLibExt,; cPrefix + cDynLibNamePrefix + "harbour" + cPostfix + cDynLibExt ) } - CASE t_cARCH $ "os2|win" + CASE t_cARCH $ "os2|win|wce" s_aLIBSHARED := { iif( s_lMT, cDynLibNamePrefix + "harbourmt",; cDynLibNamePrefix + "harbour" ) } OTHERWISE @@ -1496,6 +1497,8 @@ PROCEDURE Main( ... ) "harbour-" + cDL_Version_Alter ) } ENDCASE + s_aLIBSHAREDPOST := { "hbmainstd", "hbmainwin" } + IF s_lFMSTAT != NIL .AND. s_lFMSTAT AAdd( s_aLIBFM, iif( s_lMT, "hbfmmt", "hbfm" ) ) ENDIF @@ -1640,8 +1643,8 @@ PROCEDURE Main( ... ) AAdd( s_aOPTL, "OP MAP" ) ENDIF s_aLIBSYS := ArrayAJoin( { s_aLIBSYS, s_aLIBSYSCORE, s_aLIBSYSMISC } ) - s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter,; - "harbour-" + cDL_Version_Alter ) } + s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + cLibExt,; + "harbour-" + cDL_Version_Alter + cLibExt ) } AAdd( s_aOPTL, "FILE " + FN_ExtSet( s_cHB_LIB_INSTALL + hb_osPathSeparator() + iif( s_lGUI, "hbmainwin", "hbmainstd" ), cLibExt ) ) @@ -1766,10 +1769,9 @@ PROCEDURE Main( ... ) IF s_lSHARED AAdd( s_aLIBPATH, "{DB}" ) ENDIF - s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-bcc",; - "harbour-" + cDL_Version_Alter + "-bcc" ),; - "hbmainstd",; - "hbmainwin" } + s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-bcc" + cLibExt,; + "harbour-" + cDL_Version_Alter + "-bcc" + cLibExt ) } + s_aLIBSHAREDPOST := { "hbmainstd", "hbmainwin" } IF s_lFMSTAT != NIL .AND. s_lFMSTAT AAdd( s_aLIBFM, iif( s_lMT, "hbfmmt", "hbfm" ) ) @@ -1860,27 +1862,21 @@ PROCEDURE Main( ... ) ENDIF DO CASE CASE t_cCOMP $ "msvc|icc" - s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter,; - "harbour-" + cDL_Version_Alter ),; - "hbmainstd",; - "hbmainwin" } + s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + cLibExt,; + "harbour-" + cDL_Version_Alter + cLibExt ) } CASE t_cCOMP == "msvc64" - s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-x64",; - "harbour-" + cDL_Version_Alter + "-x64" ),; - "hbmainstd",; - "hbmainwin" } + s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-x64" + cLibExt,; + "harbour-" + cDL_Version_Alter + "-x64" + cLibExt ) } CASE t_cCOMP $ "msvcia64|iccia64" - s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-ia64",; - "harbour-" + cDL_Version_Alter + "-ia64" ),; - "hbmainstd",; - "hbmainwin" } + s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-ia64" + cLibExt,; + "harbour-" + cDL_Version_Alter + "-ia64" + cLibExt ) } CASE t_cCOMP == "msvcce" .OR. t_cCOMP == "msvcarm" - s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-arm",; - "harbour-" + cDL_Version_Alter + "-arm" ),; - "hbmainstd",; - "hbmainwin" } + s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-arm" + cLibExt,; + "harbour-" + cDL_Version_Alter + "-arm" + cLibExt ) } ENDCASE + s_aLIBSHAREDPOST := { "hbmainstd", "hbmainwin" } + IF !( t_cCOMP $ "icc|iccia64" ) cBin_Res := "rc.exe" cOpt_Res := "/r {LR}" @@ -1962,22 +1958,18 @@ PROCEDURE Main( ... ) ENDIF DO CASE CASE t_cCOMP == "pocc64" - s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-x64",; - "harbour-" + cDL_Version_Alter + "-x64" ),; - "hbmainstd",; - "hbmainwin" } + s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-x64" + cLibExt,; + "harbour-" + cDL_Version_Alter + "-x64" + cLibExt ) } CASE t_cCOMP $ "poccce|poccarm" - s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-arm",; - "harbour-" + cDL_Version_Alter + "-arm" ),; - "hbmainstd",; - "hbmainwin" } + s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + "-arm" + cLibExt,; + "harbour-" + cDL_Version_Alter + "-arm" + cLibExt ) } OTHERWISE - s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter,; - "harbour-" + cDL_Version_Alter ),; - "hbmainstd",; - "hbmainwin" } + s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter + cLibExt,; + "harbour-" + cDL_Version_Alter + cLibExt ) } ENDCASE + s_aLIBSHAREDPOST := { "hbmainstd", "hbmainwin" } + IF s_lFMSTAT != NIL .AND. s_lFMSTAT AAdd( s_aLIBFM, iif( s_lMT, "hbfmmt", "hbfm" ) ) ENDIF @@ -1991,7 +1983,7 @@ PROCEDURE Main( ... ) ENDIF ENDCASE - IF lCreateDyn .AND. t_cARCH == "win" + IF lCreateDyn .AND. t_cARCH $ "win|wce" AAdd( s_aOPTC, "-DHB_DYNLIB" ) ENDIF @@ -2017,7 +2009,7 @@ PROCEDURE Main( ... ) /* NOTE: This has to be kept synced with Harbour HB_IMPORT values. */ DO CASE CASE ! s_lSHARED .OR. ; - !( t_cARCH == "win" ) .OR. ; + !( t_cARCH $ "win|wce" ) .OR. ; t_cCOMP $ "msvc|msvc64|msvcia64|icc|iccia64" /* NOTE: MSVC gives the warning: @@ -2105,7 +2097,7 @@ PROCEDURE Main( ... ) /* Library list assembly */ IF s_lSHARED .AND. ! Empty( s_aLIBSHARED ) - s_aLIBHB := ArrayAJoin( { s_aLIBSHARED,; + s_aLIBHB := ArrayAJoin( { s_aLIBSHAREDPOST,; s_aLIBFM,; aLIB_BASE_CPLR,; aLIB_BASE_DEBUG } ) @@ -2125,6 +2117,9 @@ PROCEDURE Main( ... ) s_aLIB := ArrayAJoin( { s_aLIBHB, s_aLIBUSER, s_aLIB3RD, s_aLIBSYS } ) /* Dress lib names. */ s_aLIB := ListCookLib( s_aLIB, cLibPrefix, cLibExt ) + IF s_lSHARED .AND. ! Empty( s_aLIBSHARED ) + s_aLIB := ArrayJoin( ListCookLib( s_aLIBSHARED, cLibPrefix ), s_aLIB ) + ENDIF /* Dress obj names. */ s_aOBJ := ListDirExt( ArrayJoin( s_aPRG, s_aC ), "", cObjExt ) s_aOBJUSER := ListCook( s_aOBJUSER, NIL, cObjExt ) @@ -2751,7 +2746,7 @@ STATIC FUNCTION PathSepToTarget( cFileName, nStart ) DEFAULT nStart TO 1 - IF t_cARCH $ "win|dos|os2" .AND. !( t_cCOMP $ "mingw|mingw64|mingwce|mingwarm|cygwin" ) + IF t_cARCH $ "win|wce|dos|os2" .AND. !( t_cCOMP $ "mingw|mingw64|mingwce|mingwarm|cygwin" ) RETURN Left( cFileName, nStart - 1 ) + StrTran( SubStr( cFileName, nStart ), "/", "\" ) ENDIF