on b3ee2df help sign in
Idris-dev/src/IRTS/CodegenCommon.hs
46 lines 1.3 kB history raw
1{-# LANGUAGE DeriveGeneric #-}
2{-|
3Module : IRTS.CodegenCommon
4Description : Common data structures required for all code generators.
6License : BSD3
7Maintainer : The Idris Community.
8-}
9module IRTS.CodegenCommon where
11import Idris.Core.Evaluate
12import Idris.Core.TT
13import IRTS.Defunctionalise
14import IRTS.Simplified
16import GHC.Generics (Generic)
18data DbgLevel = NONE | DEBUG | TRACE deriving Eq
19data OutputType = Raw | Object | Executable deriving (Eq, Show, Generic)
21-- | Everything which might be needed in a code generator.
22--
23-- A CG can choose which level of Decls to generate code from
24-- (simplified, defunctionalised or merely lambda lifted) and has
25-- access to the list of object files, libraries, etc.
27data CodegenInfo = CodegenInfo {
28 outputFile :: String
29 , outputType :: OutputType
30 , targetTriple :: String
31 , targetCPU :: String
32 , includes :: [FilePath]
33 , importDirs :: [FilePath]
34 , compileObjs :: [String]
35 , compileLibs :: [String]
36 , compilerFlags :: [String]
37 , debugLevel :: DbgLevel
38 , simpleDecls :: [(Name, SDecl)]
39 , defunDecls :: [(Name, DDecl)]
40 , liftDecls :: [(Name, LDecl)]
41 , interfaces :: Bool
42 , exportDecls :: [ExportIFace]
43 , ttDecls :: [(Name, TTDecl)]
44 }
46type CodeGenerator = CodegenInfo -> IO ()