| <!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.2, which is based | 
 | on the GCC 4.2.1 front-end.  Supported languages are Ada, C, C++, Fortran, | 
 | Objective-C and Objective-C++.  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-gcc-4.2-x.y.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.2 code | 
 |          for first time 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 | 
 |       build it.  Compilers known to work with the | 
 |       <a href="http://llvm.org/releases/download.html">LLVM 2.3 release</a> | 
 |       are <a href="http://gcc.gnu.org/releases.html">gcc-4.2</a> and the | 
 |       2005, 2006 and 2007 versions of the | 
 |       <a href="http://libre.adacore.com/">GNAT GPL Edition</a>. | 
 |       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. | 
 |       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/">2007 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 much 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.3/llvm-2.3.tar.gz | 
 | tar xzf llvm-2.3.tar.gz | 
 | mv llvm-2.3 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.3/llvm-gcc-4.2-2.3.source.tar.gz | 
 | tar xzf llvm-gcc-4.2-2.3.source.tar.gz | 
 | mv llvm-gcc4.2-2.3.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 ENABLE_OPTIMIZED=0 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 should 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-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-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> |