From 3c9d13358f2fe219b9e2bd12ae2d959bc026f580 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Sat, 6 Jul 2024 01:46:45 +0000 Subject: [PATCH] added extra/llvm17 --- extra/llvm17/PKGBUILD | 139 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 extra/llvm17/PKGBUILD diff --git a/extra/llvm17/PKGBUILD b/extra/llvm17/PKGBUILD new file mode 100644 index 000000000..387f17853 --- /dev/null +++ b/extra/llvm17/PKGBUILD @@ -0,0 +1,139 @@ +# Maintainer: Evangelos Foutras +# Contributor: Jan "heftig" Steffens + +# ALARM: Kevin Mihelich +# - llvm17 version + +pkgname=('llvm17' 'llvm17-libs') +pkgver=17.0.6 +pkgrel=1 +arch=('x86_64') +url="https://llvm.org/" +license=('custom:Apache 2.0 with LLVM Exception') +makedepends=('cmake' 'ninja' 'zlib' 'zstd' 'libffi' 'libedit' 'ncurses' + 'libxml2' 'python') +checkdepends=('python-psutil') +options=('staticlibs' '!lto') # https://github.com/llvm/llvm-project/issues/57740 +_source_base=https://github.com/llvm/llvm-project/releases/download/llvmorg-$pkgver +source=($_source_base/llvm-$pkgver.src.tar.xz{,.sig} + $_source_base/cmake-$pkgver.src.tar.xz{,.sig} + $_source_base/third-party-$pkgver.src.tar.xz{,.sig}) +sha256sums=('b638167da139126ca11917b6880207cc6e8f9d1cbb1a48d87d017f697ef78188' + 'SKIP' + '807f069c54dc20cb47b21c1f6acafdd9c649f3ae015609040d6182cab01140f4' + 'SKIP' + '3054d0a9c9375dab1a4539cc2cc45ab340341c5d71475f9599ba7752e222947b' + 'SKIP') +validpgpkeys=('474E22316ABF4785A88C6E8EA2C794A986419D8A') # Tom Stellard + +# Utilizing LLVM_DISTRIBUTION_COMPONENTS to avoid +# installing static libraries; inspired by Gentoo +_get_distribution_components() { + local target + ninja -t targets | grep -Po 'install-\K.*(?=-stripped:)' | while read -r target; do + case $target in + llvm-libraries|distribution) + continue + ;; + # shared libraries + LLVM|LLVMgold) + ;; + # libraries needed for clang-tblgen + LLVMDemangle|LLVMSupport|LLVMTableGen) + ;; + # exclude static libraries + LLVM*) + continue + ;; + # exclude llvm-exegesis (doesn't seem useful without libpfm) + llvm-exegesis) + continue + ;; + esac + echo $target + done +} + +prepare() { + rename -v -- "-$pkgver.src" '' {cmake,third-party}-$pkgver.src + cd llvm-$pkgver.src + mkdir build +} + +build() { + cd llvm-$pkgver.src/build + + # Build only minimal debug info to reduce size + CFLAGS=${CFLAGS/-g /-g1 } + CXXFLAGS=${CXXFLAGS/-g /-g1 } + + local cmake_args=( + -G Ninja + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_INSTALL_PREFIX=/usr/lib/llvm17 + -DCMAKE_SKIP_RPATH=ON + -DLLVM_BINUTILS_INCDIR=/usr/include + -DLLVM_BUILD_LLVM_DYLIB=ON + -DLLVM_BUILD_TESTS=ON + -DLLVM_ENABLE_BINDINGS=OFF + -DLLVM_ENABLE_FFI=ON + -DLLVM_ENABLE_RTTI=ON + -DLLVM_HOST_TRIPLE=$CHOST + -DLLVM_INCLUDE_BENCHMARKS=OFF + -DLLVM_INSTALL_UTILS=ON + -DLLVM_LINK_LLVM_DYLIB=ON + -DLLVM_USE_PERF=ON + ) + + cmake .. "${cmake_args[@]}" + local distribution_components=$(_get_distribution_components | paste -sd\;) + test -n "$distribution_components" + cmake_args+=(-DLLVM_DISTRIBUTION_COMPONENTS="$distribution_components") + + cmake .. "${cmake_args[@]}" + ninja +} + +check() { + cd llvm-$pkgver.src/build + LD_LIBRARY_PATH=$PWD/lib ninja check +} + +package_llvm17() { + pkgdesc="Compiler infrastructure (LLVM 17)" + depends=('llvm17-libs' 'perl') + + cd llvm-$pkgver.src/build + + DESTDIR="$pkgdir" ninja install-distribution + + # The runtime libraries go into llvm17-libs + mv -f "$pkgdir"/usr/lib/llvm17/lib/libLLVM-{17,$pkgver}.so "$srcdir/" + mv -f "$pkgdir"/usr/lib/llvm17/lib/LLVMgold.so "$srcdir/" + + # Create versioned symlinks from /usr/bin/ to /usr/lib/llvm17/bin/ + install -d "$pkgdir/usr/bin" + local _binary + for _binary in "$pkgdir"/usr/lib/llvm17/bin/*; do + local _basename=${_binary##*/} + ln -s ../lib/llvm17/bin/$_basename "$pkgdir/usr/bin/$_basename-17" + done + + install -Dm644 ../LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +} + +package_llvm17-libs() { + pkgdesc="LLVM 17 runtime libraries" + depends=('gcc-libs' 'zlib' 'libffi' 'libedit' 'ncurses' 'libxml2') + + install -d "$pkgdir/usr/lib/llvm17/lib" + cp -P "$srcdir"/libLLVM-{17,$pkgver}.so "$pkgdir/usr/lib/" + ln -s ../../libLLVM-17.so "$pkgdir/usr/lib/llvm17/lib/libLLVM-17.so" + ln -s ../../libLLVM-17.so "$pkgdir/usr/lib/llvm17/lib/libLLVM-$pkgver.so" + cp -P "$srcdir"/LLVMgold.so "$pkgdir/usr/lib/llvm17/lib/" + + install -Dm644 "$srcdir/llvm-$pkgver.src/LICENSE.TXT" \ + "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +} + +# vim:set ts=2 sw=2 et: