144 lines
5.2 KiB
Bash
144 lines
5.2 KiB
Bash
# POWER Maintainer: Alexander Baldeck <alex.bldck@gmail.com>
|
|
# Maintainer: Torsten Keßler <tpkessler at archlinux dot org>
|
|
# Contributor: acxz <akashpatel2008 at yahoo dot com>
|
|
|
|
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.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")
|
|
sha256sums=('ba31afb2b041b766e2c59ad03328363b549eefbe7f1e9b235a70181538165d3e'
|
|
'8c4e8db0b80b1a86f8cff9aa678b70458503bc8926ecc41e0df953ea14ab3559'
|
|
'654b9eafcd20125319b3c319ab6674a940ddef400821c80813c16011ef8b6086'
|
|
'8483b3bfaa31bee7a074bc83a1c7b7fec4cc6579836edb2802348b1340df3e41')
|
|
options=(!debug staticlibs !lto)
|
|
|
|
prepare() {
|
|
cd ${srcdir}/${pkgbase}/llvm
|
|
patch -Np2 -i ${srcdir}/llvm-ppc64-elfv2.patch
|
|
|
|
cd ${srcdir}/${pkgbase}/clang
|
|
patch -Np0 -i ${srcdir}/clang-ppc64-elfv2.patch
|
|
patch -Np2 -i ${srcdir}/clang-ppc64-dynamic-linker-path.patch
|
|
}
|
|
|
|
build() {
|
|
case "${CARCH}" in
|
|
powerpc*) _target=PowerPC ;;
|
|
riscv64) _target=RISCV ;;
|
|
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 "$pkgbase/llvm"
|
|
-DCMAKE_BUILD_TYPE=Release
|
|
-DCMAKE_INSTALL_PREFIX='/opt/rocm/lib/llvm'
|
|
-DLLVM_HOST_TRIPLE=$CHOST
|
|
-DLLVM_ENABLE_PROJECTS='llvm;clang;lld;compiler-rt;clang-tools-extra'
|
|
-DCLANG_ENABLE_AMDCLANG=ON
|
|
-DLLVM_ENABLE_RUNTIMES='libcxx;libcxxabi;libunwind'
|
|
-DLIBCXX_ENABLE_STATIC=ON
|
|
-DLIBCXXABI_ENABLE_STATIC=ON
|
|
-DLLVM_TARGETS_TO_BUILD="AMDGPU;NVPTX;${_target}"
|
|
-DCLANG_DEFAULT_LINKER=lld
|
|
-DLLVM_INSTALL_UTILS=ON
|
|
-DLLVM_ENABLE_BINDINGS=OFF
|
|
-DLLVM_LINK_LLVM_DYLIB=OFF
|
|
-DLLVM_BUILD_LLVM_DYLIB=OFF
|
|
-DLLVM_ENABLE_ASSERTIONS=ON
|
|
-DOCAMLFIND=NO
|
|
-DLLVM_ENABLE_OCAMLDOC=OFF
|
|
-DLLVM_INCLUDE_BENCHMARKS=OFF
|
|
-DLLVM_BUILD_TESTS=OFF
|
|
-DLLVM_INCLUDE_TESTS=OFF
|
|
-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_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 "$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"
|
|
}
|