packages/rocm-llvm/PKGBUILD

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"
}