ps' <- getPackageDetails ps
tag <- readIORef build_tag
let suffix = if null tag then "" else '_':tag
- return (concat (map libraries ps'))
+ return (concat (
+ map (\p -> map (++suffix) (hs_libraries p) ++ extra_libraries p) ps'
+ ))
getPackageExtraGhcOpts :: IO [String]
getPackageExtraGhcOpts = do
[ (WayProf, Way "p" "Profiling"
[ "-fscc-profiling"
, "-DPROFILING"
- , "-optc-DPROFILING" ]),
+ , "-optc-DPROFILING"
+ , "-fvia-C" ]),
(WayTicky, Way "t" "Ticky-ticky Profiling"
[ "-fticky-ticky"
, "-DTICKY_TICKY"
- , "-optc-DTICKY_TICKY" ]),
+ , "-optc-DTICKY_TICKY"
+ , "-fvia-C" ]),
(WayUnreg, Way "u" "Unregisterised"
[ "-optc-DNO_REGS"
, "-optc-DUSE_MINIINTERPRETER"
, "-fno-asm-mangling"
- , "-funregisterised" ]),
+ , "-funregisterised"
+ , "-fvia-C" ]),
(WayDll, Way "dll" "DLLized"
[ ]),
, "-fparallel"
, "-D__PARALLEL_HASKELL__"
, "-optc-DPAR"
- , "-package concurrent" ]),
+ , "-package concurrent"
+ , "-fvia-C" ]),
(WayGran, Way "mg" "Gransim"
[ "-fstack-check"
, "-fgransim"
, "-D__GRANSIM__"
, "-optc-DGRAN"
- , "-package concurrent" ]),
+ , "-package concurrent"
+ , "-fvia-C" ]),
- (WaySMP, Way "s" "SMP"
+ (WaySMP, Way "s" "SMP"
[ "-fsmp"
, "-optc-pthread"
, "-optl-pthread"
- , "-optc-DSMP" ]),
+ , "-optc-DSMP"
+ , "-fvia-C" ]),
(WayUser_a, Way "a" "User way 'a'" ["$WAY_a_REAL_OPTS"]),
(WayUser_b, Way "b" "User way 'b'" ["$WAY_b_REAL_OPTS"]),
let lib_path_opts = map ("-L"++) lib_paths
pkg_libs <- getPackageLibraries
- let pkg_lib_opts = map ("-l"++) pkg_libs
+ let pkg_lib_opts = map (\lib -> "-l"++lib) pkg_libs
libs <- readIORef cmdline_libraries
let lib_opts = map ("-l"++) (reverse libs)
import Pretty
data Package = Package {
- import_dirs :: [String],
- library_dirs :: [String],
- libraries :: [String],
- include_dirs :: [String],
- c_includes :: [String],
- package_deps :: [String],
- extra_ghc_opts :: [String],
- extra_cc_opts :: [String],
- extra_ld_opts :: [String]
+ import_dirs :: [String],
+ library_dirs :: [String],
+ hs_libraries :: [String],
+ extra_libraries :: [String],
+ include_dirs :: [String],
+ c_includes :: [String],
+ package_deps :: [String],
+ extra_ghc_opts :: [String],
+ extra_cc_opts :: [String],
+ extra_ld_opts :: [String]
}
deriving (Read, Show)
dumpPkgGuts pkg =
text "Package" $$ nest 3 (braces (
sep (punctuate comma [
- dumpField "import_dirs" (import_dirs pkg),
- dumpField "library_dirs" (library_dirs pkg),
- dumpField "libraries" (libraries pkg),
- dumpField "include_dirs" (include_dirs pkg),
- dumpField "c_includes" (c_includes pkg),
- dumpField "package_deps" (package_deps pkg),
- dumpField "extra_ghc_opts" (extra_ghc_opts pkg),
- dumpField "extra_cc_opts" (extra_cc_opts pkg),
- dumpField "extra_ld_opts" (extra_ld_opts pkg)
+ dumpField "import_dirs" (import_dirs pkg),
+ dumpField "library_dirs" (library_dirs pkg),
+ dumpField "hs_libraries" (hs_libraries pkg),
+ dumpField "extra_libraries" (extra_libraries pkg),
+ dumpField "include_dirs" (include_dirs pkg),
+ dumpField "c_includes" (c_includes pkg),
+ dumpField "package_deps" (package_deps pkg),
+ dumpField "extra_ghc_opts" (extra_ghc_opts pkg),
+ dumpField "extra_cc_opts" (extra_cc_opts pkg),
+ dumpField "extra_ld_opts" (extra_ld_opts pkg)
])))
dumpField :: String -> [String] -> Doc
else if installing
then [ clibdir ]
else [ ghc_src_dir cGHC_RUNTIME_DIR ++ "/gmp" ],
- libraries = [ "gmp" ],
+ hs_libraries = [],
+ extra_libraries = [ "gmp" ],
include_dirs = [],
c_includes = [],
package_deps = [],
library_dirs = if installing
then [ clibdir ]
else [ ghc_src_dir cGHC_RUNTIME_DIR ],
- libraries = [ "HSrts" ],
+ hs_libraries = [ "HSrts" ],
+ extra_libraries = [],
include_dirs = if installing
then [ clibdir ++ "/includes" ]
else [ ghc_src_dir cGHC_INCLUDE_DIR ],
}
),
- ( "std", -- The Prelude & Standard Libraries
+ ( "std", -- The Prelude & Standard Hs_libraries
Package {
import_dirs = if installing
then [ clibdir ++ "/imports/std" ]
then [ clibdir ]
else [ ghc_src_dir cGHC_LIB_DIR ++ "/std"
, ghc_src_dir cGHC_LIB_DIR ++ "/std/cbits" ],
- libraries = [ "HSstd", "HSstd_cbits" ],
+ hs_libraries = [ "HSstd" ],
+ extra_libraries = [ "HSstd_cbits" ],
include_dirs = if installing
then []
else [ ghc_src_dir cGHC_LIB_DIR ++ "/std/cbits" ],
then [ clibdir ]
else [ cFPTOOLS_TOP_ABS ++ "/hslibs/lang"
, cFPTOOLS_TOP_ABS ++ "/hslibs/lang/cbits" ],
- libraries = [ "HSlang", "HSlang_cbits" ],
+ hs_libraries = [ "HSlang" ],
+ extra_libraries = [ "HSlang_cbits" ],
include_dirs = if installing
then []
else [ cFPTOOLS_TOP_ABS ++ "/hslibs/lang/cbits" ],
library_dirs = if installing
then [ clibdir ]
else [ cFPTOOLS_TOP_ABS ++ "/hslibs/concurrent" ],
- libraries = [ "HSconcurrent" ],
+ hs_libraries = [ "HSconcurrent" ],
+ extra_libraries = [],
include_dirs = if installing
then []
else [ cFPTOOLS_TOP_ABS ++ "/hslibs/concurrent/cbits" ],
library_dirs = if installing
then [clibdir ]
else [ cFPTOOLS_TOP_ABS ++ "/hslibs/data" ],
- libraries = [ "HSdata" ],
+ hs_libraries = [ "HSdata" ],
+ extra_libraries = [],
include_dirs = if installing
then []
else [ cFPTOOLS_TOP_ABS ++ "/hslibs/data/cbits" ],
then [ clibdir ]
else [ cFPTOOLS_TOP_ABS ++ "/hslibs/net"
, cFPTOOLS_TOP_ABS ++ "/hslibs/net/cbits" ],
- libraries = [ "HSnet", "HSnet_cbits" ],
+ hs_libraries = [ "HSnet" ],
+ extra_libraries = [ "HSnet_cbits" ],
include_dirs = if installing
then []
else [ cFPTOOLS_TOP_ABS ++ "/hslibs/net/cbits" ],
then [ clibdir ]
else [ cFPTOOLS_TOP_ABS ++ "/hslibs/posix"
, cFPTOOLS_TOP_ABS ++ "/hslibs/posix/cbits" ],
- libraries = [ "HSposix", "HSposix_cbits" ],
+ hs_libraries = [ "HSposix" ],
+ extra_libraries = [ "HSposix_cbits" ],
include_dirs = if installing
then []
else [ cFPTOOLS_TOP_ABS ++ "/hslibs/posix/cbits" ],
then [ clibdir ]
else [ cFPTOOLS_TOP_ABS ++ "/hslibs/text"
, cFPTOOLS_TOP_ABS ++ "/hslibs/text/cbits" ],
- libraries = [ "HStext", "HStext_cbits" ],
+ hs_libraries = [ "HStext" ],
+ extra_libraries = [ "HStext_cbits" ],
include_dirs = if installing
then []
else [ cFPTOOLS_TOP_ABS ++ "/hslibs/text/cbits" ],
then [ clibdir ]
else [ cFPTOOLS_TOP_ABS ++ "/hslibs/util"
, cFPTOOLS_TOP_ABS ++ "/hslibs/util/cbits" ],
- libraries = [ "HSutil", "HSutil_cbits" ],
+ hs_libraries = [ "HSutil" ],
+ extra_libraries = [ "HSutil_cbits" ],
include_dirs = if installing
then []
else [ cFPTOOLS_TOP_ABS ++ "/hslibs/util/cbits" ],
library_dirs = if installing
then [ clibdir ]
else [ cFPTOOLS_TOP_ABS ++ "/hslibs/hssource" ],
- libraries = [ "HShssource" ],
+ hs_libraries = [ "HShssource" ],
+ extra_libraries = [],
include_dirs = [],
c_includes = [],
package_deps = [ "text" ],
library_dirs = if installing
then [ clibdir ]
else [ cFPTOOLS_TOP_ABS ++ "/hslibs/win32/src" ],
- libraries = [ "HSwin32" ],
+ hs_libraries = [ "HSwin32" ],
+ extra_libraries = [],
include_dirs = [],
c_includes = [], -- ???
package_deps = [ "lang" ],
library_dirs = if installing
then [ clibdir ]
else [ cFPTOOLS_TOP_ABS ++ "/hdirect/lib" ],
- libraries = [ "HScom" ],
+ hs_libraries = [ "HScom" ],
+ extra_libraries = [],
include_dirs = [],
c_includes = [], -- ???
package_deps = [ "lang" ],