diff options
Diffstat (limited to 'src/myocamlbuild.ml')
| -rw-r--r-- | src/myocamlbuild.ml | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/myocamlbuild.ml b/src/myocamlbuild.ml new file mode 100644 index 00000000..3974e939 --- /dev/null +++ b/src/myocamlbuild.ml @@ -0,0 +1,35 @@ +open Ocamlbuild_plugin ;; +open Command ;; +open Pathname ;; +open Outcome ;; + +(* paths relative to _build *) +let lem_dir = "../../../lem" ;; +let lem_libdir = lem_dir / "ocaml-lib/_build" ;; +let lem_lib = lem_libdir / "extract" ;; +let lem = lem_dir / "lem" ;; +let interp_ast = "lem_interp/interp_ast.lem" ;; + +dispatch begin function +| After_rules -> + (* ocaml_lib "lem_interp/interp"; *) + ocaml_lib ~extern:true ~dir:lem_libdir ~tag_name:"use_lem" lem_lib; + + rule "lem -> ml" + ~prod: "%.ml" + ~deps: ["%.lem"; interp_ast] + (fun env builder -> Seq [ + Cmd (S [ P lem; A "-i"; P interp_ast; A "-ocaml"; P (env "%.lem") ]); + mv (basename (env "%.ml")) (dirname (env "%.ml")) + ]); + + rule "sail -> lem" + ~prod: "%.lem" + ~deps: ["%.sail"; "main.native"] + (fun env builder -> Seq [ + Cmd (S [ P "./main.native"; A "-lem_ast"; P (env "%.sail") ]); + mv (basename (env "%.lem")) (dirname (env "%.lem")) + ]); + +| _ -> () +end ;; |
