commit: 24c3de08e5ef07f46d1a887e8ad8a56821012a60
Author: Sv. Lockal <lockalsash <AT> gmail <DOT> com>
AuthorDate: Fri Jan 19 21:12:57 2024 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Mar 25 18:54:57 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=24c3de08
media-libs/oidn: apply Gentoo-related fixes for hip suport
Signed-off-by: Sv. Lockal <lockalsash <AT> gmail.com>
Signed-off-by: Sam James <sam <AT> gentoo.org>
.../oidn/files/oidn-2.1.0-amdgpu-targets.patch | 46 ++++++++++++++++++++++
media-libs/oidn/oidn-2.1.0.ebuild | 28 ++++++++++++-
2 files changed, 72 insertions(+), 2 deletions(-)
diff --git a/media-libs/oidn/files/oidn-2.1.0-amdgpu-targets.patch
b/media-libs/oidn/files/oidn-2.1.0-amdgpu-targets.patch
new file mode 100644
index 000000000000..90d3c17f38cc
--- /dev/null
+++ b/media-libs/oidn/files/oidn-2.1.0-amdgpu-targets.patch
@@ -0,0 +1,46 @@
+Allow specifying AMDGPU_TARGETS with CMake flags.
+Fix build when main compiler is set to GCC.
+--- a/devices/CMakeLists.txt
++++ b/devices/CMakeLists.txt
+@@ -123,6 +123,10 @@ if(OIDN_DEVICE_HIP)
+ )
+ mark_as_advanced(OIDN_DEVICE_HIP_COMPILER)
+
++ set(AMDGPU_TARGETS
"gfx1030;gfx1031;gfx1032;gfx1033;gfx1034;gfx1035;gfx1036;gfx1100;gfx1101;gfx1102;gfx1103"
CACHE STRING "AMD GPU targets to compile for")
++ mark_as_advanced(AMDGPU_TARGETS)
++ message(STATUS "AMD targets: ${AMDGPU_TARGETS}")
++
+ # Add ROCm to CMAKE_PREFIX_PATH
+ set(_hip_prefix_path CMAKE_PREFIX_PATH)
+ list(APPEND _hip_prefix_path ${ROCM_PATH}/hip ${ROCM_PATH})
+@@ -137,7 +141,6 @@ if(OIDN_DEVICE_HIP)
+ CMAKE_CACHE_ARGS
+ -DCMAKE_PREFIX_PATH:STRING=${_hip_prefix_path_str}
+ -DCMAKE_CXX_COMPILER:FILEPATH=${OIDN_DEVICE_HIP_COMPILER}
+- -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${CMAKE_TOOLCHAIN_FILE}
+ -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
+ -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/hip/preinstall
+ -DCMAKE_INSTALL_BINDIR:PATH=${CMAKE_INSTALL_BINDIR}
+@@ -149,6 +152,9 @@ if(OIDN_DEVICE_HIP)
+ -DOIDN_API_NAMESPACE:STRING=${OIDN_API_NAMESPACE}
+ -DOIDN_WARN_AS_ERRORS:BOOL=${OIDN_WARN_AS_ERRORS}
+ -DOIDN_SANITIZER:STRING=${OIDN_SANITIZER}
++ -DGPU_TARGETS:STRING=${AMDGPU_TARGETS}
++ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON
++ -G "${CMAKE_GENERATOR}"
+ BUILD_ALWAYS TRUE
+ DEPENDS
+ OpenImageDenoise_core
+--- a/devices/hip/CMakeLists.txt
++++ b/devices/hip/CMakeLists.txt
+@@ -25,8 +25,8 @@ include(oidn_common_external)
+ # FIXME: The HIP runtime has a bug that causes a crash if the kernels are not
compiled for all
+ # targets detected in the system. As a workaround, we compile for more
targets then we actually
+ # support to avoid the crash on systems with dedicated + integrated GPUs.
+-set(GPU_TARGETS
"gfx1030,gfx1031,gfx1032,gfx1033,gfx1034,gfx1035,gfx1036,gfx1100,gfx1101,gfx1102,gfx1103"
CACHE INTERNAL "")
+-set(AMDGPU_TARGETS ${GPU_TARGETS} CACHE INTERNAL "")
++set(GPU_TARGETS
"gfx1030;gfx1031;gfx1032;gfx1033;gfx1034;gfx1035;gfx1036;gfx1100;gfx1101;gfx1102;gfx1103"
CACHE STRING "")
++set(AMDGPU_TARGETS ${GPU_TARGETS} CACHE STRING "")
+
+ # Find HIP
+ find_package(hip REQUIRED)
diff --git a/media-libs/oidn/oidn-2.1.0.ebuild
b/media-libs/oidn/oidn-2.1.0.ebuild
index 2eab9e4151b6..4cc4883b6c7f 100644
--- a/media-libs/oidn/oidn-2.1.0.ebuild
+++ b/media-libs/oidn/oidn-2.1.0.ebuild
@@ -1,11 +1,13 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{9..11} )
+LLVM_MAX_SLOT=17
+ROCM_VERSION=5.7
-inherit cmake python-single-r1
+inherit cmake python-single-r1 llvm rocm
DESCRIPTION="Intel(R) Open Image Denoise library"
HOMEPAGE="https://www.openimagedenoise.org/"
@@ -37,15 +39,37 @@ RDEPEND="
"
DEPEND="${RDEPEND}"
+PATCHES=(
+ "${FILESDIR}/${PN}-2.1.0-amdgpu-targets.patch"
+)
+
src_configure() {
local mycmakeargs=(
-DOIDN_DEVICE_CUDA=$(usex cuda)
-DOIDN_DEVICE_HIP=$(usex hip)
-DOIDN_APPS=$(usex apps)
)
+
+ if use hip; then
+ mycmakeargs+=(
+ -DROCM_PATH="${EPREFIX}/usr"
+ -DOIDN_DEVICE_HIP_COMPILER="$(get_llvm_prefix
${LLVM_MAX_SLOT})/bin/clang++"
+ -DAMDGPU_TARGETS="$(get_amdgpu_flags)"
+ )
+ fi
+
cmake_src_configure
}
src_test() {
"${BUILD_DIR}"/oidnTest || die "There were test faliures!"
}
+
+src_install() {
+ cmake_src_install
+
+ if use hip || use cuda ; then
+ # remove garbage in /var/tmp left by subprojects
+ rm -rf "${ED}"/var || die
+ fi
+}