summaryrefslogtreecommitdiff
path: root/dev-libs/rocm-opencl-runtime
diff options
context:
space:
mode:
Diffstat (limited to 'dev-libs/rocm-opencl-runtime')
-rw-r--r--dev-libs/rocm-opencl-runtime/Manifest9
-rw-r--r--dev-libs/rocm-opencl-runtime/files/rocm-opencl-runtime-6.1.2-fix-segfault.patch31
-rw-r--r--dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-6.1.1.ebuild (renamed from dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-9999.ebuild)78
-rw-r--r--dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-6.1.2-r1.ebuild (renamed from dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-6.0.0.ebuild)26
-rw-r--r--dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-6.1.2.ebuild93
5 files changed, 151 insertions, 86 deletions
diff --git a/dev-libs/rocm-opencl-runtime/Manifest b/dev-libs/rocm-opencl-runtime/Manifest
index e17c2ec9074e..e05cff529f7a 100644
--- a/dev-libs/rocm-opencl-runtime/Manifest
+++ b/dev-libs/rocm-opencl-runtime/Manifest
@@ -4,12 +4,14 @@ AUX rocm-opencl-runtime-3.5.0-do-not-install-libopencl.patch 548 BLAKE2B ae42344
AUX rocm-opencl-runtime-5.0.2-enable-gfx800.patch 970 BLAKE2B 4080ab450457c21de1c81c7e9eebc75578d7326430732f2dab5688150347de2b7977d8804573fd79bb1d14a2e5b87ede0de41cd7c7920f90fe8762686198f931 SHA512 b4f653fbe1b51e789a8213e37c5e6c43d7035e7971c483a3e24903e1d46bdbf206575b16ac6c78b5c32ba4e32dfa428339723b58f672716c05e51c785543c535
AUX rocm-opencl-runtime-5.1.3-remove-clinfo.patch 1178 BLAKE2B b708214f9c4a6860a23281e8ece176d4b1968fc005e1b95a88e67752a8c60a23a7f66ff267ef909ddee4a45f4c8441339ea6f5de867d77df10c98d8043bb54d4 SHA512 626574b948a16cd59513496791bd73a5c1f3bda68ae9e01ea982bd036858f7c8817ea33a22e85f180cecdbe19d999afb2604c8cb549bdd71d4bfc56c18f5d4ad
AUX rocm-opencl-runtime-5.3.3-gcc13.patch 791 BLAKE2B 6b284cb6cd9b273ee6d21850f7a29f75079567c70bdb263b3b95b27632ac71dd5e0be1200db58281c3ac737ff9d042dbd87615300e6182c9f43425098ae3389c SHA512 9edcfed7d5a5ed8e5aa1ccd8e09639d95ef373878eb7bc4ad65aa38539d8138c1d589056ffe9fd95cb18e95aebef3f206f5731557a1451758cbf3ae0e7b30e21
+AUX rocm-opencl-runtime-6.1.2-fix-segfault.patch 1471 BLAKE2B 868e0b7d653277623d1f708680bb2cef8c5899472205345487c117888717987a3697837b6f931b31f3adf8adefdda4e6eb91102219c05c1639c5cf389eda3209 SHA512 27ab04193692a5089b8ee73f9882a9c86e518cb77afd631dc84b3a9ffe9cda48a0ac853dd259d66bc937791cfb2422668429d472fd62b833aef076cfa930180f
DIST rocclr-5.1.3.tar.gz 618606 BLAKE2B 02b7732ddd03c0883bee49c56466cd21c649159f801bfb2537eea6e640c65613eb57b37d942f465a9deb83d65735f51212dde5e4f77ba8239d1a6b7037e1800c SHA512 89fd2eca39ed84a1cf525b2c606089ef39f64c1f997c4880e10722da6de4864110752640e1508db1aeb9d15c48ba4e6fe5dbe7a9e56718853ece42548028b2ca
DIST rocclr-5.3.3.tar.gz 625944 BLAKE2B 0cdbc1415a355e1d56628834846aaa8587c9827eeea59f4312b788e868265dcb42197181fd5ef411416da2e11662c7f665f578aa750ab88c3a5405bcc58ee449 SHA512 3f85532cffc09c2ca8e7cd1770263d1c1a38633ed2bc5cfe62072e12a6f8f669db400519950718be31f6b77693d372e2ef905f06c7f02e126aa9ff7d2da97924
DIST rocclr-5.4.3.tar.gz 640557 BLAKE2B 9ab91bab7ffb06c9c0d1c2ae79533fccc597071dda289ac375e32eb2965c638a7029951d2a49d46eeead9d7d242fe3a0cedb3e444d877af1bbf0e2d801c91e11 SHA512 c1d1a2ca08c2d762a221c04d394469aa7aff46086151333b145e0db9a7c7eb3dbbf8b9693e50d816aa9a13c16b4ebacf5ff3d5d8ff3393a8a764728ef5172d3a
DIST rocclr-5.5.1.tar.gz 634330 BLAKE2B e6383a6b6b09f274a944d66effd345e38a191ec73ee5c5240f8ec8bb62a4df97b80835ce57f8f78c3834602b9da425b49289b5c7cd7e4c7071147ff409c6a6c9 SHA512 4c12011d22a4f14d9e93250b2a38716eb973139afa1adbbbd51c0e0ed13c0b7c1f45a37c71ef937c5fdabf09e928d7913ca3332fc61b7a2c10d21421306a228f
DIST rocm-clr-5.7.1.tar.gz 2008647 BLAKE2B 3db0760d6f83504e60caf88a2dd5e0bc02c7db9d6f263ad0eb2cfc79aa0f88a3699c412844a0158a796d9d02e79660287e791edad787d814eefffea4fd2298b4 SHA512 d79323481d82fc02c12a32cdcc0d14437d512af023e7737db0387b7eecb27fe6e4ae7c71d6adce57932a04bb24c880440d9dc10aeb5af11a4f2ca64d44330965
-DIST rocm-clr-6.0.0.tar.gz 1983453 BLAKE2B 2cf6ec7c3b0ec5dedeea94ff54af30662b781fc2eee22e3315094af61dc9d331eba33c1d9d463295848c5724e515a3137f9b189c1261273afad1a5f9d32226c2 SHA512 12e77a121150d8c25121b98bd7c6233c2568f9f4130bdbe6bc3ab225f14b8bea6a6bdc4ed497c0f999d3d3daabdca0de8caaa1b69911c11974b5d6f951734433
+DIST rocm-clr-6.1.1.tar.gz 2031034 BLAKE2B b0485bb015d31986f4988d1db0c029c826856e50b5bb1b58fac2097c14b3966668f1b8d41ec198889e27ac860497a8b3c081ec31d52390d5c9ff5db092bf7cce SHA512 86925e8b9a9e77b06a57daefbc7279887b4ef7c6a79c3717bc2f2d3bf29926281c60063fd17e21c65d7def520d9f579bf88f69051d053a38750ba968f69ca3fc
+DIST rocm-clr-6.1.2.tar.gz 2031283 BLAKE2B d51d32a77794ea97f1a3817786c9fd6b482106b665eea6e2c9b4c11e4dce19a3486386eb5ba111554c2d82c30e2a93add7502eed5768caf3fb709fb5fbb2e71b SHA512 e97224451864efe0084c4117f54893c9624a6a9f365a0b4abad08fd9635f008dea742dc589429fbb714e1b8177d06362c0f5a741f6c4a050d0fd4d48da72d54b
DIST rocm-opencl-runtime-5.1.3.tar.gz 1004765 BLAKE2B 64d9b42026d2be1d0e4aa666785699f6b4ec0584a927904a94bf830883050943503f8bdd7c97438a2fb11c71686a330d526f633959916c5c6c8da2e037841e79 SHA512 b83c3ae0bfad80f867bacce36710a8964f6dd7e64bf50da3ec6ce842217d6de63299d9ceaab9dc25a22252484520a85d02859809463dad5dda9b1f00a86863e0
DIST rocm-opencl-runtime-5.3.3.tar.gz 1007773 BLAKE2B a3f600a68183337f92b152a123241cb7025889cca2ef6814d9d5b5a2146a78703b171d20bcb432bc7a2cdd1f24ad349408c17816b25a66702e9f0f5345af9082 SHA512 391f0f244b7f02972df8cada821e69ee8d81d96b9cff3c14f1d0838da583d8fb136ec4bd5ee820f6dd261968e9eef5e9a5b10b7bb76b1b64625c399d79bcb03f
DIST rocm-opencl-runtime-5.4.3.tar.gz 1005268 BLAKE2B f9398e4c2b0f045f1b5d8df9f31b7f2bef6a9201885aa6ee5fc5d71632cfde26a078d9a5ea38c3da12d3c187faf04c7bdcf1a8ecb9927cdba56b1efdfcdc44ee SHA512 f65d4622ce8721a6b91ab5b5b306d142ba507d3e631ac3ab0b76c5bc6d8d18455e02debd954c82e7eb609f232b509f1ec1a013dc2fad467c2c2ad31fdf15755d
@@ -19,6 +21,7 @@ EBUILD rocm-opencl-runtime-5.3.3-r1.ebuild 3630 BLAKE2B cdafd2367c4b222a43b434e8
EBUILD rocm-opencl-runtime-5.4.3-r1.ebuild 4031 BLAKE2B c952245f6f6ad1910facd33a82d25b77f2b20cbbdf4c05ca7ce735ab913fc49bdc5cdc1e8fc7f944cc5574331305e2d96cbb9bccd17a7ec28c042d9bec91499c SHA512 2cf80ae9fa5dba61936216fe87274998deefa70d0f20613ad0bf048e29f35eb37f525f1682024a85ab4a4acd79b8d75ad586008c5032dc527b293e79d3bc6a01
EBUILD rocm-opencl-runtime-5.5.1.ebuild 4002 BLAKE2B e784debbe6ca533290ca801cf965087e7e01d39c84a65ad2a738a672f3d330c7a28cc13fd5a8d6cbcc9520c9543cce9b762d480b6f3f4173006301c293af013b SHA512 38940e4b6d028fc8e713ec1641824776d0fab540f3e9e3011f6b377caf82a9b4d13ccd897605c01557975c1ec4f89285e944cee6b67bdbe56ddc300284d2df55
EBUILD rocm-opencl-runtime-5.7.1-r1.ebuild 3119 BLAKE2B 672082b1bea0f6cd45f8c37181e731d60dec3844fa0a31aca555b7c6e154d4981d33d1140fc83b3f8c6fbc46b7a13b88c76278ea0c04463eb0f2b398a60b3bbf SHA512 7d12f85d62bfb48df3f7c0d705e5411dad21ffa71964f19b09f2623aa836ecd91fedb28ad1ee5790ca5c538139e6790b2154c66dccc67687decdd3fb62d92b18
-EBUILD rocm-opencl-runtime-6.0.0.ebuild 3119 BLAKE2B 272dfd88268d3457367bf9f19e4622949ceb41b1f20c9504545e1638331ece944aaec9b4eb60f9afd1bbdd409252be70d291fbccd351c2296dbaf08a7094201a SHA512 3cedae3db98286f85dcdb3db35bdfcc7f6ac8702471d4cd7115bc6672a2623924a0aba6fec1e528fb184b91e1bad99dfa6511739c54ebc7699be76f5563c756e
-EBUILD rocm-opencl-runtime-9999.ebuild 4098 BLAKE2B dbeebfc8fe71bb84507cb8f021deda11c4d3027ed4f21f4bed3f92c732e5d7122a44a42e4d25c8b2df59ec94a825654d508ca3f02559827ab1db2472b6240c9c SHA512 8ede58974bf967eb569621aed33dbc0d974247059818f72195affb645ca1d8e642f6605eaeb345604c0376df9eabe84402cc5d1e8e53feb74c7d8d337fa44579
+EBUILD rocm-opencl-runtime-6.1.1.ebuild 2695 BLAKE2B 2e2241518863f36222e755d61f8e5c25510c5a5250458fce110d5830898a36ae3e97a20fce61382d7ebf39346dee705b673dd0c1e4390e3ee44f7c23eff4d1b7 SHA512 edfb87e56c042000e41480771186a8e536e35a58cb2e57ef71f3d118501dcc85eb1025eba6a6af0b25d9c896329aa832d56f9b1037031c4279e5f21367dfa81b
+EBUILD rocm-opencl-runtime-6.1.2-r1.ebuild 2767 BLAKE2B f1fc8c310f299d6d3b42d0d64ea46cbab36cccabf9d332e8a40efbb790367416be0010a4d4e2d69748205765b9d118f2f6a9082880ecb286c58af5fcbaa23e5b SHA512 9e1646e606bc4f50c5bdaef68890b7ea0b2caeea563ec9a8947035d9a65e3121417bf60d13d38c23c95b197dd526651cb2b2739b96c5cd868d7f8314d09606e7
+EBUILD rocm-opencl-runtime-6.1.2.ebuild 2695 BLAKE2B 2e2241518863f36222e755d61f8e5c25510c5a5250458fce110d5830898a36ae3e97a20fce61382d7ebf39346dee705b673dd0c1e4390e3ee44f7c23eff4d1b7 SHA512 edfb87e56c042000e41480771186a8e536e35a58cb2e57ef71f3d118501dcc85eb1025eba6a6af0b25d9c896329aa832d56f9b1037031c4279e5f21367dfa81b
MISC metadata.xml 525 BLAKE2B 9af34c6be2bb5ff304e4d01810b810eb8a0639d1972325fad3b81c93aa4d060cbebddc9c06da702dd80f9aa98549720cf2bc674d5b11ef6f99ed30efe50d2110 SHA512 c50670dde49ec0d9d3acca19d37842ecf567429f455e1b37c5181e5d4361d829eff0980ba35096ef42c0789f8904d52425faf4a2aabf641142722957b626378d
diff --git a/dev-libs/rocm-opencl-runtime/files/rocm-opencl-runtime-6.1.2-fix-segfault.patch b/dev-libs/rocm-opencl-runtime/files/rocm-opencl-runtime-6.1.2-fix-segfault.patch
new file mode 100644
index 000000000000..78f76303468f
--- /dev/null
+++ b/dev-libs/rocm-opencl-runtime/files/rocm-opencl-runtime-6.1.2-fix-segfault.patch
@@ -0,0 +1,31 @@
+From d1fff7cea2231e7980d85790486edb70d093a1dc Mon Sep 17 00:00:00 2001
+From: Rakesh Roy <rakesh.roy@amd.com>
+Date: Wed, 20 Mar 2024 22:50:22 +0530
+Subject: [PATCH] SWDEV-445096 - Fix -O0 crash in OpenCL tests
+
+- With https://gerrit-git.amd.com/c/lightning/ec/llvm-project/+/1002628 applied, at -O0 Kernel::dynamicParallelism() returns true but virtual queue isn't created
+- This causes segfault inside VirtualGPU::submitKernelInternal() when getVQVirtualAddress() is called
+
+Change-Id: Ia7af042adad2329e870c142caaac3e8fa886f8b8
+---
+ rocclr/device/rocm/rocvirtual.cpp | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/rocclr/device/rocm/rocvirtual.cpp b/rocclr/device/rocm/rocvirtual.cpp
+index 51080013b..1610aecfe 100644
+--- a/rocclr/device/rocm/rocvirtual.cpp
++++ b/rocclr/device/rocm/rocvirtual.cpp
+@@ -3326,8 +3326,11 @@ bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes,
+
+ if (gpuKernel.dynamicParallelism()) {
+ dispatchBarrierPacket(kBarrierPacketHeader, true);
+- static_cast<KernelBlitManager&>(blitMgr()).runScheduler(
+- getVQVirtualAddress(), schedulerParam_, schedulerQueue_, schedulerSignal_, schedulerThreads_);
++ if (virtualQueue_ != nullptr) {
++ static_cast<KernelBlitManager&>(blitMgr()).runScheduler(
++ getVQVirtualAddress(), schedulerParam_, schedulerQueue_,
++ schedulerSignal_, schedulerThreads_);
++ }
+ }
+
+ // Check if image buffer write back is required
diff --git a/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-9999.ebuild b/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-6.1.1.ebuild
index 1ca30c8a10ae..465e3a2ddc66 100644
--- a/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-9999.ebuild
+++ b/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-6.1.1.ebuild
@@ -3,60 +3,31 @@
EAPI=8
-inherit cmake edo flag-o-matic
+ROCM_SKIP_GLOBALS=1
+inherit cmake edo flag-o-matic rocm
DESCRIPTION="Radeon Open Compute OpenCL Compatible Runtime"
-HOMEPAGE="https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime"
+HOMEPAGE="https://github.com/ROCm-Developer-Tools/clr"
-if [[ ${PV} == *9999 ]] ; then
- EGIT_REPO_URI="https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime"
- EGIT_CLR_REPO_URI="https://github.com/ROCm-Developer-Tools/ROCclr"
- inherit git-r3
- S="${WORKDIR}/${P}"
-else
- SRC_URI="https://github.com/ROCm-Developer-Tools/ROCclr/archive/rocm-${PV}.tar.gz -> rocclr-${PV}.tar.gz
- https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/archive/rocm-${PV}.tar.gz -> rocm-opencl-runtime-${PV}.tar.gz"
- S="${WORKDIR}/ROCm-OpenCL-Runtime-rocm-${PV}"
-fi
+SRC_URI="https://github.com/ROCm-Developer-Tools/clr/archive/refs/tags/rocm-${PV}.tar.gz -> rocm-clr-${PV}.tar.gz"
+S="${WORKDIR}/clr-rocm-${PV}/"
LICENSE="Apache-2.0 MIT"
SLOT="0/$(ver_cut 1-2)"
+KEYWORDS="~amd64"
IUSE="debug test"
RESTRICT="!test? ( test )"
-RDEPEND=">=dev-libs/rocr-runtime-5.3
- >=dev-libs/rocm-comgr-5.3
- >=dev-libs/rocm-device-libs-5.3
+RDEPEND=">=dev-libs/rocr-runtime-6.0
+ >=dev-libs/rocm-comgr-6.0
+ >=dev-libs/rocm-device-libs-6.0
>=virtual/opencl-3
media-libs/mesa[-opencl]"
-DEPEND="${RDEPEND}
- dev-util/opencl-headers"
+DEPEND="${RDEPEND}"
BDEPEND=">=dev-build/rocm-cmake-5.3
media-libs/glew
test? ( >=x11-apps/mesa-progs-8.5.0[X] )
- "
-
-CLR_S="${WORKDIR}/ROCclr-rocm-${PV}"
-
-src_unpack () {
-if [[ ${PV} == "9999" ]]; then
- git-r3_fetch
- git-r3_checkout
- git-r3_fetch "${EGIT_CLR_REPO_URI}"
- git-r3_checkout "${EGIT_CLR_REPO_URI}" "${CLR_S}"
- else
- default
- fi
-}
-src_prepare() {
- cmake_src_prepare
-
- pushd ${CLR_S} || die
- # Bug #753377
- # patch re-enables accidentally disabled gfx800 family
- eapply "${FILESDIR}/${PN}-5.0.2-enable-gfx800.patch"
- popd || die
-}
+"
src_configure() {
# -Werror=strict-aliasing
@@ -75,45 +46,28 @@ src_configure() {
local mycmakeargs=(
-Wno-dev
- -DROCCLR_PATH="${CLR_S}"
- -DAMD_OPENCL_PATH="${S}"
-DROCM_PATH="${EPREFIX}/usr"
-DBUILD_TESTS=$(usex test ON OFF)
-DEMU_ENV=ON
- -DBUILD_ICD=OFF
+ -DBUILD_ICD=ON
-DFILE_REORG_BACKWARD_COMPATIBILITY=OFF
+ -DCLR_BUILD_OCL=on
)
cmake_src_configure
}
src_install() {
insinto /etc/OpenCL/vendors
- doins config/amdocl64.icd
+ doins opencl/config/amdocl64.icd
- cd "${BUILD_DIR}" || die
+ cd "${BUILD_DIR}"/opencl || die
insinto /usr/lib64
doins amdocl/libamdocl64.so
doins tools/cltrace/libcltrace.so
}
-# Copied from rocm.eclass. This ebuild does not need amdgpu_targets
-# USE_EXPANDS, so it should not inherit rocm.eclass; it only uses the
-# check_amdgpu function in src_test. Rename it to check-amdgpu to avoid
-# pkgcheck warning.
-check-amdgpu() {
- for device in /dev/kfd /dev/dri/render*; do
- addwrite ${device}
- if [[ ! -r ${device} || ! -w ${device} ]]; then
- eerror "Cannot read or write ${device}!"
- eerror "Make sure it is present and check the permission."
- ewarn "By default render group have access to it. Check if portage user is in render group."
- die "${device} inaccessible"
- fi
- done
-}
-
src_test() {
- check-amdgpu
+ check_amdgpu
cd "${BUILD_DIR}"/tests/ocltst || die
export OCL_ICD_FILENAMES="${BUILD_DIR}"/amdocl/libamdocl64.so
local instruction1="Please start an X server using amdgpu driver (not Xvfb!),"
diff --git a/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-6.0.0.ebuild b/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-6.1.2-r1.ebuild
index b6912994ddb7..540038443185 100644
--- a/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-6.0.0.ebuild
+++ b/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-6.1.2-r1.ebuild
@@ -9,19 +9,12 @@ inherit cmake edo flag-o-matic rocm
DESCRIPTION="Radeon Open Compute OpenCL Compatible Runtime"
HOMEPAGE="https://github.com/ROCm-Developer-Tools/clr"
-#if [[ ${PV} == *9999 ]] ; then
-# EGIT_REPO_URI="https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime"
-# EGIT_CLR_REPO_URI="https://github.com/ROCm-Developer-Tools/ROCclr"
-# inherit git-r3
-# S="${WORKDIR}/${P}"
-#else
- KEYWORDS="~amd64"
- SRC_URI="https://github.com/ROCm-Developer-Tools/clr/archive/refs/tags/rocm-${PV}.tar.gz -> rocm-clr-${PV}.tar.gz"
- S="${WORKDIR}/clr-rocm-${PV}/"
-#fi
+SRC_URI="https://github.com/ROCm-Developer-Tools/clr/archive/refs/tags/rocm-${PV}.tar.gz -> rocm-clr-${PV}.tar.gz"
+S="${WORKDIR}/clr-rocm-${PV}/"
LICENSE="Apache-2.0 MIT"
SLOT="0/$(ver_cut 1-2)"
+KEYWORDS="~amd64"
IUSE="debug test"
RESTRICT="!test? ( test )"
@@ -34,18 +27,9 @@ DEPEND="${RDEPEND}"
BDEPEND=">=dev-build/rocm-cmake-5.3
media-libs/glew
test? ( >=x11-apps/mesa-progs-8.5.0[X] )
- "
+"
-src_unpack () {
-if [[ ${PV} == "9999" ]]; then
- git-r3_fetch
-OB git-r3_checkout
- git-r3_fetch "${EGIT_CLR_REPO_URI}"
- git-r3_checkout "${EGIT_CLR_REPO_URI}" "${CLR_S}"
- else
- default
- fi
-}
+PATCHES=( "${FILESDIR}/rocm-opencl-runtime-6.1.2-fix-segfault.patch" )
src_configure() {
# -Werror=strict-aliasing
diff --git a/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-6.1.2.ebuild b/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-6.1.2.ebuild
new file mode 100644
index 000000000000..465e3a2ddc66
--- /dev/null
+++ b/dev-libs/rocm-opencl-runtime/rocm-opencl-runtime-6.1.2.ebuild
@@ -0,0 +1,93 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+ROCM_SKIP_GLOBALS=1
+inherit cmake edo flag-o-matic rocm
+
+DESCRIPTION="Radeon Open Compute OpenCL Compatible Runtime"
+HOMEPAGE="https://github.com/ROCm-Developer-Tools/clr"
+
+SRC_URI="https://github.com/ROCm-Developer-Tools/clr/archive/refs/tags/rocm-${PV}.tar.gz -> rocm-clr-${PV}.tar.gz"
+S="${WORKDIR}/clr-rocm-${PV}/"
+
+LICENSE="Apache-2.0 MIT"
+SLOT="0/$(ver_cut 1-2)"
+KEYWORDS="~amd64"
+IUSE="debug test"
+RESTRICT="!test? ( test )"
+
+RDEPEND=">=dev-libs/rocr-runtime-6.0
+ >=dev-libs/rocm-comgr-6.0
+ >=dev-libs/rocm-device-libs-6.0
+ >=virtual/opencl-3
+ media-libs/mesa[-opencl]"
+DEPEND="${RDEPEND}"
+BDEPEND=">=dev-build/rocm-cmake-5.3
+ media-libs/glew
+ test? ( >=x11-apps/mesa-progs-8.5.0[X] )
+"
+
+src_configure() {
+ # -Werror=strict-aliasing
+ # https://bugs.gentoo.org/856088
+ # https://github.com/ROCm/clr/issues/64
+ #
+ # Do not trust it for LTO either
+ append-flags -fno-strict-aliasing
+ filter-lto
+
+ # Fix ld.lld linker error: https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/issues/155
+ append-ldflags $(test-flags-CCLD -Wl,--undefined-version)
+
+ # Reported upstream: https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/issues/120
+ append-cflags -fcommon
+
+ local mycmakeargs=(
+ -Wno-dev
+ -DROCM_PATH="${EPREFIX}/usr"
+ -DBUILD_TESTS=$(usex test ON OFF)
+ -DEMU_ENV=ON
+ -DBUILD_ICD=ON
+ -DFILE_REORG_BACKWARD_COMPATIBILITY=OFF
+ -DCLR_BUILD_OCL=on
+ )
+ cmake_src_configure
+}
+
+src_install() {
+ insinto /etc/OpenCL/vendors
+ doins opencl/config/amdocl64.icd
+
+ cd "${BUILD_DIR}"/opencl || die
+ insinto /usr/lib64
+ doins amdocl/libamdocl64.so
+ doins tools/cltrace/libcltrace.so
+}
+
+src_test() {
+ check_amdgpu
+ cd "${BUILD_DIR}"/tests/ocltst || die
+ export OCL_ICD_FILENAMES="${BUILD_DIR}"/amdocl/libamdocl64.so
+ local instruction1="Please start an X server using amdgpu driver (not Xvfb!),"
+ local instruction2="and export OCLGL_DISPLAY=\${DISPLAY} OCLGL_XAUTHORITY=\${XAUTHORITY} before reruning the test."
+ if [[ -n ${OCLGL_DISPLAY+x} ]]; then
+ export DISPLAY=${OCLGL_DISPLAY}
+ export XAUTHORITY=${OCLGL_XAUTHORITY}
+ ebegin "Running oclgl test under DISPLAY ${OCLGL_DISPLAY}"
+ if ! glxinfo | grep "OpenGL vendor string: AMD"; then
+ ewarn "${instruction1}"
+ ewarn "${instruction2}"
+ die "This display does not have AMD OpenGL vendor!"
+ fi
+ ./ocltst -m $(realpath liboclgl.so) -A ogl.exclude
+ eend $? || die "oclgl test failed"
+ else
+ ewarn "${instruction1}"
+ ewarn "${instruction2}"
+ die "\${OCLGL_DISPLAY} not set."
+ fi
+ edob ./ocltst -m $(realpath liboclruntime.so) -A oclruntime.exclude
+ edob ./ocltst -m $(realpath liboclperf.so) -A oclperf.exclude
+}