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 -> [PackageConfig]
22 package_details installing =
25 name = "gmp", -- GMP is at the bottom of the heap
28 library_dirs = if cHaveLibGmp == "YES"
32 else [ ghc_src_dir cGHC_RUNTIME_DIR ++ "/gmp" ],
34 extra_libraries = [ "gmp" ],
44 name = "rts", -- The RTS is just another package!
47 library_dirs = if installing
49 else [ ghc_src_dir cGHC_RUNTIME_DIR ],
50 hs_libraries = [ "HSrts" ],
51 #ifndef mingw32_TARGET_OS
54 extra_libraries = [ "winmm" ], -- for the threadDelay timer
56 include_dirs = if installing
57 then [ clibdir ++ "/includes" ]
58 else [ ghc_src_dir cGHC_INCLUDE_DIR ],
59 c_includes = [ "Stg.h" ], -- ha!
60 package_deps = [ "gmp" ],
63 -- the RTS forward-references to a bunch of stuff in the prelude,
64 -- so we force it to be included with special options to ld.
66 #ifndef LEADING_UNDERSCORE
72 "PrelBase_Izh_static_info"
73 , "PrelBase_Czh_static_info"
74 , "PrelFloat_Fzh_static_info"
75 , "PrelFloat_Dzh_static_info"
76 , "PrelPtr_Ptr_static_info"
77 , "PrelWord_Wzh_static_info"
78 , "PrelInt_I8zh_static_info"
79 , "PrelInt_I16zh_static_info"
80 , "PrelInt_I32zh_static_info"
81 , "PrelInt_I64zh_static_info"
82 , "PrelWord_W8zh_static_info"
83 , "PrelWord_W16zh_static_info"
84 , "PrelWord_W32zh_static_info"
85 , "PrelWord_W64zh_static_info"
86 , "PrelStable_StablePtr_static_info"
87 , "PrelBase_Izh_con_info"
88 , "PrelBase_Czh_con_info"
89 , "PrelFloat_Fzh_con_info"
90 , "PrelFloat_Dzh_con_info"
91 , "PrelPtr_Ptr_con_info"
92 , "PrelStable_StablePtr_con_info"
93 , "PrelBase_False_closure"
94 , "PrelBase_True_closure"
95 , "PrelPack_unpackCString_closure"
96 , "PrelIOBase_stackOverflow_closure"
97 , "PrelIOBase_heapOverflow_closure"
98 , "PrelIOBase_NonTermination_closure"
99 , "PrelIOBase_PutFullMVar_closure"
100 , "PrelIOBase_BlockedOnDeadMVar_closure"
101 , "PrelWeak_runFinalizzerBatch_closure"
107 name = "std", -- The Prelude & Standard Hs_libraries
108 import_dirs = if installing
109 then [ clibdir ++ "/imports/std" ]
110 else [ ghc_src_dir cGHC_LIB_DIR ++ "/std" ],
112 library_dirs = if installing
114 else [ ghc_src_dir cGHC_LIB_DIR ++ "/std"
115 , ghc_src_dir cGHC_LIB_DIR ++ "/std/cbits" ],
116 hs_libraries = [ "HSstd" ],
117 extra_libraries = [ "HSstd_cbits" ] ++
118 # ifdef mingw32_TARGET_OS
119 ["wsock32", "msvcrt"]
121 ["m"] -- libm, that is
124 include_dirs = if installing
126 else [ ghc_src_dir cGHC_LIB_DIR ++ "/std/cbits" ],
127 c_includes = [ "HsStd.h" ],
128 package_deps = [ "rts" ],
136 import_dirs = if installing
137 then [ clibdir ++ "/imports/lang" ]
138 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/lang"
139 , cFPTOOLS_TOP_ABS ++ "/hslibs/lang/monads" ],
141 library_dirs = if installing
143 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/lang"
144 , cFPTOOLS_TOP_ABS ++ "/hslibs/lang/cbits" ],
145 hs_libraries = [ "HSlang" ],
146 extra_libraries = [ "HSlang_cbits" ],
147 include_dirs = if installing
149 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/lang/cbits" ],
150 c_includes = [ "HsLang.h" ],
155 #ifndef LEADING_UNDERSCORE
156 "-u Addr_Azh_static_info"
158 "-u _Addr_Azh_static_info"
165 import_dirs = if installing
166 then [ clibdir ++ "/imports/concurrent" ]
167 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/concurrent" ],
169 library_dirs = if installing
171 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/concurrent" ],
172 hs_libraries = [ "HSconcurrent" ],
173 extra_libraries = [],
174 include_dirs = if installing
176 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/concurrent/cbits" ],
178 package_deps = [ "lang" ],
186 import_dirs = if installing
187 then [ clibdir ++ "/imports/data" ]
188 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/data"
189 , cFPTOOLS_TOP_ABS ++ "/hslibs/data/edison"
190 , cFPTOOLS_TOP_ABS ++ "/hslibs/data/edison/Assoc"
191 , cFPTOOLS_TOP_ABS ++ "/hslibs/data/edison/Coll"
192 , cFPTOOLS_TOP_ABS ++ "/hslibs/data/edison/Seq" ],
194 library_dirs = if installing
196 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/data" ],
197 hs_libraries = [ "HSdata" ],
198 extra_libraries = [],
199 include_dirs = if installing
201 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/data/cbits" ],
203 package_deps = [ "lang", "util" ],
211 import_dirs = if installing
212 then [ clibdir ++ "/imports/net" ]
213 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/net" ],
215 library_dirs = if installing
217 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/net"
218 , cFPTOOLS_TOP_ABS ++ "/hslibs/net/cbits" ],
219 hs_libraries = [ "HSnet" ],
220 extra_libraries = [ "HSnet_cbits" ]
221 ++ if suffixMatch "solaris2" cTARGETPLATFORM
222 then [ "nsl", "socket" ]
225 include_dirs = if installing
227 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/net/cbits" ],
228 c_includes = [ "HsNet.h" ],
229 package_deps = [ "lang", "text", "concurrent" ],
237 import_dirs = if installing
238 then [ clibdir ++ "/imports/posix" ]
239 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/posix" ],
241 library_dirs = if installing
243 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/posix"
244 , cFPTOOLS_TOP_ABS ++ "/hslibs/posix/cbits" ],
245 hs_libraries = [ "HSposix" ],
246 extra_libraries = [ "HSposix_cbits" ],
247 include_dirs = if installing
249 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/posix/cbits" ],
250 c_includes = [ "HsPosix.h" ],
251 package_deps = [ "lang" ],
259 import_dirs = if installing
260 then [ clibdir ++ "/imports/text" ]
261 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/text"
262 , cFPTOOLS_TOP_ABS ++ "/hslibs/text/html"
263 , cFPTOOLS_TOP_ABS ++ "/hslibs/text/HaXml/lib"
264 , cFPTOOLS_TOP_ABS ++ "/hslibs/text/parsec" ],
266 library_dirs = if installing
268 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/text"
269 , cFPTOOLS_TOP_ABS ++ "/hslibs/text/cbits" ],
270 hs_libraries = [ "HStext" ],
271 extra_libraries = [ "HStext_cbits" ],
272 include_dirs = if installing
274 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/text/cbits" ],
275 c_includes = [ "HsText.h" ],
276 package_deps = [ "lang" ],
284 import_dirs = if installing
285 then [ clibdir ++ "/imports/util" ]
286 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/util"
287 , cFPTOOLS_TOP_ABS ++ "/hslibs/util/check" ],
289 library_dirs = if installing
291 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/util"
292 , cFPTOOLS_TOP_ABS ++ "/hslibs/util/cbits" ],
293 hs_libraries = [ "HSutil" ],
294 extra_libraries = [ "HSutil_cbits" ],
295 include_dirs = if installing
297 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/util/cbits" ],
298 c_includes = [ "HsUtil.h" ],
299 package_deps = [ "lang", "concurrent"
300 #ifndef mingw32_TARGET_OS
306 extra_ld_opts = words cLibsReadline
309 -- no cbits at the moment, we'll need to add one if this library
310 -- ever calls out to any C libs.
313 import_dirs = if installing
314 then [ clibdir ++ "/imports/hssource" ]
315 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/hssource" ],
317 library_dirs = if installing
319 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/hssource" ],
320 hs_libraries = [ "HShssource" ],
321 extra_libraries = [],
324 package_deps = [ "text" ],
332 import_dirs = if installing
333 then [ clibdir ++ "/imports/greencard" ]
334 else [ cFPTOOLS_TOP_ABS ++ "/green-card/lib/ghc" ],
336 library_dirs = if installing
338 else [ cFPTOOLS_TOP_ABS ++ "/green-card/lib/ghc" ],
339 hs_libraries = [ "HSgreencard" ],
340 extra_libraries = [],
343 package_deps = [ "lang" ],
351 import_dirs = if installing
352 then [ clibdir ++ "/imports/win32" ]
353 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/win32" ],
355 library_dirs = if installing
357 else [ cFPTOOLS_TOP_ABS ++ "/hslibs/win32" ],
358 hs_libraries = [ "HSwin32" ],
359 extra_libraries = [ "user32", "gdi32", "winmm" ],
361 c_includes = [], -- ???
362 package_deps = [ "lang", "greencard" ],
370 import_dirs = if installing
371 then [ clibdir ++ "/imports/com" ]
372 else [ cFPTOOLS_TOP_ABS ++ "/hdirect/lib" ],
374 library_dirs = if installing
376 else [ cFPTOOLS_TOP_ABS ++ "/hdirect/lib" ],
377 hs_libraries = [ "HScom" ],
378 extra_libraries = [ "user32", "ole32", "oleaut32", "advapi32" ],
380 c_includes = [], -- ???
381 package_deps = [ "lang" ],
388 ghc_src_dir :: String -> String
389 ghc_src_dir path = cFPTOOLS_TOP_ABS ++ '/':cCURRENT_DIR ++ '/':path