* Use UTF-8 instead of ISO-8859-1

* Use stylesheet instead of explicit <font> formatting
* Stop using <ul> for layout
* Close <li> tags


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9393 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Misha Brukman 2003-10-23 01:48:33 +00:00
parent cd11e45d61
commit 83bd33a814

View File

@ -1,17 +1,15 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>Bootstrapping the C/C++ Front-End</title></head> <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>Bootstrapping the C/C++ Front-End</title>
</head>
<body>
<body bgcolor=white> <div class="doc_title">
<center><h1><font size=7>Bootstrapping the C/C++ Front-End</font></h1></center> Bootstrapping the C/C++ Front-End
</div>
<br><br>
<!-- *********************************************************************** -->
<table width="100%" bgcolor="#330077" border=0 cellpadding=4 cellspacing=0>
<tr><td align=center><font color="#EEEEFF" size=+2 face="Georgia,Palatino"><b>
<a name="instructions">Instructions
</b></font></td></tr></table><ul>
<!-- *********************************************************************** -->
<p>This document is intended to explain the process of building the LLVM <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> C/C++ front-end, based on GCC 3.4, from source.</p>
@ -23,6 +21,14 @@ good GCC hacker.</p>
<p>We welcome patches to help make this process simpler.</p> <p>We welcome patches to help make this process simpler.</p>
<!-- *********************************************************************** -->
<div class="doc_section">
<a name="instructions">Instructions</a>
</div>
<!-- *********************************************************************** -->
<div class="doc_text">
<p>
<ol> <ol>
<li><p>Configure and build the LLVM libraries and tools using:</p> <li><p>Configure and build the LLVM libraries and tools using:</p>
<pre> <pre>
@ -33,17 +39,17 @@ good GCC hacker.</p>
<p>The use of the non-default target "tools-only" means that the <p>The use of the non-default target "tools-only" means that the
LLVM tools and libraries will build, and the binaries will be LLVM tools and libraries will build, and the binaries will be
deposited in llvm/tools/Debug, but the runtime (bytecode) deposited in llvm/tools/Debug, but the runtime (bytecode)
libraries will not build.</p> libraries will not build.</p></li>
<li><p>Add the directory containing the tools to your PATH.</p> <li><p>Add the directory containing the tools to your PATH.</p>
<pre> <pre>
% set path = ( `cd llvm/tools/Debug && pwd` $path ) % set path = ( `cd llvm/tools/Debug &amp;&amp; pwd` $path )
</pre> </pre></li>
<li><p>Unpack the C/C++ front-end source into cfrontend/src.</p> <li><p>Unpack the C/C++ front-end source into cfrontend/src.</p></li>
<li><p>Edit src/configure. Change the first line (starting w/ #!) to <li><p>Edit src/configure. Change the first line (starting w/ #!) to
contain the correct full pathname of sh.</p> contain the correct full pathname of sh.</p></li>
<li><p>Make "build" and "install" directories as siblings of the "src" <li><p>Make "build" and "install" directories as siblings of the "src"
tree.</p> tree.</p>
@ -53,7 +59,7 @@ good GCC hacker.</p>
% cd .. % cd ..
% mkdir build install % mkdir build install
% set CFEINSTALL = `pwd`/install % set CFEINSTALL = `pwd`/install
</pre> </pre></li>
<li><p>Configure, build and install the C front-end:</p> <li><p>Configure, build and install the C front-end:</p>
<pre> <pre>
@ -73,34 +79,36 @@ good GCC hacker.</p>
<li><p><b>Fix 1:</b> If you have system header files that include <li><p><b>Fix 1:</b> If you have system header files that include
inline assembly, you may have to modify them to remove the inline inline assembly, you may have to modify them to remove the inline
assembly, and install the modified versions in assembly, and install the modified versions in
<code>$CFEINSTALL/<i>target-triplet</i>/sys-include</code>.</p> <code>$CFEINSTALL/<i>target-triplet</i>/sys-include</code>.</p></li>
<li><b>Fix 2:</b> If you are building the C++ front-end on a CPU we <li><b>Fix 2:</b> If you are building the C++ front-end on a CPU we
haven't tried yet, you will probably have to edit the appropriate haven't tried yet, you will probably have to edit the appropriate
version of atomicity.h under version of atomicity.h under
<code>src/libstdc++-v3/config/cpu/<i>name-of-cpu</i>/atomicity.h</code> <code>src/libstdc++-v3/config/cpu/<i>name-of-cpu</i>/atomicity.h</code>
and apply a patch so that it does not use inline assembly.</p> and apply a patch so that it does not use inline assembly.</p></li>
</ul> </ul>
<p><b>Common Problem 2:</b> <b>FIXME:</b> Chris should add a section about <p><b>Common Problem 2:</b> <b>FIXME:</b> Chris should add a section about
common problems porting to a new architecture, including changes you common problems porting to a new architecture, including changes you
might have to make to the gcc/gcc/config/<i>name-of-cpu</i> might have to make to the <tt>gcc/gcc/config/<i>name-of-cpu</i></tt>
directory. For example (expand these):</p> directory. For example (expand these):</p>
<ul> <ul>
<li>Munge linker flags so they are compatible with gccld. <li>Munge linker flags so they are compatible with <tt>gccld</tt>.</li>
<li>Change the target so it doesn't have long double; just use double <li>Change the target so it doesn't have long double; just use double
instead. instead.</li>
<li>No inline assembly for position independent code. <li>No inline assembly for position independent code.</li>
<li>We handle init and fini differently. <li>We handle init and fini differently.</li>
<li>Do not include inline assembly map things for SPARC, or profile things. <li>Do not include inline assembly map things for SPARC, or profile
things.</li>
</ul> </ul>
</li>
<li><p>Go back into the LLVM source tree proper. Edit Makefile.config <li><p>Go back into the LLVM source tree proper. Edit Makefile.config
to redefine <code>LLVMGCCDIR</code> to the full pathname of the to redefine <code>LLVMGCCDIR</code> to the full pathname of the
<code>$CFEINSTALL</code> directory, which is the directory you just <code>$CFEINSTALL</code> directory, which is the directory you just
installed the C front-end into. (The ./configure script is likely to installed the C front-end into. (The ./configure script is likely to
have set this to a directory which does not exist on your system.)</p> have set this to a directory which does not exist on your system.)</p></li>
<li><p>If you edited header files during the C/C++ front-end build as <li><p>If you edited header files during the C/C++ front-end build as
described in "Fix 1" above, you must now copy those header files from described in "Fix 1" above, you must now copy those header files from
@ -108,7 +116,7 @@ described in "Fix 1" above, you must now copy those header files from
<code>$CFEINSTALL/lib/gcc/<i>target-triplet</i>/3.4-llvm/include</code>. <code>$CFEINSTALL/lib/gcc/<i>target-triplet</i>/3.4-llvm/include</code>.
(This should be the "include" directory in the same directory as the (This should be the "include" directory in the same directory as the
libgcc.a library, which you can find by running libgcc.a library, which you can find by running
<code>$CFEINSTALL/bin/gcc --print-libgcc-file-name</code>.)</p> <code>$CFEINSTALL/bin/gcc --print-libgcc-file-name</code>.)</p></li>
<li><p>Build and install the runtime (bytecode) libraries by running:</p> <li><p>Build and install the runtime (bytecode) libraries by running:</p>
<pre> <pre>
@ -116,25 +124,26 @@ libgcc.a library, which you can find by running
% mkdir $CFEINSTALL/bytecode-libs % mkdir $CFEINSTALL/bytecode-libs
% gmake -C runtime install % gmake -C runtime install
% setenv LLVM_LIB_SEARCH_PATH $CFEINSTALL/bytecode-libs % setenv LLVM_LIB_SEARCH_PATH $CFEINSTALL/bytecode-libs
</pre> </pre></li>
<li><p>Test the newly-installed C frontend by one or more of the <li><p>Test the newly-installed C frontend by one or more of the
following means:</p> following means:</p>
<ul> <ul>
<li> compiling and running a "hello, world" program in C or C++. <li> compiling and running a "hello, world" program in C or C++.</li>
<li> running the tests under test/Programs using <code>gmake -C <li> running the tests under test/Programs using <code>gmake -C
test/Programs</code>; test/Programs</code></li>
</ul> </ul>
</p> </p>
</li>
</ol> </ol>
</div>
<!-- *********************************************************************** -->
</ul>
<!-- *********************************************************************** --> <!-- *********************************************************************** -->
<hr><font size-1> <hr><font size="-1">
<address><a href="mailto:gaeke -at- uiuc.edu">Brian Gaeke</a></address> <address><a href="mailto:gaeke -at- uiuc.edu">Brian Gaeke</a></address>
Last modified: $Date$ Last modified: $Date$
</font></body></html> </font>
</body>
</html>