diff --git a/docs/CFEBuildInstrs.html b/docs/CFEBuildInstrs.html new file mode 100644 index 00000000000..3dde111a5df --- /dev/null +++ b/docs/CFEBuildInstrs.html @@ -0,0 +1,140 @@ + +
+Instructions + |
This document is intended to explain the process of building the LLVM +C/C++ front-end, based on GCC 3.4, from source.
+ +NOTE: 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.
+ +We welcome patches to help make this process simpler.
+ +Configure and build the LLVM libraries and tools using:
++ % cd llvm + % ./configure [options...] + % gmake tools-only ++
The use of the non-default target "tools-only" means that the + LLVM tools and libraries will build, and the binaries will be + deposited in llvm/tools/Debug, but the runtime (bytecode) + libraries will not build.
+ +Add the directory containing the tools to your PATH.
++ % set path = ( `cd llvm/tools/Debug && pwd` $path ) ++ +
Unpack the C/C++ front-end source into cfrontend/src.
+ +Edit src/configure. Change the first line (starting w/ #!) to + contain the correct full pathname of sh.
+ +Make "build" and "install" directories as siblings of the "src" + tree.
++ % pwd + /usr/local/example/cfrontend/src + % cd .. + % mkdir build install + % set CFEINSTALL = `pwd`/install ++ +
Configure, build and install the C front-end:
++ % cd build + % ../src/configure --prefix=$CFEINSTALL --disable-nls --disable-shared \ + --enable-languages=c,c++ + % gmake all-gcc + % setenv LLVM_LIB_SEARCH_PATH `pwd`/gcc + % gmake all; gmake install ++ +
Common Problem 1: You may get error messages regarding the fact + that LLVM does not support inline assembly. Here are two common + fixes:
+ +Fix 1: 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
+ $CFEINSTALL/target-triplet/sys-include
.
src/libstdc++-v3/config/cpu/name-of-cpu/atomicity.h
+ and apply a patch so that it does not use inline assembly.
+ Common Problem 2: FIXME: Chris should add a section about + common problems porting to a new architecture, including changes you + might have to make to the gcc/gcc/config/name-of-cpu + directory. For example (expand these):
+ +Go back into the LLVM source tree proper. Edit Makefile.config
+to redefine LLVMGCCDIR
to the full pathname of the
+$CFEINSTALL
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.)
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
+$CFEINSTALL/target-triplet/sys-include
to
+$CFEINSTALL/lib/gcc/target-triplet/3.4-llvm/include
.
+(This should be the "include" directory in the same directory as the
+libgcc.a library, which you can find by running
+$CFEINSTALL/bin/gcc --print-libgcc-file-name
.)
Build and install the runtime (bytecode) libraries by running:
++ % gmake -C runtime + % mkdir $CFEINSTALL/bytecode-libs + % gmake -C runtime install + % setenv LLVM_LIB_SEARCH_PATH $CFEINSTALL/bytecode-libs ++ +
Test the newly-installed C frontend by one or more of the +following means:
+gmake -C
+ test/Programs
;
+