new blfs: llvm-core/llvm-20.1.8
This commit is contained in:
@@ -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`
|
||||
|
||||
121
llvm-core/llvm-20.1.8.PKGBUILD
Normal file
121
llvm-core/llvm-20.1.8.PKGBUILD
Normal file
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user