-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.LLVM
174 lines (124 loc) · 6.63 KB
/
README.LLVM
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
//===----------------------------------------------------------------------===//
// 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:
To build a compiler that targets 32-bit x86, the following options should be
added to the configure line:
--target=i686-pc-linux-gnu --with-tune=generic --with-arch=pentium4
You can select a different arch string if you prefer, but it's important to
use this option to prevent llvm-gcc from defaulting to generic i386, which
can lead to problems as llvm itself doesn't support x86 targets lower
than i486.
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)
TRIPLE=x86_64-apple-darwin10 (Snow Leopard on a 64-bit machine)
TRIPLE=i686-apple-darwin10 (Snow Leopard on a 32-bit machine)
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)
TRIPLE=x86_64-apple-darwin10 (Snow Leopard on a 64-bit machine)
TRIPLE=i686-apple-darwin10 (Snow Leopard on a 32-bit machine)
The Triples are very important, otherwise your llvm-gcc/g++ may not be able
to find the header files below.
In addition, you *must* specify the following options to configure:
--with-gxx-include-dir=/usr/include/c++/4.0.0 (Leopard)
--with-gxx-include-dir=/usr/include/c++/4.2.1 (Snow Leopard)
--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.