# llvm - the Arctic toolchain. clang, lld, libc++ and the whole LLVM suite.
# This, not GCC, is what Arctic compiles with. GCC exists only on the build
# machines as a stage-0 tool for glibc, and is never packaged.
name=llvm
version=22.1.8
release=1
desc="The LLVM compiler infrastructure: clang, lld, libc++, lldb"
url="https://llvm.org/"
license="Apache-2.0-with-LLVM-exception"
depend="glibc zlib zstd"
makedepend="cmake ninja python"
provides="clang lld libcxx compiler"
source="llvm-project-$version.src.tar.xz::https://github.com/llvm/llvm-project/releases/download/llvmorg-$version/llvm-project-$version.src.tar.xz"
sha256="SKIP"
options="!strip"

build() {
	cd "llvm-project-$version.src"
	cmake -S llvm -B build -G Ninja \
		-DCMAKE_BUILD_TYPE=Release \
		-DCMAKE_INSTALL_PREFIX=/usr \
		-DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld;lldb;polly" \
		-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind;compiler-rt" \
		-DLLVM_TARGETS_TO_BUILD="X86;AArch64;RISCV;WebAssembly" \
		-DLLVM_ENABLE_LLD=ON \
		-DLLVM_LINK_LLVM_DYLIB=ON \
		-DLLVM_ENABLE_RTTI=ON \
		-DLLVM_INSTALL_UTILS=ON \
		-DLLVM_BUILD_LLVM_DYLIB=ON \
		-DCLANG_DEFAULT_CXX_STDLIB=libc++ \
		-DCLANG_DEFAULT_RTLIB=compiler-rt \
		-DCLANG_DEFAULT_LINKER=lld \
		-DCLANG_DEFAULT_UNWINDLIB=libunwind \
		-DLIBCXX_USE_COMPILER_RT=ON \
		-DLIBCXXABI_USE_LLVM_UNWINDER=ON
	ninja -C build -j"$JOBS"
}

package() {
	cd "llvm-project-$version.src"
	DESTDIR="$pkgdir" ninja -C build install
	# cc and c++ mean clang on Arctic.
	ln -sf clang "$pkgdir/usr/bin/cc"
	ln -sf clang++ "$pkgdir/usr/bin/c++"
	ln -sf ld.lld "$pkgdir/usr/bin/ld"
}
