idris-0.11.1: src/IRTS/CodegenCommon.hs
module IRTS.CodegenCommon where
import Idris.Core.TT
import IRTS.Simplified
import IRTS.Defunctionalise
data DbgLevel = NONE | DEBUG | TRACE deriving Eq
data OutputType = Raw | Object | Executable deriving (Eq, Show)
-- Everything which might be needed in a code generator - a CG can choose which
-- level of Decls to generate code from (simplified, defunctionalised or merely
-- lambda lifted) and has access to the list of object files, libraries, etc.
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]
}
type CodeGenerator = CodegenInfo -> IO ()