aports/main/lld20/APKBUILD
2025-05-31 12:10:35 +00:00

96 lines
2.6 KiB
Text

# Contributor: Eric Molitor <eric@molitor.org>
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Contributor: Rasmus Thomsen <oss@cogitri.dev>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgver=20.1.6
pkgrel=0
_llvmver=${pkgver%%.*}
_prevllvmver=$((_llvmver - 1))
pkgname=lld$_llvmver
pkgdesc="The LLVM Linker"
url="https://llvm.org/"
arch="all"
license="Apache-2.0"
depends_dev="$pkgname=$pkgver-r$pkgrel"
makedepends="
clang$_llvmver
cmake
compiler-rt
libedit-dev
libxml2-dev
llvm$_llvmver-dev
llvm$_llvmver-gtest
llvm$_llvmver-static
llvm$_llvmver-test-utils
llvm-libunwind-dev
patchelf
samurai
scudo-malloc
zlib-dev
"
checkdepends="gtest-dev bash llvm$_llvmver-test-utils"
subpackages="$pkgname-dbg $pkgname-libs $pkgname-dev $pkgname-doc"
source="https://github.com/llvm/llvm-project/releases/download/llvmorg-${pkgver//_/-}/lld-${pkgver//_/}.src.tar.xz
https://github.com/llvm/llvm-project/releases/download/llvmorg-${pkgver//_/-}/cmake-${pkgver//_/}.src.tar.xz
"
builddir="$srcdir/lld-${pkgver//_/}.src"
# whether this is the default lld version (keep in sync with llvm)
_default_lld="yes"
if [ "$_default_lld" = yes ]; then
provides="lld=$pkgver-r$pkgrel"
replaces="lld"
dev() {
default_dev
provides="lld-dev=$pkgver-r$pkgrel"
replaces="lld-dev"
}
fi
replaces="lld$_prevllvmver"
prepare() {
default_prepare
mv "$srcdir"/cmake-${pkgver//_/}.src "$srcdir"/cmake
}
build() {
CFLAGS="$CFLAGS -O2 -DNDEBUG -g1" \
CXXFLAGS="$CXXFLAGS -O2 -DNDEBUG -g1" \
CC=clang-$_llvmver CXX=clang++-$_llvmver \
cmake -B build -G Ninja -Wno-dev \
-DCMAKE_BUILD_TYPE=None \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_SKIP_INSTALL_RPATH=ON \
-DBUILD_SHARED_LIBS=ON \
-DLLVM_INCLUDE_TESTS="$(want_check && echo ON || echo OFF)" \
-DLLVM_EXTERNAL_LIT=/usr/lib/llvm$_llvmver/bin/lit \
-DLLD_BUILT_STANDALONE=ON \
-DCMAKE_EXE_LINKER_FLAGS="$LDFLAGS -Wl,-z,stack-size=2097152"
cmake --build build
}
check() {
ninja -C build check-lld
}
package() {
DESTDIR="$pkgdir" cmake --install build
install -Dm644 docs/ld.lld.1 -t "$pkgdir"/usr/share/man/man1/
# we have the scudo allocator available, so link lld to it to
# significantly improve performance, especially in LTO contexts
patchelf --add-needed libscudo.so "$pkgdir"/usr/bin/lld
}
doc() {
default_doc
replaces="lld-doc lld$_prevllvmver-doc"
}
sha512sums="
519f2fed14c35098363fed611f235759c69749e091b8b3661c61430dc2e85f65d43155dcb17352be0a63280527b7e38552b692672c6fd2202da84c992100d39c lld-20.1.6.src.tar.xz
6606f362bc84d986bc54925ea67a9cdd3ca50b730a6a308949ce851ee43d137b62e1bad11292af071224f80313501c18b1f291bf1084ba08bfa27adc5627ab83 cmake-20.1.6.src.tar.xz
"