package js_of_ocaml-ocamlbuild
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=3a050eb9507058164431c8e1f1c86b3c61e30a5d0b0cf2c5f48b959b87eaade9
sha512=0bbca03ac220f28adf060d4c2d8f726801bce80461aa73724a6c53b4979af919c820cc723b0a7e9bda93270cef5c0485aea942aa527010a3c386a13b7e2d4842
doc/js_of_ocaml-ocamlbuild/Ocamlbuild_js_of_ocaml/index.html
Module Ocamlbuild_js_of_ocaml
Source
Ocamlbuild plugin to build with js_of_ocaml
Initialize
Initialize the js_of_ocaml ocamlbuild plugin with the following code in myocamlbuild.ml:
let _ = Ocamlbuild_plugin.dispatch Ocamlbuild_js_of_ocaml.dispatcher
Side note: Ocamlbuild_plugin.dispatch
should be used only once. The last call will override previous ones.
With Oasis
If you use oasis, myocamlbuild.ml should look like:
let _ =
Ocamlbuild_plugin.dispatch
(fun hook ->
dispatch_default hook;
Ocamlbuild_js_of_ocaml.dispatcher
~oasis_executables:["src/yourprogram.byte"]
hook;
)
Build
Build a JavaScript program myprog.js by calling the command:
ocamlbuild -use-ocamlfind -plugin-tag "package(js_of_ocaml.ocamlbuild)" myprog.js
It will first build the bytecode myprog.byte and finally produce myprog.js (in _build).
Options
One can pass option to the Js_of_ocaml compiler using tags. See <<a_manual chapter="options" |Options>>.
Available tags:
- pretty: Pretty print the generated javascript.
- debuginfo: Output debug information.
- noinline: Disable inlining
- sourcemap: Generate sourcemap
- tailcall(none): Set the tailcall optimisation (default "trampoline")
- opt(3): Set the compilation profile (default 1)
- debug: enables pretty, debuginfo, sourcemap
Exemples
In the _tags file:
<myprog.js>:pretty, opt(3)
Dispatchers
val dispatcher :
?oasis_executables:Ocamlbuild_plugin.Pathname.t list ->
Ocamlbuild_plugin.hook ->
unit
The main dispatcher
?oasis_executables
is the paths of the executables (having the .byte extension) you want to compile as a javascript executable. The former executables are still compiled.
Side note: Ocamlbuild_plugin.dispatch
should be used only once as it record only one function for an ocamlbuild module.
Low level functions
Map each targets given as argument to ocamlbuild and replace each element that exists in ~executables
by its corresponding .js target.