GHC new build system megapatch
[ghc-hetmet.git] / utils / nofib-analyse / CmdLine.hs
index 6e920f8..8b60626 100644 (file)
@@ -4,7 +4,13 @@
 -- (c) Simon Marlow 2005
 -----------------------------------------------------------------------------
 
-module CmdLine where
+module CmdLine
+    (
+    flags, other_args, cmdline_errors,
+    devs, nodevs, tooquick_threshold, reportTitle,
+    CLIFlags(..), usage,
+    )
+    where
 
 import System.Console.GetOpt
 import System.Environment      ( getArgs )
@@ -13,18 +19,26 @@ import System.IO.Unsafe             ( unsafePerformIO )
 -----------------------------------------------------------------------------
 -- Command line arguments
 
+args :: [String]
 args = unsafePerformIO getArgs
+
+flags :: [CLIFlags]
+other_args :: [String]
+cmdline_errors :: [String]
 (flags, other_args, cmdline_errors) = getOpt Permute argInfo args 
 
-default_tooquick_threshold = 0.2 {- secs -} :: Float
+default_tooquick_threshold, tooquick_threshold :: Float
+default_tooquick_threshold = 0.2 {- secs -}
 tooquick_threshold
  = case [ i | OptIgnoreSmallTimes i <- flags ] of
        [] -> default_tooquick_threshold
        (i:_) -> i
 
+devs, nodevs :: Bool
 devs   = OptDeviations   `elem` flags
 nodevs = OptNoDeviations `elem` flags
 
+default_title, reportTitle :: String
 default_title = "NoFib Results"
 reportTitle = case [ t | OptTitle t <- flags ] of
         []    -> default_title
@@ -32,7 +46,7 @@ reportTitle = case [ t | OptTitle t <- flags ] of
 
 data CLIFlags
   = OptASCIIOutput
-  | OptLaTeXOutput
+  | OptLaTeXOutput (Maybe String)
   | OptHTMLOutput
   | OptIgnoreSmallTimes Float
   | OptDeviations
@@ -40,9 +54,17 @@ data CLIFlags
   | OptTitle String
   | OptColumns String
   | OptRows String
+  | OptCSV String
+  | OptNormalise String
   | OptHelp
   deriving Eq
 
+usageHeader :: String
+usageHeader = "usage: nofib-analyse [OPTION...] <logfile1> <logfile2> ..."
+
+usage :: String
+usage = usageInfo usageHeader argInfo
+
 argInfo :: [ OptDescr CLIFlags ]
 argInfo = 
   [ Option ['?'] ["help"]    (NoArg OptHelp)        
@@ -55,12 +77,16 @@ argInfo =
        "Ignore runtimes smaller than <secs>"
   , Option ['d'] ["deviations"] (NoArg OptDeviations)
        "Display deviations (default)"
-  , Option ['l'] ["latex"]    (NoArg OptLaTeXOutput)  
+  , Option ['l'] ["latex"]    (OptArg OptLaTeXOutput "TABLE")
        "Produce LaTeX output"
   , Option [] ["columns"] (ReqArg OptColumns "COLUMNS")
        "Specify columns for summary table (comma separates)"
   , Option [] ["rows"] (ReqArg OptRows "ROWS")
        "Specify rows for summary table (comma separates)"
+  , Option [] ["csv"] (ReqArg OptCSV "TABLE")
+       "Output a single table in CSV format"
+  , Option [] ["normalise"] (ReqArg OptNormalise "percent|ratio|none")
+       "normalise to the baseline"
   , Option ['n'] ["nodeviations"] (NoArg OptNoDeviations)
        "Hide deviations"
   , Option ['t'] ["title"] (ReqArg OptTitle "title")