Provided by: eliom_9.4.0-1_amd64 

NAME
eliomc, eliomcp, eliomopt, js_of_eliom, eliomdep - the eliom build tools
SYNOPSIS
eliomc [options] files
eliomcp [options] files
eliomopt [options] files
eliomdep [options] files
eliomdoc [options] files
eliompp [-client|-server] files
js_of_eliom [options] files -o filename.js
DESCRIPTION
eliomc, eliomcp and eliomopt are wrapper around the OCaml compiler that ease the compilation of the
server part of projects based on the Eliom framework. They respectively accept the same set of option
than the ocamlc(1),ocamlcp(1) and ocamlopt(1) compilers plus the specific ones described in the OPTIONS
section.
js_of_eliom is a wrapper around the OCaml and Js_of_ocaml compilers that ease the compilation of the
client part of projects based on the Eliom framework. It accepts the same set of option than the
ocamlc(1) compiler plus the specific ones described in the OPTIONS section.
eliomdep is a wrapper around ocamldep(1) that handles dependencies of an .eliom source files. It accepts
the same set of options plus the specific ones described in the OPTIONS section. It makes the assumption
that server-side compiled modules of OCaml files located in this directory subtree are in directory
_server (with same subdirectories structure) (resp. in directory _client for client-side compiled
modules).
eliompp (EXPERIMENTAL) is a preprocessor which remove specific sections, depending on the given option.
The option -client will remove all the top-level parts and server sections and the option -server will
remove only the client sections.
eliomdoc (EXPERIMENTAL) is a wrapper around the OCaml documentation generator ocamldoc. It allows you to
generate documentation from client or server side. It accepts the same set of option than ocamldoc(1).
It automatically extracts the commentaries from the desired sections. eliomdoc is currently
experimental, and you could find some undefined behaviours. (see
http://ocsigen.org/eliom/manual/workflow-compilation). Some well known bugs are:
• your files should always begin with a value and not with a comment. Otherwise, camlp4 won't output
the commentaries.
• sometimes, comment node are not attached as expected. That's because camlp4 (sometimes) remove
extra new line between value elements.
COMPILING ELIOM SOURCE FILES
The compilation of files with a .eliom extension is achieved in three steps: infer the type of value sent
by the server to the client; compile the server part of the code and compile the client part. The first
two steps can be realised with eliomc and the last one with js_of_eliom.
Both tools produce a .cmo file named as the original .eliom file. To avoid overwriting the .cmo
representing the server part with .cmo of the client part, files generated by eliomc or eliomopt are
stored by default in a subdirectory named _server and files generated by js_of_eliom are stored in a
subdirectory named _client. Those default directories could be respectively overridden by the environment
variables ELIOM_SERVER_DIR and ELIOM_CLIENT_DIR.
The types inferred by eliomc for values sent by the server to the client are stored in an intermediate
files named as the original .eliom file and whose extension is .type_mli. That file is required by
js_of_eliom for compiling the client part of the .eliom file. The eliomdep tool correctly generate
dependencies that intermediate file for the server .cmo and the client .cmo.
OPTIONS
-eliom-inc <dir> Add <dir> to the list of eliom include directories (eliomdep only).
-dir <dir>
Specify the target directory for generated files
-package <name>
This is the same option as the ocamlfind one.
-predicates <p>
This is the same option as the ocamlfind one.
-no-autoload
Do not load commonly used syntax extensions (ppx_deriving, lwt, js_of_ocaml, tyxml).
-type-conv
Use type_conv syntax extensions instead of deriving one. It has no effect if used in conjunction
with -no-autoload.
-ppopt <opt>
Append <opt> to preprocessor invocation.
-jsopt <opt>
Append <opt> to js_of_ocaml invocation (js_of_eliom only).
-infer <opt>
For .eliom file, only generate the intermediate .type_mli file (eliomc and eliomopt only).
-noinfer <opt>
For .eliom file, do not generate the intermediate .type_mli file (eliomc and eliomopt only).
-help or --help
Display a short usage summary and exit.
EXAMPLES
The compilation of an Eliom projects composed of a server specific file named server.ml, a client
specific file named client.ml and two common files name base.eliom and main.eliom, could be achieved with
the following commands:
eliomc -a -o appl.cma server.ml base.eliom main.eliom
js_of_eliom -o appl.js client.ml base.eliom main.eliom
To avoid recompiling the whole project each times, this could be split in multiple steps:
eliomc -c server.ml
eliomc -c base.eliom
eliomc -c main.eliom
eliomc -a -o appl.cma _server/server.cmo _server/base.cmo _server/main.cmo
js_of_eliom -c client.ml
js_of_eliom -c base.eliom
js_of_eliom -c main.eliom
js_of_eliom -o appl.js _client/client.cmo _client/base.cmo _client/main.cmo
SEE ALSO
ocamlc(1), ocamlopt(1), js_of_ocaml(1), ocamlfind(1), ocamlcp(1), ocamldep(1).
AUTHOR
eliomc, js_of_eliom, eliomdep and eliomopt were written by Gregoire Henry
<gregoire.henry@pps.jussieu.fr>.
eliomdoc was written by Charly Chevalier <charly.n.chevalier@gmail.com>.
This manual page was written by Pierre Chambart <chambart@crans.org>.
2012-02-15 ELIOMC(1)