[project @ 2001-05-24 15:10:19 by dsyme]
[ghc-hetmet.git] / ghc / compiler / main / DriverFlags.hs
index b128364..9e7c97b 100644 (file)
@@ -1,7 +1,7 @@
 {-# OPTIONS -#include "hschooks.h" #-}
 
 -----------------------------------------------------------------------------
--- $Id: DriverFlags.hs,v 1.50 2001/03/27 16:55:03 simonmar Exp $
+-- $Id: DriverFlags.hs,v 1.54 2001/05/24 15:10:19 dsyme Exp $
 --
 -- Driver flags
 --
@@ -206,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) )
@@ -342,6 +342,7 @@ setLang l = do
    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 =
@@ -352,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<n>)")
+  | otherwise     = throwDyn (UsageError "can't parse verbosity flag (-v<n>)")
 
 getVerbFlag = do
    verb <- dynFlag verbosity
@@ -436,9 +437,7 @@ 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) )
@@ -483,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 == '.'
@@ -586,7 +585,7 @@ machdepCCOpts
        = do n_regs <- dynFlag stolen_x86_regs
             sta    <- readIORef v_Static
             return ( [ if sta then "-DDONT_WANT_WIN32_DLL_SUPPORT" else "",
-                        if suffixMatch "mingw32" cTARGETPLATFORM then "-mno-cygwin" else "" ],
+                        if suffixMatch "mingw32" cTARGETPLATFORM then "-mno-cygwin -mwin32" else "" ],
                      [ "-fno-defer-pop", "-fomit-frame-pointer",
                        "-DSTOLEN_X86_REGS="++show n_regs ]
                    )