(include_subdirs unqualified)

(library
  (public_name wasm)
  (modules :standard \ main wasm wast smallint)
)

(executable
  (public_name wasm)
  (modules wasm)
  (libraries wasm)
  (flags (-open Wasm))
)

(executable
  (name smallint)
  (modules smallint)
  (libraries wasm)
  (flags (-open Wasm))
)

(executable
  (name wast)
  (modules wast)
  (modes js)
  (libraries js_of_ocaml wasm)
  (preprocess (pps js_of_ocaml-ppx))
)

(env (_ (flags (-w +a-4-27-42-44-45-70 -warn-error +a-3))))

(subdir text
  (ocamllex (modules lexer))
  (menhir (modules parser))
)

(rule
  (targets wasm.ml)
  (deps main/main.ml)
  (action (copy main/main.ml wasm.ml))
)

(rule
  (alias runtest)
  (deps
    ./wasm.exe
    ./smallint.exe
    (source_tree ../test)
  )
  (action
    (progn
      (run ../test/core/run.py --wasm ./wasm.exe)
      (run ./smallint.exe)
    )
  )
)
