Fixed a comma error.
[oota-llvm.git] / docs / CFEBuildInstrs.html
index 080153f..be844b9 100644 (file)
@@ -3,23 +3,46 @@
 <head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
   <link rel="stylesheet" href="llvm.css" type="text/css" media="screen" />
-  <title>Bootstrapping the C/C++ Front-End</title>
+  <title>Bootstrapping the LLVM C/C++ Front-End</title>
 </head>
 <body>
 
 <div class="doc_title">
-  Bootstrapping the C/C++ Front-End
+  Bootstrapping the LLVM C/C++ Front-End
 </div>
 
-<p>This document is intended to explain the process of building the LLVM
-C/C++ front-end, based on GCC 3.4, from source.</p>
+<ol>
+  <li><a href="#cautionarynote">A Cautionary Note</a>
+  <li><a href="#instructions">Instructions</a>
+</ol>
+
+<div class="doc_text">    
+  <p><b>Written by Brian R. Gaeke</b></p>
+</div>
+
+<!-- *********************************************************************** -->
+<div class="doc_section">
+  <a name="cautionarynote">A Cautionary Note</a>
+</div>
+<!-- *********************************************************************** -->
+
+<div class="doc_text">
+<p>This document is intended to explain the process of building the
+LLVM C/C++ front-end, based on GCC 3.4, from its source code. You
+would have to do this, for example, if you are porting LLVM to a new
+architecture or operating system.</p>
 
 <p><b>NOTE:</b> This is currently a somewhat fragile, error-prone
-process, and you should only try to do it if (A) you really, really,
-really can't use the binaries we distribute, and (B) you are a wicked
-good GCC hacker.</p>
+process, and you should <b>only</b> try to do it if:</p>
+
+<ol>
+  <li>you really, really, really can't use the binaries we distribute</li>
+  <li>you need GCC to fix some of the header files on your system</li>
+  <li>you are an elite GCC hacker.</li>
+</ol>
 
 <p>We welcome patches to help make this process simpler.</p>
+</div>
 
 <!-- *********************************************************************** -->
 <div class="doc_section">
@@ -61,16 +84,39 @@ good GCC hacker.</p>
  % set CFEINSTALL = `pwd`/install
 </pre></li>
 
-<li><p>Configure, build and install the C front-end:</p>
+<li><p>Configure, build, and install the C front-end:</p>
+
+<p>
+<b>Linux/x86:</b>
+</p>
+
 <pre>
  % cd build
- % ../src/configure --prefix=$CFEINSTALL --disable-nls --disable-shared \
+ % ../src/configure --prefix=$CFEINSTALL --disable-threads --disable-nls --disable-shared \
    --enable-languages=c,c++
  % gmake all-gcc
  % setenv LLVM_LIB_SEARCH_PATH `pwd`/gcc 
  % gmake all; gmake install
 </pre>
 
+<p>
+<b>Solaris/Sparc:</b>
+</p>
+
+<p>
+For Solaris/Sparc, LLVM only supports SparcV9.  Therefore, the configure
+command line should like something like this:
+</p>
+
+<pre>
+ % cd build
+ % ../src/configure --prefix=$CFEINSTALL --disable-threads --disable-nls --disable-shared \
+   --enable-languages=c,c++ --host=sparcv9-sun-solaris2.8
+ % gmake all-gcc
+ % setenv LLVM_LIB_SEARCH_PATH `pwd`/gcc 
+ % gmake all; gmake install
+</pre>
+
  <p><b>Common Problem:</b> You may get error messages regarding the fact
  that LLVM does not support inline assembly. Here are two common
  fixes:</p>
@@ -105,6 +151,11 @@ good GCC hacker.</p>
   <li>No inline assembly for position independent code.  At the LLVM level,
       everything is position independent.</li>
   <li>We handle <tt>.init</tt> and <tt>.fini</tt> differently.</li>
+  <li>You may have to disable multilib support in your target.  Using multilib
+      support causes the GCC compiler driver to add a lot of "<tt>-L</tt>"
+      options to the link line, which do not relate to LLVM and confuse
+      <tt>gccld</tt>.  To disable multilibs, delete any
+      <tt>MULTILIB_OPTIONS</tt> lines from your target files.</li>
   <li>Did we mention that we don't support inline assembly?  You'll probably
       have to add some fixinclude hacks to disable it in the system
       headers.</li>
@@ -147,10 +198,13 @@ following means:</p>
 
 <!-- *********************************************************************** -->
 
-<hr><font size="-1">
-<address><a href="mailto:gaeke -at- uiuc.edu">Brian Gaeke</a></address>
-Last modified: $Date$
-</font>
+<hr>
+<div class="doc_footer">
+  <address>Brian Gaeke</address>
+  <a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
+  <br>
+  Last modified: $Date$
+</div>
 
 </body>
 </html>