-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathllvm.sh
executable file
·124 lines (116 loc) · 3.62 KB
/
llvm.sh
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
#!/bin/bash -eu
source ./common.sh
if [[ -f $INSTALL_PREFIX/llvm/bin/clang ]]; then
exit 0
fi
source ./common/clone-llvm.sh
(
mkdir -p llvm-build-bootstrap
cd llvm-build-bootstrap
$CMAKE -GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=0 \
-DLLVM_INSTALL_TOOLCHAIN_ONLY=ON \
-DLLVM_TARGETS_TO_BUILD="$LLVM_ARCH" \
-DLLVM_INCLUDE_EXAMPLES=0 \
-DLLVM_INCLUDE_TESTS=0 \
-DLLVM_CXX_STD="c++20" \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DLLVM_ENABLE_WARNINGS=OFF \
-DLLVM_ENABLE_PIC=1 \
-DLLVM_ENABLE_UNWIND_TABLES=ON \
-DLLVM_ENABLE_EH=ON \
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_ENABLE_FFI=OFF \
-DLLVM_APPEND_VC_REV=OFF \
-DCLANG_DEFAULT_CXX_STDLIB:STRING=libc++ \
-DCLANG_DEFAULT_RTLIB:STRING=libgcc \
-DLIBCXX_ENABLE_STATIC=ON \
-DLIBCXX_ENABLE_SHARED=OFF \
-DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON \
-DLIBCXX_ENABLE_SHARED_ABI_LIBRARY=OFF \
-DLIBCXX_ABI_ENABLE_STATIC=ON \
-DLIBCXX_ABI_UNSTABLE=ON \
-DLIBCXX_USE_COMPILER_RT=OFF \
-DLIBCXXABI_USE_COMPILER_RT=OFF \
-DLIBUNWIND_USE_COMPILER_RT=OFF \
-DLLVM_ENABLE_LIBPFM=OFF \
-DLLVM_ENABLE_TERMINFO=OFF \
-DLLVM_ENABLE_PROJECTS="clang;lld;polly" \
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \
-DLLVM_ENABLE_OCAMLDOC=OFF \
-DLLVM_ENABLE_BINDINGS=0 \
-DLLVM_INCLUDE_BENCHMARKS=0 \
-DCMAKE_INSTALL_PREFIX=$SDK_ROOT/llvm-bootstrap \
$LLVM_ADDITIONAL_FLAGS \
../llvm/llvm
$CMAKE --build .
$CMAKE --build . --target install/strip
)
# LLVM is bootstrapped so that it is all built with the same libc++ version
(
mkdir -p llvm-build
cd llvm-build
export PATH=$SDK_ROOT/llvm-bootstrap/bin:$PATH
export LD_LIBRARY_PATH=$SDK_ROOT/llvm-bootstrap/lib:$SDK_ROOT/llvm-bootstrap/lib/x86_64-unknown-linux-gnu:$LD_LIBRARY_PATH
echo $LD_LIBRARY_PATH
$CMAKE -GNinja \
-DCMAKE_C_COMPILER=$SDK_ROOT/llvm-bootstrap/bin/clang \
-DCMAKE_CXX_COMPILER=$SDK_ROOT/llvm-bootstrap/bin/clang++ \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DCMAKE_CXX_FLAGS="$CXXFLAGS -stdlib=libc++" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DBUILD_SHARED_LIBS=0 \
-DLLVM_ENABLE_WARNINGS=OFF \
-DLLVM_INCLUDE_TOOLS=1 \
-DLLVM_BUILD_TOOLS=1 \
-DLLVM_INCLUDE_EXAMPLES=0 \
-DLLVM_INCLUDE_TESTS=0 \
-DLLVM_CXX_STD="c++20" \
-DLLVM_TARGETS_TO_BUILD="$LLVM_ARCH" \
-DLLVM_APPEND_VC_REV=OFF \
-DLLVM_ENABLE_OCAMLDOC=OFF \
-DLLVM_ENABLE_BINDINGS=0 \
-DLLVM_INCLUDE_BENCHMARKS=0 \
-DLLVM_ENABLE_LIBEDIT=0 \
-DLLVM_ENABLE_LIBXML2=0 \
-DLLVM_ENABLE_LIBPFM=0 \
-DLLVM_ENABLE_HTTPLIB=0 \
-DLLVM_ENABLE_CURSES=0 \
-DLLVM_ENABLE_LIBPFM=OFF \
-DLLVM_ENABLE_TERMINFO=0 \
-DLLVM_ENABLE_ZSTD=0 \
-DLLVM_ENABLE_LIBCXX=ON \
-DLLVM_ENABLE_LLD=ON \
-DLLVM_ENABLE_UNWIND_TABLES=ON \
-DLLVM_ENABLE_EH=ON \
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_ENABLE_PROJECTS="clang;lld;polly" \
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \
-DCLANG_DEFAULT_CXX_STDLIB:STRING=libc++ \
-DCLANG_DEFAULT_RTLIB:STRING=libgcc \
-DLIBCXX_ENABLE_STATIC=ON \
-DLIBCXX_ENABLE_SHARED=OFF \
-DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON \
-DLIBCXX_ENABLE_SHARED_ABI_LIBRARY=OFF \
-DLIBCXX_ABI_ENABLE_STATIC=ON \
-DLIBCXX_ABI_UNSTABLE=ON \
-DLIBCXX_CXX_ABI=libcxxabi \
-DLIBCXX_USE_COMPILER_RT=OFF \
-DLIBCXXABI_USE_LLVM_UNWINDER=OFF \
-DLIBCXXABI_ENABLE_STATIC_UNWINDER=OFF \
-DLIBCXXABI_USE_COMPILER_RT=OFF \
-DLIBUNWIND_USE_COMPILER_RT=OFF \
-DCOMPILER_RT_USE_BUILTINS_LIBRARY=OFF \
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
-DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX/llvm \
$LLVM_ADDITIONAL_FLAGS \
../llvm/llvm
$CMAKE --build . --parallel
$CMAKE --build . --target install/strip
)
(
cd $INSTALL_PREFIX/llvm
ln -s lib lib64 || true
)