X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fmain%2FDriverFlags.hs;h=e49a7d9def91293316dbaa8172f130c5a418e25e;hb=4cef3202f8067fc3e9860e7a2b72c10b313b7366;hp=10268aa9ec03150f90b9657d90a9d26a35509a1b;hpb=1703fe03e209e9d1f11c19a2b05fd4f0fd3d28f0;p=ghc-hetmet.git diff --git a/ghc/compiler/main/DriverFlags.hs b/ghc/compiler/main/DriverFlags.hs index 10268aa..e49a7d9 100644 --- a/ghc/compiler/main/DriverFlags.hs +++ b/ghc/compiler/main/DriverFlags.hs @@ -1,7 +1,7 @@ {-# OPTIONS -#include "hschooks.h" #-} ----------------------------------------------------------------------------- --- $Id: DriverFlags.hs,v 1.45 2001/02/20 15:44:26 simonpj Exp $ +-- $Id: DriverFlags.hs,v 1.55 2001/05/28 03:31:19 sof Exp $ -- -- Driver flags -- @@ -20,10 +20,9 @@ module DriverFlags ( #include "HsVersions.h" -import PackageMaintenance import DriverState import DriverUtil -import TmpFiles ( v_TmpDir ) +import TmpFiles ( v_TmpDir, kludgedSystem ) import CmdLineOpts import Config import Util @@ -207,11 +206,11 @@ static_flags = , ( "odir" , HasArg (writeIORef v_Output_dir . Just) ) , ( "o" , SepArg (writeIORef v_Output_file . Just) ) , ( "osuf" , HasArg (writeIORef v_Object_suf . Just) ) + , ( "hcsuf" , HasArg (writeIORef v_HC_suf . Just) ) , ( "hisuf" , HasArg (writeIORef v_Hi_suf) ) + , ( "buildtag" , HasArg (writeIORef v_Build_tag) ) , ( "tmpdir" , HasArg (writeIORef v_TmpDir . (++ "/")) ) - , ( "ohi" , HasArg (\s -> case s of - "-" -> writeIORef v_Hi_on_stdout True - _ -> writeIORef v_Output_hi (Just s)) ) + , ( "ohi" , HasArg (writeIORef v_Output_hi . Just) ) -- -odump? , ( "keep-hc-file" , AnySuffix (\_ -> writeIORef v_Keep_hc_files True) ) @@ -241,10 +240,6 @@ static_flags = , ( "package" , HasArg (addPackage) ) , ( "syslib" , HasArg (addPackage) ) -- for compatibility w/ old vsns - , ( "-list-packages" , NoArg (listPackages) ) - , ( "-add-package" , NoArg (newPackage) ) - , ( "-delete-package" , SepArg (deletePackage) ) - ------- Specific phases -------------------------------------------- , ( "pgmL" , HasArg (writeIORef v_Pgm_L) ) , ( "pgmP" , HasArg (writeIORef v_Pgm_P) ) @@ -323,8 +318,8 @@ getDynFlags = readIORef v_DynFlags dynFlag :: (DynFlags -> a) -> IO a dynFlag f = do dflags <- readIORef v_DynFlags; return (f dflags) -setDynFlag f = updDynFlags (\dfs -> dfs{ flags = f : flags dfs }) -unSetDynFlag f = updDynFlags (\dfs -> dfs{ flags = filter (/= f) (flags dfs) }) +setDynFlag f = updDynFlags (\dfs -> dopt_set dfs f) +unSetDynFlag f = updDynFlags (\dfs -> dopt_unset dfs f) addOpt_L a = updDynFlags (\s -> s{opt_L = a : opt_L s}) addOpt_P a = updDynFlags (\s -> s{opt_P = a : opt_P s}) @@ -341,11 +336,13 @@ getOpts opts = dynFlag opts >>= return . reverse -- we can only change HscC to HscAsm and vice-versa with dynamic flags -- (-fvia-C and -fasm). +-- NB: we can also set the new lang to ILX, via -filx. I hope this is right setLang l = do dfs <- readIORef v_DynFlags case hscLang dfs of HscC -> writeIORef v_DynFlags dfs{ hscLang = l } HscAsm -> writeIORef v_DynFlags dfs{ hscLang = l } + HscILX -> writeIORef v_DynFlags dfs{ hscLang = l } _ -> return () setVerbosityAtLeast n = @@ -356,7 +353,7 @@ setVerbosityAtLeast n = setVerbosity "" = updDynFlags (\dfs -> dfs{ verbosity = 3 }) setVerbosity n | all isDigit n = updDynFlags (\dfs -> dfs{ verbosity = read n }) - | otherwise = throwDyn (OtherError "can't parse verbosity flag (-v)") + | otherwise = throwDyn (UsageError "can't parse verbosity flag (-v)") getVerbFlag = do verb <- dynFlag verbosity @@ -440,6 +437,7 @@ dynamic_flags = [ , ( "fasm", AnySuffix (\_ -> setLang HscAsm) ) , ( "fvia-c", NoArg (setLang HscC) ) , ( "fvia-C", NoArg (setLang HscC) ) + , ( "filx", NoArg (setLang HscILX) ) -- "active negatives" , ( "fno-implicit-prelude", NoArg (setDynFlag Opt_NoImplicitPrelude) ) @@ -469,7 +467,7 @@ fFlags = [ ( "glasgow-exts", Opt_GlasgowExts ), ( "allow-overlapping-instances", Opt_AllowOverlappingInstances ), ( "allow-undecidable-instances", Opt_AllowUndecidableInstances ), - ( "fgenerics", Opt_Generics ) + ( "generics", Opt_Generics ) ] isFFlag f = f `elem` (map fst fFlags) @@ -484,7 +482,7 @@ decodeSize str | c == "K" || c == "k" = truncate (n * 1000) | c == "M" || c == "m" = truncate (n * 1000 * 1000) | c == "G" || c == "g" = truncate (n * 1000 * 1000 * 1000) - | otherwise = throwDyn (OtherError ("can't decode size: " ++ str)) + | otherwise = throwDyn (CmdLineError ("can't decode size: " ++ str)) where (m, c) = span pred str n = read m :: Double pred c = isDigit c || c == '.'