From 46079d2274de38bd08ea7f731726d1a5a1296b75 Mon Sep 17 00:00:00 2001
From: Brian Gaeke 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: 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. 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. Configure, build and install the C front-end: 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
+ Bootstrapping the C/C++ Front-End
+
+
+
+
+Instructions
+
+
+
+
+
+ % cd llvm
+ % ./configure [options...]
+ % gmake tools-only
+
+
+ % set path = ( `cd llvm/tools/Debug && pwd` $path )
+
+
+
+ % pwd
+ /usr/local/example/cfrontend/src
+ % cd ..
+ % mkdir build install
+ % set CFEINSTALL = `pwd`/install
+
+
+
+ % 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
+
+
+
+
$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
;
+