* update rocm-llvm to 6.2.2-2

This commit is contained in:
Alexander Baldeck 2024-11-16 22:08:38 +01:00
parent 4d1cc4a9fd
commit 524a304088
4 changed files with 170 additions and 51 deletions

64
rocm-llvm/.SRCINFO Normal file
View File

@ -0,0 +1,64 @@
pkgbase = rocm-llvm
pkgver = 6.2.2
pkgrel = 2
url = https://rocm.docs.amd.com/en/latest/reference/rocmcc.html
arch = x86_64
arch = powerpc64le
arch = powerpc64
arch = riscv64
makedepends = git
makedepends = cmake
makedepends = python
makedepends = ninja
makedepends = rocm-core
makedepends = rocm-cmake
makedepends = perl
makedepends = gcc-libs
makedepends = zlib
makedepends = zstd
makedepends = libffi
makedepends = libedit
makedepends = ncurses
makedepends = libxml2
makedepends = patchelf
options = !debug
options = staticlibs
options = !lto
source = rocm-llvm::git+https://github.com/ROCm/llvm-project#tag=rocm-6.2.2
source = llvm-ppc64-elfv2.patch
source = clang-ppc64-dynamic-linker-path.patch
source = clang-ppc64-elfv2.patch
sha256sums = ba31afb2b041b766e2c59ad03328363b549eefbe7f1e9b235a70181538165d3e
sha256sums = 8c4e8db0b80b1a86f8cff9aa678b70458503bc8926ecc41e0df953ea14ab3559
sha256sums = 654b9eafcd20125319b3c319ab6674a940ddef400821c80813c16011ef8b6086
sha256sums = 8483b3bfaa31bee7a074bc83a1c7b7fec4cc6579836edb2802348b1340df3e41
pkgname = rocm-llvm
pkgdesc = Radeon Open Compute - LLVM toolchain (llvm, clang, lld)
license = Apache-2.0 WITH LLVM-exception
depends = rocm-core
depends = perl
depends = gcc-libs
depends = zlib
depends = zstd
depends = libffi
depends = libedit
depends = ncurses
depends = libxml2
pkgname = rocm-device-libs
pkgdesc = AMD specific device-side language runtime libraries
license = NCSA
depends = rocm-core
pkgname = comgr
pkgdesc = AMDGPU GPU Code Object Manager
license = NCSA
depends = glibc
depends = gcc-libs
depends = zstd
depends = zlib
depends = ncurses
depends = rocm-core
depends = rocm-llvm
depends = rocm-device-libs

View File

@ -0,0 +1,5 @@
[rocm-llvm]
source = 'github'
github = 'ROCm/llvm-project'
use_latest_release = true
prefix = 'rocm-'

View File

@ -2,41 +2,31 @@
# Maintainer: Torsten Keßler <tpkessler at archlinux dot org>
# Contributor: acxz <akashpatel2008 at yahoo dot com>
pkgname=rocm-llvm
pkgdesc='Radeon Open Compute - LLVM toolchain (llvm, clang, lld)'
pkgver=6.0.2
pkgrel=1.1
pkgbase=rocm-llvm
pkgname=(rocm-llvm rocm-device-libs comgr)
pkgver=6.2.2
pkgrel=2
arch=(x86_64 powerpc64le powerpc64 riscv64)
url='https://rocm.docs.amd.com/en/latest/reference/rocmcc/rocmcc.html'
license=('Apache-2.0 WITH LLVM-exception')
makedepends=('cmake' 'python' 'ninja')
_git='https://github.com/ROCm/llvm-project'
source=("${pkgname}-${pkgver}.tar.gz::$_git/archive/rocm-$pkgver.tar.gz"
"${pkgname}-fix-segfault.patch"
url='https://rocm.docs.amd.com/en/latest/reference/rocmcc.html'
makedepends=('git' 'cmake' 'python' 'ninja' 'rocm-core' 'rocm-cmake' 'perl'
'gcc-libs' 'zlib' 'zstd' 'libffi' 'libedit' 'ncurses' 'libxml2' 'patchelf')
source=("$pkgbase::git+https://github.com/ROCm/llvm-project#tag=rocm-$pkgver"
"llvm-ppc64-elfv2.patch"
"clang-ppc64-dynamic-linker-path.patch"
"clang-ppc64-elfv2.patch"
"rocm-llvm-riscv-uleb128.patch")
sha256sums=('7d35acc84de1adee65406f92a369a30364703f84279241c444cd93a48c7eeb76'
'4d3f198c5422e9987f442c20963223c39b1548ffa00b6c9db81af5070278ce03'
"clang-ppc64-elfv2.patch")
sha256sums=('ba31afb2b041b766e2c59ad03328363b549eefbe7f1e9b235a70181538165d3e'
'8c4e8db0b80b1a86f8cff9aa678b70458503bc8926ecc41e0df953ea14ab3559'
'654b9eafcd20125319b3c319ab6674a940ddef400821c80813c16011ef8b6086'
'f80157e9ef2bfea9dcb8560e17b76b7e4e9de72bab0c83b1802734ff83293411'
'a4dc17071cfc8248f33c74dca14df715710b375e8e1aefc46c4e505334f4bf9b')
'8483b3bfaa31bee7a074bc83a1c7b7fec4cc6579836edb2802348b1340df3e41')
options=(!debug staticlibs !lto)
_dirname="$(basename "$_git")-$(basename "${source[0]}" .tar.gz)"
prepare() {
cd "$_dirname"
patch -Np1 -i ../"${pkgname}-fix-segfault.patch"
patch -Np1 -i ../"${pkgname}-riscv-uleb128.patch"
cd ${srcdir}/${pkgbase}/llvm
patch -Np2 -i ${srcdir}/llvm-ppc64-elfv2.patch
cd ${srcdir}/${_dirname}/llvm
patch -Np2 -i ${srcdir}/llvm-ppc64-elfv2.patch
cd ${srcdir}/${_dirname}/clang
patch -Np1 -i ${srcdir}/clang-ppc64-elfv2.patch
patch -Np2 -i ${srcdir}/clang-ppc64-dynamic-linker-path.patch
cd ${srcdir}/${pkgbase}/clang
patch -Np0 -i ${srcdir}/clang-ppc64-elfv2.patch
patch -Np2 -i ${srcdir}/clang-ppc64-dynamic-linker-path.patch
}
build() {
@ -46,10 +36,14 @@ build() {
x86_64) _target=X86 ;;
esac
# Build only minimal debug info to reduce size
CFLAGS+=' -g1'
CXXFLAGS+=' -g1'
local cmake_args=(
-G Ninja
-B build
-S "$_dirname/llvm"
-S "$pkgbase/llvm"
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX='/opt/rocm/lib/llvm'
-DLLVM_HOST_TRIPLE=$CHOST
@ -73,25 +67,77 @@ build() {
-DCLANG_INCLUDE_TESTS=OFF
-DLLVM_BINUTILS_INCDIR=/usr/include
)
cmake "${cmake_args[@]}"
cmake --build build
local cmake_device_libs_args=(
-Wno-dev
-S "$pkgbase/amd/device-libs"
-B build-device-libs
-D CMAKE_BUILD_TYPE=None
-D CMAKE_INSTALL_PREFIX=/opt/rocm
-D CMAKE_PREFIX_PATH="$srcdir/build"
)
cmake "${cmake_device_libs_args[@]}"
cmake --build build-device-libs
local cmake_comgr_args=(
-Wno-dev
-S "$pkgbase/amd/comgr"
-B build-comgr
-D CMAKE_BUILD_TYPE=None
-D CMAKE_INSTALL_PREFIX=/opt/rocm
-D BUILD_TESTING=OFF
-D CMAKE_PREFIX_PATH="$srcdir/build;$srcdir/build-device-libs"
)
cmake "${cmake_comgr_args[@]}"
cmake --build build-comgr
}
package() {
package_rocm-llvm() {
pkgdesc='Radeon Open Compute - LLVM toolchain (llvm, clang, lld)'
license=('Apache-2.0 WITH LLVM-exception')
depends=('rocm-core' 'perl' 'gcc-libs' 'zlib' 'zstd' 'libffi' 'libedit'
'ncurses' 'libxml2')
DESTDIR="$pkgdir" cmake --install build
# Provide symlink to old LLVM location, pre ROCm 6.0.0
ln -s /opt/rocm/lib/llvm "$pkgdir/opt/rocm/llvm"
# Fix rpath to avoid error when running amdclang and friends
# (error while loading shared libraries: libunwind.so.1: cannot open shared object file: No such file or directory)
patchelf --set-rpath '$ORIGIN' "$pkgdir/opt/rocm/lib/llvm/lib/libc++abi.so"
# https://bugs.archlinux.org/task/28479
install -d "$pkgdir/opt/rocm/lib/llvm/lib/bfd-plugins"
ln -s /opt/rocm/lib/llvm/lib/LLVMgold.so "$pkgdir/opt/rocm/lib/llvm/lib/bfd-plugins/LLVMgold.so"
cd "$_dirname"
cd "$pkgbase"
install -Dm644 llvm/LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/llvm-LICENSE"
install -Dm644 clang/LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/clang-LICENSE"
install -Dm644 clang-tools-extra/LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/clang-tools-extra-LICENSE"
install -Dm644 compiler-rt/LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/compiler-rt-LICENSE"
install -Dm644 lld/LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/lld-LICENSE"
}
package_rocm-device-libs() {
pkgdesc='AMD specific device-side language runtime libraries'
license=('NCSA')
depends=('rocm-core')
DESTDIR="$pkgdir" cmake --install build-device-libs
cd "$pkgbase/amd/device-libs"
install -Dm644 LICENSE.TXT "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
package_comgr() {
pkgdesc='AMDGPU GPU Code Object Manager'
license=('NCSA')
depends=('glibc' 'gcc-libs' 'zstd' 'zlib' 'ncurses'
'rocm-core' 'rocm-llvm' 'rocm-device-libs')
DESTDIR="$pkgdir" cmake --install build-comgr
cd "$pkgbase/amd/comgr"
install -Dm644 LICENSE.txt "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}

View File

@ -1,24 +1,6 @@
--- clang-16.0.4.src/lib/Basic/Targets/PPC.h.orig 2023-05-24 14:28:01.176621490 +0200
+++ clang-16.0.4.src/lib/Basic/Targets/PPC.h 2023-05-24 14:29:38.414872784 +0200
@@ -425,14 +425,10 @@
LongDoubleFormat = &llvm::APFloat::IEEEdouble();
} else if ((Triple.getArch() == llvm::Triple::ppc64le)) {
DataLayout = "e-m:e-i64:64-n32:64";
- ABI = "elfv2";
} else {
DataLayout = "E-m:e-i64:64-n32:64";
- if (Triple.isPPC64ELFv2ABI())
- ABI = "elfv2";
- else
- ABI = "elfv1";
}
+ ABI = "elfv2";
if (Triple.isOSFreeBSD() || Triple.isOSOpenBSD() || Triple.isMusl()) {
LongDoubleWidth = LongDoubleAlign = 64;
--- clang-16.0.4.src/lib/Driver/ToolChains/Clang.cpp.orig 2023-05-24 14:32:51.659489490 +0200
+++ clang-16.0.4.src/lib/Driver/ToolChains/Clang.cpp 2023-05-24 14:33:30.235618677 +0200
@@ -2000,13 +2000,7 @@
--- lib/Driver/ToolChains/Clang.cpp.orig 2024-03-13 17:42:20.994438710 +0100
+++ lib/Driver/ToolChains/Clang.cpp 2024-03-13 17:42:54.503144176 +0100
@@ -2029,13 +2029,7 @@
const char *ABIName = nullptr;
if (T.isOSBinFormatELF()) {
switch (getToolChain().getArch()) {
@ -33,3 +15,25 @@
case llvm::Triple::ppc64le:
ABIName = "elfv2";
break;
--- lib/Basic/Targets/PPC.h.orig 2024-03-13 17:38:36.204536553 +0100
+++ lib/Basic/Targets/PPC.h 2024-03-13 17:41:36.426819177 +0100
@@ -424,18 +424,16 @@
LongDoubleFormat = &llvm::APFloat::IEEEdouble();
} else if ((Triple.getArch() == llvm::Triple::ppc64le)) {
DataLayout = "e-m:e-Fn32-i64:64-n32:64";
- ABI = "elfv2";
} else {
DataLayout = "E-m:e";
if (Triple.isPPC64ELFv2ABI()) {
- ABI = "elfv2";
DataLayout += "-Fn32";
} else {
- ABI = "elfv1";
DataLayout += "-Fi64";
}
DataLayout += "-i64:64-n32:64";
}
+ ABI = "elfv2";
if (Triple.isOSFreeBSD() || Triple.isOSOpenBSD() || Triple.isMusl()) {
LongDoubleWidth = LongDoubleAlign = 64;