mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-12-08 23:03:46 +00:00
161 lines
5.5 KiB
Bash
161 lines
5.5 KiB
Bash
|
# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
|
||
|
# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
|
||
|
|
||
|
# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
|
||
|
# - backport upstream patch to fix build failure on ARM with GCC 14
|
||
|
# fixed in 18.1.0 and later
|
||
|
|
||
|
pkgname=clang
|
||
|
pkgver=17.0.6
|
||
|
pkgrel=2.1
|
||
|
pkgdesc="C language family frontend for LLVM"
|
||
|
arch=('x86_64')
|
||
|
url="https://clang.llvm.org/"
|
||
|
license=('custom:Apache 2.0 with LLVM Exception')
|
||
|
depends=('llvm-libs' 'gcc' 'compiler-rt')
|
||
|
makedepends=('llvm' 'cmake' 'ninja' 'python-sphinx' 'python-recommonmark')
|
||
|
optdepends=('openmp: OpenMP support in clang with -fopenmp'
|
||
|
'python: for scan-view and git-clang-format'
|
||
|
'llvm: referenced by some clang headers')
|
||
|
provides=("clang-analyzer=$pkgver" "clang-tools-extra=$pkgver")
|
||
|
conflicts=('clang-analyzer' 'clang-tools-extra')
|
||
|
replaces=('clang-analyzer' 'clang-tools-extra')
|
||
|
_source_base=https://github.com/llvm/llvm-project/releases/download/llvmorg-$pkgver
|
||
|
source=($_source_base/clang-$pkgver.src.tar.xz{,.sig}
|
||
|
$_source_base/clang-tools-extra-$pkgver.src.tar.xz{,.sig}
|
||
|
$_source_base/llvm-$pkgver.src.tar.xz{,.sig}
|
||
|
$_source_base/cmake-$pkgver.src.tar.xz{,.sig}
|
||
|
$_source_base/third-party-$pkgver.src.tar.xz{,.sig}
|
||
|
clangd-handle-missing-ending-brace.patch::https://github.com/llvm/llvm-project/commit/9d1dada57741.patch
|
||
|
enable-fstack-protector-strong-by-default.patch
|
||
|
0001-Fix-build-with-GCC-14-on-ARM-78704.patch)
|
||
|
sha256sums=('a78f668a726ae1d3d9a7179996d97b12b90fb76ab9442a43110b972ff7ad9029'
|
||
|
'SKIP'
|
||
|
'aa774642415d338d7b77a66fcbad6fd1f77f382dabcb67422a6230614eff1ab9'
|
||
|
'SKIP'
|
||
|
'b638167da139126ca11917b6880207cc6e8f9d1cbb1a48d87d017f697ef78188'
|
||
|
'SKIP'
|
||
|
'807f069c54dc20cb47b21c1f6acafdd9c649f3ae015609040d6182cab01140f4'
|
||
|
'SKIP'
|
||
|
'3054d0a9c9375dab1a4539cc2cc45ab340341c5d71475f9599ba7752e222947b'
|
||
|
'SKIP'
|
||
|
'0d4dc477f5a28f9f16639dc094b6d9bc14228d5de771547394799d2d5f8cd1df'
|
||
|
'45da5783f4e89e4507a351ed0ffbbe6ec240e21ff7070797a89c5ccf434ac612'
|
||
|
'ff64863585ade268dd4c15291fb7143567e10dc8a670673c2368c534159bdce8')
|
||
|
validpgpkeys=('474E22316ABF4785A88C6E8EA2C794A986419D8A' # Tom Stellard <tstellar@redhat.com>
|
||
|
'D574BD5D1D0E98895E3BF90044F2485E45D59042') # Tobias Hieta <tobias@hieta.se>
|
||
|
|
||
|
# 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-tidy-headers)
|
||
|
continue
|
||
|
;;
|
||
|
clang|clangd|clang-*)
|
||
|
;;
|
||
|
clang*|findAllSymbols)
|
||
|
continue
|
||
|
;;
|
||
|
esac
|
||
|
echo $target
|
||
|
done
|
||
|
}
|
||
|
|
||
|
prepare() {
|
||
|
rename -v -- "-$pkgver.src" '' {cmake,third-party}-$pkgver.src
|
||
|
cd clang-$pkgver.src
|
||
|
mkdir build
|
||
|
mv "$srcdir/clang-tools-extra-$pkgver.src" tools/extra
|
||
|
patch -Np2 -i ../enable-fstack-protector-strong-by-default.patch
|
||
|
patch -Np2 -i ../0001-Fix-build-with-GCC-14-on-ARM-78704.patch
|
||
|
|
||
|
# https://github.com/clangd/clangd/issues/1559
|
||
|
sed 's|clang-tools-extra|clang/tools/extra|' \
|
||
|
clangd-handle-missing-ending-brace.patch | patch -Np2
|
||
|
|
||
|
# Attempt to convert script to Python 3
|
||
|
2to3 -wn --no-diffs \
|
||
|
tools/extra/clang-include-fixer/find-all-symbols/tool/run-find-all-symbols.py
|
||
|
}
|
||
|
|
||
|
build() {
|
||
|
cd 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_DOCS=ON
|
||
|
-DLLVM_BUILD_TESTS=ON
|
||
|
-DLLVM_ENABLE_RTTI=ON
|
||
|
-DLLVM_ENABLE_SPHINX=ON
|
||
|
-DLLVM_EXTERNAL_LIT=/usr/bin/lit
|
||
|
-DLLVM_INCLUDE_DOCS=ON
|
||
|
-DLLVM_LINK_LLVM_DYLIB=ON
|
||
|
-DLLVM_MAIN_SRC_DIR="$srcdir/llvm-$pkgver.src"
|
||
|
-DSPHINX_WARNINGS_AS_ERRORS=OFF
|
||
|
)
|
||
|
|
||
|
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
|
||
|
}
|
||
|
|
||
|
check() {
|
||
|
cd clang-$pkgver.src/build
|
||
|
LD_LIBRARY_PATH=$PWD/lib ninja check-clang{,-tools}
|
||
|
}
|
||
|
|
||
|
_python_optimize() {
|
||
|
python -m compileall "$@"
|
||
|
python -O -m compileall "$@"
|
||
|
python -OO -m compileall "$@"
|
||
|
}
|
||
|
|
||
|
package() {
|
||
|
cd clang-$pkgver.src/build
|
||
|
|
||
|
DESTDIR="$pkgdir" ninja install-distribution
|
||
|
install -Dm644 ../LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
||
|
|
||
|
# Remove documentation sources
|
||
|
rm -r "$pkgdir"/usr/share/doc/clang{,-tools}/html/{_sources,.buildinfo}
|
||
|
|
||
|
# 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"
|
||
|
}
|
||
|
|
||
|
# vim:set ts=2 sw=2 et:
|