blob: 4fa793da135b551d644ae0b787d82515ff97e730 [file] [log] [blame]
//===----------------------------------------------------------------------===//
// Building llvm-gcc4 from Source
//===----------------------------------------------------------------------===//
These instructions describe how to build llvm-gcc-4.2.
Note that this should work on all the supported LLVM targets. If you run into
problems, please ask for help or file a bug.
Please follow these instructions carefully. In particular, the target-specific
configure instructions should be followed to ensure correct builds.
Please also note, that this branch is still in early development phase and can
be not usable at all.
//===----------------------------------------------------------------------===//
First Step: Build LLVM
//===----------------------------------------------------------------------===//
First, check out LLVM from Subversion, then build it in optimized mode (a
Release build, as opposed to a Debug one)):
make ENABLE_OPTIMIZED=1
If you use a Debug instead of a Release build of LLVM, make sure you add
--enable-checking to the configure flags below or llvm-gcc-4.2 will not build!
Below we assume the LLVM OBJ_ROOT is $LLVMOBJDIR.
//===----------------------------------------------------------------------===//
Unpack Front-end Source
//===----------------------------------------------------------------------===//
$ mkdir llvm-gcc
$ cd llvm-gcc
$ tar zxvf llvm-gcc4-x.y.source.tar.gz
//===----------------------------------------------------------------------===//
Target-Specific configure Instructions
//===----------------------------------------------------------------------===//
//===-----------------------
Linux-specific Instructions:
If llvm-gcc doesn't build right, try building LLVM with OPTIMIZE_OPTION=-O2.
This may be host compiler version specific.
If you get an error message building llvm-gcc like this:
...gcc/libgcc_s.so.1: version `GCC_4.2.0' not found (required by
/usr/lib/libstdc++.so.6)
you are probably hitting http://llvm.org/PR896. Please reconfigure with the
--disable-shared option to work around this.
If you want Fortran support:
EXTRALANGS=,fortran
//===-----------------------
X86-64/AMD-64/EM64-T for any OS other than Darwin/Mac OS X:
If you want just pure 64 bit compiler, configure with --disable-multilib.
//===-----------------------
Darwin/Mac OS X Instructions:
First step: Upgrade your Xcode installation: you need at least Xcode 2.4.
Next, decide if you want Objective-C support. If so:
EXTRALANGS=,objc,obj-c++
If building for Darwin/PPC:
TRIPLE=powerpc-apple-darwin8 (Tiger)
TRIPLE=powerpc-apple-darwin9 (Leopard)
If building for Darwin/X86 (32- and 64-bit support):
TARGETOPTIONS='--with-arch=nocona --with-tune=generic'
TRIPLE=i686-apple-darwin8 (Tiger)
TRIPLE=i686-apple-darwin9 (Leopard)
If building for Darwin/X86 (32-bit support only):
TARGETOPTIONS='--with-arch=pentium-m --with-tune=prescott --disable-multilib'
TRIPLE=i686-apple-darwin8 (Tiger)
TRIPLE=i686-apple-darwin9 (Leopard)
In addition, you *must* specify the following options to configure:
--with-gxx-include-dir=/usr/include/c++/4.0.0
--build=$TRIPLE --host=$TRIPLE --target=$TRIPLE
With these options, llvm-gcc will build the same way as Apple's system GCC.
If you want Fortran support, you need to do the following:
Get the GMP, MPFR, and libiconv via MacPorts.
You need to add fortran to the list of EXTRALANGS.
Then specify these additional options to configure:
--with-gmp=/opt/local
--with-mpfr=/opt/local
--with-libiconv-prefix=/opt/local
//===----------------------------------------------------------------------===//
Build Options
//===----------------------------------------------------------------------===//
Version Identifier:
If you want LLVM to include an identifying marker in the --version output,
build llvm-gcc with LLVM_VERSION_INFO=XXX. For example, to build the LLVM
2.5 Release front-end, use 'make LLVM_VERSION_INFO=2.5'. This will cause the
front-end to print: "gcc version 4.2.1 (Based on Apple Inc. build 5555)
(LLVM build 2.5)" as the version number.
BUILDOPTIONS=LLVM_VERSION_INFO=whatever
//===----------------------------------------------------------------------===//
Configure, Build, Install, Test
//===----------------------------------------------------------------------===//
Next, make an object directory and install directory as siblings to the
llvm-gcc source directory, and build and install llvm-gcc:
$ mkdir obj
$ mkdir install
$ cd obj
$ ../llvm-gcc4.2-x.y.source/configure --prefix=`pwd`/../install --program-prefix=llvm- \
--enable-llvm=$LLVMOBJDIR --enable-languages=c,c++$EXTRALANGS $TARGETOPTIONS
$ make $BUILDOPTIONS
$ make install
Note that it is currently necessary to use a separate object directory for
building llvm-gcc. Running configure and make from within the llvm-gcc
source directory does not work.
//===-----------------------
Darwin/Mac OS X Specific part:
$ ln -sf /usr/lib/libstdc++.6.dylib `pwd`/../install/lib
$ ln -sf /usr/lib/libstdc++.6.dylib `pwd`/../install/lib/libstdc++.dylib
That last step, "ln -sf ..." is required so that the linker (collect2) can find
libstdc++ ('-lstdc++') and subsequently link C++ executables correctly.
//===-----------------------
Note that if you prefer to bootstrap llvm-gcc (so that the final llvm-gcc
executables have been compiled with llvm-gcc itself), replace "make" with
"make bootstrap".
You should now have something like:
$ llvm-gcc -v
...
gcc version 4.2.1 (Based on Apple Inc. build 5555) (LLVM build)
** NOTE: If the -v line above doesn't include "LLVM", you probably mistyped the
--enable-llvm=xxx line and have a normal gcc, not an llvm-gcc.