Skip to content
mmcgr edited this page Dec 13, 2017 · 21 revisions

Building and Installation of Soufflé

These are some build notes for developers only. If you are a user, please use the documentation.

Pre-Build Packages

Soufflé has pre-built packages for Debian and MAC OS X. You find the pre-built packages here.

Software Requirements

To build and install Souffle, the following software must be installed:

  • Make, Autoconf tools, GNU G++ supporting C++11 and OpenMP (from version 4.8), Bison (from version 3.0.2), Flex, DoxyGen, Java JDK

CLANG++ with OpenMP support can be used as an alternative for G++.

Ubuntu/Debian Build

On a Ubuntu/Debian system, following command installs the necessary developer tools to compile and build Soufflé:

sudo apt-get install autoconf automake bison build-essential doxygen flex g++ git libncurses5-dev libsqlite3-dev libtool make mcpp pkg-config python zlib1g-dev

If clang++ is used to build Soufflé, then the libomp-dev package may also be required if support of parallel execution is needed.

sudo apt-get install libomp-dev

Note that the Ubuntu/Debian version needs to be recent such that G++ 4.8 is part of the standard distribution.

The Soufflé project follows automake/autoconf conventions for configuring, installing and building software. To configure, build, test, and install the project, type:

 cd souffle
 sh ./bootstrap
 ./configure
 make

MAC OS X Build

MAC OS X does not have OpenMP/C++ nor a bison version 3.0.2 or higher installed. We recommend brew to install the required tools to build Soufflé. Run the following commands prior to executing ./configure:

brew update
brew install autoconf automake bison libtool pkg-config mcpp
brew reinstall gcc --without-multilib
brew link bison --force

Note: Be careful with the search path for bison, so it points to the correct one. By default, macOS includes bison 2.3 at /usr/bin/bison, however brew installs the newer version to /usr/local/bin/bison. This can be done by prepending this directory to the path, however, this can break other systems - PATH=/usr/local/bin:$PATH.

In addition, Java JDK is necessary for the Java Natural Interface (JNI) extension of Soufflé.

Soufflé is built by

cd souffle
export CXX=/usr/local/bin/g++-7 # use the version of g++ installed by brew
export CXXFLAGS=-fopenmp
export SOUFFLECPP=/usr/local/bin/cpp-7 # use the version of cpp installed by brew
sh ./bootstrap
./configure
make

Testing Soufflé

With

 make check

numerous unit tests and regression tests are performed. This may take up to 45min. However, this may be sped up with, for instance:

TESTSUITEFLAGS=-j8 make check

which will run 8 jobs at a time.

Installing Soufflé

If you would like to install Soufflé in your system, specify an installation directory with ./configure --prefix=<install-dir>. The executable, scripts, and header files will be stored in the directory <install-dir>. Use an absolute path for <install-dir>. Type

 make install

to install Soufflé. By setting the path variable

 PATH=$PATH:<install-dir>/bin

the Soufflé commands souffle and souffle-profile are available to the users.

Information from old readme file

How to compile and install

Follow the steps below to compile and install Soufflé on a UNIX system:

  1. Install the needed dependencies. G++ 4.8 or greater is recommended to compile Soufflé. openjdk-7 can be used if openjdk-8 is not available on your platform.
apt-get install build-essential pkg-config
apt-get install autoconf automake bison doxygen flex g++ git graphviz libsqlite3-dev libtool libncurses5-dev lsb-release make openjdk-8-jdk git zlib1g-dev
  1. Run sh ./bootstrap to generate configure files

  2. For Linux users, skip this point. MAC OS X does not have OpenMP nor a bison version 3.0.2 or higher installed. We recommend brew to install the required tools to build Soufflé. Run the following commands prior to executing ./configure:

     brew update                
     brew reinstall gcc --without-multilib                
     brew install bison  
     brew install boost
     brew link bison --force
     brew install libtool automake
     export CXX=/usr/local/bin/g++-5                
     export CXXFLAGS=-fopenmp                
     export SOUFFLECPP=/usr/local/bin/cpp-5
     export BISON=/usr/local/opt/bison/bin/bison
  1. Run ./configure

  2. Run make to build the executable of Soufflé

  3. Test the executable with make check to check whether the compilation of Soufflé succeeded.

  4. Run make install

    This command will create the directories and install files in ${DESTDIR}${prefix} for system-wide use in your system.

Multiple builds

Souffle supports out-of-source builds, to enable multipe builds using e.g. different compilers or debug options based on the same source base.

The configure script uses the compiler specified by an CXX environment variable as the compiler to be used. Furthermore, the environment variable BUILD_TYPE may be set to "Debug" to create a debug build, instead of the default release build.

The following commands create a gcc 5 debug, a gcc 5 release, and a clang build:

# basic setup
git clone git://github.com/souffle-lang/souffle.git souffle
cd souffle
sh ./bootstrap

# create gcc debug build directory
mkdir build_gcc_debug
cd build_gcc_debug
CXX=g++-5 BUILD_TYPE=Debug ../configure
make -j4
cd ..

# create gcc release build directory
mkdir build_gcc_release
cd build_gcc_debug
CXX=g++-5 ../configure
make -j4
cd ..

# create clang release build directory
mkdir build_clang_release
cd build_clang_release
CXX=clang++-3.6 ../configure
make -j4
cd ..

Parallel Testing

The unit tests in the source directory can be executed in parallel using the -j option of make. For instance,

cd src
make -j4 check

will run the unit tests of the current build directory using 4 threads.

By exporting the following environment variable

export TESTSUITEFLAGS=-j4

the integration test script will also process tests in parallel.

Selective Testing

To run an individual integration test, the script tests/testsuite can be used. The command

testsuite -l

lists all the test cases, with their associated number. To run an individual test,

testsuite <case_nr>

can be used.