module StaticFlags (
parseStaticFlags,
staticFlags,
+ initStaticOpts,
-- Ways
- WayName(..), v_Ways, v_Build_tag, v_RTS_Build_tag,
+ WayName(..), v_Ways, v_Build_tag, v_RTS_Build_tag, isRTSWay,
-- Output style options
opt_PprUserLength,
opt_NoMethodSharing,
opt_NoStateHack,
opt_CprOff,
- opt_RulesOff,
opt_SimplNoPreInlining,
opt_SimplExcessPrecision,
opt_MaxWorkerArgs,
parseStaticFlags :: [String] -> IO [String]
parseStaticFlags args = do
+ ready <- readIORef v_opt_C_ready
+ when ready $ throwDyn (ProgramError "Too late for parseStaticFlags: call it before newSession")
+
(leftover, errs) <- processArgs static_flags args
when (not (null errs)) $ throwDyn (UsageError (unlines errs))
when (not (null errs)) $ ghcError (UsageError (unlines errs))
return (cg_flags++more_leftover++leftover)
+initStaticOpts :: IO ()
+initStaticOpts = writeIORef v_opt_C_ready True
static_flags :: [(String, OptKind IO)]
-- All the static flags should appear in this list. It describes how each
opt_NoStateHack = lookUp FSLIT("-fno-state-hack")
opt_NoMethodSharing = lookUp FSLIT("-fno-method-sharing")
opt_CprOff = lookUp FSLIT("-fcpr-off")
-opt_RulesOff = lookUp FSLIT("-frules-off")
-- Switch off CPR analysis in the new demand analyser
opt_MaxWorkerArgs = lookup_def_int "-fmax-worker-args" (10::Int)
"static",
"funregisterised",
"fext-core",
- "frules-off",
"fcpr-off",
"ferror-spans",
"fPIC"
Nothing -> error "findBuildTag"
Just details -> details
+isRTSWay = wayRTSOnly . lkupWay
+
data Way = Way {
wayTag :: String,
wayRTSOnly :: Bool,