allFlags :: [String]
allFlags = map ('-':) $
- [ name | (name, optkind) <- dynamic_flags, ok optkind ] ++
+ [ flagName flag | flag <- dynamic_flags, ok (flagOptKind flag) ] ++
map ("fno-"++) flags ++
map ("f"++) flags ++
map ("X"++) xs ++
flags = map fst fFlags
xs = map fst xFlags
-dynamic_flags :: [(String, OptKind DynP)]
+dynamic_flags :: [Flag DynP]
dynamic_flags = [
- ( "n" , NoArg (setDynFlag Opt_DryRun) )
- , ( "cpp" , NoArg (setDynFlag Opt_Cpp))
- , ( "F" , NoArg (setDynFlag Opt_Pp))
- , ( "#include" , HasArg (addCmdlineHCInclude) )
- , ( "v" , OptIntSuffix setVerbosity )
+ Flag "n" (NoArg (setDynFlag Opt_DryRun)) Supported
+ , Flag "cpp" (NoArg (setDynFlag Opt_Cpp)) Supported
+ , Flag "F" (NoArg (setDynFlag Opt_Pp)) Supported
+ , Flag "#include" (HasArg (addCmdlineHCInclude)) Supported
+ , Flag "v" (OptIntSuffix setVerbosity) Supported
------- Specific phases --------------------------------------------
- , ( "pgmL" , HasArg (upd . setPgmL) )
- , ( "pgmP" , HasArg (upd . setPgmP) )
- , ( "pgmF" , HasArg (upd . setPgmF) )
- , ( "pgmc" , HasArg (upd . setPgmc) )
- , ( "pgmm" , HasArg (upd . setPgmm) )
- , ( "pgms" , HasArg (upd . setPgms) )
- , ( "pgma" , HasArg (upd . setPgma) )
- , ( "pgml" , HasArg (upd . setPgml) )
- , ( "pgmdll" , HasArg (upd . setPgmdll) )
- , ( "pgmwindres" , HasArg (upd . setPgmwindres) )
-
- , ( "optL" , HasArg (upd . addOptL) )
- , ( "optP" , HasArg (upd . addOptP) )
- , ( "optF" , HasArg (upd . addOptF) )
- , ( "optc" , HasArg (upd . addOptc) )
- , ( "optm" , HasArg (upd . addOptm) )
- , ( "opta" , HasArg (upd . addOpta) )
- , ( "optl" , HasArg (upd . addOptl) )
- , ( "optdep" , HasArg (upd . addOptdep) )
- , ( "optwindres" , HasArg (upd . addOptwindres) )
-
- , ( "split-objs" , NoArg (if can_split
- then setDynFlag Opt_SplitObjs
- else return ()) )
+ , Flag "pgmL" (HasArg (upd . setPgmL)) Supported
+ , Flag "pgmP" (HasArg (upd . setPgmP)) Supported
+ , Flag "pgmF" (HasArg (upd . setPgmF)) Supported
+ , Flag "pgmc" (HasArg (upd . setPgmc)) Supported
+ , Flag "pgmm" (HasArg (upd . setPgmm)) Supported
+ , Flag "pgms" (HasArg (upd . setPgms)) Supported
+ , Flag "pgma" (HasArg (upd . setPgma)) Supported
+ , Flag "pgml" (HasArg (upd . setPgml)) Supported
+ , Flag "pgmdll" (HasArg (upd . setPgmdll)) Supported
+ , Flag "pgmwindres" (HasArg (upd . setPgmwindres)) Supported
+
+ , Flag "optL" (HasArg (upd . addOptL)) Supported
+ , Flag "optP" (HasArg (upd . addOptP)) Supported
+ , Flag "optF" (HasArg (upd . addOptF)) Supported
+ , Flag "optc" (HasArg (upd . addOptc)) Supported
+ , Flag "optm" (HasArg (upd . addOptm)) Supported
+ , Flag "opta" (HasArg (upd . addOpta)) Supported
+ , Flag "optl" (HasArg (upd . addOptl)) Supported
+ , Flag "optdep" (HasArg (upd . addOptdep)) Supported
+ , Flag "optwindres" (HasArg (upd . addOptwindres)) Supported
+
+ , Flag "split-objs"
+ (NoArg (if can_split then setDynFlag Opt_SplitObjs else return ()))
+ Supported
-------- Linking ----------------------------------------------------
- , ( "c" , NoArg (upd $ \d -> d{ ghcLink=NoLink } ))
- , ( "no-link" , NoArg (upd $ \d -> d{ ghcLink=NoLink } )) -- Dep.
- , ( "shared" , NoArg (upd $ \d -> d{ ghcLink=LinkDynLib } ))
- , ( "dynload" , HasArg (upd . parseDynLibLoaderMode))
+ , Flag "c" (NoArg (upd $ \d -> d{ ghcLink=NoLink } ))
+ Supported
+ , Flag "no-link" (NoArg (upd $ \d -> d{ ghcLink=NoLink } ))
+ (Deprecated "Use -c instead")
+ , Flag "shared" (NoArg (upd $ \d -> d{ ghcLink=LinkDynLib } ))
+ Supported
+ , Flag "dynload" (HasArg (upd . parseDynLibLoaderMode))
+ Supported
------- Libraries ---------------------------------------------------
- , ( "L" , Prefix addLibraryPath )
- , ( "l" , AnySuffix (\s -> do upd (addOptl s)))
+ , Flag "L" (Prefix addLibraryPath ) Supported
+ , Flag "l" (AnySuffix (\s -> do upd (addOptl s))) Supported
------- Frameworks --------------------------------------------------
-- -framework-path should really be -F ...
- , ( "framework-path" , HasArg addFrameworkPath )
- , ( "framework" , HasArg (upd . addCmdlineFramework) )
+ , Flag "framework-path" (HasArg addFrameworkPath ) Supported
+ , Flag "framework" (HasArg (upd . addCmdlineFramework)) Supported
------- Output Redirection ------------------------------------------
- , ( "odir" , HasArg (upd . setObjectDir))
- , ( "o" , SepArg (upd . setOutputFile . Just))
- , ( "ohi" , HasArg (upd . setOutputHi . Just ))
- , ( "osuf" , HasArg (upd . setObjectSuf))
- , ( "hcsuf" , HasArg (upd . setHcSuf))
- , ( "hisuf" , HasArg (upd . setHiSuf))
- , ( "hidir" , HasArg (upd . setHiDir))
- , ( "tmpdir" , HasArg (upd . setTmpDir))
- , ( "stubdir" , HasArg (upd . setStubDir))
- , ( "ddump-file-prefix", HasArg (upd . setDumpPrefixForce . Just))
+ , Flag "odir" (HasArg (upd . setObjectDir)) Supported
+ , Flag "o" (SepArg (upd . setOutputFile . Just)) Supported
+ , Flag "ohi" (HasArg (upd . setOutputHi . Just )) Supported
+ , Flag "osuf" (HasArg (upd . setObjectSuf)) Supported
+ , Flag "hcsuf" (HasArg (upd . setHcSuf)) Supported
+ , Flag "hisuf" (HasArg (upd . setHiSuf)) Supported
+ , Flag "hidir" (HasArg (upd . setHiDir)) Supported
+ , Flag "tmpdir" (HasArg (upd . setTmpDir)) Supported
+ , Flag "stubdir" (HasArg (upd . setStubDir)) Supported
+ , Flag "ddump-file-prefix" (HasArg (upd . setDumpPrefixForce . Just))
+ Supported
------- Keeping temporary files -------------------------------------
-- These can be singular (think ghc -c) or plural (think ghc --make)
- , ( "keep-hc-file" , NoArg (setDynFlag Opt_KeepHcFiles))
- , ( "keep-hc-files" , NoArg (setDynFlag Opt_KeepHcFiles))
- , ( "keep-s-file" , NoArg (setDynFlag Opt_KeepSFiles))
- , ( "keep-s-files" , NoArg (setDynFlag Opt_KeepSFiles))
- , ( "keep-raw-s-file" , NoArg (setDynFlag Opt_KeepRawSFiles))
- , ( "keep-raw-s-files", NoArg (setDynFlag Opt_KeepRawSFiles))
+ , Flag "keep-hc-file" (NoArg (setDynFlag Opt_KeepHcFiles)) Supported
+ , Flag "keep-hc-files" (NoArg (setDynFlag Opt_KeepHcFiles)) Supported
+ , Flag "keep-s-file" (NoArg (setDynFlag Opt_KeepSFiles)) Supported
+ , Flag "keep-s-files" (NoArg (setDynFlag Opt_KeepSFiles)) Supported
+ , Flag "keep-raw-s-file" (NoArg (setDynFlag Opt_KeepRawSFiles)) Supported
+ , Flag "keep-raw-s-files" (NoArg (setDynFlag Opt_KeepRawSFiles)) Supported
-- This only makes sense as plural
- , ( "keep-tmp-files" , NoArg (setDynFlag Opt_KeepTmpFiles))
+ , Flag "keep-tmp-files" (NoArg (setDynFlag Opt_KeepTmpFiles)) Supported
------- Miscellaneous ----------------------------------------------
- , ( "no-hs-main" , NoArg (setDynFlag Opt_NoHsMain))
- , ( "main-is" , SepArg setMainIs )
- , ( "haddock" , NoArg (setDynFlag Opt_Haddock) )
- , ( "haddock-opts" , HasArg (upd . addHaddockOpts))
- , ( "hpcdir" , SepArg setOptHpcDir )
-
- ------- recompilation checker (DEPRECATED, use -fforce-recomp) -----
- , ( "recomp" , NoArg (unSetDynFlag Opt_ForceRecomp) )
- , ( "no-recomp" , NoArg (setDynFlag Opt_ForceRecomp) )
+ , Flag "no-hs-main" (NoArg (setDynFlag Opt_NoHsMain)) Supported
+ , Flag "main-is" (SepArg setMainIs ) Supported
+ , Flag "haddock" (NoArg (setDynFlag Opt_Haddock)) Supported
+ , Flag "haddock-opts" (HasArg (upd . addHaddockOpts)) Supported
+ , Flag "hpcdir" (SepArg setOptHpcDir) Supported
+
+ ------- recompilation checker --------------------------------------
+ , Flag "recomp" (NoArg (unSetDynFlag Opt_ForceRecomp))
+ (Deprecated "Use -fforce-recomp instead")
+ , Flag "no-recomp" (NoArg (setDynFlag Opt_ForceRecomp))
+ (Deprecated "Use -fno-force-recomp instead")
------- Packages ----------------------------------------------------
- , ( "package-conf" , HasArg extraPkgConf_ )
- , ( "no-user-package-conf", NoArg (unSetDynFlag Opt_ReadUserPackageConf) )
- , ( "package-name" , HasArg (upd . setPackageName) )
- , ( "package" , HasArg exposePackage )
- , ( "hide-package" , HasArg hidePackage )
- , ( "hide-all-packages", NoArg (setDynFlag Opt_HideAllPackages) )
- , ( "ignore-package" , HasArg ignorePackage )
- , ( "syslib" , HasArg exposePackage ) -- for compatibility
+ , Flag "package-conf" (HasArg extraPkgConf_) Supported
+ , Flag "no-user-package-conf" (NoArg (unSetDynFlag Opt_ReadUserPackageConf))
+ Supported
+ , Flag "package-name" (HasArg (upd . setPackageName)) Supported
+ , Flag "package" (HasArg exposePackage) Supported
+ , Flag "hide-package" (HasArg hidePackage) Supported
+ , Flag "hide-all-packages" (NoArg (setDynFlag Opt_HideAllPackages))
+ Supported
+ , Flag "ignore-package" (HasArg ignorePackage)
+ Supported
+ , Flag "syslib" (HasArg exposePackage)
+ (Deprecated "Use -package instead")
------ HsCpp opts ---------------------------------------------------
- , ( "D", AnySuffix (upd . addOptP) )
- , ( "U", AnySuffix (upd . addOptP) )
+ , Flag "D" (AnySuffix (upd . addOptP)) Supported
+ , Flag "U" (AnySuffix (upd . addOptP)) Supported
------- Include/Import Paths ----------------------------------------
- , ( "I" , Prefix addIncludePath)
- , ( "i" , OptPrefix addImportPath )
+ , Flag "I" (Prefix addIncludePath) Supported
+ , Flag "i" (OptPrefix addImportPath ) Supported
------ Debugging ----------------------------------------------------
- , ( "dstg-stats", NoArg (setDynFlag Opt_StgStats))
-
- , ( "ddump-cmm", setDumpFlag Opt_D_dump_cmm)
- , ( "ddump-cmmz", setDumpFlag Opt_D_dump_cmmz)
- , ( "ddump-cmmz-pretty", setDumpFlag Opt_D_dump_cmmz_pretty)
- , ( "ddump-cps-cmm", setDumpFlag Opt_D_dump_cps_cmm)
- , ( "ddump-cvt-cmm", setDumpFlag Opt_D_dump_cvt_cmm)
- , ( "ddump-asm", setDumpFlag Opt_D_dump_asm)
- , ( "ddump-asm-native", setDumpFlag Opt_D_dump_asm_native)
- , ( "ddump-asm-liveness", setDumpFlag Opt_D_dump_asm_liveness)
- , ( "ddump-asm-coalesce", setDumpFlag Opt_D_dump_asm_coalesce)
- , ( "ddump-asm-regalloc", setDumpFlag Opt_D_dump_asm_regalloc)
- , ( "ddump-asm-conflicts", setDumpFlag Opt_D_dump_asm_conflicts)
- , ( "ddump-asm-regalloc-stages",
- setDumpFlag Opt_D_dump_asm_regalloc_stages)
- , ( "ddump-asm-stats", setDumpFlag Opt_D_dump_asm_stats)
- , ( "ddump-cpranal", setDumpFlag Opt_D_dump_cpranal)
- , ( "ddump-deriv", setDumpFlag Opt_D_dump_deriv)
- , ( "ddump-ds", setDumpFlag Opt_D_dump_ds)
- , ( "ddump-flatC", setDumpFlag Opt_D_dump_flatC)
- , ( "ddump-foreign", setDumpFlag Opt_D_dump_foreign)
- , ( "ddump-inlinings", setDumpFlag Opt_D_dump_inlinings)
- , ( "ddump-rule-firings", setDumpFlag Opt_D_dump_rule_firings)
- , ( "ddump-occur-anal", setDumpFlag Opt_D_dump_occur_anal)
- , ( "ddump-parsed", setDumpFlag Opt_D_dump_parsed)
- , ( "ddump-rn", setDumpFlag Opt_D_dump_rn)
- , ( "ddump-simpl", setDumpFlag Opt_D_dump_simpl)
- , ( "ddump-simpl-iterations", setDumpFlag Opt_D_dump_simpl_iterations)
- , ( "ddump-simpl-phases", OptPrefix setDumpSimplPhases)
- , ( "ddump-spec", setDumpFlag Opt_D_dump_spec)
- , ( "ddump-prep", setDumpFlag Opt_D_dump_prep)
- , ( "ddump-stg", setDumpFlag Opt_D_dump_stg)
- , ( "ddump-stranal", setDumpFlag Opt_D_dump_stranal)
- , ( "ddump-tc", setDumpFlag Opt_D_dump_tc)
- , ( "ddump-types", setDumpFlag Opt_D_dump_types)
- , ( "ddump-rules", setDumpFlag Opt_D_dump_rules)
- , ( "ddump-cse", setDumpFlag Opt_D_dump_cse)
- , ( "ddump-worker-wrapper", setDumpFlag Opt_D_dump_worker_wrapper)
- , ( "ddump-rn-trace", setDumpFlag Opt_D_dump_rn_trace)
- , ( "ddump-if-trace", setDumpFlag Opt_D_dump_if_trace)
- , ( "ddump-tc-trace", setDumpFlag Opt_D_dump_tc_trace)
- , ( "ddump-splices", setDumpFlag Opt_D_dump_splices)
- , ( "ddump-rn-stats", setDumpFlag Opt_D_dump_rn_stats)
- , ( "ddump-opt-cmm", setDumpFlag Opt_D_dump_opt_cmm)
- , ( "ddump-simpl-stats", setDumpFlag Opt_D_dump_simpl_stats)
- , ( "ddump-bcos", setDumpFlag Opt_D_dump_BCOs)
- , ( "dsource-stats", setDumpFlag Opt_D_source_stats)
- , ( "dverbose-core2core", NoArg setVerboseCore2Core)
- , ( "dverbose-stg2stg", setDumpFlag Opt_D_verbose_stg2stg)
- , ( "ddump-hi", setDumpFlag Opt_D_dump_hi)
- , ( "ddump-minimal-imports", setDumpFlag Opt_D_dump_minimal_imports)
- , ( "ddump-vect", setDumpFlag Opt_D_dump_vect)
- , ( "ddump-hpc", setDumpFlag Opt_D_dump_hpc)
- , ( "ddump-mod-cycles", setDumpFlag Opt_D_dump_mod_cycles)
- , ( "ddump-view-pattern-commoning", setDumpFlag Opt_D_dump_view_pattern_commoning)
- , ( "ddump-to-file", setDumpFlag Opt_DumpToFile)
- , ( "ddump-hi-diffs", setDumpFlag Opt_D_dump_hi_diffs)
-
- , ( "dcore-lint", NoArg (setDynFlag Opt_DoCoreLinting))
- , ( "dstg-lint", NoArg (setDynFlag Opt_DoStgLinting))
- , ( "dcmm-lint", NoArg (setDynFlag Opt_DoCmmLinting))
- , ( "dasm-lint", NoArg (setDynFlag Opt_DoAsmLinting))
- , ( "dshow-passes", NoArg (do setDynFlag Opt_ForceRecomp
- setVerbosity (Just 2)) )
- , ( "dfaststring-stats", NoArg (setDynFlag Opt_D_faststring_stats))
+ , Flag "dstg-stats" (NoArg (setDynFlag Opt_StgStats)) Supported
+
+ , Flag "ddump-cmm" (setDumpFlag Opt_D_dump_cmm)
+ Supported
+ , Flag "ddump-cmmz" (setDumpFlag Opt_D_dump_cmmz)
+ Supported
+ , Flag "ddump-cmmz-pretty" (setDumpFlag Opt_D_dump_cmmz_pretty)
+ Supported
+ , Flag "ddump-cps-cmm" (setDumpFlag Opt_D_dump_cps_cmm)
+ Supported
+ , Flag "ddump-cvt-cmm" (setDumpFlag Opt_D_dump_cvt_cmm)
+ Supported
+ , Flag "ddump-asm" (setDumpFlag Opt_D_dump_asm)
+ Supported
+ , Flag "ddump-asm-native" (setDumpFlag Opt_D_dump_asm_native)
+ Supported
+ , Flag "ddump-asm-liveness" (setDumpFlag Opt_D_dump_asm_liveness)
+ Supported
+ , Flag "ddump-asm-coalesce" (setDumpFlag Opt_D_dump_asm_coalesce)
+ Supported
+ , Flag "ddump-asm-regalloc" (setDumpFlag Opt_D_dump_asm_regalloc)
+ Supported
+ , Flag "ddump-asm-conflicts" (setDumpFlag Opt_D_dump_asm_conflicts)
+ Supported
+ , Flag "ddump-asm-regalloc-stages"
+ (setDumpFlag Opt_D_dump_asm_regalloc_stages)
+ Supported
+ , Flag "ddump-asm-stats" (setDumpFlag Opt_D_dump_asm_stats)
+ Supported
+ , Flag "ddump-cpranal" (setDumpFlag Opt_D_dump_cpranal)
+ Supported
+ , Flag "ddump-deriv" (setDumpFlag Opt_D_dump_deriv)
+ Supported
+ , Flag "ddump-ds" (setDumpFlag Opt_D_dump_ds)
+ Supported
+ , Flag "ddump-flatC" (setDumpFlag Opt_D_dump_flatC)
+ Supported
+ , Flag "ddump-foreign" (setDumpFlag Opt_D_dump_foreign)
+ Supported
+ , Flag "ddump-inlinings" (setDumpFlag Opt_D_dump_inlinings)
+ Supported
+ , Flag "ddump-rule-firings" (setDumpFlag Opt_D_dump_rule_firings)
+ Supported
+ , Flag "ddump-occur-anal" (setDumpFlag Opt_D_dump_occur_anal)
+ Supported
+ , Flag "ddump-parsed" (setDumpFlag Opt_D_dump_parsed)
+ Supported
+ , Flag "ddump-rn" (setDumpFlag Opt_D_dump_rn)
+ Supported
+ , Flag "ddump-simpl" (setDumpFlag Opt_D_dump_simpl)
+ Supported
+ , Flag "ddump-simpl-iterations" (setDumpFlag Opt_D_dump_simpl_iterations)
+ Supported
+ , Flag "ddump-simpl-phases" (OptPrefix setDumpSimplPhases)
+ Supported
+ , Flag "ddump-spec" (setDumpFlag Opt_D_dump_spec)
+ Supported
+ , Flag "ddump-prep" (setDumpFlag Opt_D_dump_prep)
+ Supported
+ , Flag "ddump-stg" (setDumpFlag Opt_D_dump_stg)
+ Supported
+ , Flag "ddump-stranal" (setDumpFlag Opt_D_dump_stranal)
+ Supported
+ , Flag "ddump-tc" (setDumpFlag Opt_D_dump_tc)
+ Supported
+ , Flag "ddump-types" (setDumpFlag Opt_D_dump_types)
+ Supported
+ , Flag "ddump-rules" (setDumpFlag Opt_D_dump_rules)
+ Supported
+ , Flag "ddump-cse" (setDumpFlag Opt_D_dump_cse)
+ Supported
+ , Flag "ddump-worker-wrapper" (setDumpFlag Opt_D_dump_worker_wrapper)
+ Supported
+ , Flag "ddump-rn-trace" (setDumpFlag Opt_D_dump_rn_trace)
+ Supported
+ , Flag "ddump-if-trace" (setDumpFlag Opt_D_dump_if_trace)
+ Supported
+ , Flag "ddump-tc-trace" (setDumpFlag Opt_D_dump_tc_trace)
+ Supported
+ , Flag "ddump-splices" (setDumpFlag Opt_D_dump_splices)
+ Supported
+ , Flag "ddump-rn-stats" (setDumpFlag Opt_D_dump_rn_stats)
+ Supported
+ , Flag "ddump-opt-cmm" (setDumpFlag Opt_D_dump_opt_cmm)
+ Supported
+ , Flag "ddump-simpl-stats" (setDumpFlag Opt_D_dump_simpl_stats)
+ Supported
+ , Flag "ddump-bcos" (setDumpFlag Opt_D_dump_BCOs)
+ Supported
+ , Flag "dsource-stats" (setDumpFlag Opt_D_source_stats)
+ Supported
+ , Flag "dverbose-core2core" (NoArg setVerboseCore2Core)
+ Supported
+ , Flag "dverbose-stg2stg" (setDumpFlag Opt_D_verbose_stg2stg)
+ Supported
+ , Flag "ddump-hi" (setDumpFlag Opt_D_dump_hi)
+ Supported
+ , Flag "ddump-minimal-imports" (setDumpFlag Opt_D_dump_minimal_imports)
+ Supported
+ , Flag "ddump-vect" (setDumpFlag Opt_D_dump_vect)
+ Supported
+ , Flag "ddump-hpc" (setDumpFlag Opt_D_dump_hpc)
+ Supported
+ , Flag "ddump-mod-cycles" (setDumpFlag Opt_D_dump_mod_cycles)
+ Supported
+ , Flag "ddump-view-pattern-commoning" (setDumpFlag Opt_D_dump_view_pattern_commoning)
+ Supported
+ , Flag "ddump-to-file" (setDumpFlag Opt_DumpToFile)
+ Supported
+ , Flag "ddump-hi-diffs" (setDumpFlag Opt_D_dump_hi_diffs)
+ Supported
+
+ , Flag "dcore-lint" (NoArg (setDynFlag Opt_DoCoreLinting))
+ Supported
+ , Flag "dstg-lint" (NoArg (setDynFlag Opt_DoStgLinting))
+ Supported
+ , Flag "dcmm-lint" (NoArg (setDynFlag Opt_DoCmmLinting))
+ Supported
+ , Flag "dasm-lint" (NoArg (setDynFlag Opt_DoAsmLinting))
+ Supported
+ , Flag "dshow-passes"
+ (NoArg (do setDynFlag Opt_ForceRecomp
+ setVerbosity (Just 2)))
+ Supported
+ , Flag "dfaststring-stats" (NoArg (setDynFlag Opt_D_faststring_stats))
+ Supported
------ Machine dependant (-m<blah>) stuff ---------------------------
- , ( "monly-2-regs", NoArg (upd (\s -> s{stolen_x86_regs = 2}) ))
- , ( "monly-3-regs", NoArg (upd (\s -> s{stolen_x86_regs = 3}) ))
- , ( "monly-4-regs", NoArg (upd (\s -> s{stolen_x86_regs = 4}) ))
+ , Flag "monly-2-regs" (NoArg (upd (\s -> s{stolen_x86_regs = 2}) ))
+ Supported
+ , Flag "monly-3-regs" (NoArg (upd (\s -> s{stolen_x86_regs = 3}) ))
+ Supported
+ , Flag "monly-4-regs" (NoArg (upd (\s -> s{stolen_x86_regs = 4}) ))
+ Supported
------ Warning opts -------------------------------------------------
- , ( "W" , NoArg (mapM_ setDynFlag minusWOpts) )
- , ( "Werror", NoArg (setDynFlag Opt_WarnIsError) )
- , ( "Wwarn" , NoArg (unSetDynFlag Opt_WarnIsError) )
- , ( "Wall" , NoArg (mapM_ setDynFlag minusWallOpts) )
- , ( "Wnot" , NoArg (mapM_ unSetDynFlag minusWallOpts) ) -- DEPRECATED
- , ( "w" , NoArg (mapM_ unSetDynFlag minuswRemovesOpts) )
+ , Flag "W" (NoArg (mapM_ setDynFlag minusWOpts))
+ Supported
+ , Flag "Werror" (NoArg (setDynFlag Opt_WarnIsError))
+ Supported
+ , Flag "Wwarn" (NoArg (unSetDynFlag Opt_WarnIsError))
+ Supported
+ , Flag "Wall" (NoArg (mapM_ setDynFlag minusWallOpts))
+ Supported
+ , Flag "Wnot" (NoArg (mapM_ unSetDynFlag minusWallOpts))
+ (Deprecated "Use -w instead")
+ , Flag "w" (NoArg (mapM_ unSetDynFlag minuswRemovesOpts))
+ Supported
------ Optimisation flags ------------------------------------------
- , ( "O" , NoArg (upd (setOptLevel 1)))
- , ( "Onot" , NoArg (upd (setOptLevel 0))) -- deprecated
- , ( "Odph" , NoArg (upd setDPHOpt))
- , ( "O" , OptIntSuffix (\mb_n -> upd (setOptLevel (mb_n `orElse` 1))))
+ , Flag "O" (NoArg (upd (setOptLevel 1))) Supported
+ , Flag "Onot" (NoArg (upd (setOptLevel 0)))
+ (Deprecated "Use -O0 instead")
+ , Flag "Odph" (NoArg (upd setDPHOpt)) Supported
+ , Flag "O" (OptIntSuffix (\mb_n -> upd (setOptLevel (mb_n `orElse` 1))))
+ Supported
-- If the number is missing, use 1
- , ( "fsimplifier-phases", IntSuffix (\n ->
- upd (\dfs -> dfs{ simplPhases = n })) )
- , ( "fmax-simplifier-iterations", IntSuffix (\n ->
- upd (\dfs -> dfs{ maxSimplIterations = n })) )
-
- , ( "fspec-constr-threshold", IntSuffix (\n ->
- upd (\dfs -> dfs{ specConstrThreshold = Just n })))
- , ( "fno-spec-constr-threshold", NoArg (
- upd (\dfs -> dfs{ specConstrThreshold = Nothing })))
- , ( "fspec-constr-count", IntSuffix (\n ->
- upd (\dfs -> dfs{ specConstrCount = Just n })))
- , ( "fno-spec-constr-count", NoArg (
- upd (\dfs -> dfs{ specConstrCount = Nothing })))
- , ( "fliberate-case-threshold", IntSuffix (\n ->
- upd (\dfs -> dfs{ liberateCaseThreshold = Just n })))
- , ( "fno-liberate-case-threshold", NoArg (
- upd (\dfs -> dfs{ liberateCaseThreshold = Nothing })))
-
- , ( "frule-check", SepArg (\s -> upd (\dfs -> dfs{ ruleCheck = Just s })))
- , ( "fcontext-stack" , IntSuffix $ \n -> upd $ \dfs -> dfs{ ctxtStkDepth = n })
+ , Flag "fsimplifier-phases"
+ (IntSuffix (\n -> upd (\dfs -> dfs{ simplPhases = n })))
+ Supported
+ , Flag "fmax-simplifier-iterations"
+ (IntSuffix (\n -> upd (\dfs -> dfs{ maxSimplIterations = n })))
+ Supported
+
+ , Flag "fspec-constr-threshold"
+ (IntSuffix (\n -> upd (\dfs -> dfs{ specConstrThreshold = Just n })))
+ Supported
+ , Flag "fno-spec-constr-threshold"
+ (NoArg (upd (\dfs -> dfs{ specConstrThreshold = Nothing })))
+ Supported
+ , Flag "fspec-constr-count"
+ (IntSuffix (\n -> upd (\dfs -> dfs{ specConstrCount = Just n })))
+ Supported
+ , Flag "fno-spec-constr-count"
+ (NoArg (upd (\dfs -> dfs{ specConstrCount = Nothing })))
+ Supported
+ , Flag "fliberate-case-threshold"
+ (IntSuffix (\n -> upd (\dfs -> dfs{ liberateCaseThreshold = Just n })))
+ Supported
+ , Flag "fno-liberate-case-threshold"
+ (NoArg (upd (\dfs -> dfs{ liberateCaseThreshold = Nothing })))
+ Supported
+
+ , Flag "frule-check"
+ (SepArg (\s -> upd (\dfs -> dfs{ ruleCheck = Just s })))
+ Supported
+ , Flag "fcontext-stack"
+ (IntSuffix $ \n -> upd $ \dfs -> dfs{ ctxtStkDepth = n })
+ Supported
------ Compiler flags -----------------------------------------------
- , ( "fasm", NoArg (setObjTarget HscAsm) )
- , ( "fvia-c", NoArg (setObjTarget HscC) )
- , ( "fvia-C", NoArg (setObjTarget HscC) )
+ , Flag "fasm" (NoArg (setObjTarget HscAsm)) Supported
+ , Flag "fvia-c" (NoArg (setObjTarget HscC)) Supported
+ , Flag "fvia-C" (NoArg (setObjTarget HscC)) Supported
+
+ , Flag "fno-code" (NoArg (setTarget HscNothing)) Supported
+ , Flag "fbyte-code" (NoArg (setTarget HscInterpreted)) Supported
+ , Flag "fobject-code" (NoArg (setTarget defaultHscTarget)) Supported
- , ( "fno-code", NoArg (setTarget HscNothing))
- , ( "fbyte-code", NoArg (setTarget HscInterpreted) )
- , ( "fobject-code", NoArg (setTarget defaultHscTarget) )
+ , Flag "fglasgow-exts" (NoArg (mapM_ setDynFlag glasgowExtsFlags))
+ Supported
+ , Flag "fno-glasgow-exts" (NoArg (mapM_ unSetDynFlag glasgowExtsFlags))
+ Supported
- , ( "fglasgow-exts", NoArg (mapM_ setDynFlag glasgowExtsFlags) )
- , ( "fno-glasgow-exts", NoArg (mapM_ unSetDynFlag glasgowExtsFlags) )
+ -- XXX We need to flatten these:
-- the rest of the -f* and -fno-* flags
- , ( "f", PrefixPred (isFlag fFlags)
- (\f -> setDynFlag (getFlag fFlags f)) )
- , ( "f", PrefixPred (isPrefFlag "no-" fFlags)
- (\f -> unSetDynFlag (getPrefFlag "no-" fFlags f)) )
+ , Flag "f"
+ (PrefixPred (isFlag fFlags)
+ (\f -> setDynFlag (getFlag fFlags f)))
+ Supported
+ , Flag "f"
+ (PrefixPred (isPrefFlag "no-" fFlags)
+ (\f -> unSetDynFlag (getPrefFlag "no-" fFlags f)))
+ Supported
-- the -X* and -XNo* flags
- , ( "X", PrefixPred (isFlag xFlags)
- (\f -> setDynFlag (getFlag xFlags f)) )
- , ( "X", PrefixPred (isPrefFlag "No" xFlags)
- (\f -> unSetDynFlag (getPrefFlag "No" xFlags f)) )
+ , Flag "X"
+ (PrefixPred (isFlag xFlags)
+ (\f -> setDynFlag (getFlag xFlags f)))
+ Supported
+ , Flag "X"
+ (PrefixPred (isPrefFlag "No" xFlags)
+ (\f -> unSetDynFlag (getPrefFlag "No" xFlags f)))
+ Supported
]
-- these -f<blah> flags can all be reversed with -fno-<blah>
-- -----------------------------------------------------------------------------
-- Parsing the dynamic flags.
-parseDynamicFlags :: DynFlags -> [String] -> IO (DynFlags,[String])
+parseDynamicFlags :: DynFlags -> [String] -> IO (DynFlags, [String], [String])
parseDynamicFlags dflags args = do
- let ((leftover,errs),dflags')
+ let ((leftover, errs, warns), dflags')
= runCmdLine (processArgs dynamic_flags args) dflags
when (not (null errs)) $ do
throwDyn (UsageError (unlines errs))
- return (dflags', leftover)
-
+ return (dflags', leftover, warns)
type DynP = CmdLineP DynFlags