Provided by: eliom_4.2-2_amd64 bug

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.

       -no-autoload
              Do not load commonly used syntax extensions (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)