From 2ed748a3b6412f99bc249e089e9221e38417a8f8 Mon Sep 17 00:00:00 2001 From: Benda Xu Date: Tue, 3 Aug 2021 14:32:04 +0800 Subject: 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 --- dev-util/hip/files/hipvars.pm | 19 ++++++++ dev-util/hip/hip-4.1.0-r1.ebuild | 103 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 122 insertions(+) create mode 100644 dev-util/hip/files/hipvars.pm create mode 100644 dev-util/hip/hip-4.1.0-r1.ebuild (limited to 'dev-util/hip') 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 +} -- cgit v1.2.3-18-g5258