Last active
May 2, 2022 03:11
-
-
Save cgmb/edb7b790ab55681fb2ba5385ee02489b to your computer and use it in GitHub Desktop.
Build HIP on Debian Sid
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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