on master help sign in
Merge branch 'master' of github.com:idris-lang/Idris-dev
commit02fdc662600feb5bcd33bd7ddeeacf4c916c04d3 authorEdwin Brady <ecb10@st-andrews.ac.uk> dateFri 22 Aug 2014, 21:28 (12 years ago) parentd2f95b0dd71249
4 files changed+109−2
codegen/idris-javascript/Main.hs+42 codegen/idris-node/Main.hs+42 idris.cabal+25 src/IRTS/Compiler.hs−2
codegen/idris-javascript/Main.hsnew file+42
@@ -0,0 +1,42 @@
1+module Main where
2+
3+import Idris.Core.TT
4+import Idris.AbsSyntax
5+import Idris.ElabDecls
6+import Idris.REPL
7+
8+import IRTS.Compiler
9+import IRTS.CodegenJavaScript
10+
11+import System.Environment
12+import System.Exit
13+
14+import Paths_idris
15+
16+data Opts = Opts { inputs :: [FilePath]
17+ , output :: FilePath
18+ }
19+
20+showUsage = do putStrLn "Usage: idris-javascript <ibc-files> [-o <output-file>]"
21+ exitWith ExitSuccess
22+
23+getOpts :: IO Opts
24+getOpts = do xs <- getArgs
25+ return $ process (Opts [] "main.js") xs
26+ where
27+ process opts ("-o":o:xs) = process (opts { output = o }) xs
28+ process opts (x:xs) = process (opts { inputs = x:inputs opts }) xs
29+ process opts [] = opts
30+
31+jsMain :: Opts -> Idris ()
32+jsMain opts = do elabPrims
33+ loadInputs (inputs opts) Nothing
34+ mainProg <- elabMain
35+ ir <- compile (Via "javascript") (output opts) mainProg
36+ runIO $ codegenJavaScript ir
37+
38+main :: IO ()
39+main = do opts <- getOpts
40+ if (null (inputs opts))
41+ then showUsage
42+ else runMain (jsMain opts)
codegen/idris-node/Main.hsnew file+42
@@ -0,0 +1,42 @@
1+module Main where
2+
3+import Idris.Core.TT
4+import Idris.AbsSyntax
5+import Idris.ElabDecls
6+import Idris.REPL
7+
8+import IRTS.Compiler
9+import IRTS.CodegenJavaScript
10+
11+import System.Environment
12+import System.Exit
13+
14+import Paths_idris
15+
16+data Opts = Opts { inputs :: [FilePath]
17+ , output :: FilePath
18+ }
19+
20+showUsage = do putStrLn "Usage: idris-node <ibc-files> [-o <output-file>]"
21+ exitWith ExitSuccess
22+
23+getOpts :: IO Opts
24+getOpts = do xs <- getArgs
25+ return $ process (Opts [] "main.js") xs
26+ where
27+ process opts ("-o":o:xs) = process (opts { output = o }) xs
28+ process opts (x:xs) = process (opts { inputs = x:inputs opts }) xs
29+ process opts [] = opts
30+
31+jsMain :: Opts -> Idris ()
32+jsMain opts = do elabPrims
33+ loadInputs (inputs opts) Nothing
34+ mainProg <- elabMain
35+ ir <- compile (Via "node") (output opts) mainProg
36+ runIO $ codegenNode ir
37+
38+main :: IO ()
39+main = do opts <- getOpts
40+ if (null (inputs opts))
41+ then showUsage
42+ else runMain (jsMain opts)
idris.cabal+25
@@ -772,3 +772,28 @@ Executable idris-c
772772 ghc-prof-options: -auto-all -caf-all
773773 ghc-options: -threaded -rtsopts -funbox-strict-fields
774774
775+Executable idris-javascript
776+ Main-is: Main.hs
777+ hs-source-dirs: codegen/idris-javascript
778+
779+ Build-depends: idris
780+ , base
781+ , filepath
782+ , haskeline >= 0.7
783+ , transformers
784+
785+ ghc-prof-options: -auto-all -caf-all
786+ ghc-options: -threaded -rtsopts -funbox-strict-fields
787+
788+Executable idris-node
789+ Main-is: Main.hs
790+ hs-source-dirs: codegen/idris-node
791+
792+ Build-depends: idris
793+ , base
794+ , filepath
795+ , haskeline >= 0.7
796+ , transformers
797+
798+ ghc-prof-options: -auto-all -caf-all
799+ ghc-options: -threaded -rtsopts -funbox-strict-fields
src/IRTS/Compiler.hs−2
@@ -128,8 +128,6 @@ generate codegen mainmod ir
128128 -- Built-in code generators (FIXME: lift these out!)
129129 Via "c" -> codegenC ir
130130 Via "java" -> codegenJava ir
131− Via "javascript" -> codegenJavaScript ir
132− Via "node" -> codegenNode ir
133131 Via "llvm" -> codegenLLVM ir
134132 -- Any external code generator
135133 Via cg -> do let cmd = "idris-" ++ cg ++ " " ++ mainmod ++