module IRTS.CodegenCommon where
import Idris.Core.Evaluate
import Idris.Core.TT
import IRTS.Defunctionalise
import IRTS.Simplified
import GHC.Generics (Generic)
data DbgLevel = NONE | DEBUG | TRACE deriving Eq
data OutputType = Raw | Object | Executable deriving (Eq, Show, Generic)
data CodegenInfo = CodegenInfo {
outputFile :: String
, outputType :: OutputType
, targetTriple :: String
, targetCPU :: String
, includes :: [FilePath]
, importDirs :: [FilePath]
, compileObjs :: [String]
, compileLibs :: [String]
, compilerFlags :: [String]
, debugLevel :: DbgLevel
, simpleDecls :: [(Name, SDecl)]
, defunDecls :: [(Name, DDecl)]
, liftDecls :: [(Name, LDecl)]
, interfaces :: Bool
, exportDecls :: [ExportIFace]
, ttDecls :: [(Name, TTDecl)]
}
type CodeGenerator = CodegenInfo -> IO ()