summaryrefslogtreecommitdiffstats
path: root/llvm-toolchain/MAKEPKG-amdgpu
diff options
context:
space:
mode:
Diffstat (limited to 'llvm-toolchain/MAKEPKG-amdgpu')
-rw-r--r--llvm-toolchain/MAKEPKG-amdgpu214
1 files changed, 214 insertions, 0 deletions
diff --git a/llvm-toolchain/MAKEPKG-amdgpu b/llvm-toolchain/MAKEPKG-amdgpu
new file mode 100644
index 0000000..8e74aea
--- /dev/null
+++ b/llvm-toolchain/MAKEPKG-amdgpu
@@ -0,0 +1,214 @@
1# Description: Complete LLVM toolchain (clang, lld, compiler-rt, libc++, libunwind)
2# URL: https://llvm.org/
3# Maintainer: zorz, zorz at gmx dot com
4
5name=llvm-toolchain
6version=21.1.8
7release=1
8
9depends=(libffi zlib zstd libedit ncurses)
10makedeps=(cmake ninja python perl musl libgmp libmpfr libmpc)
11
12source=(
13 https://ftp.gnu.org/gnu/gcc/gcc-14.2.0/gcc-14.2.0.tar.xz
14 https://github.com/llvm/llvm-project/releases/download/llvmorg-$version/llvm-project-$version.src.tar.xz
15)
16
17build() {
18 GCC_VERSION=14.2.0
19 BOOTSTRAP=$SRC/bootstrap
20
21 #################################
22 # Bootstrap: GCC
23 #################################
24 mkdir -p gcc-build && cd gcc-build
25 $SRC/gcc-$GCC_VERSION/configure \
26 --prefix=$BOOTSTRAP \
27 --enable-languages=c,c++ \
28 --disable-nls \
29 --disable-multilib \
30 --disable-bootstrap \
31 --disable-libsanitizer \
32 --disable-libssp \
33 --disable-werror \
34 --with-system-zlib \
35 --build=x86_64-unknown-linux-musl \
36 --host=x86_64-unknown-linux-musl \
37 --target=x86_64-unknown-linux-musl
38 make -j$(nproc)
39 make install
40 cd $SRC
41
42 mv llvm-project-$version.src llvm-project
43
44 #################################
45 # Stage 0: clang + lld (with GCC)
46 #################################
47 cmake -S llvm-project/llvm -B build-stage0 -G Ninja \
48 -DCMAKE_BUILD_TYPE=Release \
49 -DCMAKE_C_COMPILER=$BOOTSTRAP/bin/gcc \
50 -DCMAKE_CXX_COMPILER=$BOOTSTRAP/bin/g++ \
51 -DLLVM_ENABLE_PROJECTS="clang;lld" \
52 -DLLVM_TARGETS_TO_BUILD="X86" \
53 -DLLVM_HOST_TRIPLE=x86_64-unknown-linux-musl \
54 -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-unknown-linux-musl \
55 -DLLVM_BUILD_LLVM_DYLIB=ON \
56 -DLLVM_LINK_LLVM_DYLIB=ON \
57 -DLLVM_INCLUDE_TESTS=OFF \
58 -DLLVM_INCLUDE_BENCHMARKS=OFF
59
60 ninja -C build-stage0
61
62 #################################
63 # Stage 1: compiler-rt (standalone)
64 #################################
65 cmake -S llvm-project/compiler-rt -B build-rt -G Ninja \
66 -DCMAKE_BUILD_TYPE=Release \
67 -DCMAKE_INSTALL_PREFIX=$SRC/build-stage0/lib/clang/21 \
68 -DCMAKE_C_COMPILER=$SRC/build-stage0/bin/clang \
69 -DCMAKE_CXX_COMPILER=$SRC/build-stage0/bin/clang++ \
70 -DCMAKE_C_FLAGS="--gcc-toolchain=$BOOTSTRAP" \
71 -DCMAKE_CXX_FLAGS="--gcc-toolchain=$BOOTSTRAP" \
72 -DCMAKE_C_COMPILER_TARGET=x86_64-unknown-linux-musl \
73 -DCMAKE_CXX_COMPILER_TARGET=x86_64-unknown-linux-musl \
74 -DCMAKE_MODULE_PATH="$SRC/llvm-project/cmake/Modules;$SRC/llvm-project/llvm/cmake/modules" \
75 -DLLVM_CMAKE_DIR=$SRC/build-stage0/lib/cmake/llvm \
76 -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=ON \
77 -DCOMPILER_RT_BUILD_BUILTINS=ON \
78 -DCOMPILER_RT_BUILD_SANITIZERS=OFF \
79 -DCOMPILER_RT_BUILD_XRAY=OFF \
80 -DCOMPILER_RT_BUILD_GWP_ASAN=OFF \
81 -DCOMPILER_RT_BUILD_MEMPROF=OFF \
82 -DCOMPILER_RT_BUILD_PROFILE=OFF \
83 -DCOMPILER_RT_BUILD_LIBFUZZER=OFF \
84 -DCOMPILER_RT_BUILD_CTX_PROFILE=OFF \
85 -DCOMPILER_RT_BUILD_ORC=OFF \
86 -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \
87 -DCOMPILER_RT_INCLUDE_TESTS=OFF
88
89 ninja -C build-rt
90 ninja -C build-rt install
91
92 #################################
93 # Stage 2: libunwind (standalone)
94 #################################
95 cmake -S llvm-project/runtimes -B build-unwind -G Ninja \
96 -DCMAKE_BUILD_TYPE=Release \
97 -DCMAKE_INSTALL_PREFIX=$SRC/stage0-sysroot/usr \
98 -DCMAKE_C_COMPILER=$SRC/build-stage0/bin/clang \
99 -DCMAKE_CXX_COMPILER=$SRC/build-stage0/bin/clang++ \
100 -DCMAKE_C_FLAGS="--gcc-toolchain=$BOOTSTRAP" \
101 -DCMAKE_CXX_FLAGS="--gcc-toolchain=$BOOTSTRAP" \
102 -DLLVM_ENABLE_LLD=ON \
103 -DLLVM_CMAKE_DIR=$SRC/build-stage0/lib/cmake/llvm \
104 -DLLVM_ENABLE_RUNTIMES="libunwind" \
105 -DLIBUNWIND_USE_COMPILER_RT=ON \
106 -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF
107
108 ninja -C build-unwind
109 ninja -C build-unwind install
110
111 #################################
112 # Stage 3: libc++ (with libunwind)
113 #################################
114 cmake -S llvm-project/runtimes -B build-cxx -G Ninja \
115 -DCMAKE_BUILD_TYPE=Release \
116 -DCMAKE_INSTALL_PREFIX=$SRC/stage0-sysroot/usr \
117 -DCMAKE_C_COMPILER=$SRC/build-stage0/bin/clang \
118 -DCMAKE_CXX_COMPILER=$SRC/build-stage0/bin/clang++ \
119 -DCMAKE_C_FLAGS="--gcc-toolchain=$BOOTSTRAP" \
120 -DCMAKE_CXX_FLAGS="--gcc-toolchain=$BOOTSTRAP" \
121 -DCMAKE_EXE_LINKER_FLAGS="-L$SRC/stage0-sysroot/usr/lib -lunwind" \
122 -DCMAKE_SHARED_LINKER_FLAGS="-L$SRC/stage0-sysroot/usr/lib -lunwind" \
123 -DLLVM_ENABLE_LLD=ON \
124 -DLLVM_CMAKE_DIR=$SRC/build-stage0/lib/cmake/llvm \
125 -DLLVM_HOST_TRIPLE=x86_64-unknown-linux-musl \
126 -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-unknown-linux-musl \
127 -DLLVM_ENABLE_RUNTIMES="libunwind;libcxxabi;libcxx" \
128 -DLIBCXX_HAS_MUSL_LIBC=ON \
129 -DLIBCXX_HAS_ATOMIC_LIB=OFF \
130 -DLIBCXX_USE_COMPILER_RT=ON \
131 -DLIBCXX_CXX_ABI=libcxxabi \
132 -DLIBCXX_ENABLE_STATIC=ON \
133 -DLIBCXXABI_USE_COMPILER_RT=ON \
134 -DLIBCXXABI_USE_LLVM_UNWINDER=ON \
135 -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF \
136 -DLLVM_INCLUDE_TESTS=OFF
137
138 ninja -C build-cxx cxx cxxabi
139 ninja -C build-cxx install-cxx install-cxxabi
140
141 #################################
142 # Stage 4: final clang (pure libc++)
143 # With AMDGPU target for GPU support
144 #################################
145 export LD_LIBRARY_PATH=$SRC/stage0-sysroot/usr/lib
146
147 # Stage 0 clang needs explicit flags to use lld and compiler-rt
148 # -fPIC is required for shared library builds
149 # --unwindlib=libunwind needed for runtimes that use unwind symbols
150 STAGE4_CFLAGS="-fPIC -fuse-ld=lld --rtlib=compiler-rt -Qunused-arguments"
151 STAGE4_CXXFLAGS="-fPIC -fuse-ld=lld --rtlib=compiler-rt --unwindlib=libunwind -stdlib=libc++ -I$SRC/stage0-sysroot/usr/include/c++/v1 -Qunused-arguments"
152 STAGE4_LDFLAGS="-fuse-ld=lld -L$SRC/stage0-sysroot/usr/lib -lunwind -Wl,-rpath,$SRC/stage0-sysroot/usr/lib"
153
154 cmake -S llvm-project/llvm -B build-final -G Ninja -Wno-dev \
155 -DCMAKE_BUILD_TYPE=Release \
156 -DCMAKE_INSTALL_PREFIX=/usr \
157 -DCMAKE_C_COMPILER=$SRC/build-stage0/bin/clang \
158 -DCMAKE_CXX_COMPILER=$SRC/build-stage0/bin/clang++ \
159 -DCMAKE_C_FLAGS="$STAGE4_CFLAGS" \
160 -DCMAKE_CXX_FLAGS="$STAGE4_CXXFLAGS" \
161 -DCMAKE_EXE_LINKER_FLAGS="$STAGE4_LDFLAGS" \
162 -DCMAKE_SHARED_LINKER_FLAGS="$STAGE4_LDFLAGS" \
163 -DLLVM_ENABLE_LLD=ON \
164 -DLLVM_ENABLE_PROJECTS="clang;lld" \
165 -DLLVM_ENABLE_RUNTIMES="compiler-rt;libunwind;libcxxabi;libcxx" \
166 -DLLVM_TARGETS_TO_BUILD="X86;AMDGPU" \
167 -DLLVM_HOST_TRIPLE=x86_64-unknown-linux-musl \
168 -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-unknown-linux-musl \
169 -DLLVM_ENABLE_RTTI=ON \
170 -DLLVM_ENABLE_FFI=ON \
171 -DLLVM_ENABLE_ZLIB=ON \
172 -DLLVM_ENABLE_ZSTD=ON \
173 -DLLVM_ENABLE_LIBEDIT=ON \
174 -DLLVM_BUILD_LLVM_DYLIB=ON \
175 -DLLVM_LINK_LLVM_DYLIB=ON \
176 -DLLVM_INSTALL_BINUTILS_SYMLINKS=ON \
177 -DLLVM_INCLUDE_TESTS=OFF \
178 -DLLVM_INCLUDE_BENCHMARKS=OFF \
179 -DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF \
180 -DLLVM_RUNTIME_LIBRARY_DIR=$SRC/stage0-sysroot/usr/lib \
181 -DCLANG_DEFAULT_CXX_STDLIB=libc++ \
182 -DCLANG_DEFAULT_RTLIB=compiler-rt \
183 -DCLANG_DEFAULT_UNWINDLIB=libunwind \
184 -DCLANG_DEFAULT_LINKER=lld \
185 -DCLANG_LINK_CLANG_DYLIB=ON \
186 -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON \
187 -DCOMPILER_RT_BUILD_BUILTINS=ON \
188 -DCOMPILER_RT_BUILD_SANITIZERS=OFF \
189 -DCOMPILER_RT_BUILD_XRAY=OFF \
190 -DCOMPILER_RT_BUILD_LIBFUZZER=OFF \
191 -DCOMPILER_RT_BUILD_PROFILE=OFF \
192 -DCOMPILER_RT_BUILD_MEMPROF=OFF \
193 -DCOMPILER_RT_BUILD_GWP_ASAN=OFF \
194 -DCOMPILER_RT_BUILD_CTX_PROFILE=OFF \
195 -DCOMPILER_RT_BUILD_ORC=OFF \
196 -DLIBCXX_HAS_MUSL_LIBC=ON \
197 -DLIBCXX_HAS_ATOMIC_LIB=OFF \
198 -DLIBCXX_USE_COMPILER_RT=ON \
199 -DLIBCXX_CXX_ABI=libcxxabi \
200 -DLIBCXX_ENABLE_STATIC=ON \
201 -DLIBCXX_ENABLE_SHARED=ON \
202 -DLIBCXXABI_USE_COMPILER_RT=ON \
203 -DLIBCXXABI_USE_LLVM_UNWINDER=ON \
204 -DLIBCXXABI_ENABLE_SHARED=ON \
205 -DLIBUNWIND_USE_COMPILER_RT=ON \
206 -DLIBUNWIND_ENABLE_SHARED=ON
207
208 ninja -C build-final
209 DESTDIR=$PKG ninja -C build-final install
210
211 ln -sf clang $PKG/usr/bin/cc
212 ln -sf clang++ $PKG/usr/bin/c++
213 ln -sf lld $PKG/usr/bin/ld
214}