packages feed

ivory-examples-0.1.0.0: examples/TestClang.hs

import System.Environment

import qualified PID
import qualified FibLoop
import qualified Factorial
import qualified String
import qualified FunPtr
import qualified Overflow
import qualified Float
import qualified Alloc
import qualified Area
import qualified Cond
import qualified Forever
import qualified PublicPrivate
import qualified Bits
import qualified SizeOf
import qualified AddrOfRegression
import qualified Array

import Ivory.Compile.C.CmdlineFrontend
import Ivory.Language (Module(),moduleName)
import Ivory.Stdlib (stdlibModules)

import qualified Ivory.Stdlib.SearchDir as S

main :: IO ()
main = do
  args <- getArgs
  let path = head args
  let opts = initialOpts { includeDir = path, srcDir = path
                         , rtIncludeDir = Nothing }

  mapM_ (compileExample opts) modules

  putStrLn "Compiling: Overflow"
  Overflow.writeOverflow opts

compileExample :: Opts -> Module -> IO ()
compileExample opts m = do
  putStrLn ("Compiling: " ++ moduleName m)
  runCompilerWith Nothing (Just [S.searchDir]) [m] opts

modules :: [Module]
modules = [ PID.cmodule
          , FibLoop.cmodule
          , Factorial.cmodule
          , String.cmodule
          , FunPtr.cmodule
          , Overflow.cmodule
          , Float.cmodule
          , Alloc.cmodule
          , Area.cmodule
          , Cond.cmodule
          , Forever.cmodule
          , PublicPrivate.cmodule
          , Bits.cmodule
          , SizeOf.cmodule
          , AddrOfRegression.cmodule
          , Array.cmodule
          ] ++ stdlibModules