Files
LFS-PKGBUILDs/llvm-core/llvm-20.1.8.PKGBUILD

124 lines
3.5 KiB
Plaintext

pkgname=llvm
pkgver=20.1.8
arch=('x86_64')
url="https://llvm.org/"
license=('Apache-2.0 WITH LLVM-exception')
_source_base=https://github.com/llvm/llvm-project/releases/download/llvmorg-$pkgver
sources=("${pkgname}-${pkgver}.src.tar.xz"
"llvm-cmake-${pkgver}.src.tar.xz"
"llvm-third-party-${pkgver}.src.tar.xz"
)
urls=("${_source_base}/llvm-${pkgver}.src.tar.xz"
"https://anduin.linuxfromscratch.org/BLFS/llvm/llvm-cmake-${pkgver}.src.tar.xz"
"https://anduin.linuxfromscratch.org/BLFS/llvm/llvm-third-party-${pkgver}.src.tar.xz"
)
md5sums=("78040509eb91309b4ec2edfe12cd20d8"
"5bfb8f4b4a2b3ccffca0d2406e4cdcc6"
"2ffd8624b3cbddf55a4e74a7d8ea89fa"
)
src_prepare() {
tar -xf ${distdir}/${sources[0]} --strip-components=1 &&
tar -xf ${distdir}/${sources[1]} &&
tar -xf ${distdir}/${sources[2]} &&
sed "/LLVM_COMMON_CMAKE_UTILS/s@../cmake@cmake-${pkgver}.src@" \
-i CMakeLists.txt &&
sed "/LLVM_THIRD_PARTY_DIR/s@../third-party@third-party-${pkgver}.src@" \
-i cmake/modules/HandleLLVMOptions.cmake &&
sed 's/utility/tool/' -i utils/FileCheck/CMakeLists.txt
}
# 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)
;;
# used by lldb
LLVMDebuginfod)
;;
# testing libraries
LLVMTestingAnnotations|LLVMTestingSupport)
;;
# exclude static libraries
LLVM*)
continue
;;
# exclude llvm-exegesis (doesn't seem useful without libpfm)
llvm-exegesis)
continue
;;
esac
echo $target
done
}
src_build() {
mkdir -v build &&
cd build &&
# Build only minimal debug info to reduce size
CFLAGS=${CFLAGS/-g /-g1 }
CXXFLAGS=${CXXFLAGS/-g /-g1 }
local cmake_args=(
-D CMAKE_INSTALL_PREFIX=/usr
-D CMAKE_SKIP_INSTALL_RPATH=ON
-D LLVM_ENABLE_FFI=ON
-D LLVM_USE_PERF=ON
-D CMAKE_BUILD_TYPE=Release
-D LLVM_BUILD_LLVM_DYLIB=ON
-D LLVM_LINK_LLVM_DYLIB=ON
-D LLVM_ENABLE_RTTI=ON
-D LLVM_ENABLE_SPHINX=OFF
-D LLVM_TARGETS_TO_BUILD="host;AMDGPU"
-D LLVM_BINUTILS_INCDIR=/usr/include
-D LLVM_INCLUDE_BENCHMARKS=OFF
-D LLVM_BUILD_TESTS=ON
-D LLVM_INSTALL_GTEST=ON
-W no-dev
-G Ninja
)
CC=gcc CXX=g++ cmake .. "${cmake_args[@]}" &&
local distribution_components=$(_get_distribution_components | paste -sd\;) &&
test -n "$distribution_components" &&
cmake_args+=(-DLLVM_DISTRIBUTION_COMPONENTS="$distribution_components") &&
CC=gcc CXX=g++ cmake .. "${cmake_args[@]}" &&
ninja &&
cd .. &&
pushd utils/lit &&
pip3 wheel -w dist --no-build-isolation --no-deps $PWD &&
popd
}
src_check() {
pushd build &&
ninja check-llvm &&
popd
}
src_install() {
pushd build &&
DESTDIR="$pkgdir" ninja install-distribution &&
pushd ../utils/lit &&
pip3 install --no-deps --no-warn-script-location --no-index --find-links dist --no-cache-dir --no-user --root $pkgdir lit &&
popd &&
# Remove documentation sources
rm -r "$pkgdir"/usr/share/doc/llvm/html/{_sources,.buildinfo} || true &&
install -Dm644 ../LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE" &&
popd
}