X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fmain%2FDriverFlags.hs;h=b696abe9eb20aab511f9d1e635111b866b35a32a;hb=31285afea6a7b553380fd0a01e0a8ce0d7e50878;hp=4943cd47beab1deffd3718ab785e8d083e0a87bf;hpb=aad02f031eaec37f876cee4c2e94c002018d03d8;p=ghc-hetmet.git diff --git a/ghc/compiler/main/DriverFlags.hs b/ghc/compiler/main/DriverFlags.hs index 4943cd4..b696abe 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.62 2001/07/24 04:46:37 ken Exp $ +-- $Id: DriverFlags.hs,v 1.72 2001/09/25 18:08:47 ken Exp $ -- -- Driver flags -- @@ -76,8 +76,8 @@ processArgs _spec [] spare = return (reverse spare) processArgs spec args@(('-':arg):args') spare = do case findArg spec arg of - Just (rest,action) -> do args' <- processOneArg action rest args - processArgs spec args' spare + Just (rest,action) -> do args' <- processOneArg action rest args + processArgs spec args' spare Nothing -> processArgs spec args' (('-':arg):spare) processArgs spec (arg:args) spare = @@ -167,6 +167,10 @@ static_flags = ------- verbosity ---------------------------------------------------- , ( "n" , NoArg setDryRun ) + ------- GHCi ------------------------------------------------------- + , ( "ignore-dot-ghci", NoArg (writeIORef v_Read_DotGHCi False) ) + , ( "read-dot-ghci" , NoArg (writeIORef v_Read_DotGHCi True) ) + ------- recompilation checker -------------------------------------- , ( "recomp" , NoArg (writeIORef v_Recomp True) ) , ( "no-recomp" , NoArg (writeIORef v_Recomp False) ) @@ -239,6 +243,7 @@ static_flags = ------- Packages ---------------------------------------------------- , ( "package-name" , HasArg (\s -> add v_Opt_C ("-inpackage="++s)) ) + , ( "package-conf" , HasArg (readPackageConf) ) , ( "package" , HasArg (addPackage) ) , ( "syslib" , HasArg (addPackage) ) -- for compatibility w/ old vsns @@ -267,6 +272,9 @@ static_flags = , ( "fmax-simplifier-iterations", Prefix (writeIORef v_MaxSimplifierIterations . read) ) + , ( "frule-check", + SepArg (\s -> writeIORef v_RuleCheck (Just s)) ) + , ( "fusagesp" , NoArg (do writeIORef v_UsageSPInf True add v_Opt_C "-fusagesp-on") ) @@ -300,6 +308,10 @@ dynamic_flags = [ , ( "optc", HasArg (addOpt_c) ) , ( "optm", HasArg (addOpt_m) ) , ( "opta", HasArg (addOpt_a) ) +#ifdef ILX + , ( "optI", HasArg (addOpt_I) ) + , ( "opti", HasArg (addOpt_i) ) +#endif ------ HsCpp opts --------------------------------------------------- -- With a C compiler whose system() doesn't use a UNIX shell (i.e. @@ -378,6 +390,7 @@ dynamic_flags = [ , ( "fvia-c", NoArg (setLang HscC) ) , ( "fvia-C", NoArg (setLang HscC) ) , ( "filx", NoArg (setLang HscILX) ) + , ( "fno-code", NoArg (setLang HscNothing) ) -- "active negatives" , ( "fno-implicit-prelude", NoArg (setDynFlag Opt_NoImplicitPrelude) ) @@ -472,7 +485,10 @@ buildStaticHscOpts = do machdepCCOpts | prefixMatch "alpha" cTARGETPLATFORM - = return ( ["-static", "-Xlinker -noprefix_recognition"], [] ) + = return ( ["-static", "-w"], ["-mieee"] ) + -- For now, to suppress the gcc warning "call-clobbered + -- register used for global register variable", we simply + -- disable all warnings altogether using the -w flag. Oh well. | prefixMatch "hppa" cTARGETPLATFORM -- ___HPUX_SOURCE, not _HPUX_SOURCE, is #defined if -ansi! @@ -505,21 +521,31 @@ machdepCCOpts ) | prefixMatch "mips" cTARGETPLATFORM - = return ( ["static"], [] ) + = return ( ["-static"], [] ) + + | prefixMatch "sparc" cTARGETPLATFORM + = return ( [], ["-w"] ) + -- For now, to suppress the gcc warning "call-clobbered + -- register used for global register variable", we simply + -- disable all warnings altogether using the -w flag. Oh well. | prefixMatch "powerpc" cTARGETPLATFORM || prefixMatch "rs6000" cTARGETPLATFORM - = return ( ["static"], ["-finhibit-size-directive"] ) + = return ( ["-static"], ["-finhibit-size-directive"] ) | otherwise = return ( [], [] ) -addOpt_L a = updDynFlags (\s -> s{opt_L = a : opt_L s}) -addOpt_P a = updDynFlags (\s -> s{opt_P = a : opt_P s}) -addOpt_c a = updDynFlags (\s -> s{opt_c = a : opt_c s}) -addOpt_a a = updDynFlags (\s -> s{opt_a = a : opt_a s}) -addOpt_m a = updDynFlags (\s -> s{opt_m = a : opt_m s}) +addOpt_L a = updDynFlags (\s -> s{opt_L = a : opt_L s}) +addOpt_P a = updDynFlags (\s -> s{opt_P = a : opt_P s}) +addOpt_c a = updDynFlags (\s -> s{opt_c = a : opt_c s}) +addOpt_a a = updDynFlags (\s -> s{opt_a = a : opt_a s}) +addOpt_m a = updDynFlags (\s -> s{opt_m = a : opt_m s}) +#ifdef ILX +addOpt_I a = updDynFlags (\s -> s{opt_I = a : opt_I s}) +addOpt_i a = updDynFlags (\s -> s{opt_i = a : opt_i s}) +#endif addCmdlineHCInclude a = updDynFlags (\s -> s{cmdlineHcIncludes = a : cmdlineHcIncludes s}) @@ -528,8 +554,7 @@ getOpts :: (DynFlags -> [a]) -> IO [a] 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 +-- (-fvia-C and -fasm). We can also set the new lang to ILX, via -filx. setLang l = updDynFlags (\ dfs -> case hscLang dfs of HscC -> dfs{ hscLang = l } HscAsm -> dfs{ hscLang = l }