new blfs: llvm-core/clang-20.1.8
This commit is contained in:
@@ -31,4 +31,4 @@ dev-libs/libunistring dev-libs/popt dev-libs/libtasn1 app-arch/libarchive dev-li
|
|||||||
- `dev-python/six` -> `dev-debug/gdb`
|
- `dev-python/six` -> `dev-debug/gdb`
|
||||||
- `dev-libs/popt` + `dev-libs/xxhash` -> `net-misc/rsync`
|
- `dev-libs/popt` + `dev-libs/xxhash` -> `net-misc/rsync`
|
||||||
- `dev-libs/pcre2` -> rebuild `sys-apps/grep`
|
- `dev-libs/pcre2` -> rebuild `sys-apps/grep`
|
||||||
- rebuild `sys-apps/grep` + `net-misc/curl` + `dev-build/cmake` -> `llvm-core/llvm` -> `llvm-runtimes/compiler-rt`
|
- rebuild `sys-apps/grep` + `net-misc/curl` + `dev-build/cmake` -> `llvm-core/llvm` -> `llvm-runtimes/compiler-rt` -> `llvm-core/clang`
|
||||||
|
|||||||
142
llvm-core/clang-20.1.8.PKGBUILD
Normal file
142
llvm-core/clang-20.1.8.PKGBUILD
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
pkgname=clang
|
||||||
|
pkgver=20.1.8
|
||||||
|
pkgdesc="C language family frontend for LLVM"
|
||||||
|
arch=('x86_64')
|
||||||
|
homepage="https://clang.llvm.org/"
|
||||||
|
license=('Apache-2.0 WITH LLVM-exception')
|
||||||
|
_source_base=https://github.com/llvm/llvm-project/releases/download/llvmorg-$pkgver
|
||||||
|
_blfs_source_base="https://anduin.linuxfromscratch.org/BLFS/llvm/"
|
||||||
|
sources=("clang-$pkgver.src.tar.xz"
|
||||||
|
"clang-tools-extra-$pkgver.src.tar.xz"
|
||||||
|
"llvm-${pkgver}.src.tar.xz"
|
||||||
|
"llvm-cmake-${pkgver}.src.tar.xz"
|
||||||
|
"llvm-third-party-${pkgver}.src.tar.xz"
|
||||||
|
)
|
||||||
|
urls=("${_source_base}/${sources[0]}"
|
||||||
|
"${_source_base}/${sources[1]}"
|
||||||
|
"${_blfs_source_base}/${sources[2]}"
|
||||||
|
"${_blfs_source_base}/${sources[3]}"
|
||||||
|
"${_blfs_source_base}/${sources[4]}"
|
||||||
|
)
|
||||||
|
md5sums=("62a0500bb932868061607cde0c01f584"
|
||||||
|
"254c99f104cd17b32ef721acaeb58a7c"
|
||||||
|
"78040509eb91309b4ec2edfe12cd20d8"
|
||||||
|
"5bfb8f4b4a2b3ccffca0d2406e4cdcc6"
|
||||||
|
"2ffd8624b3cbddf55a4e74a7d8ea89fa"
|
||||||
|
)
|
||||||
|
|
||||||
|
src_prepare() {
|
||||||
|
tar -xf ${distdir}/${sources[0]} &&
|
||||||
|
tar -xf ${distdir}/${sources[1]} &&
|
||||||
|
tar -xf ${distdir}/${sources[2]} &&
|
||||||
|
tar -xf ${distdir}/${sources[3]} &&
|
||||||
|
tar -xf ${distdir}/${sources[4]} &&
|
||||||
|
rename -v -- "-$pkgver.src" '' {cmake,clang-tools-extra}-$pkgver.src
|
||||||
|
cd clang-$pkgver.src
|
||||||
|
mkdir build
|
||||||
|
cd ..
|
||||||
|
}
|
||||||
|
|
||||||
|
# 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
|
||||||
|
clang-libraries|distribution)
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
clang|clangd|clang-*)
|
||||||
|
;;
|
||||||
|
clang*|findAllSymbols)
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
echo $target
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
src_build() {
|
||||||
|
pushd clang-$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
|
||||||
|
-DCMAKE_INSTALL_DOCDIR=share/doc
|
||||||
|
-DCMAKE_SKIP_RPATH=ON
|
||||||
|
-DCLANG_DEFAULT_PIE_ON_LINUX=ON
|
||||||
|
-DCLANG_LINK_CLANG_DYLIB=ON
|
||||||
|
-DENABLE_LINKER_BUILD_ID=ON
|
||||||
|
-DLLVM_BUILD_TESTS=ON
|
||||||
|
-DLLVM_ENABLE_RTTI=ON
|
||||||
|
-DLLVM_ENABLE_SPHINX=OFF
|
||||||
|
-DLLVM_EXTERNAL_CLANG_TOOLS_EXTRA_SOURCE_DIR="$srcdir/clang-tools-extra"
|
||||||
|
-DLLVM_EXTERNAL_LIT=/usr/bin/lit
|
||||||
|
-DLLVM_LINK_LLVM_DYLIB=ON
|
||||||
|
-DLLVM_THIRD_PARTY_DIR="$srcdir/third-party-$pkgver.src"
|
||||||
|
)
|
||||||
|
|
||||||
|
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 &&
|
||||||
|
popd
|
||||||
|
}
|
||||||
|
|
||||||
|
src_check() {
|
||||||
|
pushd clang-$pkgver.src/build
|
||||||
|
LD_LIBRARY_PATH=$PWD/lib ninja check-clang{,-tools}
|
||||||
|
popd
|
||||||
|
}
|
||||||
|
|
||||||
|
_python_optimize() {
|
||||||
|
python -m compileall "$@"
|
||||||
|
python -O -m compileall "$@"
|
||||||
|
python -OO -m compileall "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
src_install() {
|
||||||
|
pushd clang-$pkgver.src/build
|
||||||
|
|
||||||
|
DESTDIR="$pkgdir" ninja install-distribution
|
||||||
|
install -Dm644 ../LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
||||||
|
|
||||||
|
mkdir -pv ${pkgdir}/etc/clang &&
|
||||||
|
for i in clang clang++; do
|
||||||
|
echo -fstack-protector-strong > ${pkgdir}/etc/clang/$i.cfg
|
||||||
|
done
|
||||||
|
|
||||||
|
# Remove documentation sources
|
||||||
|
rm -r "$pkgdir"/usr/share/doc/clang{,-tools}/html/{_sources,.buildinfo} || true
|
||||||
|
|
||||||
|
# Move scanbuild-py into site-packages and install Python bindings
|
||||||
|
local site_packages=$(python -c "import site; print(site.getsitepackages()[0])")
|
||||||
|
install -d "$pkgdir/$site_packages"
|
||||||
|
mv "$pkgdir"/usr/lib/{libear,libscanbuild} "$pkgdir/$site_packages/"
|
||||||
|
cp -a ../bindings/python/clang "$pkgdir/$site_packages/"
|
||||||
|
|
||||||
|
# Move analyzer scripts out of /usr/libexec
|
||||||
|
mv "$pkgdir"/usr/libexec/* "$pkgdir/usr/lib/clang/"
|
||||||
|
rmdir "$pkgdir/usr/libexec"
|
||||||
|
sed -i 's|libexec|lib/clang|' \
|
||||||
|
"$pkgdir/usr/bin/scan-build" \
|
||||||
|
"$pkgdir/$site_packages/libscanbuild/analyze.py"
|
||||||
|
|
||||||
|
# Compile Python scripts
|
||||||
|
_python_optimize "$pkgdir/usr/share" "$pkgdir/$site_packages"
|
||||||
|
|
||||||
|
# Move bash completion
|
||||||
|
local bash_completion_destdir="$pkgdir/usr/share/bash-completion/completions"
|
||||||
|
install -d $bash_completion_destdir
|
||||||
|
mv "$pkgdir/usr/share/clang/bash-autocomplete.sh" "$bash_completion_destdir/clang"
|
||||||
|
|
||||||
|
popd
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user