
        / /   / /    __    \ \  / /
       / /__ / /   / _ \    \ \/ /
      /  ___  /   | |/_/    / /\ \
     / /   / /    \_\      / /  \ \

                 HEX-DB

------------
Dependencies
------------

The program is written in C++11 and can be successfully compiled by the
following compilers:

 * GCC 5.2.0 (also MinGW-w64 based on this GCC)
 * LLVM/clang 3.7.1
 
There are several external libraries that are being used for some partial tasks.
Here is the list of the libraries with versions that were used:

 * GSL 1.16
            Obtainable from
                http://www.gnu.org/software/gsl/
            Used for special functions and some others.

 * SQLite 3.15.0
            Obtainable from
                http://www.sqlite.org/download.html
            Used for access to the database files.

 * GiNaC 1.6.4 (+ CLN 1.3.4)
            Needed, obtainable from
                http://www.ginac.de/
            Used for symbolical computation of integrands.
            Note: I needed to configure GiNaC with '--disable-rpath' option.
            
Some or all of the libraries may be present in precompiled form in the repositories
of the Linux distribution used.

-------------
Build and run
-------------

Use Unix-like system (or Cygwin tools on Windows) for compilation.

Once the needed libraries are present in the system include and library paths,
all that is necessary to build the program is running "make" from this directory.

> make

This should create an executable "hex-db" in the subdirectory "bin/". One can
then create an empty database by the command

> bin/hex-db --new

The tables present in the new database can be listed using "sqlite3" program,

> sqlite3 hex.db .tables    # prints "ccs ics ionf tmat"

The SQL statements used to create the tables can be retrieved similarly,

> sqlite3 hex.db .schema

As soon as there are some data to import, one will run

> bin/hex-db --import <SQL_batch_file> --update

If the external libraries are installed in non-standard locations, one needs to
edit the Makefile accordingly.

The HTML documentation can be extracted from the code by the program Doxygen:

> doxygen
