X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fdriver%2FPackageSrc.hs;h=3e93631cfa7fe70c2a74547723e569176af9fb89;hb=70dac7c77fd0833f73a259e6083dceab4d974383;hp=6df2af32f7fd91d5fadb0fb6dea07579909afe24;hpb=96bd3369f3019e4a1805b4da48240d1b31c4d9a9;p=ghc-hetmet.git diff --git a/ghc/driver/PackageSrc.hs b/ghc/driver/PackageSrc.hs index 6df2af3..3e93631 100644 --- a/ghc/driver/PackageSrc.hs +++ b/ghc/driver/PackageSrc.hs @@ -6,28 +6,45 @@ import Utils import IO import System -import Config import Package main :: IO () main = do args <- getArgs case args of - [ "install" ] -> do { putStrLn (dumpPackages (package_details True)) } - [ "in-place" ] -> do { putStrLn (dumpPackages (package_details False)) } - _ -> do hPutStr stderr "usage: pkgconf (install | in-place)\n" - exitWith (ExitFailure 1) + ("install":rest) -> do { putStrLn (dumpPackages (package_details True rest)) } + ("in-place":rest) -> do { putStrLn (dumpPackages (package_details False rest)) } + _ -> do hPutStr stderr "usage: pkgconf (install | in-place) ...\n" + exitWith (ExitFailure 1) + +-- The compiler automatically replaces the string "$libdir" at the +-- beginning of a path with the directory passed to the compiler via +-- the -B flag. Absolute path names will be unchanged. +-- +-- This is how we make package.conf independent of GHC's installation +-- location. + +package_details :: Bool -> [String] -> [PackageConfig] +package_details installing + [ cTARGETPLATFORM + , cCURRENT_DIR + , cHaveLibGmp + , cLibsReadline + , cGHC_LIB_DIR + , cGHC_RUNTIME_DIR + , cGHC_UTILS_DIR + , cGHC_INCLUDE_DIR + ] = -package_details :: Bool -> [Package] -package_details installing = [ Package { name = "gmp", -- GMP is at the bottom of the heap import_dirs = [], + source_dirs = [], library_dirs = if cHaveLibGmp == "YES" then [] else if installing - then [ clibdir ] + then [ "$libdir" ] else [ ghc_src_dir cGHC_RUNTIME_DIR ++ "/gmp" ], hs_libraries = [], extra_libraries = [ "gmp" ], @@ -42,13 +59,18 @@ package_details installing = Package { name = "rts", -- The RTS is just another package! import_dirs = [], + source_dirs = [], library_dirs = if installing - then [ clibdir ] + then [ "$libdir" ] else [ ghc_src_dir cGHC_RUNTIME_DIR ], hs_libraries = [ "HSrts" ], +#ifndef mingw32_TARGET_OS extra_libraries = [], +#else + extra_libraries = [ "winmm", "wsock32" ], -- winmm for the threadDelay timer, wsock32 for the linker +#endif include_dirs = if installing - then [ clibdir ++ "/includes" ] + then [ "$libdir/includes" ] else [ ghc_src_dir cGHC_INCLUDE_DIR ], c_includes = [ "Stg.h" ], -- ha! package_deps = [ "gmp" ], @@ -67,19 +89,22 @@ package_details installing = , "PrelBase_Czh_static_info" , "PrelFloat_Fzh_static_info" , "PrelFloat_Dzh_static_info" - , "PrelAddr_Azh_static_info" - , "PrelAddr_Wzh_static_info" - , "PrelAddr_I64zh_static_info" - , "PrelAddr_W64zh_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" - , "PrelAddr_Azh_con_info" - , "PrelAddr_Wzh_con_info" - , "PrelAddr_I64zh_con_info" - , "PrelAddr_W64zh_con_info" + , "PrelPtr_Ptr_con_info" , "PrelStable_StablePtr_con_info" , "PrelBase_False_closure" , "PrelBase_True_closure" @@ -87,7 +112,6 @@ package_details installing = , "PrelIOBase_stackOverflow_closure" , "PrelIOBase_heapOverflow_closure" , "PrelIOBase_NonTermination_closure" - , "PrelIOBase_PutFullMVar_closure" , "PrelIOBase_BlockedOnDeadMVar_closure" , "PrelWeak_runFinalizzerBatch_closure" , "__init_Prelude" @@ -97,14 +121,21 @@ package_details installing = Package { name = "std", -- The Prelude & Standard Hs_libraries import_dirs = if installing - then [ clibdir ++ "/imports/std" ] + then [ "$libdir/imports/std" ] else [ ghc_src_dir cGHC_LIB_DIR ++ "/std" ], + source_dirs = [], library_dirs = if installing - then [ clibdir ] + then [ "$libdir" ] 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", "msvcrt"] +# else + ["m"] -- libm, that is +# endif + , include_dirs = if installing then [] else [ ghc_src_dir cGHC_LIB_DIR ++ "/std/cbits" ], @@ -112,49 +143,53 @@ package_details installing = package_deps = [ "rts" ], extra_ghc_opts = [], extra_cc_opts = [], - extra_ld_opts = [ "-lm" -#ifdef mingw32_TARGET_OS - , "-lwsock32" -#endif - ] + extra_ld_opts = [] }, Package { name = "lang", import_dirs = if installing - then [ clibdir ++ "/imports/lang" ] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/lang" - , cFPTOOLS_TOP_ABS ++ "/hslibs/lang/monads" ], + then [ "$libdir/imports/lang" ] + else [ "$libdir/hslibs/lang" + , "$libdir/hslibs/lang/monads" ], + source_dirs = [], library_dirs = if installing - then [ clibdir ] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/lang" - , cFPTOOLS_TOP_ABS ++ "/hslibs/lang/cbits" ], + then [ "$libdir" ] + else [ "$libdir/hslibs/lang" + , "$libdir/hslibs/lang/cbits" ], hs_libraries = [ "HSlang" ], extra_libraries = [ "HSlang_cbits" ], include_dirs = if installing then [] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/lang/cbits" ], + else [ "$libdir/hslibs/lang/cbits" ], c_includes = [ "HsLang.h" ], 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 { name = "concurrent", import_dirs = if installing - then [ clibdir ++ "/imports/concurrent" ] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/concurrent" ], + then [ "$libdir/imports/concurrent" ] + else [ "$libdir/hslibs/concurrent" ], + source_dirs = [], library_dirs = if installing - then [ clibdir ] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/concurrent" ], + then [ "$libdir" ] + else [ "$libdir/hslibs/concurrent" ], hs_libraries = [ "HSconcurrent" ], extra_libraries = [], include_dirs = if installing then [] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/concurrent/cbits" ], - c_includes = [ "HsConcurrent.h" ], + else [ "$libdir/hslibs/concurrent/cbits" ], + c_includes = [], package_deps = [ "lang" ], extra_ghc_opts = [], extra_cc_opts = [], @@ -164,22 +199,23 @@ package_details installing = Package { name = "data", import_dirs = if installing - then [ clibdir ++ "/imports/data" ] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/data" - , cFPTOOLS_TOP_ABS ++ "/hslibs/data/edison" - , cFPTOOLS_TOP_ABS ++ "/hslibs/data/edison/Assoc" - , cFPTOOLS_TOP_ABS ++ "/hslibs/data/edison/Coll" - , cFPTOOLS_TOP_ABS ++ "/hslibs/data/edison/Seq" ], + then [ "$libdir/imports/data" ] + else [ "$libdir/hslibs/data" + , "$libdir/hslibs/data/edison" + , "$libdir/hslibs/data/edison/Assoc" + , "$libdir/hslibs/data/edison/Coll" + , "$libdir/hslibs/data/edison/Seq" ], + source_dirs = [], library_dirs = if installing - then [clibdir ] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/data" ], + then [ "$libdir" ] + else [ "$libdir/hslibs/data" ], hs_libraries = [ "HSdata" ], extra_libraries = [], include_dirs = if installing then [] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/data/cbits" ], - c_includes = [ "HsData.h" ], - package_deps = [ "lang" ], + else [ "$libdir/hslibs/data/cbits" ], + c_includes = [], + package_deps = [ "lang", "util" ], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [] @@ -188,40 +224,43 @@ package_details installing = Package { name = "net", import_dirs = if installing - then [ clibdir ++ "/imports/net" ] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/net" ], + then [ "$libdir/imports/net" ] + else [ "$libdir/hslibs/net" ], + source_dirs = [], library_dirs = if installing - then [ clibdir ] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/net" - , cFPTOOLS_TOP_ABS ++ "/hslibs/net/cbits" ], + then [ "$libdir" ] + else [ "$libdir/hslibs/net" + , "$libdir/hslibs/net/cbits" ], hs_libraries = [ "HSnet" ], - extra_libraries = [ "HSnet_cbits" ], + extra_libraries = if suffixMatch "solaris2" cTARGETPLATFORM + then [ "nsl", "socket" ] + else [] + , include_dirs = if installing then [] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/net/cbits" ], + else [ "$libdir/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 suffixMatch "solaris2" cTARGETPLATFORM - then [ "-lnsl", "-lsocket" ] - else [] + extra_ld_opts = [] }, Package { name = "posix", import_dirs = if installing - then [ clibdir ++ "/imports/posix" ] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/posix" ], + then [ "$libdir/imports/posix" ] + else [ "$libdir/hslibs/posix" ], + source_dirs = [], library_dirs = if installing - then [ clibdir ] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/posix" - , cFPTOOLS_TOP_ABS ++ "/hslibs/posix/cbits" ], + then [ "$libdir" ] + else [ "$libdir/hslibs/posix" + , "$libdir/hslibs/posix/cbits" ], hs_libraries = [ "HSposix" ], extra_libraries = [ "HSposix_cbits" ], include_dirs = if installing then [] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/posix/cbits" ], + else [ "$libdir/hslibs/posix/cbits" ], c_includes = [ "HsPosix.h" ], package_deps = [ "lang" ], extra_ghc_opts = [], @@ -232,22 +271,23 @@ package_details installing = Package { name = "text", import_dirs = if 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/parsec" ], + then [ "$libdir/imports/text" ] + else [ "$libdir/hslibs/text" + , "$libdir/hslibs/text/html" + , "$libdir/hslibs/text/HaXml/lib" + , "$libdir/hslibs/text/parsec" ], + source_dirs = [], library_dirs = if installing - then [ clibdir ] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/text" - , cFPTOOLS_TOP_ABS ++ "/hslibs/text/cbits" ], + then [ "$libdir" ] + else [ "$libdir/hslibs/text" + , "$libdir/hslibs/text/cbits" ], hs_libraries = [ "HStext" ], extra_libraries = [ "HStext_cbits" ], include_dirs = if installing then [] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/text/cbits" ], + else [ "$libdir/hslibs/text/cbits" ], c_includes = [ "HsText.h" ], - package_deps = [ "lang", "data" ], + package_deps = [ "lang" ], extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [] @@ -256,18 +296,19 @@ package_details installing = Package { name = "util", import_dirs = if installing - then [ clibdir ++ "/imports/util" ] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/util" - , cFPTOOLS_TOP_ABS ++ "/hslibs/util/check" ], + then [ "$libdir/imports/util" ] + else [ "$libdir/hslibs/util" + , "$libdir/hslibs/util/check" ], + source_dirs = [], library_dirs = if installing - then [ clibdir ] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/util" - , cFPTOOLS_TOP_ABS ++ "/hslibs/util/cbits" ], + then [ "$libdir" ] + else [ "$libdir/hslibs/util" + , "$libdir/hslibs/util/cbits" ], hs_libraries = [ "HSutil" ], - extra_libraries = [ "HSutil_cbits" ], + extra_libraries = [ "HSutil_cbits" ] ++ words cLibsReadline, include_dirs = if installing then [] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/util/cbits" ], + else [ "$libdir/hslibs/util/cbits" ], c_includes = [ "HsUtil.h" ], package_deps = [ "lang", "concurrent" #ifndef mingw32_TARGET_OS @@ -276,7 +317,7 @@ package_details installing = ], extra_ghc_opts = [], extra_cc_opts = [], - extra_ld_opts = words cLibsReadline + extra_ld_opts = [] }, -- no cbits at the moment, we'll need to add one if this library @@ -284,11 +325,12 @@ package_details installing = Package { name = "hssource", import_dirs = if installing - then [ clibdir ++ "/imports/hssource" ] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/hssource" ], + then [ "$libdir/imports/hssource" ] + else [ "$libdir/hslibs/hssource" ], + source_dirs = [], library_dirs = if installing - then [ clibdir ] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/hssource" ], + then [ "$libdir" ] + else [ "$libdir/hslibs/hssource" ], hs_libraries = [ "HShssource" ], extra_libraries = [], include_dirs = [], @@ -300,41 +342,87 @@ package_details installing = }, Package { + name = "greencard", + import_dirs = if installing + then [ "$libdir/imports/greencard" ] + else [ "$libdir/green-card/lib/ghc" ], + source_dirs = [], + library_dirs = if installing + then [ "$libdir" ] + else [ "$libdir/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 = [], + } + +#if defined(mingw32_TARGET_OS) || defined(cygwin32_TARGET_OS) + ,Package { name = "win32", import_dirs = if installing - then [ clibdir ++ "/imports/win32" ] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/win32/src" ], + then [ "$libdir/imports/win32" ] + else [ "$libdir/hslibs/win32" ], + source_dirs = [], library_dirs = if installing - then [ clibdir ] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/win32/src" ], + then [ "$libdir" ] + else [ "$libdir/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 { name = "com", import_dirs = if installing - then [ clibdir ++ "/imports/com" ] - else [ cFPTOOLS_TOP_ABS ++ "/hdirect/lib" ], + then [ "$libdir/imports/com" ] + else [ "$libdir/hdirect/lib" ], + source_dirs = [], library_dirs = if installing - then [ clibdir ] - else [ cFPTOOLS_TOP_ABS ++ "/hdirect/lib" ], + then [ "$libdir" ] + else [ "$libdir/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 = [] } - ] +#endif -ghc_src_dir :: String -> String -ghc_src_dir path = cFPTOOLS_TOP_ABS ++ '/':cCURRENT_DIR ++ '/':path + ,Package { + name = "xlib", + import_dirs = if installing + then [ "$libdir/imports/xlib" ] + else [ "$libdir/hslibs/xlib" ], + source_dirs = [], + library_dirs = if installing + then [ "$libdir" ] + else [ "$libdir/hslibs/xlib" + , "$libdir/hslibs/xlib/cbits" ], + hs_libraries = [ "HSxlib" ], + extra_libraries = [ "HSxlib_cbits", "X11" ], + include_dirs = if installing + then [] + else [ "$libdir/hslibs/xlib/cbits" ], + c_includes = [ "HsXlib.h" ], + package_deps = [ "greencard" ], + extra_ghc_opts = [], + extra_cc_opts = [], + extra_ld_opts = [] + } + + ] + where + ghc_src_dir :: String -> String + ghc_src_dir path = "$libdir/" ++ cCURRENT_DIR ++ '/':path