2008-02-14 17:53:22 +00:00
|
|
|
<!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=UTF-8">
|
|
|
|
<link rel="stylesheet" href="llvm.css" type="text/css" media="screen">
|
|
|
|
<title>Building the LLVM GCC Front-End</title>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
|
|
|
|
<div class="doc_title">
|
|
|
|
Building the LLVM GCC Front-End
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<ol>
|
|
|
|
<li><a href="#instructions">Building llvm-gcc from Source</a></li>
|
|
|
|
<li><a href="#license">License Information</a></li>
|
|
|
|
</ol>
|
|
|
|
|
|
|
|
<div class="doc_author">
|
|
|
|
<p>Written by the LLVM Team</p>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- *********************************************************************** -->
|
|
|
|
<div class="doc_section">
|
|
|
|
<a name="instructions">Building llvm-gcc from Source</a>
|
|
|
|
</div>
|
|
|
|
<!-- *********************************************************************** -->
|
|
|
|
|
|
|
|
<div class="doc_text">
|
|
|
|
|
|
|
|
<p>This section describes how to acquire and build llvm-gcc 4.0 and 4.2, which are
|
|
|
|
based on the GCC 4.0.1/4.2.1 front-ends respectively. Both front-ends support C,
|
|
|
|
C++, Objective-C and Objective-C++. The 4.2 front-end also supports Ada and
|
|
|
|
Fortran to some extent. Note that the instructions for building these front-ends
|
|
|
|
are completely different (and much easier!) than those for building llvm-gcc3 in
|
|
|
|
the past.</p>
|
|
|
|
|
|
|
|
<ol>
|
|
|
|
<li><p>Retrieve the appropriate llvm-gcc4.x-y.z.source.tar.gz archive from the
|
|
|
|
<a href="http://llvm.org/releases/">llvm web site</a>.</p>
|
|
|
|
|
|
|
|
<p>It is also possible to download the sources of the llvm-gcc front end
|
|
|
|
from a read-only mirror using subversion. To check out the 4.0 code
|
|
|
|
for first time use:</p>
|
|
|
|
|
|
|
|
<div class="doc_code">
|
|
|
|
<pre>
|
|
|
|
svn co http://llvm.org/svn/llvm-project/llvm-gcc-4.0/trunk <i>dst-directory</i>
|
|
|
|
</pre>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<p>To check out the 4.2 code use:</p>
|
|
|
|
|
|
|
|
<div class="doc_code">
|
|
|
|
<pre>
|
|
|
|
svn co http://llvm.org/svn/llvm-project/llvm-gcc-4.2/trunk <i>dst-directory</i>
|
|
|
|
</pre>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<p>After that, the code can be be updated in the destination directory
|
|
|
|
using:</p>
|
|
|
|
|
|
|
|
<div class="doc_code">
|
|
|
|
<pre>svn update</pre>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<p>The mirror is brought up to date every evening.</p></li>
|
|
|
|
|
|
|
|
<li>Follow the directions in the top-level <tt>README.LLVM</tt> file for
|
|
|
|
up-to-date instructions on how to build llvm-gcc. See below for building
|
|
|
|
with support for Ada or Fortran.
|
|
|
|
</ol>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- *********************************************************************** -->
|
|
|
|
<div class="doc_section">
|
|
|
|
<a name="license">Building the Ada front-end</a>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="doc_text">
|
|
|
|
<p>Building with support for Ada amounts to following the directions in the
|
|
|
|
top-level <tt>README.LLVM</tt> file, adding ",ada" to EXTRALANGS, for example:
|
|
|
|
<tt>EXTRALANGS=,ada</tt></p>
|
|
|
|
|
|
|
|
<p>There are some complications however:</p>
|
|
|
|
|
|
|
|
<ol>
|
|
|
|
<li><p>The only platform for which the Ada front-end is known to build is
|
|
|
|
32 bit intel x86 running linux. It is unlikely to build for other
|
|
|
|
systems without some work.</p></li>
|
|
|
|
<li><p>The build requires having a compiler that supports Ada, C and C++.
|
|
|
|
The Ada front-end is written in Ada so an Ada compiler is needed to
|
2008-02-16 09:47:41 +00:00
|
|
|
build it. Appropriate Ada compilers are gcc-4.2 (or earlier) or the
|
|
|
|
<a href="http://libre.adacore.com/">2006 GNAT GPL Edition</a>
|
|
|
|
(or earlier). As a general rule, the Ada compiler used for the
|
|
|
|
build must not be more recent than the Ada compiler it is building.
|
|
|
|
This is why the build fails with gcc-4.3 and the 2007 GNAT GPL Edition.
|
|
|
|
The LLVM parts of llvm-gcc are written in C++ so a C++ compiler is
|
|
|
|
needed to build them. The rest of gcc is written in C.
|
2008-02-14 17:53:22 +00:00
|
|
|
Some linux distributions provide a version of gcc that supports all
|
|
|
|
three languages (the Ada part often comes as an add-on package to
|
|
|
|
the rest of gcc). Otherwise it is possible to combine two versions
|
|
|
|
of gcc, one that supports Ada and C (such as the
|
|
|
|
<a href="http://libre.adacore.com/">2006 GNAT GPL Edition</a>)
|
|
|
|
and another which supports C++, see below.</p></li>
|
|
|
|
<li><p>Because the Ada front-end is experimental, it is wise to build the
|
|
|
|
compiler with checking enabled. This causes it to run slower, but
|
|
|
|
helps catch mistakes in the compiler (please report any problems using
|
|
|
|
<a href="http://llvm.org/bugs">LLVM bugzilla</a>).</p></li>
|
|
|
|
</ol>
|
|
|
|
|
|
|
|
<p>Supposing appropriate compilers are available, llvm-gcc with Ada support can
|
|
|
|
be built on an x86-32 linux box using the following recipe:</p>
|
|
|
|
|
|
|
|
<ol>
|
|
|
|
<li><p>Download the <a href="http://llvm.org/releases/download.html">LLVM source</a>
|
|
|
|
and unpack it:</p>
|
|
|
|
|
|
|
|
<div class="doc_code">
|
|
|
|
<pre>wget http://llvm.org/releases/2.2/llvm-2.2.tar.gz
|
|
|
|
tar xzf llvm-2.2.tar.gz
|
|
|
|
mv llvm-2.2 llvm</pre>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<p>or <a href="GettingStarted.html#checkout">check out the
|
|
|
|
latest version from subversion</a>:</p>
|
|
|
|
|
|
|
|
<div class="doc_code">
|
|
|
|
<pre>svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm</pre>
|
|
|
|
</div>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
<li><p>Download the
|
|
|
|
<a href="http://llvm.org/releases/download.html">llvm-gcc-4.2 source</a>
|
|
|
|
and unpack it:</p>
|
|
|
|
|
|
|
|
<div class="doc_code">
|
|
|
|
<pre>wget http://llvm.org/releases/2.2/llvm-gcc4.2-2.2.source.tar.gz
|
|
|
|
tar xzf llvm-gcc4.2-2.2.source.tar.gz
|
|
|
|
mv llvm-gcc4.2-2.2.source llvm-gcc-4.2</pre>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<p>or <a href="GettingStarted.html#checkout">check out the
|
|
|
|
latest version from subversion</a>:</p>
|
|
|
|
|
|
|
|
<div class="doc_code">
|
|
|
|
<pre>svn co http://llvm.org/svn/llvm-project/llvm-gcc-4.2/trunk llvm-gcc-4.2</pre>
|
|
|
|
</div>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
<li><p>Make a build directory <tt>llvm-objects</tt> for llvm and make it the
|
|
|
|
current directory:</p>
|
|
|
|
|
|
|
|
<div class="doc_code">
|
|
|
|
<pre>mkdir llvm-objects
|
|
|
|
cd llvm-objects</pre>
|
|
|
|
</div>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
<li><p>Configure LLVM (here it is configured to install into <tt>/usr/local</tt>):</p>
|
|
|
|
|
|
|
|
<div class="doc_code">
|
|
|
|
<pre>../llvm/configure --prefix=<b>/usr/local</b></pre>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<p>If you have a multi-compiler setup and the C++ compiler is not the
|
|
|
|
default, then you can configure like this:</p>
|
|
|
|
|
|
|
|
<div class="doc_code">
|
|
|
|
<pre>CXX=<b>PATH_TO_C++_COMPILER</b> ../llvm/configure --prefix=<b>/usr/local</b></pre>
|
|
|
|
</div>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
<li><p>Build LLVM with checking enabled (use <tt>ENABLE_OPTIMIZED=1</tt> to
|
|
|
|
build without checking):</p>
|
|
|
|
|
|
|
|
<div class="doc_code">
|
|
|
|
<pre>make ENABLE_OPTIMIZED=0</pre>
|
|
|
|
</div>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
<li><p>Install LLVM (optional):</p>
|
|
|
|
|
|
|
|
<div class="doc_code">
|
|
|
|
<pre>make install</pre>
|
|
|
|
</div>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
<li><p>Make a build directory <tt>llvm-gcc-4.2-objects</tt> for llvm-gcc and make it the
|
|
|
|
current directory:</p>
|
|
|
|
|
|
|
|
<div class="doc_code">
|
|
|
|
<pre>
|
|
|
|
cd ..
|
|
|
|
mkdir llvm-gcc-4.2-objects
|
|
|
|
cd llvm-gcc-4.2-objects</pre>
|
|
|
|
</div>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
<li><p>Configure llvm-gcc (here it is configured to install into <tt>/usr/local</tt>).
|
|
|
|
The <tt>--enable-checking</tt> flag turns on sanity checks inside the compiler.
|
|
|
|
If you omit it then LLVM must be built with <tt>make ENABLE_OPTIMIZED=1</tt>.
|
|
|
|
Additional languages can be appended to the --enable-languages switch,
|
|
|
|
for example <tt>--enable-languages=ada,c,c++</tt>.</p>
|
|
|
|
|
|
|
|
<div class="doc_code">
|
|
|
|
<pre>../llvm-gcc-4.2/configure --prefix=<b>/usr/local</b> --enable-languages=ada,c --enable-checking --enable-llvm=$PWD/../llvm-objects --disable-shared --disable-bootstrap --disable-multilib</pre>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<p>If you have a multi-compiler setup, then you can configure like this:</p>
|
|
|
|
<div class="doc_code">
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
export CC=<b>PATH_TO_C_AND_ADA_COMPILER</b>
|
|
|
|
export CXX=<b>PATH_TO_C++_COMPILER</b>
|
|
|
|
../llvm-gcc-4.2/configure --prefix=<b>/usr/local</b> --enable-languages=ada,c --enable-checking --enable-llvm=$PWD/../llvm-objects --disable-shared --disable-bootstrap --disable-multilib</pre>
|
|
|
|
</div>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
<li><p>Build and install the compiler:</p>
|
|
|
|
|
|
|
|
<div class="doc_code">
|
|
|
|
<pre>make
|
|
|
|
make install</pre>
|
|
|
|
</div>
|
|
|
|
</li>
|
|
|
|
</ol>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- *********************************************************************** -->
|
|
|
|
<div class="doc_section">
|
|
|
|
<a name="license">Building the Fortran front-end</a>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="doc_text">
|
|
|
|
<p>
|
|
|
|
To build with support for Fortran, follow the directions in the top-level
|
|
|
|
<tt>README.LLVM</tt> file, adding ",fortran" to EXTRALANGS, for example:</p>
|
|
|
|
|
|
|
|
<div class="doc_code">
|
|
|
|
<pre>
|
|
|
|
EXTRALANGS=,fortran
|
|
|
|
</pre>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- *********************************************************************** -->
|
|
|
|
<div class="doc_section">
|
|
|
|
<a name="license">License Information</a>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="doc_text">
|
|
|
|
<p>
|
|
|
|
The LLVM GCC frontend is licensed to you under the GNU General Public License
|
|
|
|
and the GNU Lesser General Public License. Please see the files COPYING and
|
|
|
|
COPYING.LIB for more details.
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
More information is <a href="FAQ.html#license">available in the FAQ</a>.
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- *********************************************************************** -->
|
|
|
|
|
|
|
|
<hr>
|
|
|
|
<address>
|
|
|
|
<a href="http://jigsaw.w3.org/css-validator/check/referer"><img
|
|
|
|
src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"></a>
|
|
|
|
<a href="http://validator.w3.org/check/referer"><img
|
|
|
|
src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!"></a>
|
|
|
|
|
|
|
|
<a href="http://llvm.org">LLVM Compiler Infrastructure</a><br>
|
|
|
|
Last modified: $Date$
|
|
|
|
</address>
|
|
|
|
|
|
|
|
</body>
|
|
|
|
</html>
|