Skip to content

Instantly share code, notes, and snippets.

@cgmb
Last active May 2, 2022 03:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cgmb/edb7b790ab55681fb2ba5385ee02489b to your computer and use it in GitHub Desktop.
Save cgmb/edb7b790ab55681fb2ba5385ee02489b to your computer and use it in GitHub Desktop.
Build HIP on Debian Sid
#!/usr/bin/env bash
set -exuo pipefail
apt-get -qq update
apt-get -qq upgrade
apt-get -qq install build-essential cmake python3 wget perl file \
clang libclang-dev libamd-comgr-dev rocm-device-libs rocm-cmake libhsakmt-dev libhsa-runtime-dev \
zlib1g-dev libnuma-dev mesa-common-dev
# fixup comgr CMake config
sed -i.orig \
-e 's@lib/cmake/amd_comgr/@@' \
-e '/get_filename_component(AMD_COMGR_PREFIX "${AMD_COMGR_PREFIX}" PATH)/d' \
/usr/lib/x86_64-linux-gnu/cmake/amd_comgr/amd_comgr-config.cmake
DEB_WORKSPACE=$HOME # where to download and build the sources
DEB_ROCM_VERSION=rocm-5.1.1
cd "$DEB_WORKSPACE"
wget -qO- https://github.com/ROCm-Developer-Tools/hipamd/archive/refs/tags/${DEB_ROCM_VERSION}.tar.gz | tar xz
wget -qO- https://github.com/ROCm-Developer-Tools/ROCclr/archive/refs/tags/${DEB_ROCM_VERSION}.tar.gz | tar xz
wget -qO- https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/archive/refs/tags/${DEB_ROCM_VERSION}.tar.gz | tar xz
wget -qO- https://github.com/ROCm-Developer-Tools/HIP/archive/refs/tags/${DEB_ROCM_VERSION}.tar.gz | tar xz
cd hipamd-${DEB_ROCM_VERSION}
# 0001-fix-rm-include-dir.patch
# fix deleting "${CMAKE_INSTALL_PREFIX}/include" during make install
patch -p1 << 'EOF'
--- a/CMakeLists.txt 2022-05-01 23:39:05.857043471 +0000
+++ b/CMakeLists.txt 2022-05-01 23:40:39.727778449 +0000
@@ -354,8 +356,8 @@
endif()
# The following two lines will be removed after upstream updation
- install(CODE "MESSAGE(\"Removing ${CMAKE_INSTALL_PREFIX}/include\")")
- install(CODE "file(REMOVE_RECURSE ${CMAKE_INSTALL_PREFIX}/include)")
+ #install(CODE "MESSAGE(\"Removing ${CMAKE_INSTALL_PREFIX}/include\")")
+ #install(CODE "file(REMOVE_RECURSE ${CMAKE_INSTALL_PREFIX}/include)")
install(DIRECTORY include DESTINATION .)
install(DIRECTORY ${HIP_COMMON_INCLUDE_DIR}/hip/ DESTINATION include/hip/)
EOF
# 0002-fix-version-header.patch
# fix broken version information when git version info not available
patch -p1 << 'EOF'
--- a/CMakeLists.txt 2022-05-01 23:39:05.857043471 +0000
+++ b/CMakeLists.txt 2022-05-01 23:40:39.727778449 +0000
@@ -144,6 +144,9 @@
set(HIP_PACKAGING_VERSION_PATCH ${HIP_VERSION_PATCH}-${HIP_VERSION_GITHASH})
endif()
else()
+ set(HIP_VERSION_BUILD_ID 0)
+ set(HIP_VERSION_BUILD_NAME "")
+ set(HIP_VERSION_PATCH 1)
# FIXME: Some parts depend on this being set.
set(HIP_PACKAGING_VERSION_PATCH "0")
endif()
@@ -187,8 +190,10 @@
set (HIP_LIB_VERSION_MINOR ${HIP_VERSION_MINOR})
if (${ROCM_PATCH_VERSION} )
set (HIP_LIB_VERSION_PATCH ${ROCM_PATCH_VERSION})
-else ()
+elseif (DEFINED HIP_VERSION_GITHASH)
set (HIP_LIB_VERSION_PATCH ${HIP_VERSION_PATCH}-${HIP_VERSION_GITHASH})
+else ()
+ set (HIP_LIB_VERSION_PATCH ${HIP_VERSION_PATCH})
endif ()
set (HIP_LIB_VERSION_STRING "${HIP_LIB_VERSION_MAJOR}.${HIP_LIB_VERSION_MINOR}.${HIP_LIB_VERSION_PATCH}")
if (DEFINED ENV{ROCM_RPATH})
EOF
# 0003-use-gnu-install-dirs.patch
# ensure library is installed to lib/<multiarch-tuple>
patch -p1 << 'EOF'
--- a/CMakeLists.txt 2022-05-01 23:39:05.857043471 +0000
+++ b/CMakeLists.txt 2022-05-01 23:40:39.727778449 +0000
@@ -280,9 +280,10 @@
#############################
# Build steps
#############################
-set(BIN_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/bin)
-set(LIB_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/lib)
-set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include)
+include(GNUInstallDirs)
+set(BIN_INSTALL_DIR ${CMAKE_INSTALL_FULL_BINDIR})
+set(LIB_INSTALL_DIR ${CMAKE_INSTALL_FULL_LIBDIR})
+set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_FULL_INCLUDEDIR})
set(CONFIG_PACKAGE_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/hip)
set(CONFIG_LANG_PACKAGE_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/hip-lang)
EOF
# 0004-skip-extra-installs.patch
# skip installing ".hipVersion", ".hipInfo", "FindHIP.cmake" and the samples
patch -p1 << 'EOF'
diff -Naur a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt 2022-05-01 23:39:05.857043471 +0000
+++ b/CMakeLists.txt 2022-05-01 23:40:39.727778449 +0000
@@ -331,10 +331,10 @@
#############################
# Install .hipInfo
-install(FILES ${PROJECT_BINARY_DIR}/.hipInfo DESTINATION lib)
+#install(FILES ${PROJECT_BINARY_DIR}/.hipInfo DESTINATION lib)
# Install .hipVersion
-install(FILES ${PROJECT_BINARY_DIR}/.hipVersion DESTINATION bin)
+#install(FILES ${PROJECT_BINARY_DIR}/.hipVersion DESTINATION bin)
# Install src, bin, include & cmake if necessary
execute_process(COMMAND test ${CMAKE_INSTALL_PREFIX} -ef ${CMAKE_CURRENT_SOURCE_DIR}
@@ -365,7 +365,7 @@
install(DIRECTORY include DESTINATION .)
install(DIRECTORY ${HIP_COMMON_INCLUDE_DIR}/hip/ DESTINATION include/hip/)
- install(DIRECTORY ${HIP_COMMON_DIR}/cmake DESTINATION .)
+ #install(DIRECTORY ${HIP_COMMON_DIR}/cmake DESTINATION .)
endif()
# Install generated headers
diff -Naur a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt
--- a/packaging/CMakeLists.txt 2022-05-01 23:57:18.187733140 +0000
+++ b/packaging/CMakeLists.txt 2022-05-01 22:48:44.507941245 +0000
@@ -55,7 +55,7 @@
#TODO:This do not belong in BINARY package.
#Keeping it as is for now
-install(FILES ${CMAKE_BINARY_DIR}/.hipInfo DESTINATION lib COMPONENT binary)
+#install(FILES ${CMAKE_BINARY_DIR}/.hipInfo DESTINATION lib COMPONENT binary)
install(FILES ${CMAKE_BINARY_DIR}/hip-config.cmake ${CMAKE_BINARY_DIR}/hip-config-version.cmake DESTINATION lib/cmake/hip COMPONENT binary)
install ( EXPORT hip-targets FILE hip-targets.cmake NAMESPACE hip:: DESTINATION lib/cmake/hip COMPONENT binary)
@@ -91,8 +91,8 @@
DESTINATION include/hip/amd_detail COMPONENT dev)
install(FILES ${CMAKE_BINARY_DIR}/include/hip/hip_version.h
DESTINATION include/hip COMPONENT dev)
-install(FILES ${CMAKE_BINARY_DIR}/.hipVersion DESTINATION bin COMPONENT dev)
-install(DIRECTORY ${HIP_COMMON_DIR}/cmake DESTINATION . COMPONENT dev)
+#install(FILES ${CMAKE_BINARY_DIR}/.hipVersion DESTINATION bin COMPONENT dev)
+#install(DIRECTORY ${HIP_COMMON_DIR}/cmake DESTINATION . COMPONENT dev)
#End dev files install
#Begin doc files install
@@ -106,7 +106,7 @@
#End doc files install
#Begin samples files install
-install(DIRECTORY ${HIP_COMMON_DIR}/samples DESTINATION . COMPONENT samples)
+#install(DIRECTORY ${HIP_COMMON_DIR}/samples DESTINATION . COMPONENT samples)
#End samples files install
#Begin test files install
EOF
mkdir build
cd build
cmake -S.. -B. -DCMAKE_BUILD_TYPE=Release \
-DHIP_COMMON_DIR="$DEB_WORKSPACE/HIP-${DEB_ROCM_VERSION}" \
-DAMD_OPENCL_PATH="$DEB_WORKSPACE/ROCm-OpenCL-Runtime-${DEB_ROCM_VERSION}" \
-DROCCLR_PATH="$DEB_WORKSPACE/ROCclr-${DEB_ROCM_VERSION}" \
-DCMAKE_INSTALL_PREFIX=/usr
make
make install
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment