* add llvm15
This commit is contained in:
parent
cc99460b1d
commit
b69550b8b3
142
llvm15/PKGBUILD
Normal file
142
llvm15/PKGBUILD
Normal file
@ -0,0 +1,142 @@
|
||||
# POWER Maintainer: Alexander Baldeck <alex.bldck@gmail.com>
|
||||
# Maintainer: Evangelos Foutras <evangelos@foutrelis.com>
|
||||
# Contributor: Jan "heftig" Steffens <jan.steffens@gmail.com>
|
||||
|
||||
pkgname=('llvm15' 'llvm15-libs')
|
||||
pkgver=15.0.7
|
||||
pkgrel=1
|
||||
arch=(x86_64 powerpc64le powerpc64 powerpc riscv64)
|
||||
url="https://llvm.org/"
|
||||
license=('custom:Apache 2.0 with LLVM Exception')
|
||||
makedepends=('cmake' 'ninja' 'zlib' 'zstd' 'libffi' 'libedit' 'ncurses'
|
||||
'libxml2' 'python')
|
||||
checkdepends=('python-psutil')
|
||||
options=('staticlibs' '!lto') # https://github.com/llvm/llvm-project/issues/57740
|
||||
_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}
|
||||
llvm-ppc64-elfv2.patch)
|
||||
sha256sums=('4ad8b2cc8003c86d0078d15d987d84e3a739f24aae9033865c027abae93ee7a4'
|
||||
'SKIP'
|
||||
'8986f29b634fdaa9862eedda78513969fe9788301c9f2d938f4c10a3e7a3e7ea'
|
||||
'SKIP'
|
||||
'd3b3d13f05b17c62108345aa4ac555c656c3f8dbdb24551004b06ef652bef94d')
|
||||
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)
|
||||
;;
|
||||
# exclude static libraries
|
||||
LLVM*)
|
||||
continue
|
||||
;;
|
||||
# exclude llvm-exegesis (doesn't seem useful without libpfm)
|
||||
llvm-exegesis)
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
echo $target
|
||||
done
|
||||
}
|
||||
|
||||
prepare() {
|
||||
mv cmake{-$pkgver.src,}
|
||||
cd llvm-$pkgver.src
|
||||
mkdir build
|
||||
|
||||
patch -Np2 -i ${srcdir}/llvm-ppc64-elfv2.patch
|
||||
}
|
||||
|
||||
build() {
|
||||
cd llvm-$pkgver.src/build
|
||||
|
||||
# Build only minimal debug info to reduce size
|
||||
CFLAGS=${CFLAGS/-g /-g1 }
|
||||
CXXFLAGS=${CXXFLAGS/-g /-g1 }
|
||||
|
||||
case "${CARCH}" in
|
||||
powerpc) CXXFLAGS+=' -latomic' ;;
|
||||
esac
|
||||
|
||||
local cmake_args=(
|
||||
-G Ninja
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-DCMAKE_INSTALL_PREFIX=/usr/lib/llvm15
|
||||
-DCMAKE_SKIP_RPATH=ON
|
||||
-DLLVM_BINUTILS_INCDIR=/usr/include
|
||||
-DLLVM_BUILD_LLVM_DYLIB=ON
|
||||
-DLLVM_BUILD_TESTS=ON
|
||||
-DLLVM_ENABLE_BINDINGS=OFF
|
||||
-DLLVM_ENABLE_FFI=ON
|
||||
-DLLVM_ENABLE_RTTI=ON
|
||||
-DLLVM_HOST_TRIPLE=$CHOST
|
||||
-DLLVM_INCLUDE_BENCHMARKS=OFF
|
||||
-DLLVM_INSTALL_UTILS=ON
|
||||
-DLLVM_LINK_LLVM_DYLIB=ON
|
||||
-DLLVM_USE_PERF=ON
|
||||
)
|
||||
|
||||
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 llvm-$pkgver.src/build
|
||||
LD_LIBRARY_PATH=$PWD/lib ninja check
|
||||
}
|
||||
|
||||
package_llvm15() {
|
||||
pkgdesc="Compiler infrastructure (LLVM 15)"
|
||||
depends=('llvm15-libs' 'perl')
|
||||
|
||||
cd llvm-$pkgver.src/build
|
||||
|
||||
DESTDIR="$pkgdir" ninja install-distribution
|
||||
|
||||
# The runtime libraries go into llvm15-libs
|
||||
mv -f "$pkgdir"/usr/lib/llvm15/lib/libLLVM-{15,$pkgver}.so "$srcdir/"
|
||||
mv -f "$pkgdir"/usr/lib/llvm15/lib/LLVMgold.so "$srcdir/"
|
||||
|
||||
# Create versioned symlinks from /usr/bin/ to /usr/lib/llvm15/bin/
|
||||
install -d "$pkgdir/usr/bin"
|
||||
local _binary
|
||||
for _binary in "$pkgdir"/usr/lib/llvm15/bin/*; do
|
||||
local _basename=${_binary##*/}
|
||||
ln -s ../lib/llvm15/bin/$_basename "$pkgdir/usr/bin/$_basename-15"
|
||||
done
|
||||
|
||||
install -Dm644 ../LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
||||
}
|
||||
|
||||
package_llvm15-libs() {
|
||||
pkgdesc="LLVM 15 runtime libraries"
|
||||
depends=('gcc-libs' 'zlib' 'libffi' 'libedit' 'ncurses' 'libxml2')
|
||||
|
||||
install -d "$pkgdir/usr/lib/llvm15/lib"
|
||||
cp -P "$srcdir"/libLLVM-{15,$pkgver}.so "$pkgdir/usr/lib/"
|
||||
ln -s ../../libLLVM-15.so "$pkgdir/usr/lib/llvm15/lib/libLLVM-15.so"
|
||||
ln -s ../../libLLVM-15.so "$pkgdir/usr/lib/llvm15/lib/libLLVM-$pkgver.so"
|
||||
cp -P "$srcdir"/LLVMgold.so "$pkgdir/usr/lib/llvm15/lib/"
|
||||
|
||||
install -Dm644 "$srcdir/llvm-$pkgver.src/LICENSE.TXT" \
|
||||
"$pkgdir/usr/share/licenses/$pkgname/LICENSE"
|
||||
}
|
||||
|
||||
# vim:set ts=2 sw=2 et:
|
29
llvm15/keys/pgp/474E22316ABF4785A88C6E8EA2C794A986419D8A.asc
Normal file
29
llvm15/keys/pgp/474E22316ABF4785A88C6E8EA2C794A986419D8A.asc
Normal file
@ -0,0 +1,29 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mQINBFrqgT0BEAC7xo0WH+eNrLlU5LrCk59KmImn1abFcmWNd8kYr5XfqmJKyVqo
|
||||
EY7A/yRjf+Yn1621EDkpKPjbql7q7MlZMpqKVdOWKWgmhvz08IOKJxaIABd/iIRT
|
||||
FwhIvB68YjtmzcoOJRi1wLnwuG55fJ9E69HyZ33jgAlRaWV3bE/YyszoTlZriUOE
|
||||
RbzC5WzX004cE9evlrr+YLt5Y6z7tntOdSXPLyGOFAO5LYMsHsEdi2JBYWrjlslG
|
||||
6iJr5iEt9v442PrJ79YYbu5QWe/6APRWtI3AtKBp7y250oon2lbj+bIVD7U9fOBB
|
||||
n/Frqx54UN22sJycET63hgYW4pIjIi5zq+FF15aU+ZqBdtNltoX4hEN7wlDpuNc0
|
||||
ezVu2Z8hdt8thpjiFUioTQ1t3RmsN6N548VwxmHdoYpAmiZqPIYBYvm85JB7S/3h
|
||||
RLuoeGxufBhXGCpnG8ghTOGtbbdanuLB/UROFXTdyZbTCBN5S6jvwkPSaHG7H35Z
|
||||
3fazMriTXwL1RGAbKITSWhDe5dXy/yOInWe8emJx+35vwQYCB2L4S8wRyQyRw6x4
|
||||
YoXCscW041DUMBX2CC7SjMCcmAC39UX1c3GbTpS3rkJR9cmXt50nviMnKpIwlIPd
|
||||
ZYhmxKifwTJ70+c4GVK2o0MG9bTYvpYhLnYxv6iJCfgmT40E+qkDSzSoZwARAQAB
|
||||
tCJUb20gU3RlbGxhcmQgPHRzdGVsbGFyQHJlZGhhdC5jb20+iQJWBBMBCABAAhsD
|
||||
BwsJCAcDAgEGFQgCCQoLBBYCAwECHgECF4AWIQRHTiIxar9HhaiMbo6ix5SphkGd
|
||||
igUCYJMrXwUJCWsRIgAKCRCix5SphkGdir/GD/4zT43DAD9GU6VHGFeOphisH2kN
|
||||
IORVDEn8T+7iR7XLY9nVHJDxqQPUgB/gKYibrVYE0KVqjSSj3dr1cTorubMsDYgy
|
||||
gjjJSroOZupYC1+Yd8wb0jfdB6Z+CNKh0QN64BDS6D7P1GAcaIbxTyITjoz6jhyF
|
||||
Lkj4QCLiGWsMbapQA7MB4ij8t/AKORp1kW+tMyn6wfjfmYjrYOyE65UxmJtrV9Fv
|
||||
YllBt9oCAP0V9qphT6C6wxarJOuhIq9BoZOYKaUa5qRJfzNZagPG8ZalraP/MFfM
|
||||
g20hLuX5jN1jdzlHEgNt5WCYuI+uekOIUuT1PiFrmWwYXKWMAxnsVefpv8kmW8LR
|
||||
2TCG+ALvnYCRwr0Ykqh4KZcn4mpsV+QnwNAyVR6Bl6QTsPGtoHkU9Pg640mzkvgg
|
||||
w55X5kC3x4IxLskD1PFdFpW9LSRL5zz6jT5gL9Eb+zAuKpg/8w64MLnXaX69cR/p
|
||||
1rrNqZUfBOqf8fbrzy296ZSfeK4tV414iT8j76swQMAONGXoNKxO7E1cAgtxPUWW
|
||||
u3R4de3sZHGXTiEv70UNRv1TWjlVMK3Av7yDIGUnt+2wi3jilYjLWnAIgSQ46CDQ
|
||||
tUCdhdwmFcJLa3IJrs/UvHtlq6nU1sIo4wqJwfNBMHx0JZc+bKf41OgYL9ve11F5
|
||||
IKZNcvom0Pf7MkUKRQ==
|
||||
=Kuwb
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
30
llvm15/llvm-ppc64-elfv2.patch
Normal file
30
llvm15/llvm-ppc64-elfv2.patch
Normal file
@ -0,0 +1,30 @@
|
||||
This patches LLVM to use ELFv2 on ppc64 unconditionally unless overridden. We
|
||||
need this because unlike most distros we use ELFv2 for both glibc and musl
|
||||
on big endian ppc64.
|
||||
|
||||
diff --git a/lib/Target/PowerPC/PPCTargetMachine.cpp b/lib/Target/PowerPC/PPCTargetMachine.cpp
|
||||
index 0634833e..b7cbc2e7 100644
|
||||
--- a/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
|
||||
+++ b/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
|
||||
@@ -222,9 +222,8 @@ static PPCTargetMachine::PPCABI computeTargetABI(const Triple &TT,
|
||||
|
||||
switch (TT.getArch()) {
|
||||
case Triple::ppc64le:
|
||||
- return PPCTargetMachine::PPC_ABI_ELFv2;
|
||||
case Triple::ppc64:
|
||||
- return PPCTargetMachine::PPC_ABI_ELFv1;
|
||||
+ return PPCTargetMachine::PPC_ABI_ELFv2;
|
||||
default:
|
||||
return PPCTargetMachine::PPC_ABI_UNKNOWN;
|
||||
}
|
||||
diff --git a/test/CodeGen/PowerPC/ppc64-elf-abi.ll b/test/CodeGen/PowerPC/ppc64-elf-abi.ll
|
||||
index 8b1cf6b5..296a2afa 100644
|
||||
--- a/llvm/test/CodeGen/PowerPC/ppc64-elf-abi.ll
|
||||
+++ b/llvm/test/CodeGen/PowerPC/ppc64-elf-abi.ll
|
||||
@@ -1,4 +1,5 @@
|
||||
-; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s -check-prefix=CHECK-ELFv1
|
||||
+; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s -check-prefix=CHECK-ELFv2
|
||||
+; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-musl < %s | FileCheck %s -check-prefix=CHECK-ELFv2
|
||||
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -target-abi elfv1 < %s | FileCheck %s -check-prefix=CHECK-ELFv1
|
||||
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -target-abi elfv2 < %s | FileCheck %s -check-prefix=CHECK-ELFv2
|
||||
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s -check-prefix=CHECK-ELFv2
|
Loading…
x
Reference in New Issue
Block a user