X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fdriver%2FPackageSrc.hs;h=6fcec811935923deb127367751df6e5e76e176c0;hb=fb7a723bfd7650a705cb226e07c5b08b7a8e9279;hp=cd488d18faf143b23416148e750b260a3aa2e994;hpb=902bbf801876c95e1b73cfb8e38235ec08ee20a8;p=ghc-hetmet.git diff --git a/ghc/driver/PackageSrc.hs b/ghc/driver/PackageSrc.hs index cd488d1..6fcec81 100644 --- a/ghc/driver/PackageSrc.hs +++ b/ghc/driver/PackageSrc.hs @@ -1,4 +1,5 @@ #include "../includes/config.h" +#include "../includes/Derived.h" module Main (main) where @@ -17,18 +18,24 @@ main = do _ -> 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 - , clibdir , cGHC_LIB_DIR , cGHC_RUNTIME_DIR , cGHC_UTILS_DIR , cGHC_INCLUDE_DIR - , cFPTOOLS_TOP_ABS ] = + ] = [ Package { @@ -38,7 +45,7 @@ package_details installing 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" ], @@ -55,16 +62,25 @@ package_details installing 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" ], -- for the threadDelay timer + extra_libraries = + "m": -- for ldexp() +#ifdef mingw32_TARGET_OS + "winmm": -- for the threadDelay timer + "wsock32": -- for the linker #endif +#ifdef USING_LIBBFD + "bfd": "iberty": -- for debugging +#endif + [], include_dirs = if installing - then [ clibdir ++ "/includes" ] + then [ "$libdir/include" +#ifdef mingw32_TARGET_OS + , "$libdir/include/mingw" +#endif + ] else [ ghc_src_dir cGHC_INCLUDE_DIR ], c_includes = [ "Stg.h" ], -- ha! package_deps = [ "gmp" ], @@ -72,11 +88,13 @@ 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 = map ( + extra_ld_opts = + foldr (\ x xs -> "-u" : x : xs) [] + (map ( #ifndef LEADING_UNDERSCORE - "-u " + "" #else - "-u _" + "_" #endif ++ ) [ "PrelBase_Izh_static_info" @@ -108,26 +126,37 @@ package_details installing , "PrelIOBase_NonTermination_closure" , "PrelIOBase_BlockedOnDeadMVar_closure" , "PrelWeak_runFinalizzerBatch_closure" - , "__init_Prelude" - ] + , "__stginit_Prelude" + ]) }, 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" ], + + hs_libraries = +# ifndef mingw32_TARGET_OS + [ "HSstd" ] +# else + -- This splitting is the subject of a totally + -- horrible hack, which glues HSstd1 and HSstd2 + -- back into HSstd for the purposes of static linking. + -- See DriverState.getPackageLibraries for details. + [ "HSstd1", "HSstd2" ] +# endif + , extra_libraries = [ "HSstd_cbits" ] ++ # ifdef mingw32_TARGET_OS - ["wsock32", "msvcrt"] + [ "wsock32", "msvcrt" ] # else - ["m"] -- libm, that is + [ ] # endif , include_dirs = if installing @@ -143,28 +172,28 @@ package_details installing 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 = [ #ifndef LEADING_UNDERSCORE - "-u Addr_Azh_static_info" + "-u", "Addr_Azh_static_info" #else - "-u _Addr_Azh_static_info" + "-u", "_Addr_Azh_static_info" #endif ] }, @@ -172,17 +201,17 @@ package_details installing 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" ], + else [ "$libdir/hslibs/concurrent/cbits" ], c_includes = [], package_deps = [ "lang" ], extra_ghc_opts = [], @@ -193,21 +222,21 @@ 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" ], + else [ "$libdir/hslibs/data/cbits" ], c_includes = [], package_deps = [ "lang", "util" ], extra_ghc_opts = [], @@ -218,13 +247,13 @@ 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 = if suffixMatch "solaris2" cTARGETPLATFORM then [ "nsl", "socket" ] @@ -232,7 +261,7 @@ package_details installing , 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", "concurrent" ], extra_ghc_opts = [], @@ -243,18 +272,18 @@ package_details installing 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 = [], @@ -265,21 +294,21 @@ 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" ], extra_ghc_opts = [], @@ -290,19 +319,23 @@ 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" ] +#ifndef mingw32_TARGET_OS + ++ words cLibsReadline +#endif + , 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 @@ -311,7 +344,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 @@ -319,12 +352,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 = [], @@ -338,12 +371,12 @@ package_details installing Package { name = "greencard", import_dirs = if installing - then [ clibdir ++ "/imports/greencard" ] - else [ cFPTOOLS_TOP_ABS ++ "/green-card/lib/ghc" ], + then [ "$libdir/imports/greencard" ] + else [ "$libdir/green-card/lib/ghc" ], source_dirs = [], library_dirs = if installing - then [ clibdir ] - else [ cFPTOOLS_TOP_ABS ++ "/green-card/lib/ghc" ], + then [ "$libdir" ] + else [ "$libdir/green-card/lib/ghc" ], hs_libraries = [ "HSgreencard" ], extra_libraries = [], include_dirs = [], @@ -352,22 +385,24 @@ package_details installing extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [], - }, + } - Package { +#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" ], + then [ "$libdir/imports/win32" ] + else [ "$libdir/hslibs/win32" ], source_dirs = [], library_dirs = if installing - then [ clibdir ] - else [ cFPTOOLS_TOP_ABS ++ "/hslibs/win32" ], - hs_libraries = [ "HSwin32" ], - extra_libraries = [ "user32", "gdi32", "winmm" ], + then [ "$libdir" ] + else [ "$libdir/hslibs/win32" ], + hs_libraries = [ "HSwin321", "HSwin322" ], + extra_libraries = [ "user32", "gdi32", "winmm", + "kernel32", "advapi32" ], include_dirs = [], c_includes = [], -- ??? - package_deps = [ "lang", "greencard" ], + package_deps = [ "lang" ], -- greencard now built in extra_ghc_opts = [], extra_cc_opts = [], extra_ld_opts = [] @@ -376,12 +411,12 @@ package_details installing 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 = [ "user32", "ole32", "oleaut32", "advapi32" ], include_dirs = [], @@ -391,7 +426,48 @@ package_details installing extra_cc_opts = [], extra_ld_opts = [] } +#endif + + ,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 = [] + } + + ,Package { + name = "HGL", + import_dirs = if installing + then [ "$libdir/imports/HGL" ] + else [ "$libdir/hslibs/graphics/lib/x11" ], + source_dirs = [], + library_dirs = [], + hs_libraries = [ "HSHGL" ], + extra_libraries= [], + include_dirs = [], + c_includes = [], + package_deps = [ "xlib", "concurrent" ], + extra_ghc_opts = [], + extra_cc_opts = [], + extra_ld_opts = [] + } + ] where ghc_src_dir :: String -> String - ghc_src_dir path = cFPTOOLS_TOP_ABS ++ '/':cCURRENT_DIR ++ '/':path + ghc_src_dir path = "$libdir/" ++ cCURRENT_DIR ++ '/':path