#include "../includes/config.h"
+#include "../includes/Derived.h"
module Main (main) where
exitWith (ExitFailure 1)
-- The compiler automatically replaces the string "$libdir" at the
--- beginning of a path with the appropriate directory: either the
--- wired-in libdir or the one passed to the compiler via the -B<dir>
--- flag. This is how we make package.conf independent of GHC's
--- installation location.
+-- beginning of a path with the directory passed to the compiler via
+-- the -B<dir> 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
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 [ "$libdir/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" ],
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"
, "PrelIOBase_NonTermination_closure"
, "PrelIOBase_BlockedOnDeadMVar_closure"
, "PrelWeak_runFinalizzerBatch_closure"
- , "__init_Prelude"
- ]
+ , "__stginit_Prelude"
+ ])
},
Package {
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
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
]
},
else [ "$libdir/hslibs/util"
, "$libdir/hslibs/util/cbits" ],
hs_libraries = [ "HSutil" ],
- extra_libraries = [ "HSutil_cbits" ] ++ words cLibsReadline,
+ extra_libraries = [ "HSutil_cbits" ]
+#ifndef mingw32_TARGET_OS
+ ++ words cLibsReadline
+#endif
+ ,
include_dirs = if installing
then []
else [ "$libdir/hslibs/util/cbits" ],
library_dirs = if installing
then [ "$libdir" ]
else [ "$libdir/hslibs/win32" ],
- hs_libraries = [ "HSwin32" ],
- extra_libraries = [ "user32", "gdi32", "winmm" ],
+ 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 = []
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