# Getting Started: Building and Installing Polly

## Prerequisites

The following prerequisites can be installed through the package management system of your operating system.

- libgmp (library + developer package)

### Install ISL / CLooG libraries

Polly requires the latest versions of CLooG and isl to be installed. The CLooG git repository contains both the latest version of CLooG and isl.

    git clone git://repo.or.cz/cloog.git
    cd cloog
    ./get_submodules.sh
    ./autogen.sh
    ./configure --with-gmp-prefix=/path/to/gmp/installation --prefix=/path/to/cloog/installation
    make
    make install

### Install Pocc (Optional)

Polly can use PoCC as an external optimizer. PoCC provides an integrated version of Pluto, an advanced data-locality and tileability optimizer. To enable this feature install PoCC 1.0-rc3.1 (the one with Polly support) and add it to your PATH.

    wget http://www.cse.ohio-state.edu/~pouchet/software/pocc/download/pocc-1.0-rc3.1-full.tar.gz
    tar xzf pocc-1.0-rc3.1-full.tar.gz
    cd pocc-1.0-rc3.1
    ./install.sh
    export PATH=`pwd`/bin

Furthermore, scoplib-0.2.0 has to be installed such that polly can link to it.

    wget http://www.cse.ohio-state.edu/~pouchet/software/pocc/download/modules/scoplib-0.2.0.tar.gz
    tar xzf  scoplib-0.2.0.tar.gz
    cd scoplib-0.2.0
    ./configure --enable-mp-version --prefix=/path/to/scoplib/installation
    make && make install

## Get the code

The Polly source code is available in the LLVM SVN repository. For convenience we also provide a git mirror. To build Polly we extract its source code into the tools directory of the llvm sources.

A recent LLVM checkout is needed. Older versions may not work!

### SVN

    export LLVM_SRC=`pwd`/llvm
    svn checkout http://llvm.org/svn/llvm-project/llvm/trunk ${LLVM_SRC}
    cd ${LLVM_SRC}/tools
    svn checkout http://llvm.org/svn/llvm-project/polly/trunk polly

### GIT

    export LLVM_SRC=`pwd`/llvm
    git clone http://llvm.org/git/llvm.git ${LLVM_SRC}
    cd ${LLVM_SRC}/tools
    git clone git://repo.or.cz/polly.git

## Build Polly

To build Polly you can either use the autoconf or the cmake build system. At the moment only the autoconf build system allows to run the llvm test-suite and only the cmake build system allows to run 'make polly-test'.

### CMake

    mkdir build
    cd build
    cmake ${LLVM_SRC}

    # If CMAKE cannot find CLooG and ISL
    cmake -DCMAKE_PREFIX_PATH=/cloog/installation .

    # To point CMAKE to the scoplib source
    cmake -DCMAKE_PREFIX_PATH=/scoplib/installation .

    make

### Autoconf

    mkdir build
    cd build
    ${LLVM_SRC}/configure --with-cloog=/cloog/installation --with-isl=/cloog/installation --with-scoplib=/scoplib/installation
    make

## Test Polly

To check if Polly works correctly you can run make polly-test. This currently works only with a cmake build.