opt_DsMultiTyVar,
opt_NoStateHack,
opt_SimpleListLiterals,
- opt_SpecInlineJoinPoints,
opt_CprOff,
opt_SimplNoPreInlining,
opt_SimplExcessPrecision,
v_Ld_inputs,
tablesNextToCode,
opt_StubDeadValues,
+ opt_Ticky,
-- For the parser
addOpt, removeOpt, addWay, getWayFlags, v_opt_C_ready
opt_DsMultiTyVar = not (lookUp (fsLit "-fno-ds-multi-tyvar"))
-- On by default
-opt_SpecInlineJoinPoints :: Bool
-opt_SpecInlineJoinPoints = lookUp (fsLit "-fspec-inline-join-points")
-
opt_SimpleListLiterals :: Bool
opt_SimpleListLiterals = lookUp (fsLit "-fsimple-list-literals")
opt_PIC :: Bool
#if darwin_TARGET_OS && x86_64_TARGET_ARCH
opt_PIC = True
+#elif darwin_TARGET_OS
+opt_PIC = lookUp (fsLit "-fPIC") || not opt_Static
#else
opt_PIC = lookUp (fsLit "-fPIC")
#endif
opt_ErrorSpans :: Bool
opt_ErrorSpans = lookUp (fsLit "-ferror-spans")
+opt_Ticky :: Bool
+opt_Ticky = lookUp (fsLit "-ticky")
-- object files and libraries to be linked in are collected here.
-- ToDo: perhaps this could be done without a global, it wasn't obvious
-- non-profiling objects.
-- After parsing the command-line options, we determine which "way" we
--- are building - this might be a combination way, eg. profiling+ticky-ticky.
+-- are building - this might be a combination way, eg. profiling+threaded.
-- We then find the "build-tag" associated with this way, and this
-- becomes the suffix used to find .hi files and libraries used in
| WayDebug
| WayProf
| WayEventLog
- | WayTicky
| WayPar
| WayGran
| WayNDP
_ `allowedWith` WayDyn = True
WayDyn `allowedWith` _ = True
- -- ticky is (now) allowed with everything
- -- Indeed, ticky should no longer be a 'way' at all
- _ `allowedWith` WayTicky = True
- WayTicky `allowedWith` _ = True
-
-- debug is allowed with everything
_ `allowedWith` WayDebug = True
WayDebug `allowedWith` _ = True
Way WayDyn "dyn" False "Dynamic"
[ "-DDYNAMIC"
- , "-optc-DDYNAMIC" ],
+ , "-optc-DDYNAMIC"
+#if defined(mingw32_TARGET_OS)
+ -- On Windows, code that is to be linked into a dynamic library must be compiled
+ -- with -fPIC. Labels not in the current package are assumed to be in a DLL
+ -- different from the current one.
+ , "-fPIC"
+#endif
+ ],
Way WayProf "p" False "Profiling"
[ "-fscc-profiling"
[ "-DTRACING"
, "-optc-DTRACING" ],
- Way WayTicky "t" True "Ticky-ticky Profiling"
- [ "-DTICKY_TICKY"
- , "-optc-DTICKY_TICKY" ],
-
Way WayPar "mp" False "Parallel"
[ "-fparallel"
, "-D__PARALLEL_HASKELL__"