[project @ 2001-03-27 16:55:03 by simonmar]
[ghc-hetmet.git] / ghc / compiler / main / DriverFlags.hs
index 2a79c91..b128364 100644 (file)
@@ -1,7 +1,7 @@
 {-# OPTIONS -#include "hschooks.h" #-}
 
 -----------------------------------------------------------------------------
--- $Id: DriverFlags.hs,v 1.46 2001/03/05 10:05:58 simonmar Exp $
+-- $Id: DriverFlags.hs,v 1.50 2001/03/27 16:55:03 simonmar 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
@@ -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,6 +336,7 @@ 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
@@ -440,6 +436,9 @@ dynamic_flags = [
   ,  ( "fasm",         AnySuffix (\_ -> setLang HscAsm) )
   ,  ( "fvia-c",       NoArg (setLang HscC) )
   ,  ( "fvia-C",       NoArg (setLang HscC) )
+#ifdef ILX
+  ,  ( "filx",         NoArg (setLang HscILX) )
+#endif
 
        -- "active negatives"
   ,  ( "fno-implicit-prelude",  NoArg (setDynFlag Opt_NoImplicitPrelude) )