-
-<pre>
- % cd build
- % ../src/configure --prefix=$CFEINSTALL --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>
-
- <ul>
- <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
- assembly, and install the modified versions in
- <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
- haven't tried yet, you will probably have to edit the appropriate
- version of atomicity.h under
- <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></li>
- </ul>
-
- <p><b>Porting to a new architecture:</b> If you are porting the new front-end
- to a new architecture, or compiling in a different configuration that we have
- previously, there are probably several changes you will have to make to the GCC
- target to get it to work correctly. These include:<p>
-
- <ul>
- <li>Often targets include special or assembler linker flags which
- <tt>gccas</tt>/<tt>gccld</tt> does not understand. In general, these can
- just be removed.</li>
- <li>LLVM currently does not support any floating point values other than
- 32-bit and 64-bit IEEE floating point. The primary effect of this is
- that you may have to map "long double" onto "double".</li>
- <li>The profiling hooks in GCC do not apply at all to the LLVM front-end.
- These may need to be disabled.</li>
- <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>
- </ul>
-</li>
-
-<li><p>Go back into the LLVM source tree proper. Edit Makefile.config
-to redefine <code>LLVMGCCDIR</code> to the full pathname of the
-<code>$CFEINSTALL</code> directory, which is the directory you just
-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></li>
-
-<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
-<code>$CFEINSTALL/<i>target-triplet</i>/sys-include</code> to
-<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
-libgcc.a library, which you can find by running
-<code>$CFEINSTALL/bin/gcc --print-libgcc-file-name</code>.)</p></li>
-
-<li><p>Build and install the runtime (bytecode) libraries by running:</p>
-<pre>
- % gmake -C runtime
- % mkdir $CFEINSTALL/bytecode-libs
- % gmake -C runtime install
- % setenv LLVM_LIB_SEARCH_PATH $CFEINSTALL/bytecode-libs
-</pre></li>
-
-<li><p>Test the newly-installed C frontend by one or more of the
-following means:</p>
- <ul>
- <li> compiling and running a "hello, LLVM" program in C and C++.</li>
- <li> running the tests under <tt>test/Programs</tt> using <code>gmake -C
- test/Programs</code></li>
- </ul>
- </p>
-</li>
-</ol>