Newer
Older
# Maintainer: Laurent Carlier <lordheavym@gmail.com>
# Contributor: Evangelos Foutras <foutrelis@gmail.com>
# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
license=('Apache-2.0 WITH LLVM-exception')
makedepends=('cmake' 'ninja' 'lib32-libffi' 'lib32-zlib' 'lib32-zstd' 'python'
'gcc-multilib' 'lib32-libxml2')
options=('staticlibs' '!lto') # tools/llvm-shlib/typeids.test fails with LTO
_source_base=https://github.com/llvm/llvm-project/releases/download/llvmorg-$pkgver
source=($_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})
sha256sums=('f68cf90f369bc7d0158ba70d860b0cb34dbc163d6ff0ebc6cfa5e515b9b2e28d'
'59badef592dd34893cd319d42b323aaa990b452d05c7180ff20f23ab1b41e837'
'b76b810f3d3dc5d08e83c4236cb6e395aa9bd5e3ea861e8c319b216d093db074'
validpgpkeys=('474E22316ABF4785A88C6E8EA2C794A986419D8A') # Tom Stellard <tstellar@redhat.com>
# 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)
;;
# 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
}
rename -v -- "-$pkgver.src" '' {cmake,third-party}-$pkgver.src
# Remove CMake find module for zstd; breaks if out of sync with upstream zstd
rm cmake/modules/Findzstd.cmake
export PKG_CONFIG="i686-pc-linux-gnu-pkg-config"
# Build only minimal debug info to reduce size
CFLAGS+=' -g1'
CXXFLAGS+=' -g1'
local cmake_args=(
-G Ninja
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_CXX_FLAGS:STRING=-m32
-DCMAKE_C_FLAGS:STRING=-m32
-DCMAKE_INSTALL_PREFIX=/usr
-DCMAKE_SKIP_RPATH=ON
-DLLVM_BUILD_DOCS=OFF
-DLLVM_BUILD_LLVM_DYLIB=ON
-DLLVM_ENABLE_FFI=ON
-DLLVM_ENABLE_RTTI=ON
-DLLVM_ENABLE_SPHINX=OFF
-DLLVM_HOST_TRIPLE=$CHOST
-DLLVM_INSTALL_GTEST=ON
-DLLVM_LIBDIR_SUFFIX=32
-DLLVM_LINK_LLVM_DYLIB=ON
-DLLVM_TARGET_ARCH:STRING=i686
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
DESTDIR="$pkgdir" ninja install-distribution
mv "$pkgdir"/usr/lib32/lib{LLVM,LTO,Remarks}*.so* "$srcdir"
mv -f "$pkgdir"/usr/lib32/LLVMgold.so "$srcdir"
mv "$pkgdir/usr/bin/llvm-config" "$pkgdir/usr/lib32/llvm-config"
rm -rf "$pkgdir"/usr/{bin,include,share/{doc,man,llvm,opt-viewer}}
mkdir "$pkgdir"/usr/bin
mv "$pkgdir/usr/lib32/llvm-config" "$pkgdir/usr/bin/llvm-config32"
install -Dm644 ../LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
depends=('lib32-libffi' 'lib32-zlib' 'lib32-zstd' 'lib32-ncurses'
'lib32-libxml2' 'lib32-gcc-libs')
"$pkgdir/usr/lib32/"
# Symlink LLVMgold.so from /usr/lib/bfd-plugins
# https://bugs.archlinux.org/task/28479
install -d "$pkgdir/usr/lib32/bfd-plugins"
ln -s ../LLVMgold.so "$pkgdir/usr/lib32/bfd-plugins/LLVMgold.so"
install -Dm644 llvm-$pkgver.src/LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"