mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-24 06:10:12 +00:00
305fed96e6
This commit drops the Cloog support for Polly. The scripts and documentation are changed to only use isl as prerequisity. In the code all Cloog specific parts have been removed and all relevant tests have been ported to the isl backend when it was created. llvm-svn: 223141
201 lines
6.0 KiB
HTML
201 lines
6.0 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
|
"http://www.w3.org/TR/html4/strict.dtd">
|
|
<html>
|
|
<head>
|
|
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
|
|
<title>Polly - Getting Started</title>
|
|
<link type="text/css" rel="stylesheet" href="menu.css" />
|
|
<link type="text/css" rel="stylesheet" href="content.css" />
|
|
</head>
|
|
<body>
|
|
|
|
<div id="box">
|
|
<!--#include virtual="menu.html.incl"-->
|
|
|
|
<div id="content">
|
|
|
|
<h1>Getting Started: Building and Installing Polly</h1>
|
|
|
|
<h2> Automatic </h2>
|
|
|
|
There is a <a href="polly.sh">script</a> available to automatically checkout,
|
|
update, build, and test Polly. This script contains all the commands that are
|
|
subsequently described on this webpage. The automatic installation consists
|
|
of four simple steps:
|
|
|
|
<pre>
|
|
mkdir polly && cd polly
|
|
wget http://polly.llvm.org/polly.sh
|
|
chmod +x polly.sh
|
|
./polly.sh
|
|
</pre>
|
|
|
|
<h2> Manual </h2>
|
|
<h3 id="source"> Get the code </h3>
|
|
|
|
The Polly source code is available in the LLVM SVN repository as well as through
|
|
an official git mirror. It is added to the <em>tools</em>
|
|
directory of the llvm sources.
|
|
<b>Polly and LLVM need to be checked out at the same time. Checkouts
|
|
from different dates may not work!</b>
|
|
<h4>Set the directory layout:</h4>
|
|
<pre>
|
|
export BASE=`pwd`
|
|
export LLVM_SRC=${BASE}/llvm
|
|
export POLLY_SRC=${LLVM_SRC}/tools/polly
|
|
|
|
# Also build the matching clang-version (optional)
|
|
export CLANG_SRC=${LLVM_SRC}/tools/clang
|
|
</pre>
|
|
|
|
<h4>SVN</h4>
|
|
<pre>
|
|
svn checkout http://llvm.org/svn/llvm-project/llvm/trunk ${LLVM_SRC}
|
|
svn checkout http://llvm.org/svn/llvm-project/polly/trunk ${POLLY_SRC}
|
|
|
|
# Also build the matching clang-version (optional)
|
|
svn checkout http://llvm.org/svn/llvm-project/cfe/trunk ${CLANG_SRC}
|
|
</pre>
|
|
<h4>GIT</h4>
|
|
<pre>
|
|
git clone http://llvm.org/git/llvm.git ${LLVM_SRC}
|
|
git clone http://llvm.org/git/polly.git ${POLLY_SRC}
|
|
|
|
# Also build the matching clang-version (optional)
|
|
git clone http://llvm.org/git/clang.git ${CLANG_SRC}
|
|
</pre>
|
|
<h3 id="prerequisites"> Prerequisites </h3>
|
|
<ul>
|
|
<li>libgmp</li>
|
|
<li>isl</li>
|
|
</ul>
|
|
|
|
<h4> libgmp </h4>
|
|
Install libgmp (library + developer package) through the package management
|
|
system of your operating system.
|
|
|
|
<h4> isl</h4>
|
|
|
|
Polly is tested with a fixed version of isl. To obtain the source code of isl
|
|
use checkout_isl.sh as available in ${POLLY_SRC}/utils/checkout_isl.sh.
|
|
|
|
<h4>Set the directory layout:</h4>
|
|
<pre>
|
|
export ISL_SRC=${BASE}/isl_src
|
|
export ISL_INSTALL=${BASE}/isl_install
|
|
</pre>
|
|
|
|
<h4> First installation</h4>
|
|
<pre>
|
|
${POLLY_SRC}/utils/checkout_isl.sh ${ISL_SRC}
|
|
cd ${ISL_SRC}
|
|
./configure --prefix=${ISL_INSTALL}
|
|
make
|
|
make install
|
|
cd ${BASE}
|
|
</pre>
|
|
|
|
<h4> Update the installation</h4>
|
|
|
|
Updating isl may become necessary, if Polly uses a feature
|
|
only available in a recent version of isl.
|
|
<pre>
|
|
${POLLY_SRC}/utils/checkout_isl.sh ${ISL_SRC}
|
|
cd ${ISL_SRC}
|
|
make
|
|
make install
|
|
cd ${BASE}
|
|
</pre>
|
|
|
|
<h3 id="build">Build Polly</h3>
|
|
|
|
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 check-polly'.
|
|
|
|
<h4>Set the directory layout:</h4>
|
|
<pre>
|
|
export LLVM_BUILD=${BASE}/llvm_build
|
|
mkdir ${LLVM_BUILD}
|
|
cd ${LLVM_BUILD}
|
|
</pre>
|
|
|
|
<h4>CMake</h4>
|
|
|
|
<pre>
|
|
cmake -DCMAKE_PREFIX_PATH=${ISL_INSTALL} ${LLVM_SRC}
|
|
make
|
|
</pre>
|
|
|
|
<h4> Autoconf </h4>
|
|
|
|
<pre>
|
|
${LLVM_SRC}/configure --with-isl=${ISL_INSTALL}
|
|
make
|
|
</pre>
|
|
|
|
<h3> Test Polly</h3>
|
|
|
|
<p>To check if Polly works correctly you can run <em>make check-polly</em> for the
|
|
cmake build or <em>make check-polly -C tools/polly/test/</em> for the autoconf
|
|
build.
|
|
|
|
<p>If you get something like <em>"... libisl.so.9: cannot open shared object file .."</em>,
|
|
it is because you installed isl to a non-standard path, and libisl
|
|
could not be found. To solve this issue, you need to append the path of parent
|
|
directory of libisl, i.e. ${ISL_INSTALL}/lib, to LD_LIBRARY_PATH by:
|
|
|
|
<pre>export LD_LIBRARY_PATH=${ISL_INSTALL}/lib:$LD_LIBRARY_PATH</pre>
|
|
|
|
<p>Also try the above command if you get errors such as:
|
|
<code>undefined symbol: isl_ctx_get_max_operations</code>
|
|
|
|
<p>If you get an error in one of the python files, your system probably uses python3
|
|
as default python interpreter. This is the case, for instance, under Arch Linux.
|
|
To solve this issue, run <code>cmake</code> again, but with the added argument:
|
|
<code>-DPYTHON_EXECUTABLE=/usr/bin/python2</code> (replace <code>/usr/bin/python2</code>
|
|
with the location of the python2 interpreter under your system).
|
|
|
|
<pre>cmake -DCMAKE_PREFIX_PATH=${ISL_INSTALL} -DPYTHON_EXECUTABLE=/usr/bin/python2 ${LLVM_SRC}</pre>
|
|
|
|
<h2> Optional Features </h2>
|
|
|
|
<h3> Pocc [Supported until <a href="http://llvm.org/releases/download.html#3.4.2">LLVM 3.4.2</a>]</h3>
|
|
|
|
<p>Polly can use <a href="http://www.cse.ohio-state.edu/~pouchet/software/pocc">
|
|
PoCC</a> as an external optimizer. PoCC is a research project that provides
|
|
an integrated version of <a href="http://pluto-compiler.sf.net">Pluto</a>, an
|
|
advanced data-locality and tileability optimizer. Polly includes internally
|
|
already a similar optimizer, such that in general PoCC is not needed. It is
|
|
only recommended for people who want to compare against a different
|
|
optimizer.</a>
|
|
<br/>
|
|
To use it install PoCC 1.0-rc3.1 (the one with Polly support) and add it to your PATH.
|
|
|
|
<pre>
|
|
wget <a
|
|
href="http://www.cse.ohio-state.edu/~pouchet/software/pocc/download/pocc-1.0-rc3.1-full.tar.gz">http://www.cse.ohio-state.edu/~pouchet/software/pocc/download/pocc-1.0-rc3.1-full.tar.gz</a>
|
|
tar xzf pocc-1.0-rc3.1-full.tar.gz
|
|
cd pocc-1.0-rc3.1
|
|
./install.sh
|
|
export PATH=$PATH:`pwd`/bin
|
|
</pre>
|
|
|
|
You also need to install scoplib-0.2.0 and provide its location to
|
|
Polly's cmake or configure call.
|
|
|
|
<pre>
|
|
wget <a
|
|
href="http://www.cse.ohio-state.edu/~pouchet/software/pocc/download/modules/scoplib-0.2.0.tar.gz"
|
|
>http://www.cse.ohio-state.edu/~pouchet/software/pocc/download/modules/scoplib-0.2.0.tar.gz</a>
|
|
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
|
|
</pre>
|
|
</div>
|
|
</div>
|
|
|
|
</body>
|
|
</html>
|