This repository has been archived by the owner on Jan 1, 2023. It is now read-only.
/
build
executable file
·80 lines (68 loc) · 2.39 KB
/
build
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
#!/bin/sh -e
sed 's/set(COMPILER_RT_HAS_SANITIZER_COMMON TRUE)/set(COMPILER_RT_HAS_SANITIZER_COMMON FALSE)/' compiler-rt/cmake/config-ix.cmake > _
mv -f _ compiler-rt/cmake/config-ix.cmake
export DESTDIR="$1"
cmake -B build \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_BUILD_LLVM_DYLIB=ON \
-DLLVM_LINK_LLVM_DYLIB=ON \
-DLLVM_TARGETS_TO_BUILD="host;AMDGPU" \
-DLLVM_ENABLE_PROJECTS="clang;compiler-rt;libunwind;libcxxabi;libcxx;lld" \
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_ENABLE_EH=ON \
-DLLVM_ENABLE_TERMINFO=OFF \
-DLLVM_ENABLE_LIBXML2=OFF \
-DLLVM_ENABLE_LIBEDIT=OFF \
-DLLVM_ENABLE_ZLIB=OFF \
-DLLVM_HOST_TRIPLE="$(clang -dumpmachine)" \
-DLLVM_INCLUDE_BENCHMARKS=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_INCLUDE_DOCS=OFF \
-DLLVM_INCLUDE_TESTS=OFF \
-DLLVM_ENABLE_LIBCXX=ON \
-DLLVM_ENABLE_LLD=ON \
-DLLVM_INSTALL_BINUTILS_SYMLINKS=ON \
-DLIBUNWIND_USE_COMPILER_RT=ON \
-DLIBCXXABI_USE_LLVM_UNWINDER=ON \
-DLIBCXXABI_USE_COMPILER_RT=ON \
-DLIBCXXABI_ENABLE_STATIC_UNWINDER=ON \
-DLIBCXXABI_STATICALLY_LINK_UNWINDER_IN_SHARED_LIBRARY=ON \
-DLIBCXXABI_ENABLE_SHARED=OFF \
-DLIBCXX_CXX_ABI=libcxxabi \
-DLIBCXX_USE_COMPILER_RT=ON \
-DLIBCXX_HAS_MUSL_LIBC=ON \
-DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=ON \
-DLIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY=ON \
-DLIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY=ON \
-DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON \
-DCOMPILER_RT_EXCLUDE_ATOMIC_BUILTIN=OFF \
-DCLANG_DEFAULT_CXX_STDLIB=libc++ \
-DCLANG_DEFAULT_RTLIB=compiler-rt \
-Wno-dev llvm
cmake --build build
cmake --install build
# libc++abi header files
mkdir -p "$1/usr"
cp -r libcxxabi/include "$1/usr"
# LLD: Replace GNU binutils
ln -s ld.lld "$1/usr/bin/ld"
# Clang: Some legacy programs may require cc
ln -s clang "$1/usr/bin/cc"
# Clang: equivalent for c++
ln -s clang++ "$1/usr/bin/c++"
# Clang: equivalent for cpp
ln -s clang-cpp "$1/usr/bin/cpp"
# Clang: POSIX compliance
cp -f c99 "$1/usr/bin/c99"
# Clang: Override libexec, the path is hardcoded, unfortunately.
mv -f \
"$1/usr/libexec/"*analyze* \
"$1/usr/libexec/"*intercept* \
"$1/usr/lib/clang"
rmdir "$1/usr/libexec"
sed "s|libexec|lib/clang|" "$1/usr/bin/scan-build" > _
mv -f _ "$1/usr/bin/scan-build"
chmod +x "$1/usr/bin/scan-build"