1 #include "../includes/config.h"
3 module Main (main) where
16 [ "install" ] -> do { putStrLn (dumpPackages (package_details True)) }
17 [ "in-place" ] -> do { putStrLn (dumpPackages (package_details False)) }
18 _ -> do hPutStr stderr "usage: pkgconf (install | in-place)\n"
19 exitWith (ExitFailure 1)
21 package_details :: Bool -> [Package]
22 package_details installing =
25 name = "gmp", -- GMP is at the bottom of the heap
27 library_dirs = if cHaveLibGmp == "YES"
31 else [ ghc_src_dir cGHC_RUNTIME_DIR ++ "/gmp" ],
33 extra_libraries = [ "gmp" ],
43 name = "rts", -- The RTS is just another package!
45 library_dirs = if installing
47 else [ ghc_src_dir cGHC_RUNTIME_DIR ],
48 hs_libraries = [ "HSrts" ],
50 include_dirs = if installing
51 then [ clibdir ++ "/includes" ]
52 else [ ghc_src_dir cGHC_INCLUDE_DIR ],
53 c_includes = [ "Stg.h" ], -- ha!
54 package_deps = [ "gmp" ],
57 -- the RTS forward-references to a bunch of stuff in the prelude,
58 -- so we force it to be included with special options to ld.
60 #ifndef LEADING_UNDERSCORE
66 "PrelBase_Izh_static_info"
67 , "PrelBase_Czh_static_info"
68 , "PrelFloat_Fzh_static_info"
69 , "PrelFloat_Dzh_static_info"
70 , "PrelPtr_Ptr_static_info"
71 , "PrelWord_Wzh_static_info"
72 , "PrelInt_I8zh_static_info"
73 , "PrelInt_I16zh_static_info"
74 , "PrelInt_I32zh_static_info"
75 , "PrelInt_I64zh_static_info"
76 , "PrelWord_W8zh_static_info"
77 , "PrelWord_W16zh_static_info"
78 , "PrelWord_W32zh_static_info"
79 , "PrelWord_W64zh_static_info"
80 , "PrelStable_StablePtr_static_info"
81 , "PrelBase_Izh_con_info"
82 , "PrelBase_Czh_con_info"
83 , "PrelFloat_Fzh_con_info"
84 , "PrelFloat_Dzh_con_info"
85 , "PrelPtr_Ptr_con_info"
86 , "PrelStable_StablePtr_con_info"
87 , "PrelBase_False_closure"
88 , "PrelBase_True_closure"
89 , "PrelPack_unpackCString_closure"
90 , "PrelIOBase_stackOverflow_closure"
91 , "PrelIOBase_heapOverflow_closure"
92 , "PrelIOBase_NonTermination_closure"
93 , "PrelIOBase_PutFullMVar_closure"
94 , "PrelIOBase_BlockedOnDeadMVar_closure"
95 , "PrelWeak_runFinalizzerBatch_closure"
101 name = "std", -- The Prelude & Standard Hs_libraries
102 import_dirs = if installing
103 then [ clibdir ++ "/imports/std" ]
104 else [ ghc_src_dir cGHC_LIB_DIR ++ "/std" ],
105 library_dirs = if installing
107 else [ ghc_src_dir cGHC_LIB_DIR ++ "/std"
108 , ghc_src_dir cGHC_LIB_DIR ++ "/std/cbits" ],
109 hs_libraries = [ "HSstd" ],
110 extra_libraries = [ "HSstd_cbits" ] ++
111 # ifdef mingw32_TARGET_OS
114 ["m"] -- libm, that is
117 include_dirs = if installing
119 else [ ghc_src_dir cGHC_LIB_DIR ++ "/std/cbits" ],
120 c_includes = [ "HsStd.h" ],
121 package_deps = [ "rts" ],
129 import_dirs = if installing
130 then [ clibdir ++ "/imports/lang" ]
131 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/lang"
132 , cFPTOOLS_TOP_ABS ++ "/hslibs/lang/monads" ],
133 library_dirs = if installing
135 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/lang"
136 , cFPTOOLS_TOP_ABS ++ "/hslibs/lang/cbits" ],
137 hs_libraries = [ "HSlang" ],
138 extra_libraries = [ "HSlang_cbits" ],
139 include_dirs = if installing
141 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/lang/cbits" ],
142 c_includes = [ "HsLang.h" ],
147 #ifndef LEADING_UNDERSCORE
148 "-u Addr_Azh_static_info"
150 "-u _Addr_Azh_static_info"
157 import_dirs = if installing
158 then [ clibdir ++ "/imports/concurrent" ]
159 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/concurrent" ],
160 library_dirs = if installing
162 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/concurrent" ],
163 hs_libraries = [ "HSconcurrent" ],
164 extra_libraries = [],
165 include_dirs = if installing
167 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/concurrent/cbits" ],
169 package_deps = [ "lang" ],
177 import_dirs = if installing
178 then [ clibdir ++ "/imports/data" ]
179 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/data"
180 , cFPTOOLS_TOP_ABS ++ "/hslibs/data/edison"
181 , cFPTOOLS_TOP_ABS ++ "/hslibs/data/edison/Assoc"
182 , cFPTOOLS_TOP_ABS ++ "/hslibs/data/edison/Coll"
183 , cFPTOOLS_TOP_ABS ++ "/hslibs/data/edison/Seq" ],
184 library_dirs = if installing
186 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/data" ],
187 hs_libraries = [ "HSdata" ],
188 extra_libraries = [],
189 include_dirs = if installing
191 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/data/cbits" ],
193 package_deps = [ "lang", "util" ],
201 import_dirs = if installing
202 then [ clibdir ++ "/imports/net" ]
203 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/net" ],
204 library_dirs = if installing
206 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/net"
207 , cFPTOOLS_TOP_ABS ++ "/hslibs/net/cbits" ],
208 hs_libraries = [ "HSnet" ],
209 extra_libraries = [ "HSnet_cbits" ]
210 ++ if suffixMatch "solaris2" cTARGETPLATFORM
211 then [ "nsl", "socket" ]
214 include_dirs = if installing
216 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/net/cbits" ],
217 c_includes = [ "HsNet.h" ],
218 package_deps = [ "lang", "text", "concurrent" ],
226 import_dirs = if installing
227 then [ clibdir ++ "/imports/posix" ]
228 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/posix" ],
229 library_dirs = if installing
231 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/posix"
232 , cFPTOOLS_TOP_ABS ++ "/hslibs/posix/cbits" ],
233 hs_libraries = [ "HSposix" ],
234 extra_libraries = [ "HSposix_cbits" ],
235 include_dirs = if installing
237 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/posix/cbits" ],
238 c_includes = [ "HsPosix.h" ],
239 package_deps = [ "lang" ],
247 import_dirs = if installing
248 then [ clibdir ++ "/imports/text" ]
249 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/text"
250 , cFPTOOLS_TOP_ABS ++ "/hslibs/text/html"
251 , cFPTOOLS_TOP_ABS ++ "/hslibs/text/HaXml/lib"
252 , cFPTOOLS_TOP_ABS ++ "/hslibs/text/parsec" ],
253 library_dirs = if installing
255 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/text"
256 , cFPTOOLS_TOP_ABS ++ "/hslibs/text/cbits" ],
257 hs_libraries = [ "HStext" ],
258 extra_libraries = [ "HStext_cbits" ],
259 include_dirs = if installing
261 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/text/cbits" ],
262 c_includes = [ "HsText.h" ],
263 package_deps = [ "lang" ],
271 import_dirs = if installing
272 then [ clibdir ++ "/imports/util" ]
273 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/util"
274 , cFPTOOLS_TOP_ABS ++ "/hslibs/util/check" ],
275 library_dirs = if installing
277 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/util"
278 , cFPTOOLS_TOP_ABS ++ "/hslibs/util/cbits" ],
279 hs_libraries = [ "HSutil" ],
280 extra_libraries = [ "HSutil_cbits" ],
281 include_dirs = if installing
283 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/util/cbits" ],
284 c_includes = [ "HsUtil.h" ],
285 package_deps = [ "lang", "concurrent"
286 #ifndef mingw32_TARGET_OS
292 extra_ld_opts = words cLibsReadline
295 -- no cbits at the moment, we'll need to add one if this library
296 -- ever calls out to any C libs.
299 import_dirs = if installing
300 then [ clibdir ++ "/imports/hssource" ]
301 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/hssource" ],
302 library_dirs = if installing
304 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/hssource" ],
305 hs_libraries = [ "HShssource" ],
306 extra_libraries = [],
309 package_deps = [ "text" ],
317 import_dirs = if installing
318 then [ clibdir ++ "/imports/greencard" ]
319 else [ cFPTOOLS_TOP_ABS ++ "/green-card/lib/ghc" ],
320 library_dirs = if installing
322 else [ cFPTOOLS_TOP_ABS ++ "/green-card/lib/ghc" ],
323 hs_libraries = [ "HSgreencard" ],
324 extra_libraries = [],
327 package_deps = [ "lang" ],
335 import_dirs = if installing
336 then [ clibdir ++ "/imports/win32" ]
337 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/win32" ],
338 library_dirs = if installing
340 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/win32" ],
341 hs_libraries = [ "HSwin32" ],
342 extra_libraries = [ "user32", "gdi32", "winmm" ],
344 c_includes = [], -- ???
345 package_deps = [ "lang", "greencard" ],
353 import_dirs = if installing
354 then [ clibdir ++ "/imports/com" ]
355 else [ cFPTOOLS_TOP_ABS ++ "/hdirect/lib" ],
356 library_dirs = if installing
358 else [ cFPTOOLS_TOP_ABS ++ "/hdirect/lib" ],
359 hs_libraries = [ "HScom" ],
360 extra_libraries = [ "user32", "ole32", "oleaut32", "advapi32" ],
362 c_includes = [], -- ???
363 package_deps = [ "lang" ],
370 ghc_src_dir :: String -> String
371 ghc_src_dir path = cFPTOOLS_TOP_ABS ++ '/':cCURRENT_DIR ++ '/':path