(env
 (using-effects
  (flags
   (:standard -w -38)))
 (_
  (flags
   (:standard -w -38))
  (js_of_ocaml
   (flags
    (:standard --enable effects)))))

(executables
 (enabled_if
  (>= %{ocaml_version} 5))
 (names
  cmphash
  marshal
  effects
  evenodd
  manylive
  overflow
  partial
  reperform
  sched
  shallow_state_io
  shallow_state
  test10
  test11
  test1
  test2
  test3
  test4
  test5
  test6
  test_lazy
  used_cont)
 (modules
  (:standard \ unhandled_unlinked))
 (modes js))

(executables
 (enabled_if
  (>= %{ocaml_version} 5))
 (names unhandled_unlinked)
 (modules unhandled_unlinked)
 (modes js))

(rule
 (target effects.referencejs)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps effects.bc.js)
 (action
  (with-stdout-to
   %{target}
   (run node ./effects.bc.js))))

(rule
 (alias runtest)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps effects.reference effects.referencejs)
 (action
  (diff effects.reference effects.referencejs)))

(rule
 (target evenodd.referencejs)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps evenodd.bc.js)
 (action
  (with-stdout-to
   %{target}
   (run node ./evenodd.bc.js))))

(rule
 (alias runtest)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps evenodd.reference evenodd.referencejs)
 (action
  (diff evenodd.reference evenodd.referencejs)))

(rule
 (target manylive.referencejs)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps manylive.bc.js)
 (action
  (with-stdout-to
   %{target}
   (run node ./manylive.bc.js))))

(rule
 (alias runtest)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps manylive.reference manylive.referencejs)
 (action
  (diff manylive.reference manylive.referencejs)))

(rule
 (target overflow.referencejs)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps overflow.bc.js)
 (action
  (with-stdout-to
   %{target}
   (run node ./overflow.bc.js))))

(rule
 (alias runtest)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps overflow.reference overflow.referencejs)
 (action
  (diff overflow.reference overflow.referencejs)))

(rule
 (target partial.referencejs)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps partial.bc.js)
 (action
  (with-stdout-to
   %{target}
   (run node ./partial.bc.js))))

(rule
 (alias runtest)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps partial.reference partial.referencejs)
 (action
  (diff partial.reference partial.referencejs)))

(rule
 (target reperform.referencejs)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps reperform.bc.js)
 (action
  (with-stdout-to
   %{target}
   (run node ./reperform.bc.js))))

(rule
 (alias runtest)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps reperform.reference reperform.referencejs)
 (action
  (diff reperform.reference reperform.referencejs)))

(rule
 (target sched.referencejs)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps sched.bc.js)
 (action
  (with-stdout-to
   %{target}
   (run node ./sched.bc.js))))

(rule
 (alias runtest)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps sched.reference sched.referencejs)
 (action
  (diff sched.reference sched.referencejs)))

(rule
 (target shallow_state_io.referencejs)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps shallow_state_io.bc.js)
 (action
  (with-stdout-to
   %{target}
   (run node ./shallow_state_io.bc.js))))

(rule
 (alias runtest)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps shallow_state_io.reference shallow_state_io.referencejs)
 (action
  (diff shallow_state_io.reference shallow_state_io.referencejs)))

(rule
 (target shallow_state.referencejs)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps shallow_state.bc.js)
 (action
  (with-stdout-to
   %{target}
   (run node ./shallow_state.bc.js))))

(rule
 (alias runtest)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps shallow_state.reference shallow_state.referencejs)
 (action
  (diff shallow_state.reference shallow_state.referencejs)))

(rule
 (target test10.referencejs)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps test10.bc.js)
 (action
  (with-stdout-to
   %{target}
   (run node ./test10.bc.js))))

(rule
 (alias runtest)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps test10.reference test10.referencejs)
 (action
  (diff test10.reference test10.referencejs)))

(rule
 (target test11.referencejs)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps test11.bc.js)
 (action
  (with-stdout-to
   %{target}
   (run node ./test11.bc.js))))

(rule
 (alias runtest)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps test11.reference test11.referencejs)
 (action
  (diff test11.reference test11.referencejs)))

(rule
 (target test1.referencejs)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps test1.bc.js)
 (action
  (with-stdout-to
   %{target}
   (run node ./test1.bc.js))))

(rule
 (alias runtest)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps test1.reference test1.referencejs)
 (action
  (diff test1.reference test1.referencejs)))

(rule
 (target test2.referencejs)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps test2.bc.js)
 (action
  (with-stdout-to
   %{target}
   (run node ./test2.bc.js))))

(rule
 (alias runtest)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps test2.reference test2.referencejs)
 (action
  (diff test2.reference test2.referencejs)))

(rule
 (target test3.referencejs)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps test3.bc.js)
 (action
  (with-stdout-to
   %{target}
   (run node ./test3.bc.js))))

(rule
 (alias runtest)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps test3.reference test3.referencejs)
 (action
  (diff test3.reference test3.referencejs)))

(rule
 (target test4.referencejs)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps test4.bc.js)
 (action
  (with-stdout-to
   %{target}
   (run node ./test4.bc.js))))

(rule
 (alias runtest)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps test4.reference test4.referencejs)
 (action
  (diff test4.reference test4.referencejs)))

(rule
 (target test5.referencejs)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps test5.bc.js)
 (action
  (with-stdout-to
   %{target}
   (run node ./test5.bc.js))))

(rule
 (alias runtest)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps test5.reference test5.referencejs)
 (action
  (diff test5.reference test5.referencejs)))

(rule
 (target test6.referencejs)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps test6.bc.js)
 (action
  (with-stdout-to
   %{target}
   (run node ./test6.bc.js))))

(rule
 (alias runtest)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps test6.reference test6.referencejs)
 (action
  (diff test6.reference test6.referencejs)))

(rule
 (target test_lazy.referencejs)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps test_lazy.bc.js)
 (action
  (with-stdout-to
   %{target}
   (run node ./test_lazy.bc.js))))

(rule
 (alias runtest)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps test_lazy.reference test_lazy.referencejs)
 (action
  (diff test_lazy.reference test_lazy.referencejs)))

(rule
 (target unhandled_unlinked.referencejs)
 (enabled_if
  (and
   (>= %{ocaml_version} 5)
   (<> %{profile} using-effects)))
 (deps unhandled_unlinked.bc.js)
 (action
  (with-accepted-exit-codes
   2
   (with-outputs-to
    %{target}
    (run node ./unhandled_unlinked.bc.js)))))

(rule
 (alias runtest)
 (enabled_if
  (and
   (>= %{ocaml_version} 5)
   (<> %{profile} using-effects)))
 (deps unhandled_unlinked.reference unhandled_unlinked.referencejs)
 (action
  (diff unhandled_unlinked.reference unhandled_unlinked.referencejs)))

(rule
 (target used_cont.referencejs)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps used_cont.bc.js)
 (action
  (with-stdout-to
   %{target}
   (run node ./used_cont.bc.js))))

(rule
 (alias runtest)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps used_cont.reference used_cont.referencejs)
 (action
  (diff used_cont.reference used_cont.referencejs)))

(rule
 (target cmphash.referencejs)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps cmphash.bc.js)
 (action
  (with-stdout-to
   %{target}
   (run node ./cmphash.bc.js))))

(rule
 (alias runtest)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps cmphash.reference cmphash.referencejs)
 (action
  (diff cmphash.reference cmphash.referencejs)))

(rule
 (target marshal.referencejs)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps marshal.bc.js)
 (action
  (with-stdout-to
   %{target}
   (run node ./marshal.bc.js))))

(rule
 (alias runtest)
 (enabled_if
  (>= %{ocaml_version} 5))
 (deps marshal.reference marshal.referencejs)
 (action
  (diff marshal.reference marshal.referencejs)))
