X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fmain%2FDriverFlags.hs;h=82c288bcaf8dd6f9132dc39ad47d5189f5f36487;hb=281bcf70ef27e49f4b0c22ce56f93fa924d6ccbd;hp=9f9749d5232cd1c241da9ffb122be77144c25480;hpb=759739c69f9cd540f03c3c69aa1990d5d58a5dd6;p=ghc-hetmet.git diff --git a/ghc/compiler/main/DriverFlags.hs b/ghc/compiler/main/DriverFlags.hs index 9f9749d..82c288b 100644 --- a/ghc/compiler/main/DriverFlags.hs +++ b/ghc/compiler/main/DriverFlags.hs @@ -177,11 +177,10 @@ static_flags = ------- primary modes ------------------------------------------------ , ( "M" , PassFlag (setMode DoMkDependHS)) - , ( "E" , PassFlag (setMode (StopBefore Hsc))) + , ( "E" , PassFlag (setMode (StopBefore anyHsc))) , ( "C" , PassFlag (\f -> do setMode (StopBefore HCc) f - setLang HscC)) + setTarget HscC)) , ( "S" , PassFlag (setMode (StopBefore As))) - , ( "c" , PassFlag (setMode (StopBefore Ln))) , ( "-make" , PassFlag (setMode DoMake)) , ( "-interactive" , PassFlag (setMode DoInteractive)) , ( "-mk-dll" , PassFlag (setMode DoMkDLL)) @@ -189,7 +188,7 @@ static_flags = -- -fno-code says to stop after Hsc but don't generate any code. , ( "fno-code" , PassFlag (\f -> do setMode (StopBefore HCc) f - setLang HscNothing + setTarget HscNothing writeIORef v_Recomp False)) ------- GHCi ------------------------------------------------------- @@ -241,8 +240,8 @@ static_flags = , ( "odir" , HasArg (writeIORef v_Output_dir . Just) ) , ( "o" , SepArg (writeIORef v_Output_file . Just) ) , ( "osuf" , HasArg (writeIORef v_Object_suf) ) - , ( "hcsuf" , HasArg (writeIORef v_HC_suf . Just) ) - , ( "hisuf" , HasArg (writeIORef v_Hi_suf) ) + , ( "hcsuf" , HasArg (writeIORef v_HC_suf ) ) + , ( "hisuf" , HasArg (writeIORef v_Hi_suf ) ) , ( "hidir" , HasArg (writeIORef v_Hi_dir . Just) ) , ( "buildtag" , HasArg (writeIORef v_Build_tag) ) , ( "tmpdir" , HasArg setTmpDir) @@ -298,7 +297,8 @@ static_flags = , ( "optdll" , HasArg (add v_Opt_dll) ) ----- Linker -------------------------------------------------------- - , ( "no-link" , NoArg (writeIORef v_NoLink True) ) + , ( "c" , NoArg (writeIORef v_NoLink True) ) + , ( "no-link" , NoArg (writeIORef v_NoLink True) ) -- Deprecated , ( "static" , NoArg (writeIORef v_Static True) ) , ( "dynamic" , NoArg (writeIORef v_Static False) ) , ( "rdynamic" , NoArg (return ()) ) -- ignored for compat w/ gcc @@ -429,10 +429,10 @@ dynamic_flags = [ ------ Compiler flags ----------------------------------------------- - , ( "fasm", AnySuffix (\_ -> setLang HscAsm) ) - , ( "fvia-c", NoArg (setLang HscC) ) - , ( "fvia-C", NoArg (setLang HscC) ) - , ( "filx", NoArg (setLang HscILX) ) + , ( "fasm", AnySuffix (\_ -> setTarget HscAsm) ) + , ( "fvia-c", NoArg (setTarget HscC) ) + , ( "fvia-C", NoArg (setTarget HscC) ) + , ( "filx", NoArg (setTarget HscILX) ) , ( "fglasgow-exts", NoArg (mapM_ setDynFlag glasgowExtsFlags) ) , ( "fno-glasgow-exts", NoArg (mapM_ unSetDynFlag glasgowExtsFlags) ) @@ -460,12 +460,14 @@ fFlags = [ ( "warn-unused-imports", Opt_WarnUnusedImports ), ( "warn-unused-matches", Opt_WarnUnusedMatches ), ( "warn-deprecations", Opt_WarnDeprecations ), + ( "warn-orphans", Opt_WarnOrphans ), ( "fi", Opt_FFI ), -- support `-ffi'... ( "ffi", Opt_FFI ), -- ...and also `-fffi' ( "arrows", Opt_Arrows ), -- arrow syntax ( "parr", Opt_PArr ), ( "th", Opt_TH ), ( "implicit-prelude", Opt_ImplicitPrelude ), + ( "scoped-type-variables", Opt_ScopedTypeVariables ), ( "monomorphism-restriction", Opt_MonomorphismRestriction ), ( "implicit-params", Opt_ImplicitParams ), ( "allow-overlapping-instances", Opt_AllowOverlappingInstances ), @@ -484,7 +486,7 @@ fFlags = [ ( "unbox-strict-fields", Opt_UnboxStrictFields ) ] -glasgowExtsFlags = [ Opt_GlasgowExts, Opt_FFI, Opt_TH, Opt_ImplicitParams ] +glasgowExtsFlags = [ Opt_GlasgowExts, Opt_FFI, Opt_TH, Opt_ImplicitParams, Opt_ScopedTypeVariables ] isFFlag f = f `elem` (map fst fFlags) getFFlag f = fromJust (lookup f fFlags) @@ -541,20 +543,22 @@ ignorePackage p = -- -i on its own deletes the import paths addImportPath "" = updDynFlags (\s -> s{importPaths = []}) -addImportPath p = updDynFlags (\s -> s{importPaths = p : importPaths s}) +addImportPath p = do + paths <- splitPathList p + updDynFlags (\s -> s{importPaths = importPaths s ++ paths}) -- we can only switch between HscC, HscAsmm, and HscILX with dynamic flags -- (-fvia-C, -fasm, -filx respectively). -setLang l = updDynFlags (\dfs -> case hscLang dfs of - HscC -> dfs{ hscLang = l } - HscAsm -> dfs{ hscLang = l } - HscILX -> dfs{ hscLang = l } +setTarget l = updDynFlags (\dfs -> case hscTarget dfs of + HscC -> dfs{ hscTarget = l } + HscAsm -> dfs{ hscTarget = l } + HscILX -> dfs{ hscTarget = l } _ -> dfs) setOptLevel :: Int -> IO () setOptLevel n = do dflags <- readIORef v_DynFlags - if hscLang dflags == HscInterpreted && n > 0 + if hscTarget dflags == HscInterpreted && n > 0 then putStr "warning: -O conflicts with --interactive; -O ignored.\n" else writeIORef v_DynFlags (updOptLevel n dflags) @@ -732,8 +736,8 @@ showGhcUsage = do (ghc_usage_path,ghci_usage_path) <- getUsageMsgPaths mode <- readIORef v_GhcMode let usage_path - | mode == DoInteractive = ghci_usage_path - | otherwise = ghc_usage_path + | DoInteractive <- mode = ghci_usage_path + | otherwise = ghc_usage_path usage <- readFile usage_path dump usage exitWith ExitSuccess