From efd75d3a55b102d95bdacabae603bf21a99b7223 Mon Sep 17 00:00:00 2001 From: Yingjie Wang Date: Thu, 25 Dec 2025 19:01:55 -0500 Subject: [PATCH] new blfs: llvm-core/llvm-20.1.8 --- README.md | 3 +- llvm-core/llvm-20.1.8.PKGBUILD | 121 +++++++++++++++++++++++++++++++++ 2 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 llvm-core/llvm-20.1.8.PKGBUILD diff --git a/README.md b/README.md index 187ebed..277fa44 100644 --- a/README.md +++ b/README.md @@ -30,4 +30,5 @@ dev-libs/libunistring dev-libs/popt dev-libs/libtasn1 app-arch/libarchive dev-li - `app-arch/libarchive` -> `dev-db/sqlite` -> rebuild `dev-lang/python` - `dev-python/six` -> `dev-debug/gdb` - `dev-libs/popt` + `dev-libs/xxhash` -> `net-misc/rsync` -- `dev-libs/pcre2` -> `sys-apps/grep` +- `dev-libs/pcre2` -> rebuild `sys-apps/grep` +- rebuild `sys-apps/grep` + `net-misc/curl` + `dev-build/cmake` -> `llvm-core/llvm` diff --git a/llvm-core/llvm-20.1.8.PKGBUILD b/llvm-core/llvm-20.1.8.PKGBUILD new file mode 100644 index 0000000..c63ab19 --- /dev/null +++ b/llvm-core/llvm-20.1.8.PKGBUILD @@ -0,0 +1,121 @@ +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 + -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 +}