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 infered 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.
- -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>.