%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Chapter{Installation}

{\GAP} is distributed together with a large number of packages, including
this one. {\CaratInterface} is located inside the subdirectory
`pkg/CaratInterface/' of your {\GAP} installation, and the {\CARAT}
programs contained in it must be compiled. Compilation is most
conveniently done with the script `BuildPackages.sh' from {\GAP}.
You can either build (almost) all packages, or only a single one
by giving its name on the command line. Alternatively, you can
compile {\CARAT} inside {\CaratInterface} manually, by executing
these commands inside the directory `pkg/CaratInterface/':

\begintt
./configure <path-to-GAP-root>
make
\endtt

The configure script optionally takes the path to the root directory of 
your {\GAP} installation as argument. The default `../..' should usually 
work, if the package is located in the `pkg' subdirectory of the {\GAP}
root directory,
but if you have unpacked {\CaratInterface} to a location like
`~/.gap/pkg/CaratInterface/', you need to explicitly give the path to
the {\GAP} root directory as argument. The result of `configure' is
written to the file `config.carat', which can be inspected if something
goes wrong.

If {\GAP} was configured to use a specific GMP library, or the GMP library
bundled with {\GAP}, then {\CARAT} will try to use that same GMP library.
Otherwise, the system GMP library in the default path is chosen. If you want
to use another GMP library, you may add an argument `--with-gmp=path-to-gmp'
to the above configure command, where the directory `path-to-gmp' must
contain subdirectories `lib/' and `include/' with the GMP library and include
files, respectively.

If you want or need to add further compile or link flags, you may prepend
`CFLAGS=\"your flags\"' to the configure command, or append it to the make
command (one of these is enough), so that the complete build commands
including all options are these:

\begintt
 [CFLAGS="<your flags>"] ./configure [<path-to-GAP-root>] [--with-gmp=<path-to-gmp>]
 make [CFLAGS="<your flags>"]
\endtt

As {\CARAT}'s catalog of Q-classes of unimodular groups is rather large,
it is unpacked by default only up to dimension~5. If you also want
to unpack the data for dimension~6, you can do this with the extra
command (again inside directory `pkg/CaratInterface/')

\begintt
make qcat6
\endtt

This adds another 150 Mb of data to the installation.
