-fcompiling-prelude is back!
When compiling the Prelude we need to distinguish between wired-in
module references that are DLL-bound or not. (Just having -static
didn't cut it in the end, since it also encompasses RTS references.)
On platforms that don't use Win32 DLLs, Preludes compiled with and
without -fcompiling-prelude will be observationally equivalent.
#include "HsVersions.h"
import OccName
import Outputable
#include "HsVersions.h"
import OccName
import Outputable
-import CmdLineOpts ( opt_Static )
+import CmdLineOpts ( opt_Static, opt_CompilingPrelude )
mkPrelModule s = Module (_PK_ (encode s)) ilk
where
ilk
mkPrelModule s = Module (_PK_ (encode s)) ilk
where
ilk
+ | opt_Static || opt_CompilingPrelude = HiFile
| otherwise = HiDllFile
mkSrcModuleFS :: UserFS -> Module
| otherwise = HiDllFile
mkSrcModuleFS :: UserFS -> Module
opt_AutoSccsOnAllToplevs,
opt_AutoSccsOnExportedToplevs,
opt_AutoSccsOnIndividualCafs,
opt_AutoSccsOnAllToplevs,
opt_AutoSccsOnExportedToplevs,
opt_AutoSccsOnIndividualCafs,
opt_D_dump_absC,
opt_D_dump_asm,
opt_D_dump_deriv,
opt_D_dump_absC,
opt_D_dump_asm,
opt_D_dump_deriv,
opt_AutoSccsOnAllToplevs = lookUp SLIT("-fauto-sccs-on-all-toplevs")
opt_AutoSccsOnExportedToplevs = lookUp SLIT("-fauto-sccs-on-exported-toplevs")
opt_AutoSccsOnIndividualCafs = lookUp SLIT("-fauto-sccs-on-individual-cafs")
opt_AutoSccsOnAllToplevs = lookUp SLIT("-fauto-sccs-on-all-toplevs")
opt_AutoSccsOnExportedToplevs = lookUp SLIT("-fauto-sccs-on-exported-toplevs")
opt_AutoSccsOnIndividualCafs = lookUp SLIT("-fauto-sccs-on-individual-cafs")
+ {-
+ It's a bit unfortunate to have to re-introduce this chap, but on Win32
+ platforms we do need a way of distinguishing between the case when we're
+ compiling a static version of the Prelude and one that's going to be
+ put into a DLL. Why? Because the compiler's wired in modules need to
+ be attributed as either coming from a DLL or not.
+ -}
+opt_CompilingPrelude = lookUp SLIT("-fcompiling-prelude")
opt_D_dump_absC = lookUp SLIT("-ddump-absC")
opt_D_dump_asm = lookUp SLIT("-ddump-asm")
opt_D_dump_deriv = lookUp SLIT("-ddump-deriv")
opt_D_dump_absC = lookUp SLIT("-ddump-absC")
opt_D_dump_asm = lookUp SLIT("-ddump-asm")
opt_D_dump_deriv = lookUp SLIT("-ddump-deriv")