[project @ 2004-03-10 00:18:21 by wolfgang]
[ghc-hetmet.git] / ghc / compiler / main / DriverFlags.hs
index 28bb285..a2ef2a1 100644 (file)
@@ -1,9 +1,8 @@
 -----------------------------------------------------------------------------
--- $Id: DriverFlags.hs,v 1.126 2003/09/24 13:04:50 simonmar Exp $
 --
 -- Driver flags
 --
--- (c) Simon Marlow 2000
+-- (c) The University of Glasgow 2000-2003
 --
 -----------------------------------------------------------------------------
 
@@ -94,7 +93,7 @@ processOneArg action rest (dash_arg@('-':arg):args) =
                if rest /= "" 
                        then fio rest >> return args
                        else case args of
-                               [] -> unknownFlagErr dash_arg
+                               [] -> missingArgErr dash_arg
                                (arg1:args1) -> fio arg1 >> return args1
 
        SepArg fio -> 
@@ -202,8 +201,11 @@ static_flags =
   ,  ( "smp"           , NoArg (addNoDups v_Ways       WaySMP) )
   ,  ( "debug"         , NoArg (addNoDups v_Ways       WayDebug) )
   ,  ( "ndp"           , NoArg (addNoDups v_Ways       WayNDP) )
+  ,  ( "threaded"      , NoArg (addNoDups v_Ways       WayThreaded) )
        -- ToDo: user ways
 
+       ------ RTS ways -----------------------------------------------------
+
        ------ Debugging ----------------------------------------------------
   ,  ( "dppr-noprags",     PassFlag (add v_Opt_C) )
   ,  ( "dppr-debug",       PassFlag (add v_Opt_C) )
@@ -280,13 +282,13 @@ static_flags =
         ------- Specific phases  --------------------------------------------
   ,  ( "pgmL"           , HasArg setPgmL )
   ,  ( "pgmP"           , HasArg setPgmP )
-  ,  ( "pgmP"           , HasArg setPgmP )
   ,  ( "pgmF"           , HasArg setPgmF )
   ,  ( "pgmc"           , HasArg setPgmc )
   ,  ( "pgmm"           , HasArg setPgmm )
   ,  ( "pgms"           , HasArg setPgms )
   ,  ( "pgma"           , HasArg setPgma )
   ,  ( "pgml"           , HasArg setPgml )
+  ,  ( "pgmdll"                , HasArg setPgmDLL )
 #ifdef ILX
   ,  ( "pgmI"           , HasArg setPgmI )
   ,  ( "pgmi"           , HasArg setPgmi )
@@ -371,6 +373,7 @@ dynamic_flags = [
   ,  ( "ddump-worker-wrapper",   NoArg (setDynFlag Opt_D_dump_worker_wrapper) )
   ,  ( "dshow-passes",           NoArg (setVerbosity "2") )
   ,  ( "ddump-rn-trace",         NoArg (setDynFlag Opt_D_dump_rn_trace) )
+  ,  ( "ddump-if-trace",         NoArg (setDynFlag Opt_D_dump_if_trace) )
   ,  ( "ddump-tc-trace",         NoArg (setDynFlag Opt_D_dump_tc_trace) )
   ,  ( "ddump-splices",          NoArg (setDynFlag Opt_D_dump_splices) )
   ,  ( "ddump-rn-stats",         NoArg (setDynFlag Opt_D_dump_rn_stats) )
@@ -461,6 +464,7 @@ fFlags = [
   ( "allow-incoherent-instances",      Opt_AllowIncoherentInstances ),
   ( "generics",                        Opt_Generics ),
   ( "strictness",                      Opt_Strictness ),
+  ( "full-laziness",                   Opt_FullLaziness ),
   ( "cse",                             Opt_CSE ),
   ( "ignore-interface-pragmas",                Opt_IgnoreInterfacePragmas ),
   ( "omit-interface-pragmas",          Opt_OmitInterfacePragmas ),
@@ -623,9 +627,6 @@ machdepCCOpts
       --     This is completely optional.
        = return ( ["-no-cpp-precomp","-mdynamic-no-pic"], [] )
 
-   | prefixMatch "powerpc" cTARGETPLATFORM || prefixMatch "rs6000" cTARGETPLATFORM
-       = return ( ["-static"], ["-finhibit-size-directive"] )
-
    | otherwise
        = return ( [], [] )
 
@@ -650,7 +651,24 @@ setVerbosity n
 
 addCmdlineHCInclude a = updDynFlags (\s -> s{cmdlineHcIncludes =  a : cmdlineHcIncludes s})
 
+-- -----------------------------------------------------------------------------
+-- Version and usage messages
+
 showVersion :: IO ()
 showVersion = do
   putStrLn (cProjectName ++ ", version " ++ cProjectVersion)
   exitWith ExitSuccess
+
+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
+  usage <- readFile usage_path
+  dump usage
+  exitWith ExitSuccess
+  where
+     dump ""         = return ()
+     dump ('$':'$':s) = hPutStr stderr progName >> dump s
+     dump (c:s)              = hPutChar stderr c >> dump s