summaryrefslogtreecommitdiff
path: root/dev-util/hip/hip-5.7.1-r2.ebuild
diff options
context:
space:
mode:
Diffstat (limited to 'dev-util/hip/hip-5.7.1-r2.ebuild')
-rw-r--r--dev-util/hip/hip-5.7.1-r2.ebuild168
1 files changed, 168 insertions, 0 deletions
diff --git a/dev-util/hip/hip-5.7.1-r2.ebuild b/dev-util/hip/hip-5.7.1-r2.ebuild
new file mode 100644
index 000000000000..35d67cf0be55
--- /dev/null
+++ b/dev-util/hip/hip-5.7.1-r2.ebuild
@@ -0,0 +1,168 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DOCS_BUILDER="doxygen"
+DOCS_DEPEND="media-gfx/graphviz"
+ROCM_SKIP_GLOBALS=1
+
+inherit cmake docs llvm rocm flag-o-matic
+
+LLVM_MAX_SLOT=17
+
+TEST_PV=5.7.0 # No hip-test-5.7.1 release
+
+DESCRIPTION="C++ Heterogeneous-Compute Interface for Portability"
+HOMEPAGE="https://github.com/ROCm-Developer-Tools/hipamd"
+SRC_URI="https://github.com/ROCm-Developer-Tools/clr/archive/refs/tags/rocm-${PV}.tar.gz -> rocm-clr-${PV}.tar.gz
+ https://github.com/ROCm-Developer-Tools/HIP/archive/refs/tags/rocm-${PV}.tar.gz -> hip-${PV}.tar.gz
+ test? ( https://github.com/ROCm-Developer-Tools/hip-tests/archive/refs/tags/rocm-${TEST_PV}.tar.gz )"
+
+KEYWORDS="~amd64"
+LICENSE="MIT"
+SLOT="0/$(ver_cut 1-2)"
+
+RESTRICT="!test? ( test )"
+IUSE="debug test"
+
+DEPEND="
+ dev-util/hipcc
+ >=dev-util/rocminfo-5
+ sys-devel/clang:${LLVM_MAX_SLOT}
+ dev-libs/rocm-comgr:${SLOT}
+ >=dev-libs/rocr-runtime-5.6
+ x11-base/xorg-proto
+ virtual/opengl
+"
+RDEPEND="${DEPEND}
+ dev-perl/URI-Encode
+ sys-devel/clang-runtime:=
+ >=dev-libs/roct-thunk-interface-5"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-5.7.0-install.patch"
+ "${FILESDIR}/${PN}-5.7.1-fix-unaligned-access.patch"
+ "${FILESDIR}/${PN}-5.7.1-exec-stack.patch"
+ "${FILESDIR}/${PN}-5.7.1-disable-stack-protector.patch"
+ "${FILESDIR}/${PN}-5.7.1-no_asan_doc.patch"
+ "${FILESDIR}/${PN}-5.7.1-extend-isa-compatibility-check.patch"
+ "${FILESDIR}/${PN}-5.7.1-fix-mmap-oom-check.patch"
+)
+
+S="${WORKDIR}/clr-rocm-${PV}/"
+
+hip_test_wrapper() {
+ local S="${WORKDIR}/hip-tests-rocm-${TEST_PV}/catch"
+ local CMAKE_USE_DIR="${S}"
+ local BUILD_DIR="${S}_build"
+ cd "${S}" || die
+ $@
+}
+
+src_prepare() {
+ # Set HIP and HIP Clang paths directly, don't search using heuristics
+ sed -e "s:# Search for HIP installation:set(HIP_ROOT_DIR \"${EPREFIX}/usr\"):" \
+ -e "s:#Set HIP_CLANG_PATH:set(HIP_CLANG_PATH \"$(get_llvm_prefix -d ${LLVM_MAX_SLOT})/bin\"):" \
+ -i "${WORKDIR}"/HIP-rocm-${PV}/cmake/FindHIP.cmake || die
+
+ # https://github.com/ROCm-Developer-Tools/HIP/commit/405d029422ba8bb6be5a233d5eebedd2ad2e8bd3
+ # https://github.com/ROCm-Developer-Tools/clr/commit/ab6d34ae773f4d151e04170c0f4e46c1135ddf3e
+ # Migrated to hip-test, but somehow the change is not applied to the tarball.
+ rm -rf "${WORKDIR}"/HIP-rocm-${PV}/tests || die
+ sed -e '/tests.*cmake/d' -i hipamd/CMakeLists.txt || die
+
+ cmake_src_prepare
+
+ if use test; then
+ PATCHES=${FILESDIR}/hip-test-5.7.0-rocm_agent_enumerator-location.patch \
+ hip_test_wrapper cmake_src_prepare
+ fi
+}
+
+src_configure() {
+ # Workaround for bug #923986
+ append-ldflags $(test-flags-CCLD -Wl,--undefined-version)
+
+ use debug && CMAKE_BUILD_TYPE="Debug"
+
+ local mycmakeargs=(
+ -DCMAKE_PREFIX_PATH="$(get_llvm_prefix "${LLVM_MAX_SLOT}")"
+ -DCMAKE_BUILD_TYPE=${buildtype}
+ -DCMAKE_SKIP_RPATH=ON
+ -DBUILD_HIPIFY_CLANG=OFF
+ -DHIP_PLATFORM=amd
+ -DHIP_COMMON_DIR="${WORKDIR}/HIP-rocm-${PV}"
+ -DROCM_PATH="${EPREFIX}/usr"
+ -DUSE_PROF_API=0
+ -DFILE_REORG_BACKWARD_COMPATIBILITY=OFF
+ -DCLR_BUILD_HIP=ON
+ -DHIPCC_BIN_DIR="${EPREFIX}/usr/bin"
+ -DOpenGL_GL_PREFERENCE="GLVND"
+ )
+
+ cmake_src_configure
+
+ if use test; then
+ local mycmakeargs=(
+ -DROCM_PATH="${BUILD_DIR}"/hipamd
+ -DHIP_PLATFORM=amd
+ )
+ hip_test_wrapper cmake_src_configure
+ fi
+}
+
+src_compile() {
+ cmake_src_compile
+
+ if use test; then
+ HIP_PATH="${BUILD_DIR}"/hipamd \
+ hip_test_wrapper cmake_src_compile build_tests
+ fi
+}
+
+src_test() {
+ check_amdgpu
+ export LD_LIBRARY_PATH="${BUILD_DIR}/hipamd/lib"
+
+ # TODO: research how to test Vulkan-related features.
+ local CMAKE_SKIP_TESTS=(
+ Unit_hipExternalMemoryGetMappedBuffer_Vulkan_Positive_Read_Write
+ Unit_hipExternalMemoryGetMappedBuffer_Vulkan_Negative_Parameters
+ Unit_hipImportExternalMemory_Vulkan_Negative_Parameters
+ Unit_hipWaitExternalSemaphoresAsync_Vulkan_Positive_Binary_Semaphore
+ Unit_hipWaitExternalSemaphoresAsync_Vulkan_Positive_Multiple_Semaphores
+ Unit_hipWaitExternalSemaphoresAsync_Vulkan_Negative_Parameters
+ Unit_hipSignalExternalSemaphoresAsync_Vulkan_Positive_Binary_Semaphore
+ Unit_hipSignalExternalSemaphoresAsync_Vulkan_Positive_Multiple_Semaphores
+ Unit_hipSignalExternalSemaphoresAsync_Vulkan_Negative_Parameters
+ Unit_hipImportExternalSemaphore_Vulkan_Negative_Parameters
+ Unit_hipDestroyExternalSemaphore_Vulkan_Negative_Parameters
+ )
+
+ MAKEOPTS="-j1" hip_test_wrapper cmake_src_test
+}
+
+src_install() {
+ cmake_src_install
+
+ # add version file that is required by some libraries
+ mkdir "${ED}"/usr/include/rocm-core || die
+ cat <<EOF > "${ED}"/usr/include/rocm-core/rocm_version.h || die
+#pragma once
+#define ROCM_VERSION_MAJOR $(ver_cut 1)
+#define ROCM_VERSION_MINOR $(ver_cut 2)
+#define ROCM_VERSION_PATCH $(ver_cut 3)
+#define ROCM_BUILD_INFO "$(ver_cut 1-3).0-9999-unknown"
+EOF
+ dosym -r /usr/include/rocm-core/rocm_version.h /usr/include/rocm_version.h
+
+ rm "${ED}/usr/include/hip/hcc_detail" || die
+
+ # files already installed by hipcc, which is a build dep
+ rm "${ED}/usr/bin/hipconfig.pl" || die
+ rm "${ED}/usr/bin/hipcc.pl" || die
+ rm "${ED}/usr/bin/hipcc" || die
+ rm "${ED}/usr/bin/hipconfig" || die
+ rm "${ED}/usr/bin/hipvars.pm" || die
+}