X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fdriver%2FPackageSrc.hs;h=81b963b779aecb6fd6dff6e571ae77d07aad07b6;hb=a336a1e790463b53a64b864426919f9982a4607a;hp=22fbf4b454a3a52d1b9b310c5b2b969ada6a438c;hpb=49ddc1b81d98bfed558bef41a8fc76e9602c5f05;p=ghc-hetmet.git diff --git a/ghc/driver/PackageSrc.hs b/ghc/driver/PackageSrc.hs index 22fbf4b..81b963b 100644 --- a/ghc/driver/PackageSrc.hs +++ b/ghc/driver/PackageSrc.hs @@ -1,5 +1,9 @@ +#include "../includes/config.h" + module Main (main) where +import Utils + import IO import System import Config @@ -42,7 +46,11 @@ package_details installing = then [ clibdir ] else [ ghc_src_dir cGHC_RUNTIME_DIR ], hs_libraries = [ "HSrts" ], +#ifndef mingw32_TARGET_OS extra_libraries = [], +#else + extra_libraries = [ "winmm" ], -- for the threadDelay timer +#endif include_dirs = if installing then [ clibdir ++ "/includes" ] else [ ghc_src_dir cGHC_INCLUDE_DIR ], @@ -52,37 +60,44 @@ package_details installing = extra_cc_opts = [], -- the RTS forward-references to a bunch of stuff in the prelude, -- so we force it to be included with special options to ld. - extra_ld_opts = [ - "-u PrelMain_mainIO_closure" - , "-u PrelBase_Izh_static_info" - , "-u PrelBase_Czh_static_info" - , "-u PrelFloat_Fzh_static_info" - , "-u PrelFloat_Dzh_static_info" - , "-u PrelAddr_Azh_static_info" - , "-u PrelAddr_Wzh_static_info" - , "-u PrelAddr_I64zh_static_info" - , "-u PrelAddr_W64zh_static_info" - , "-u PrelStable_StablePtr_static_info" - , "-u PrelBase_Izh_con_info" - , "-u PrelBase_Czh_con_info" - , "-u PrelFloat_Fzh_con_info" - , "-u PrelFloat_Dzh_con_info" - , "-u PrelAddr_Azh_con_info" - , "-u PrelAddr_Wzh_con_info" - , "-u PrelAddr_I64zh_con_info" - , "-u PrelAddr_W64zh_con_info" - , "-u PrelStable_StablePtr_con_info" - , "-u PrelBase_False_closure" - , "-u PrelBase_True_closure" - , "-u PrelPack_unpackCString_closure" - , "-u PrelIOBase_stackOverflow_closure" - , "-u PrelIOBase_heapOverflow_closure" - , "-u PrelIOBase_NonTermination_closure" - , "-u PrelIOBase_PutFullMVar_closure" - , "-u PrelIOBase_BlockedOnDeadMVar_closure" - , "-u PrelWeak_runFinalizzerBatch_closure" - , "-u __init_Prelude" - , "-u __init_PrelMain" + extra_ld_opts = map ( +#ifndef LEADING_UNDERSCORE + "-u " +#else + "-u _" +#endif + ++ ) [ + "PrelBase_Izh_static_info" + , "PrelBase_Czh_static_info" + , "PrelFloat_Fzh_static_info" + , "PrelFloat_Dzh_static_info" + , "PrelPtr_Ptr_static_info" + , "PrelWord_Wzh_static_info" + , "PrelInt_I8zh_static_info" + , "PrelInt_I16zh_static_info" + , "PrelInt_I32zh_static_info" + , "PrelInt_I64zh_static_info" + , "PrelWord_W8zh_static_info" + , "PrelWord_W16zh_static_info" + , "PrelWord_W32zh_static_info" + , "PrelWord_W64zh_static_info" + , "PrelStable_StablePtr_static_info" + , "PrelBase_Izh_con_info" + , "PrelBase_Czh_con_info" + , "PrelFloat_Fzh_con_info" + , "PrelFloat_Dzh_con_info" + , "PrelPtr_Ptr_con_info" + , "PrelStable_StablePtr_con_info" + , "PrelBase_False_closure" + , "PrelBase_True_closure" + , "PrelPack_unpackCString_closure" + , "PrelIOBase_stackOverflow_closure" + , "PrelIOBase_heapOverflow_closure" + , "PrelIOBase_NonTermination_closure" + , "PrelIOBase_PutFullMVar_closure" + , "PrelIOBase_BlockedOnDeadMVar_closure" + , "PrelWeak_runFinalizzerBatch_closure" + , "__init_Prelude" ] }, @@ -96,7 +111,13 @@ package_details installing = else [ ghc_src_dir cGHC_LIB_DIR ++ "/std" , ghc_src_dir cGHC_LIB_DIR ++ "/std/cbits" ], hs_libraries = [ "HSstd" ], - extra_libraries = [ "HSstd_cbits" ], + extra_libraries = [ "HSstd_cbits" ] ++ +# ifdef mingw32_TARGET_OS + ["wsock32"] +# else + ["m"] -- libm, that is +# endif + , include_dirs = if installing then [] else [ ghc_src_dir cGHC_LIB_DIR ++ "/std/cbits" ], @@ -104,7 +125,7 @@ package_details installing = package_deps = [ "rts" ], extra_ghc_opts = [], extra_cc_opts = [], - extra_ld_opts = [ "-lm" ] + extra_ld_opts = [] }, Package { @@ -126,7 +147,13 @@ package_details installing = package_deps = [], extra_ghc_opts = [], extra_cc_opts = [], - extra_ld_opts = [] + extra_ld_opts = [ +#ifndef LEADING_UNDERSCORE + "-u Addr_Azh_static_info" +#else + "-u _Addr_Azh_static_info" +#endif + ] }, Package { @@ -142,7 +169,7 @@ package_details installing = include_dirs = if installing then [] else [ cFPTOOLS_TOP_ABS ++ "/hslibs/concurrent/cbits" ], - c_includes = [ "HsConcurrent.h" ], + c_includes = [], package_deps = [ "lang" ], extra_ghc_opts = [], extra_cc_opts = [], @@ -166,8 +193,8 @@ package_details installing = include_dirs = if installing then [] else [ cFPTOOLS_TOP_ABS ++ "/hslibs/data/cbits" ], - c_includes = [ "HsData.h" ], - package_deps = [ "lang" ], + c_includes = [], + package_deps = [ "lang", "util" ], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [] @@ -183,17 +210,19 @@ package_details installing = else [ cFPTOOLS_TOP_ABS ++ "/hslibs/net" , cFPTOOLS_TOP_ABS ++ "/hslibs/net/cbits" ], hs_libraries = [ "HSnet" ], - extra_libraries = [ "HSnet_cbits" ], + extra_libraries = [ "HSnet_cbits" ] + ++ if suffixMatch "solaris2" cTARGETPLATFORM + then [ "nsl", "socket" ] + else [] + , include_dirs = if installing then [] else [ cFPTOOLS_TOP_ABS ++ "/hslibs/net/cbits" ], c_includes = [ "HsNet.h" ], - package_deps = [ "lang", "text" ], + package_deps = [ "lang", "text", "concurrent" ], extra_ghc_opts = [], extra_cc_opts = [], - extra_ld_opts = if postfixMatch "solaris2" cTARGETPLATFORM - then [ "-lnsl", "-lsocket" ] - else [] + extra_ld_opts = [] }, Package { @@ -223,7 +252,7 @@ package_details installing = then [ clibdir ++ "/imports/text" ] else [ cFPTOOLS_TOP_ABS ++ "/hslibs/text" , cFPTOOLS_TOP_ABS ++ "/hslibs/text/html" - , cFPTOOLS_TOP_ABS ++ "/hslibs/text/haxml/lib" + , cFPTOOLS_TOP_ABS ++ "/hslibs/text/HaXml/lib" , cFPTOOLS_TOP_ABS ++ "/hslibs/text/parsec" ], library_dirs = if installing then [ clibdir ] @@ -235,7 +264,7 @@ package_details installing = then [] else [ cFPTOOLS_TOP_ABS ++ "/hslibs/text/cbits" ], c_includes = [ "HsText.h" ], - package_deps = [ "lang", "data" ], + package_deps = [ "lang" ], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [] @@ -257,10 +286,14 @@ package_details installing = then [] else [ cFPTOOLS_TOP_ABS ++ "/hslibs/util/cbits" ], c_includes = [ "HsUtil.h" ], - package_deps = [ "lang", "concurrent", "posix" ], + package_deps = [ "lang", "concurrent" +#ifndef mingw32_TARGET_OS + , "posix" +#endif + ], extra_ghc_opts = [], extra_cc_opts = [], - extra_ld_opts = [] + extra_ld_opts = words cLibsReadline }, -- no cbits at the moment, we'll need to add one if this library @@ -284,21 +317,39 @@ package_details installing = }, Package { + name = "greencard", + import_dirs = if installing + then [ clibdir ++ "/imports/greencard" ] + else [ cFPTOOLS_TOP_ABS ++ "/green-card/lib/ghc" ], + library_dirs = if installing + then [ clibdir ] + else [ cFPTOOLS_TOP_ABS ++ "/green-card/lib/ghc" ], + hs_libraries = [ "HSgreencard" ], + extra_libraries = [], + include_dirs = [], + c_includes = [], + package_deps = [ "lang" ], + extra_ghc_opts = [], + extra_cc_opts = [], + extra_ld_opts = [], + }, + + Package { name = "win32", import_dirs = if installing then [ clibdir ++ "/imports/win32" ] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/win32/src" ], + else [ cFPTOOLS_TOP_ABS ++ "/hslibs/win32" ], library_dirs = if installing then [ clibdir ] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/win32/src" ], + else [ cFPTOOLS_TOP_ABS ++ "/hslibs/win32" ], hs_libraries = [ "HSwin32" ], - extra_libraries = [], + extra_libraries = [ "user32", "gdi32", "winmm" ], include_dirs = [], c_includes = [], -- ??? - package_deps = [ "lang" ], + package_deps = [ "lang", "greencard" ], extra_ghc_opts = [], extra_cc_opts = [], - extra_ld_opts = [ "-luser32", "-lgdi32" ] + extra_ld_opts = [] }, Package { @@ -310,24 +361,15 @@ package_details installing = then [ clibdir ] else [ cFPTOOLS_TOP_ABS ++ "/hdirect/lib" ], hs_libraries = [ "HScom" ], - extra_libraries = [], + extra_libraries = [ "user32", "ole32", "oleaut32", "advapi32" ], include_dirs = [], c_includes = [], -- ??? package_deps = [ "lang" ], extra_ghc_opts = [], extra_cc_opts = [], - extra_ld_opts = [ "-luser32", "-lole32", "-loleaut32", "-ladvapi32" ] + extra_ld_opts = [] } ] ghc_src_dir :: String -> String ghc_src_dir path = cFPTOOLS_TOP_ABS ++ '/':cCURRENT_DIR ++ '/':path - -prefixMatch :: Eq a => [a] -> [a] -> Bool -prefixMatch [] _str = True -prefixMatch _pat [] = False -prefixMatch (p:ps) (s:ss) | p == s = prefixMatch ps ss - | otherwise = False - -postfixMatch :: String -> String -> Bool -postfixMatch pat str = prefixMatch (reverse pat) (reverse str)