summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenda Xu <heroxbd@gentoo.org>2021-08-03 14:32:04 +0800
committerBenda Xu <heroxbd@gentoo.org>2021-08-03 14:32:23 +0800
commit2ed748a3b6412f99bc249e089e9221e38417a8f8 (patch)
tree9d2e66947706bd7eccf0b6b13e4f21c80d36da60 /dev-util/hip
parentsci-visualization/gnuplot: Update live ebuild to EAPI 8 and fix patch (diff)
downloadgentoo-2ed748a3b6412f99bc249e089e9221e38417a8f8.tar.gz
gentoo-2ed748a3b6412f99bc249e089e9221e38417a8f8.tar.bz2
gentoo-2ed748a3b6412f99bc249e089e9221e38417a8f8.zip
dev-util/hip: remove environment variable dependencies.
ROCm upstream allows for overriding HIP_PATH, ROCM_PATH, CUDA_PATH, HSA_PATH, HIP_CLANG_PATH, HIP_ROCCLR_HOME, HIP_PLATFORM, HIP_COMPILER, HIP_RUNTIME for flexibility, at the cost of having to set a handful environmental variables each time before invoking hipcc. If any of the environmental variables is not set correctly, hipvars.pm or hipcc may take wrong guesses and refuses to work. For Gentoo, all the of variables are predictable and determined at build time. It is more straightforward and transparent to hardcode them in the perl script. Bug: https://github.com/ROCm-Developer-Tools/HIP/issues/2224 Bug: https://github.com/ROCm-Developer-Tools/HIP/issues/2256 Package-Manager: Portage-3.0.20, Repoman-3.0.3 Signed-off-by: Benda Xu <heroxbd@gentoo.org>
Diffstat (limited to 'dev-util/hip')
-rw-r--r--dev-util/hip/files/hipvars.pm19
-rw-r--r--dev-util/hip/hip-4.1.0-r1.ebuild103
2 files changed, 122 insertions, 0 deletions
diff --git a/dev-util/hip/files/hipvars.pm b/dev-util/hip/files/hipvars.pm
new file mode 100644
index 000000000000..3f5c88409e0a
--- /dev/null
+++ b/dev-util/hip/files/hipvars.pm
@@ -0,0 +1,19 @@
+#!/usr/bin/perl -w
+package hipvars;
+
+$HIP_BASE_VERSION_MAJOR = "4";
+$HIP_BASE_VERSION_MINOR = "1";
+
+$HIP_PATH='/usr/lib/hip';
+$ROCM_PATH='/usr';
+$CUDA_PATH='/opt/cuda';
+$HSA_PATH='/usr';
+$HIP_CLANG_PATH='/usr/lib/llvm/roc/bin';
+$HIP_ROCCLR_HOME=$HIP_PATH;
+$HIP_PLATFORM='amd';
+$HIP_COMPILER = "clang";
+$HIP_RUNTIME = "rocclr";
+$HIP_VERSION_MAJOR = $HIP_BASE_VERSION_MAJOR;
+$HIP_VERSION_MINOR = $HIP_BASE_VERSION_MINOR;
+$HIP_VERSION_PATCH = "0";
+$HIP_VERSION="$HIP_VERSION_MAJOR.$HIP_VERSION_MINOR.$HIP_VERSION_PATCH";
diff --git a/dev-util/hip/hip-4.1.0-r1.ebuild b/dev-util/hip/hip-4.1.0-r1.ebuild
new file mode 100644
index 000000000000..ff12517ad834
--- /dev/null
+++ b/dev-util/hip/hip-4.1.0-r1.ebuild
@@ -0,0 +1,103 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+inherit cmake flag-o-matic prefix
+
+DESCRIPTION="C++ Heterogeneous-Compute Interface for Portability"
+HOMEPAGE="https://github.com/ROCm-Developer-Tools/HIP"
+SRC_URI="https://github.com/ROCm-Developer-Tools/HIP/archive/rocm-${PV}.tar.gz -> rocm-hip-${PV}.tar.gz"
+
+KEYWORDS="~amd64"
+LICENSE="MIT"
+SLOT="0/$(ver_cut 1-2)"
+
+IUSE="debug profile"
+
+# Don't strip to prevent some tests from failing.
+RESTRICT="strip"
+
+DEPEND=">=dev-libs/rocclr-$(ver_cut 1-2)
+ >=dev-util/rocminfo-$(ver_cut 1-2)
+ =sys-devel/llvm-roc-${PV}*[runtime]"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-4.1.0-DisableTest.patch"
+ "${FILESDIR}/${PN}-3.9.0-add-include-directories.patch"
+ "${FILESDIR}/${PN}-3.5.1-config-cmake-in.patch"
+ "${FILESDIR}/${PN}-3.9.0-lpl_ca-add-include.patch"
+)
+
+S="${WORKDIR}/HIP-rocm-${PV}"
+
+src_prepare() {
+ cmake_src_prepare
+ eapply_user
+
+ # Use Gentoo version number, otherwise git hash is attempted in vain.
+ sed -e "/set (HIP_LIB_VERSION_STRING/cset (HIP_LIB_VERSION_STRING ${PVR})" -i CMakeLists.txt || die
+
+ # disable PCH, because it results in a build error in ROCm 4.0.0
+ sed -e "s:option(__HIP_ENABLE_PCH:#option(__HIP_ENABLE_PCH:" -i CMakeLists.txt || die
+
+ # "hcc" is deprecated and not installed, new platform is "rocclr";
+ # Setting HSA_PATH to "/usr" results in setting "-isystem /usr/include"
+ # which makes "stdlib.h" not found when using "#include_next" in header files;
+ sed -e "/FLAGS .= \" -isystem \$HSA_PATH/d" \
+ -e "s:\$ENV{'DEVICE_LIB_PATH'}:'/usr/lib/amdgcn/bitcode':" \
+ -i bin/hipcc || die
+
+ # correctly find HIP_CLANG_INCLUDE_PATH using cmake
+ sed -e "/set(HIP_CLANG_ROOT/s:\"\${ROCM_PATH}/llvm\":/usr/lib/llvm/roc:" -i hip-config.cmake.in || die
+
+ # change --hip-device-lib-path to "/usr/lib/amdgcn/bitcode", must align with "dev-libs/rocm-device-libs"
+ sed -e "s:\${AMD_DEVICE_LIBS_PREFIX}/lib:/usr/lib/amdgcn/bitcode:" \
+ -i "${S}/hip-config.cmake.in" || die
+
+ einfo "prefixing hipcc and its utils..."
+ hprefixify $(grep -rl --exclude-dir=build/ "/usr" "${S}")
+
+ cp "${FILESDIR}"/hipvars.pm bin/ || die "failed to replace hipvars.pm"
+}
+
+src_configure() {
+ strip-flags
+ if ! use debug; then
+ append-cflags "-DNDEBUG"
+ append-cxxflags "-DNDEBUG"
+ buildtype="Release"
+ else
+ buildtype="Debug"
+ fi
+
+ # TODO: Currently a GENTOO configuration is build,
+ # this is also used in the cmake configuration files
+ # which will be installed to find HIP;
+ # Other ROCm packages expect a "RELEASE" configuration,
+ # see "hipBLAS"
+ local mycmakeargs=(
+ -DCMAKE_PREFIX_PATH="${EPREFIX}/usr/lib/llvm/roc"
+ -DCMAKE_BUILD_TYPE=${buildtype}
+ -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr/lib/hip"
+ -DBUILD_HIPIFY_CLANG=OFF
+ -DHIP_PLATFORM=rocclr
+ -DHIP_COMPILER=clang
+ -DROCM_PATH="${EPREFIX}/usr"
+ -DHSA_PATH="${EPREFIX}/usr"
+ -DUSE_PROF_API=$(usex profile 1 0)
+ -DROCclr_DIR="${EPREFIX}"/usr/include/rocclr
+ )
+
+ cmake_src_configure
+}
+
+src_install() {
+ echo "PATH=${EPREFIX}/usr/lib/hip/bin" >> 99hip || die
+ echo "LDPATH=${EPREFIX}/usr/lib/hip/lib" >> 99hip || die
+ echo "ROOTPATH=${EPREFIX}/usr/lib/hip/bin" >> 99hip || die
+
+ doenvd 99hip
+
+ cmake_src_install
+}