sv2v/src/Job.hs

51 lines
1.4 KiB
Haskell
Raw Normal View History

2019-02-26 21:03:49 +01:00
{-# LANGUAGE DeriveDataTypeable #-}
{- sv2v
- Author: Zachary Snow <zach@zachjs.com>
-
- Command line arguments.
-}
module Job where
2019-02-26 21:03:49 +01:00
import System.Console.CmdArgs
data Exclude
= Always
| Interface
| Logic
| Succinct
deriving (Show, Typeable, Data, Eq)
2019-02-26 21:03:49 +01:00
data Job = Job
{ exclude :: [Exclude]
, files :: [FilePath]
, incdir :: [FilePath]
, define :: [String]
, oneunit :: Bool
, verbose :: Bool
2019-02-26 21:03:49 +01:00
} deriving (Show, Typeable, Data)
defaultJob :: Job
defaultJob = Job
{ exclude = [] &= typ "CONV"
2019-08-08 04:10:03 +02:00
&= help "exclude a particular conversion (always, interface, or logic)"
, files = def &= args &= typ "FILES"
, incdir = def &= typDir &= help "add directory to include search path"
2019-08-08 04:10:03 +02:00
, define = def &= typ "NAME[=VALUE]" &= help ("define a macro for"
++ " preprocessing")
, oneunit = False &= help ("put all files in one compilation unit, so"
++ " macros from earlier files remain defined in later files")
, verbose = False &= help "retain certain conversion artifacts"
2019-02-26 21:03:49 +01:00
}
&= program "sv2v"
2019-04-19 01:33:16 +02:00
&= summary "sv2v v0.0.1, (C) 2019 Zachary Snow, 2011-2015 Tom Hawkins"
2019-02-26 21:03:49 +01:00
&= details [ "sv2v converts SystemVerilog to Verilog."
, "More info: https://github.com/zachjs/sv2v" ]
readJob :: IO Job
readJob = do
job <- cmdArgs defaultJob
return $ if verbose job
then job { exclude = Succinct : exclude job }
else job