]> git.armaanb.net Git - asd-repo.git/blob - core/llvm/build
Restructure repository
[asd-repo.git] / core / llvm / build
1 #!/bin/sh -e
2
3 python -m venv venv
4 . venv/bin/activate
5 pip install sphinx recommonmark
6
7 sed -i 's/!defined(_GCC_MAX_ALIGN_T)/& \&\& !defined(__DEFINED_max_align_t)/' libcxx/include/stddef.h
8 sed -i 's/set(COMPILER_RT_HAS_SANITIZER_COMMON TRUE)/set(COMPILER_RT_HAS_SANITIZER_COMMON FALSE)/' compiler-rt/cmake/config-ix.cmake
9 sed -i 's|\.lldb|.local/state/lldb|g' lldb/source/Host/common/Editline.cpp
10
11 export DESTDIR="$1"
12 cmake \
13     -G "Ninja" \
14     -B build \
15     -DCLANG_DEFAULT_CXX_STDLIB=libc++ \
16     -DCLANG_DEFAULT_RTLIB=compiler-rt \
17     -DCMAKE_BUILD_TYPE=Release \
18     -DCMAKE_C_COMPILER=clang \
19     -DCMAKE_INSTALL_PREFIX=/usr \
20     -DCOMPILER_RT_EXCLUDE_ATOMIC_BUILTIN=OFF \
21     -DCOMPILER_RT_USE_BUILTINS_LIBRARY=ON \
22     -DLIBCXXABI_USE_COMPILER_RT=ON \
23     -DLIBCXXABI_USE_LLVM_UNWINDER=ON \
24     -DLIBCXX_CXX_ABI=libcxxabi \
25     -DLIBCXX_HAS_ATOMIC_LIB=OFF \
26     -DLIBCXX_HAS_MUSL_LIBC=ON \
27     -DLIBCXX_USE_COMPILER_RT=ON \
28     -DLIBUNWIND_USE_COMPILER_RT=ON \
29     -DLLDB_ENABLE_CURSES=ON \
30     -DLLDB_ENABLE_LIBEDIT=ON \
31     -DLLVM_BUILD_DOCS=ON \
32     -DLLVM_BUILD_EXAMPLES=OFF \
33     -DLLVM_BUILD_LLVM_DYLIB=ON \
34     -DLLVM_BUILD_TESTS=OFF \
35     -DLLVM_ENABLE_EH=ON \
36     -DLLVM_ENABLE_LIBCXX=ON \
37     -DLLVM_ENABLE_LIBEDIT=ON \
38     -DLLVM_ENABLE_LIBXML2=OFF \
39     -DLLVM_ENABLE_PROJECTS="clang;compiler-rt;libunwind;libcxxabi;libcxx;lld;lldb" \
40     -DLLVM_ENABLE_RTTI=ON \
41     -DLLVM_ENABLE_SPHINX=ON \
42     -DLLVM_ENABLE_TERMINFO=OFF \
43     -DLLVM_HOST_TRIPLE="$(clang -dumpmachine)" \
44     -DLLVM_INCLUDE_DOCS=ON \
45     -DLLVM_INSTALL_BINUTILS_SYMLINKS=ON \
46     -DLLVM_LINK_LLVM_DYLIB=ON \
47     -DLLVM_TARGETS_TO_BUILD="host;AMDGPU" \
48     -DSPHINX_OUTPUT_MAN=ON \
49     -DSPHINX_WARNINGS_AS_ERRORS=OFF \
50     -Wno-dev \
51     llvm
52
53 cmake --build build
54 cmake --install build
55
56 # libc++abi header files
57 mkdir -p "$1/usr"
58 cp -r libcxxabi/include "$1/usr"
59
60 ln -s ld.lld "$1/usr/bin/ld"
61 ln -s clang "$1/usr/bin/cc"
62 ln -s clang++ "$1/usr/bin/c++"
63 ln -s clang++ "$1/usr/bin/cpp"
64
65 for i in \
66     llvm-addr2line \
67     llvm-ar \
68     llvm-as \
69     llvm-dlltool \
70     llvm-nm \
71     llvm-objdump \
72     llvm-ranlib \
73     llvm-readelf \
74     llvm-size \
75     llvm-strings \
76     llvm-strip
77     do
78         to="$1/usr/bin/$(printf %s "$i" | cut -d "-" -f 2)"
79         ln -sf "/usr/bin/$i" "$to"
80 done
81
82 install -m755 c99 "$1/usr/bin/c99"
83
84 # Clang: Override libexec, the path is hardcoded, unfortunately.
85 mv -f "$1/usr/libexec/ccc-analyzer" "$1/usr/lib/clang"
86 mv -f "$1/usr/libexec/c++-analyzer" "$1/usr/lib/clang"
87 rmdir "$1/usr/libexec"
88 sed -i "s|libexec|lib/clang|" "$1/usr/bin/scan-build"
89
90 rm -rf \
91     "$1/usr/share/opt-viewer" \
92     "$1/usr/share/scan-view" \
93     "$1/usr/share/scan-build" \