#################################################
    #             	       	       	       	    #
    #  Heptagon/BZR : compilation and installation  #
    #                                               #
    #################################################


Required tools
--------------

The  use of  the  Heptagon compiler  by  itself does  not require  any
additional tools. However,  the usual use involves a  compiler for the
generated code (e.g., gcc for C generated code, or javac for Java).

The  tools below  are  optional or  are  related to  some subparts  of
Heptagon:
- The  graphical display tool  sim2chro can  be obtained  from Verimag
  [1]. It can be used together with the graphical simulator hepts.

- Alternatively to  sim2chro, the GTKWave [2]  wave/chronograms viewer
  can be used with hepts.

- The  Sigali  tool [3]  for  model-checking  and discrete  controller
  synthesis  is mandatory  for the  use  of contracts.  Sigali can  be
  downloaded on the BZR website : http://bzr.inria.fr.



Compilation and installation
----------------------------

* Required libraries and tools for the compilation

The compilation of the Heptagon compiler requires:
- OCaml [4] (version >= 3.11), and the ocamlbuild and ocamlfind tools
- the Menhir [5] parser generator
- the ocamlgraph [6] library.

The  compilation of  the  Heptagon simulator  (optional) requires  the
LablGTK2 [7] library.


* Compilation

Once the  compiler is downloaded  and untarred, go into  the heptagon/
directory and type :

$ ./configure && make

This command will build the compiler, optionally the simulator (if the
LablGTK2 library is found), and the standard library.


* Installation

After  the  compilation, or  the  download  and  untar of  the  binary
distribution, go into the heptagon/ directory and type :

$ make install

By default, this will install the binaries (heptc and hepts) into
/usr/local/bin and the standard library into
/usr/local/lib. Consider the configure script options
(./configure --help) for other specific needs.



URLs
----

[1] sim2chro : http://www-verimag.imag.fr/DIST-TOOLS/SYNCHRONE/lustre-v4/distrib/
[2] GTKWave : http://gtkwave.sourceforge.net
[3] Sigali : http://www.irisa.fr/vertecs/Logiciels/sigali.html
[4] OCaml : http://caml.inria.fr
[5] Menhir : http://gallium.inria.fr/~fpottier/menhir/
[6] ocamlgraph : http://ocamlgraph.lri.fr
[7] LablGTK2 : http://wwwfun.kurims.kyoto-u.ac.jp/soft/lsl/lablgtk.html