packages feed

ivory-examples-0.1.0.3: examples/TestExamples.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 qualified ConcreteFile
import qualified Coroutine
import qualified Loop

import Control.Monad (when)
import Ivory.Compile.C.CmdlineFrontend
import Ivory.Stdlib.String
import Ivory.Language (Module())
import Ivory.Stdlib (stdlibModules)

main :: IO ()
main = do
  args <- getArgs
  when (null args)
       (error "Binary takes a path to srcs and headers as an argument")
  let path = head args
  let opts = initialOpts { outDir = Just path, srcLocs = True }
  compileExample opts modules

compileExample :: Opts -> [Module] -> IO ()
compileExample opts ms = runCompiler ms stdlibStringArtifacts 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
          , Overflow.cmodule
          , Coroutine.cmodule
          , ConcreteFile.concreteIvory
          , ConcreteFile.examplesfile
          , Loop.cmodule
          , stdlibStringModule
          ] ++ stdlibModules