(executables
 (names toplevel)
 (libraries
  js_of_ocaml-compiler
  js_of_ocaml-tyxml
  js_of_ocaml-toplevel
  lwt
  js_of_ocaml-lwt
  ;; not used directly
  graphics
  js_of_ocaml.deriving
  bigarray
  react
  reactiveData
  str
  (select
   ocp_indent.ml
   from
   (ocp-indent.lib -> ocp_indent.ok.ml)
   (-> ocp_indent.fake.ml))
  (select
   colorize.ml
   from
   (higlo higlo.ocaml -> colorize.higlo.ml)
   (!higlo -> colorize.fake.ml))
  (select
   graphics_support.ml
   from
   (js_of_ocaml-lwt.graphics -> graphics_support.enabled.ml)
   (-> graphics_support.disabled.ml))
  (select
   ppx_support.ml
   from
   (js_of_ocaml-ppx -> ppx_support.enabled.ml)
   (-> ppx_support.disabled.ml)))
 (flags
  (:standard -rectypes -linkall))
 (modes byte)
 (modules
  (:standard \ test_dynlink examples))
 (preprocess
  (pps js_of_ocaml-ppx)))

(rule
 (targets test_dynlink.cmo test_dynlink.cmi)
 (action
  (run ocamlc -c %{dep:test_dynlink.ml})))

(rule
 (targets test_dynlink.js)
 (action
  (run %{bin:js_of_ocaml} -I ./ --pretty --toplevel %{dep:test_dynlink.cmo})))

(rule
 (targets export.txt)
 (deps
  (package js_of_ocaml-ppx)
  (package js_of_ocaml)
  (package js_of_ocaml-lwt)
  (package js_of_ocaml-tyxml)
  (package js_of_ocaml-toplevel))
 (action
  (run
   jsoo_listunits
   -o
   %{targets}
   stdlib
   graphics
   str
   js_of_ocaml-lwt.graphics
   js_of_ocaml-ppx.as-lib
   js_of_ocaml.deriving
   lwt
   bigarray
   tyxml.functor
   tyxml.functor:html_types.cmi
   react
   reactiveData
   js_of_ocaml
   js_of_ocaml-lwt
   js_of_ocaml-tyxml
   js_of_ocaml-toplevel
   dynlink)))

(rule
 (targets toplevel.js)
 (action
  (run
   %{bin:js_of_ocaml}
   -I
   %{lib:reactiveData:.}
   -I
   .
   --file
   %{dep:examples.ml}
   --file
   %{dep:test_dynlink.cmo}
   --file
   %{dep:test_dynlink.js}
   --export
   %{dep:export.txt}
   --toplevel
   --disable
   shortvar
   +toplevel.js
   +dynlink.js
   %{dep:toplevel.bc}
   -o
   %{targets})))

(alias
 (name default)
 (deps toplevel.js index.html))
