Define HscLang, the output format of hsc.
Remove opt_OutputLanguage, opt_OutputFile, and a few other flags which
we're going to do through DynFlags or directly as arguments to hscLang now.
SimplifierSwitch(..),
StgToDo(..),
SwitchResult(..),
SimplifierSwitch(..),
StgToDo(..),
SwitchResult(..),
classifyOpts,
intSwitchSet,
classifyOpts,
intSwitchSet,
opt_NoImplicitPrelude,
opt_OmitBlackHoling,
opt_OmitInterfacePragmas,
opt_NoImplicitPrelude,
opt_OmitBlackHoling,
opt_OmitInterfacePragmas,
- opt_ProduceExportCStubs,
- opt_ProduceExportHStubs,
opt_NoPruneTyDecls,
opt_NoPruneDecls,
opt_ReportCompile,
opt_NoPruneTyDecls,
opt_NoPruneDecls,
opt_ReportCompile,
opt_Unregisterised,
opt_Verbose,
opt_Unregisterised,
opt_Verbose,
- opt_OutputLanguage,
- opt_OutputFile,
-
-- Code generation
opt_UseVanillaRegs,
opt_UseFloatRegs,
-- Code generation
opt_UseVanillaRegs,
opt_UseFloatRegs,
| Opt_GlasgowExts
deriving (Eq)
| Opt_GlasgowExts
deriving (Eq)
-newtype DynFlags = DynFlags (CoreToDo, StgToDo, [(DynFlag, SwitchResult)])
+data DynFlags = DynFlags {
+ coreToDo :: CoreToDo,
+ stgToDo :: StgToDo,
+ hscLang :: HscLang,
+ flags :: [(DynFlag, SwitchResult)]
+ }
boolOpt :: DynFlag -> DynFlags -> Bool
boolOpt :: DynFlag -> DynFlags -> Bool
-boolOpt f (DynFlags (_, _, dflags))
- = case lookup f dflags of
+boolOpt f dflags
+ = case lookup f (flags dflags) of
Nothing -> False
Just (SwBool b) -> b
_ -> panic "boolOpt"
Nothing -> False
Just (SwBool b) -> b
_ -> panic "boolOpt"
dopt_GlasgowExts = boolOpt Opt_GlasgowExts
dopt_CoreToDo :: DynFlags -> CoreToDo
dopt_GlasgowExts = boolOpt Opt_GlasgowExts
dopt_CoreToDo :: DynFlags -> CoreToDo
-dopt_CoreToDo (DynFlags (core_todo,_,_)) = core_todo
+dopt_CoreToDo = coreToDo
dopt_StgToDo :: DynFlags -> StgToDo
dopt_StgToDo :: DynFlags -> StgToDo
-dopt_StgToDo (DynFlags (_,stg_todo,_)) = stg_todo
+dopt_StgToDo = stgToDo
+
+data HscLang
+ = HscC
+ | HscAsm
+ | HscJava
+ deriving Eq
+
+dopt_HscLang :: DynFlags -> HscLang
+dopt_HscLang = hscLang
\end{code}
%************************************************************************
\end{code}
%************************************************************************
opt_NoImplicitPrelude = lookUp SLIT("-fno-implicit-prelude")
opt_OmitBlackHoling = lookUp SLIT("-dno-black-holing")
opt_OmitInterfacePragmas = lookUp SLIT("-fomit-interface-pragmas")
opt_NoImplicitPrelude = lookUp SLIT("-fno-implicit-prelude")
opt_OmitBlackHoling = lookUp SLIT("-dno-black-holing")
opt_OmitInterfacePragmas = lookUp SLIT("-fomit-interface-pragmas")
-opt_ProduceExportCStubs = lookup_str "-F="
-opt_ProduceExportHStubs = lookup_str "-FH="
-
--- Language for output: "C", "asm", "java", maybe more
--- Nothing => don't output anything
-opt_OutputLanguage :: Maybe String
-opt_OutputLanguage = lookup_str "-olang="
-
-opt_OutputFile :: String
-opt_OutputFile = case lookup_str "-ofile=" of
- Nothing -> panic "No output file specified (-ofile=xxx)"
- Just f -> f
-- Simplifier switches
opt_SimplNoPreInlining = lookUp SLIT("-fno-pre-inlining")
-- Simplifier switches
opt_SimplNoPreInlining = lookUp SLIT("-fno-pre-inlining")