X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fmain%2FDynFlags.hs;h=0438fb041f3446e6146788877929b599919589cb;hb=f8c52d7fde2d7408b4f734251c373f8d3e2c558e;hp=1721b4c0b36a8198f8fe5d4eb4d59f991c1db48b;hpb=2ebe8addfaae2bc65e6b87ad369928b02053014f;p=ghc-hetmet.git diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs index 1721b4c..0438fb0 100644 --- a/compiler/main/DynFlags.hs +++ b/compiler/main/DynFlags.hs @@ -13,6 +13,13 @@ -- ----------------------------------------------------------------------------- +{-# OPTIONS -w #-} +-- The above warning supression flag is a temporary kludge. +-- While working on this module you are encouraged to remove it and fix +-- any warnings in the module. See +-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings +-- for details + module DynFlags ( -- Dynamic flags DynFlag(..), @@ -54,7 +61,7 @@ module DynFlags ( #include "HsVersions.h" -import Module ( Module, mkModuleName, mkModule ) +import Module ( Module, mkModuleName, mkModule, ModLocation ) import PackageConfig import PrelNames ( mAIN ) #ifdef i386_TARGET_ARCH @@ -84,7 +91,7 @@ import Data.List ( isPrefixOf ) import Util ( split ) #endif -import Data.Char ( isUpper, toLower ) +import Data.Char ( isUpper ) import System.IO ( hPutStrLn, stderr ) -- ----------------------------------------------------------------------------- @@ -94,7 +101,9 @@ data DynFlag -- debugging flags = Opt_D_dump_cmm + | Opt_D_dump_cmmz | Opt_D_dump_cps_cmm + | Opt_D_dump_cvt_cmm | Opt_D_dump_asm | Opt_D_dump_asm_native | Opt_D_dump_asm_liveness @@ -102,6 +111,7 @@ data DynFlag | Opt_D_dump_asm_regalloc | Opt_D_dump_asm_regalloc_stages | Opt_D_dump_asm_conflicts + | Opt_D_dump_asm_stats | Opt_D_dump_cpranal | Opt_D_dump_deriv | Opt_D_dump_ds @@ -141,11 +151,12 @@ data DynFlag | Opt_D_dump_minimal_imports | Opt_D_dump_mod_cycles | Opt_D_faststring_stats + | Opt_DumpToFile -- ^ Append dump output to files instead of stdout. | Opt_DoCoreLinting | Opt_DoStgLinting | Opt_DoCmmLinting - | Opt_WarnIsError -- -Werror; makes warnings fatal + | Opt_WarnIsError -- -Werror; makes warnings fatal | Opt_WarnDuplicateExports | Opt_WarnHiShadows | Opt_WarnImplicitPrelude @@ -253,6 +264,10 @@ data DynFlag | Opt_Haddock | Opt_Hpc_No_Auto | Opt_BreakOnException + | Opt_GenManifest + | Opt_EmbedManifest + | Opt_RunCPSZ + | Opt_ConvertToZipCfgAndBack -- keeping stuff | Opt_KeepHiDiffs @@ -261,7 +276,7 @@ data DynFlag | Opt_KeepRawSFiles | Opt_KeepTmpFiles - deriving (Eq) + deriving (Eq, Show) data DynFlags = DynFlags { ghcMode :: GhcMode, @@ -304,6 +319,14 @@ data DynFlags = DynFlags { outputFile :: Maybe String, outputHi :: Maybe String, + -- | This is set by DriverPipeline.runPipeline based on where + -- its output is going. + dumpPrefix :: Maybe FilePath, + + -- | Override the dumpPrefix set by runPipeline. + -- Set by -ddump-file-prefix + dumpPrefixForce :: Maybe FilePath, + includePaths :: [String], libraryPaths :: [String], frameworkPaths :: [String], -- used on darwin only @@ -324,6 +347,7 @@ data DynFlags = DynFlags { opt_a :: [String], opt_l :: [String], opt_dep :: [String], + opt_windres :: [String], -- commands for particular phases pgm_L :: String, @@ -337,6 +361,7 @@ data DynFlags = DynFlags { pgm_dll :: (String,[Option]), pgm_T :: String, pgm_sysman :: String, + pgm_windres :: String, -- Package flags extraPkgConfs :: [FilePath], @@ -461,6 +486,8 @@ defaultDynFlags = outputFile = Nothing, outputHi = Nothing, + dumpPrefix = Nothing, + dumpPrefixForce = Nothing, includePaths = [], libraryPaths = [], frameworkPaths = [], @@ -479,6 +506,7 @@ defaultDynFlags = opt_m = [], opt_l = [], opt_dep = [], + opt_windres = [], extraPkgConfs = [], packageFlags = [], @@ -496,6 +524,9 @@ defaultDynFlags = Opt_DoAsmMangling, + Opt_GenManifest, + Opt_EmbedManifest, + -- on by default: Opt_PrintBindResult ] ++ [f | (ns,f) <- optLevelFlags, 0 `elem` ns] @@ -549,6 +580,8 @@ setHcSuf f d = d{ hcSuf = f} setOutputFile f d = d{ outputFile = f} setOutputHi f d = d{ outputHi = f} +setDumpPrefixForce f d = d { dumpPrefixForce = f} + -- XXX HACK: Prelude> words "'does not' work" ===> ["'does","not'","work"] -- Config.hs should really use Option. setPgmP f d = let (pgm:args) = words f in d{ pgm_P = (pgm, map Option args)} @@ -561,6 +594,7 @@ setPgms f d = d{ pgm_s = (f,[])} setPgma f d = d{ pgm_a = (f,[])} setPgml f d = d{ pgm_l = (f,[])} setPgmdll f d = d{ pgm_dll = (f,[])} +setPgmwindres f d = d{ pgm_windres = f} addOptL f d = d{ opt_L = f : opt_L d} addOptP f d = d{ opt_P = f : opt_P d} @@ -570,6 +604,7 @@ addOptm f d = d{ opt_m = f : opt_m d} addOpta f d = d{ opt_a = f : opt_a d} addOptl f d = d{ opt_l = f : opt_l d} addOptdep f d = d{ opt_dep = f : opt_dep d} +addOptwindres f d = d{ opt_windres = f : opt_windres d} addCmdlineFramework f d = d{ cmdlineFrameworks = f : cmdlineFrameworks d} @@ -910,6 +945,7 @@ dynamic_flags = [ , ( "pgma" , HasArg (upd . setPgma) ) , ( "pgml" , HasArg (upd . setPgml) ) , ( "pgmdll" , HasArg (upd . setPgmdll) ) + , ( "pgmwindres" , HasArg (upd . setPgmwindres) ) , ( "optL" , HasArg (upd . addOptL) ) , ( "optP" , HasArg (upd . addOptP) ) @@ -919,6 +955,7 @@ dynamic_flags = [ , ( "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 @@ -948,6 +985,7 @@ dynamic_flags = [ , ( "hidir" , HasArg (upd . setHiDir . Just)) , ( "tmpdir" , HasArg (upd . setTmpDir)) , ( "stubdir" , HasArg (upd . setStubDir . Just)) + , ( "ddump-file-prefix", HasArg (upd . setDumpPrefixForce . Just)) ------- Keeping temporary files ------------------------------------- -- These can be singular (think ghc -c) or plural (think ghc --make) @@ -992,7 +1030,9 @@ dynamic_flags = [ , ( "dstg-stats", NoArg (setDynFlag Opt_StgStats)) , ( "ddump-cmm", setDumpFlag Opt_D_dump_cmm) + , ( "ddump-cmmz", setDumpFlag Opt_D_dump_cmmz) , ( "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) @@ -1001,6 +1041,7 @@ dynamic_flags = [ , ( "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) @@ -1038,7 +1079,7 @@ dynamic_flags = [ , ( "ddump-vect", setDumpFlag Opt_D_dump_vect) , ( "ddump-hpc", setDumpFlag Opt_D_dump_hpc) , ( "ddump-mod-cycles", setDumpFlag Opt_D_dump_mod_cycles) - + , ( "ddump-to-file", setDumpFlag Opt_DumpToFile) , ( "ddump-hi-diffs", NoArg (setDynFlag Opt_D_dump_hi_diffs)) , ( "dcore-lint", NoArg (setDynFlag Opt_DoCoreLinting)) , ( "dstg-lint", NoArg (setDynFlag Opt_DoStgLinting)) @@ -1053,12 +1094,13 @@ dynamic_flags = [ , ( "monly-3-regs", NoArg (upd (\s -> s{stolen_x86_regs = 3}) )) , ( "monly-4-regs", NoArg (upd (\s -> s{stolen_x86_regs = 4}) )) - ------ Warning opts ------------------------------------------------- - , ( "W" , NoArg (mapM_ setDynFlag minusWOpts) ) - , ( "Werror" , NoArg (setDynFlag Opt_WarnIsError) ) - , ( "Wall" , NoArg (mapM_ setDynFlag minusWallOpts) ) - , ( "Wnot" , NoArg (mapM_ unSetDynFlag minusWallOpts) ) /* DEPREC */ - , ( "w" , NoArg (mapM_ unSetDynFlag minuswRemovesOpts) ) + ------ 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) ) ------ Optimisation flags ------------------------------------------ , ( "O" , NoArg (upd (setOptLevel 1))) @@ -1147,6 +1189,8 @@ fFlags = [ ( "hpc-no-auto", Opt_Hpc_No_Auto ), ( "rewrite-rules", Opt_RewriteRules ), ( "break-on-exception", Opt_BreakOnException ), + ( "run-cps", Opt_RunCPSZ ), + ( "convert-to-zipper-and-back", Opt_ConvertToZipCfgAndBack), ( "vectorise", Opt_Vectorise ), ( "regs-graph", Opt_RegsGraph), -- Deprecated in favour of -XTemplateHaskell: @@ -1180,7 +1224,9 @@ fFlags = [ -- Deprecated in favour of -XUndecidableInstances: ( "allow-undecidable-instances", Opt_UndecidableInstances ), -- Deprecated in favour of -XIncoherentInstances: - ( "allow-incoherent-instances", Opt_IncoherentInstances ) + ( "allow-incoherent-instances", Opt_IncoherentInstances ), + ( "gen-manifest", Opt_GenManifest ), + ( "embed-manifest", Opt_EmbedManifest ) ] supportedLanguages :: [String] @@ -1652,10 +1698,13 @@ compilerInfo = [("Project name", cProjectName), ("Booter version", cBooterVersion), ("Stage", cStage), ("Interface file version", cHscIfaceFileVersion), + ("Have interpreter", cGhcWithInterpreter), ("Object splitting", cSplitObjs), ("Have native code generator", cGhcWithNativeCodeGen), + ("Support SMP", cGhcWithSMP), ("Unregisterised", cGhcUnregisterised), ("Tables next to code", cGhcEnableTablesNextToCode), ("Win32 DLLs", cEnableWin32DLLs), + ("RTS ways", cGhcRTSWays), ("Leading underscore", cLeadingUnderscore)]