summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYiyang Wu <xgreenlandforwyy@gmail.com>2023-01-25 11:14:27 +0800
committerBenda Xu <heroxbd@gentoo.org>2023-01-31 21:31:07 +0800
commit38ab28e27cd7da59f4a241b09d3ac734c4f8b575 (patch)
tree0539aafe75deaf3cfe87900fb0f75f602525235b
parentdev-util/hip: bump patch "remove-cmake-doxygen-commands" (diff)
downloadgentoo-38ab28e27cd7da59f4a241b09d3ac734c4f8b575.tar.gz
gentoo-38ab28e27cd7da59f4a241b09d3ac734c4f8b575.tar.bz2
gentoo-38ab28e27cd7da59f4a241b09d3ac734c4f8b575.zip
dev-util/hip: Backport fixes for clang directories search
Closes: https://bugs.gentoo.org/891013 Signed-off-by: Yiyang Wu <xgreenlandforwyy@gmail.com> Signed-off-by: Benda Xu <heroxbd@gentoo.org>
-rw-r--r--dev-util/hip/files/0001-SWDEV-344620-hipcc-fails-to-parse-version-of-clang-i.patch70
-rw-r--r--dev-util/hip/files/0001-SWDEV-352878-LLVM-pkg-search-directly-using-find_dep.patch163
-rw-r--r--dev-util/hip/files/0002-SWDEV-355608-Remove-clang-include-path-2996.patch51
-rw-r--r--dev-util/hip/files/0003-SWDEV-352878-Removed-relative-path-based-CLANG-inclu.patch173
-rw-r--r--dev-util/hip/files/hipvars-5.3.3.pm20
-rw-r--r--dev-util/hip/hip-5.3.3-r2.ebuild17
6 files changed, 483 insertions, 11 deletions
diff --git a/dev-util/hip/files/0001-SWDEV-344620-hipcc-fails-to-parse-version-of-clang-i.patch b/dev-util/hip/files/0001-SWDEV-344620-hipcc-fails-to-parse-version-of-clang-i.patch
new file mode 100644
index 000000000000..b9a1329e5931
--- /dev/null
+++ b/dev-util/hip/files/0001-SWDEV-344620-hipcc-fails-to-parse-version-of-clang-i.patch
@@ -0,0 +1,70 @@
+From 73430b62a5437d1ba6c36a1d812a1434d1ad9df7 Mon Sep 17 00:00:00 2001
+From: ROCm CI Service Account <66695075+rocm-ci@users.noreply.github.com>
+Date: Tue, 20 Dec 2022 06:51:12 +0530
+Subject: [PATCH 1/3] SWDEV-344620 - hipcc fails to parse version of clang in
+ some cases (#3119)
+
+Change-Id: I46f716c82a7500b9a2bcaf5f9ff4ad8a8f982770
+Signed-off-by: Yiyang Wu <xgreenlandforwyy@gmail.com>
+---
+ bin/hipcc.pl | 22 +++++++---------------
+ 1 file changed, 7 insertions(+), 15 deletions(-)
+
+diff --git a/bin/hipcc.pl b/bin/hipcc.pl
+index 645ae62d..2a01dcc3 100755
+--- a/bin/hipcc.pl
++++ b/bin/hipcc.pl
+@@ -144,7 +144,7 @@ if ($HIP_PLATFORM eq "amd") {
+ $execExtension = "";
+ if($isWindows) {
+ $execExtension = ".exe";
+- }
++ }
+ $HIPCC="$HIP_CLANG_PATH/clang++" . $execExtension;
+
+ # If $HIPCC clang++ is not compiled, use clang instead
+@@ -157,13 +157,10 @@ if ($HIP_PLATFORM eq "amd") {
+ $HIPLDFLAGS .= " -fuse-ld=lld";
+ $HIPLDFLAGS .= " --ld-path=$HIP_CLANG_PATH/lld-link.exe";
+ }
+- $HIP_CLANG_VERSION = `$HIPCC --version`;
+- $HIP_CLANG_VERSION=~/.*clang version (\S+).*/;
+- $HIP_CLANG_VERSION=$1;
+
+- # Figure out the target with which llvm is configured
+- $HIP_CLANG_TARGET = `$HIPCC -print-target-triple`;
+- $HIP_CLANG_TARGET = chomp($HIP_CLANG_TARGET);
++ # get Clang RT Builtin path
++ $HIP_CLANG_RT_LIB = `$HIPCC --print-runtime-dir`;
++ chomp($HIP_CLANG_RT_LIB);
+
+ if (! defined $HIP_CLANG_INCLUDE_PATH) {
+ $HIP_CLANG_INCLUDE_PATH = abs_path("$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/include");
+@@ -184,7 +181,7 @@ if ($HIP_PLATFORM eq "amd") {
+ print ("HIP_INCLUDE_PATH=$HIP_INCLUDE_PATH\n");
+ print ("HIP_LIB_PATH=$HIP_LIB_PATH\n");
+ print ("DEVICE_LIB_PATH=$DEVICE_LIB_PATH\n");
+- print ("HIP_CLANG_TARGET=$HIP_CLANG_TARGET\n");
++ print ("HIP_CLANG_RT_LIB=$HIP_CLANG_RT_LIB\n");
+ }
+
+ if ($isWindows) {
+@@ -715,13 +712,8 @@ if ($HIP_PLATFORM eq "amd") {
+ } else {
+ $toolArgs = ${toolArgs} . " -Wl,--enable-new-dtags -Wl,-rpath=$HIP_LIB_PATH:$ROCM_PATH/lib -lamdhip64 ";
+ }
+- # To support __fp16 and _Float16, explicitly link with compiler-rt
+- $HIP_CLANG_BUILTIN_LIB="$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/lib/$HIP_CLANG_TARGET/libclang_rt.builtins.a";
+- if (-e $HIP_CLANG_BUILTIN_LIB) {
+- $toolArgs .= " -L$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/lib/$HIP_CLANG_TARGET -lclang_rt.builtins "
+- } else {
+- $toolArgs .= " -L$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/lib/linux -lclang_rt.builtins-x86_64 "
+- }
++
++ $toolArgs .= " -L$HIP_CLANG_RT_LIB -lclang_rt.builtins-x86_64 "
+ }
+ }
+
+--
+2.38.1
+
diff --git a/dev-util/hip/files/0001-SWDEV-352878-LLVM-pkg-search-directly-using-find_dep.patch b/dev-util/hip/files/0001-SWDEV-352878-LLVM-pkg-search-directly-using-find_dep.patch
new file mode 100644
index 000000000000..9dbfe8a55395
--- /dev/null
+++ b/dev-util/hip/files/0001-SWDEV-352878-LLVM-pkg-search-directly-using-find_dep.patch
@@ -0,0 +1,163 @@
+From 6c12b045bc3c434dd13e74bf124ed54afec668c6 Mon Sep 17 00:00:00 2001
+From: AravindanC <aravindan.cheruvally@amd.com>
+Date: Fri, 26 Aug 2022 15:02:09 -0700
+Subject: [PATCH] SWDEV-352878 - LLVM pkg search directly using find_dep() for
+ CLANG Include path
+
+Change-Id: I355e39890757be07de8b9332deca159f35039dfd
+Signed-off-by: Yiyang Wu <xgreenlandforwyy@gmail.com>
+---
+ hip-config.cmake.in | 108 ++++++++++++++++++++++++++------------------
+ 1 file changed, 64 insertions(+), 44 deletions(-)
+
+diff --git a/hip-config.cmake.in b/hip-config.cmake.in
+index 89d1224e..67d898d8 100755
+--- a/hip-config.cmake.in
++++ b/hip-config.cmake.in
+@@ -147,41 +147,62 @@ if(HIP_COMPILER STREQUAL "clang")
+ if(NOT HIP_CXX_COMPILER)
+ set(HIP_CXX_COMPILER ${CMAKE_CXX_COMPILER})
+ endif()
+- if(HIP_CXX_COMPILER MATCHES ".*hipcc" OR HIP_CXX_COMPILER MATCHES ".*clang\\+\\+")
+- execute_process(COMMAND ${HIP_CXX_COMPILER} --version
++
++ # Use HIP_CXX_COMPILER option -print-resource-dir
++ # To fetch the clang include path
++ execute_process(
++ COMMAND ${HIP_CXX_COMPILER} -print-resource-dir
++ OUTPUT_VARIABLE HIP_CLANG_INCLUDE_PATH
++ OUTPUT_STRIP_TRAILING_WHITESPACE
++ RESULT_VARIABLE CLANG_INCLUDE_PATH_FETCH_EXIT_CODE)
++
++ if( NOT "${CLANG_INCLUDE_PATH_FETCH_EXIT_CODE}" STREQUAL "0" )
++ if(HIP_CXX_COMPILER MATCHES ".*hipcc" OR HIP_CXX_COMPILER MATCHES ".*clang\\+\\+")
++ # IF not successful in fetching HIP_CLANG_INCLUDE_PATH using
++ # HIP_CXX_COMPILER binary command options -print-resource-dir
++ # fallback to old method of getting include by finding HIP_CLANG_ROOT
++ # and from predefined relative path of HIP_CLANG_ROOT
++ execute_process(COMMAND ${HIP_CXX_COMPILER} --version
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ OUTPUT_VARIABLE HIP_CXX_COMPILER_VERSION_OUTPUT)
+- # Capture the repo, branch and patch level details of the HIP CXX Compiler.
+- # Ex. clang version 13.0.0 (https://github.com/ROCm-Developer-Tools/HIP main 12345 COMMIT_HASH)
+- # HIP_CLANG_REPO: https://github.com/ROCm-Developer-Tools/HIP
+- # HIP_CLANG_BRANCH: main
+- # HIP_CLANG_PATCH_LEVEL: 12345
+- if(${HIP_CXX_COMPILER_VERSION_OUTPUT} MATCHES "clang version [0-9]+\\.[0-9]+\\.[0-9]+ \\(([^ \n]*) ([^ \n]*) ([^ \n]*)")
+- set(HIP_CLANG_REPO ${CMAKE_MATCH_1})
+- set(HIP_CLANG_BRANCH ${CMAKE_MATCH_2})
+- set(HIP_CLANG_PATCH_LEVEL ${CMAKE_MATCH_3})
+- endif()
+- endif()
+- if(HIP_CXX_COMPILER MATCHES ".*hipcc")
+- if(HIP_CXX_COMPILER_VERSION_OUTPUT MATCHES "InstalledDir:[ \t]*([^\n]*)")
+- get_filename_component(HIP_CLANG_ROOT "${CMAKE_MATCH_1}" DIRECTORY)
+- endif()
+- elseif (HIP_CXX_COMPILER MATCHES ".*clang\\+\\+")
+- get_filename_component(_HIP_CLANG_REAL_PATH "${HIP_CXX_COMPILER}" REALPATH)
+- get_filename_component(_HIP_CLANG_BIN_PATH "${_HIP_CLANG_REAL_PATH}" DIRECTORY)
+- get_filename_component(HIP_CLANG_ROOT "${_HIP_CLANG_BIN_PATH}" DIRECTORY)
+- endif()
+- file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS ${HIP_CLANG_ROOT}/lib/clang/*/include)
+- find_path(HIP_CLANG_INCLUDE_PATH stddef.h
+- HINTS
++ # Capture the repo, branch and patch level details of the HIP CXX Compiler.
++ # Ex. clang version 13.0.0 (https://github.com/ROCm-Developer-Tools/HIP main 12345 COMMIT_HASH)
++ # HIP_CLANG_REPO: https://github.com/ROCm-Developer-Tools/HIP
++ # HIP_CLANG_BRANCH: main
++ # HIP_CLANG_PATCH_LEVEL: 12345
++ if(${HIP_CXX_COMPILER_VERSION_OUTPUT} MATCHES "clang version [0-9]+\\.[0-9]+\\.[0-9]+ \\(([^ \n]*) ([^ \n]*) ([^ \n]*)")
++ set(HIP_CLANG_REPO ${CMAKE_MATCH_1})
++ set(HIP_CLANG_BRANCH ${CMAKE_MATCH_2})
++ set(HIP_CLANG_PATCH_LEVEL ${CMAKE_MATCH_3})
++ endif()
++ if(HIP_CXX_COMPILER MATCHES ".*hipcc")
++ if(HIP_CXX_COMPILER_VERSION_OUTPUT MATCHES "InstalledDir:[ \t]*([^\n]*)")
++ get_filename_component(HIP_CLANG_ROOT "${CMAKE_MATCH_1}" DIRECTORY)
++ endif()
++ elseif (HIP_CXX_COMPILER MATCHES ".*clang\\+\\+")
++ get_filename_component(_HIP_CLANG_REAL_PATH "${HIP_CXX_COMPILER}" REALPATH)
++ get_filename_component(_HIP_CLANG_BIN_PATH "${_HIP_CLANG_REAL_PATH}" DIRECTORY)
++ get_filename_component(HIP_CLANG_ROOT "${_HIP_CLANG_BIN_PATH}" DIRECTORY)
++ endif()
++
++
++ file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS ${HIP_CLANG_ROOT}/lib/clang/*/include)
++ find_path(HIP_CLANG_INCLUDE_PATH stddef.h
++ HINTS
+ ${HIP_CLANG_INCLUDE_SEARCH_PATHS}
+- NO_DEFAULT_PATH)
++ NO_DEFAULT_PATH)
++ # Since INTERFACE_INCLUDE_DIRECTORIES need to set the parent directory
++ # of HIP_CLANG_INCLUDE_PATH incase using find_path() of stddefs.h
++ set(HIP_CLANG_INCLUDE_PATH "${HIP_CLANG_INCLUDE_PATH}/..")
++ endif() # HIP_CXX_COMPILER Check
++ endif() # CLANG_INCLUDE_PATH_FETCH_EXIT_CODE Check
++
+ if(NOT WIN32)
+ find_dependency(AMDDeviceLibs)
+ endif()
+ set(AMDGPU_TARGETS "gfx900;gfx906;gfx908;gfx90a;gfx1030" CACHE STRING "AMD GPU targets to compile for")
+ set(GPU_TARGETS "${AMDGPU_TARGETS}" CACHE STRING "GPU targets to compile for")
+-endif()
++endif() # HIP_COMPILER check
+
+ if(NOT WIN32)
+ find_dependency(amd_comgr)
+@@ -263,11 +284,11 @@ if(HIP_COMPILER STREQUAL "clang")
+ hip_add_interface_link_flags(hip::device --hip-link)
+
+ set_property(TARGET hip::device APPEND PROPERTY
+- INTERFACE_INCLUDE_DIRECTORIES "${HIP_CLANG_INCLUDE_PATH}/.."
++ INTERFACE_INCLUDE_DIRECTORIES "${HIP_CLANG_INCLUDE_PATH}"
+ )
+
+ set_property(TARGET hip::device APPEND PROPERTY
+- INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${HIP_CLANG_INCLUDE_PATH}/.."
++ INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${HIP_CLANG_INCLUDE_PATH}"
+ )
+
+ foreach(GPU_TARGET ${GPU_TARGETS})
+@@ -291,25 +312,24 @@ if(HIP_COMPILER STREQUAL "clang")
+ endif()
+ endif()
+
+- file(GLOB HIP_CLANGRT_LIB_SEARCH_PATHS "${HIP_CLANG_ROOT}/lib/clang/*/lib/*")
+- find_library(CLANGRT_BUILTINS
+- NAMES
+- clang_rt.builtins
+- clang_rt.builtins-x86_64
+- PATHS
+- ${HIP_CLANGRT_LIB_SEARCH_PATHS}
+- ${HIP_CLANG_INCLUDE_PATH}/../lib/linux
+- ${HIP_CLANG_INCLUDE_PATH}/../lib/windows
+- NO_DEFAULT_PATH)
++
++ # Use HIP_CXX option -print-libgcc-file-name --rtlib=compiler-rt
++ # To fetch the compiler rt library file name.
++ execute_process(
++ COMMAND ${HIP_CXX_COMPILER} -print-libgcc-file-name --rtlib=compiler-rt
++ OUTPUT_VARIABLE CLANGRT_BUILTINS
++ OUTPUT_STRIP_TRAILING_WHITESPACE
++ RESULT_VARIABLE CLANGRT_BUILTINS_FETCH_EXIT_CODE)
+
+ # Add support for __fp16 and _Float16, explicitly link with compiler-rt
+- if(NOT CLANGRT_BUILTINS)
+- message(FATAL_ERROR "clangrt builtins lib not found")
+- else()
++ if( "${CLANGRT_BUILTINS_FETCH_EXIT_CODE}" STREQUAL "0" )
++ # CLANG_RT Builtins found Successfully Set interface link libraries property
+ set_property(TARGET hip::host APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${CLANGRT_BUILTINS}")
+ set_property(TARGET hip::device APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${CLANGRT_BUILTINS}")
+- endif()
+-endif()
++ else()
++ message(STATUS "clangrt builtins lib not found: ${CLANGRT_BUILTINS_FETCH_EXIT_CODE}")
++ endif() # CLANGRT_BUILTINS_FETCH_EXIT_CODE Check
++endif() # HIP_COMPILER Check
+
+ set( hip_LIBRARIES hip::host hip::device)
+ set( hip_LIBRARY ${hip_LIBRARIES})
+--
+2.38.1
+
diff --git a/dev-util/hip/files/0002-SWDEV-355608-Remove-clang-include-path-2996.patch b/dev-util/hip/files/0002-SWDEV-355608-Remove-clang-include-path-2996.patch
new file mode 100644
index 000000000000..6d64ad8c9fd8
--- /dev/null
+++ b/dev-util/hip/files/0002-SWDEV-355608-Remove-clang-include-path-2996.patch
@@ -0,0 +1,51 @@
+From 7613e00fe0299d6584d3ee67e5d4010e7fc0866a Mon Sep 17 00:00:00 2001
+From: ROCm CI Service Account <66695075+rocm-ci@users.noreply.github.com>
+Date: Fri, 14 Oct 2022 16:02:40 +0530
+Subject: [PATCH 2/3] SWDEV-355608 - Remove clang include path (#2996)
+
+Clang doesn't need to be told where to find the clang headers
+
+Change-Id: I175781731c43647676d91eedc8a915124f2479ab
+Signed-off-by: Yiyang Wu <xgreenlandforwyy@gmail.com>
+---
+ bin/hipcc.pl | 11 -----------
+ 1 file changed, 11 deletions(-)
+
+diff --git a/bin/hipcc.pl b/bin/hipcc.pl
+index 2a01dcc3..7e82cad8 100755
+--- a/bin/hipcc.pl
++++ b/bin/hipcc.pl
+@@ -162,9 +162,6 @@ if ($HIP_PLATFORM eq "amd") {
+ $HIP_CLANG_RT_LIB = `$HIPCC --print-runtime-dir`;
+ chomp($HIP_CLANG_RT_LIB);
+
+- if (! defined $HIP_CLANG_INCLUDE_PATH) {
+- $HIP_CLANG_INCLUDE_PATH = abs_path("$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/include");
+- }
+ if (! defined $HIP_INCLUDE_PATH) {
+ $HIP_INCLUDE_PATH = "$HIP_PATH/include";
+ }
+@@ -177,20 +174,12 @@ if ($HIP_PLATFORM eq "amd") {
+ print ("HIP_ROCCLR_HOME=$HIP_ROCCLR_HOME\n");
+ }
+ print ("HIP_CLANG_PATH=$HIP_CLANG_PATH\n");
+- print ("HIP_CLANG_INCLUDE_PATH=$HIP_CLANG_INCLUDE_PATH\n");
+ print ("HIP_INCLUDE_PATH=$HIP_INCLUDE_PATH\n");
+ print ("HIP_LIB_PATH=$HIP_LIB_PATH\n");
+ print ("DEVICE_LIB_PATH=$DEVICE_LIB_PATH\n");
+ print ("HIP_CLANG_RT_LIB=$HIP_CLANG_RT_LIB\n");
+ }
+
+- if ($isWindows) {
+- $HIPCXXFLAGS .= " -std=c++14 -fms-extensions -fms-compatibility";
+- } else {
+- $HIPCXXFLAGS .= " -std=c++11";
+- }
+- $HIPCXXFLAGS .= " -isystem \"$HIP_CLANG_INCLUDE_PATH/..\"";
+- $HIPCFLAGS .= " -isystem \"$HIP_CLANG_INCLUDE_PATH/..\"";
+ $HIPLDFLAGS .= " -L\"$HIP_LIB_PATH\"";
+ if ($isWindows) {
+ $HIPLDFLAGS .= " -lamdhip64";
+--
+2.38.1
+
diff --git a/dev-util/hip/files/0003-SWDEV-352878-Removed-relative-path-based-CLANG-inclu.patch b/dev-util/hip/files/0003-SWDEV-352878-Removed-relative-path-based-CLANG-inclu.patch
new file mode 100644
index 000000000000..f92cce4cf8d8
--- /dev/null
+++ b/dev-util/hip/files/0003-SWDEV-352878-Removed-relative-path-based-CLANG-inclu.patch
@@ -0,0 +1,173 @@
+From fddbcef9a5a45ab63d4805c53d1f8fcf5c30d095 Mon Sep 17 00:00:00 2001
+From: ROCm CI Service Account <66695075+rocm-ci@users.noreply.github.com>
+Date: Fri, 6 Jan 2023 02:37:15 +0530
+Subject: [PATCH 3/3] SWDEV-352878 - Removed relative path based CLANG include,
+ CLANGRT dependencies (#3124)
+
+Change-Id: Ifdcd117679bff548a6351ba915a8272689e647de
+Signed-off-by: Yiyang Wu <xgreenlandforwyy@gmail.com>
+---
+ cmake/FindHIP.cmake | 37 ++++++++++++++++++++++++++++-
+ hip-lang-config.cmake.in | 51 +++++++++++++++++++++-------------------
+ 2 files changed, 63 insertions(+), 25 deletions(-)
+
+diff --git a/cmake/FindHIP.cmake b/cmake/FindHIP.cmake
+index 8b196dea..109c9f65 100644
+--- a/cmake/FindHIP.cmake
++++ b/cmake/FindHIP.cmake
+@@ -48,6 +48,29 @@ mark_as_advanced(HIP_HOST_COMPILATION_CPP)
+ # FIND: HIP and associated helper binaries
+ ###############################################################################
+
++if(NOT HIP_CXX_COMPILER)
++ set(HIP_CXX_COMPILER ${CMAKE_CXX_COMPILER})
++endif()
++
++# Approach: To find HIP_CLANG_PATH using HIP_CXX_COMPILER options
++# Using --version option of HIP_CXX_COMPILER get the Install Directory
++# This install directory is set as the HIP_CLANG_PATH.
++# IF not successful in getting the Install Directory using HIP_CXX_COMPILER
++# fallback to Old Method to find HIP_CLANG_PATH from ENV Vars, ROCMPATH, HIPPATH etc.
++execute_process(COMMAND ${HIP_CXX_COMPILER} --version
++ OUTPUT_STRIP_TRAILING_WHITESPACE
++ OUTPUT_VARIABLE HIP_CXX_COMPILER_VERSION_OUTPUT)
++if(HIP_CXX_COMPILER MATCHES ".*hipcc")
++ if(HIP_CXX_COMPILER_VERSION_OUTPUT MATCHES "InstalledDir:[ \t]*([^\n]*)")
++ get_filename_component(HIP_CLANG_INSTALL_DIR "${CMAKE_MATCH_1}" DIRECTORY)
++ endif()
++elseif (HIP_CXX_COMPILER MATCHES ".*clang\\+\\+")
++ get_filename_component(_HIP_CLANG_REAL_PATH "${HIP_CXX_COMPILER}" REALPATH)
++ get_filename_component(_HIP_CLANG_BIN_PATH "${_HIP_CLANG_REAL_PATH}" DIRECTORY)
++ get_filename_component(HIP_CLANG_INSTALL_DIR "${_HIP_CLANG_BIN_PATH}" DIRECTORY)
++endif()
++
++
+ get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_DIR}/../" REALPATH)
+
+ # HIP is currently not supported for apple
+@@ -230,6 +253,10 @@ if("${HIP_COMPILER}" STREQUAL "nvcc")
+ elseif("${HIP_COMPILER}" STREQUAL "clang")
+ #Set HIP_CLANG_PATH
+ if("x${HIP_CLANG_PATH}" STREQUAL "x")
++ # IF HIP_CLANG_INSTALL_DIR is Found
++ if( HIP_CLANG_INSTALL_DIR )
++ set(HIP_CLANG_PATH ${HIP_CLANG_INSTALL_DIR})
++ else() # IF HIP_CLANG_INSTALL_DIR is not found
+ if(DEFINED ENV{HIP_CLANG_PATH})
+ set(HIP_CLANG_PATH $ENV{HIP_CLANG_PATH})
+ elseif(DEFINED ENV{ROCM_PATH})
+@@ -252,7 +279,9 @@ elseif("${HIP_COMPILER}" STREQUAL "clang")
+ else()
+ message(FATAL_ERROR "Unable to find the clang compiler path. Set ROCM_PATH or HIP_PATH in env ")
+ endif()
+- endif()
++ endif() # HIP_CLANG_INSTALL_DIR Check
++ endif() # Set HIP_CLANG_PATH
++
+ #Number of parallel jobs by default is 1
+ if(NOT DEFINED HIP_CLANG_NUM_PARALLEL_JOBS)
+ set(HIP_CLANG_NUM_PARALLEL_JOBS 1)
+@@ -660,6 +689,10 @@ macro(HIP_ADD_EXECUTABLE hip_target)
+ endif()
+ if("${HIP_COMPILER}" STREQUAL "clang")
+ if("x${HIP_CLANG_PATH}" STREQUAL "x")
++ # IF HIP_CLANG_INSTALL_DIR is Found
++ if( HIP_CLANG_INSTALL_DIR )
++ set(HIP_CLANG_PATH ${HIP_CLANG_INSTALL_DIR})
++ else() # IF HIP_CLANG_INSTALL_DIR is not found
+ if(DEFINED ENV{HIP_CLANG_PATH})
+ set(HIP_CLANG_PATH $ENV{HIP_CLANG_PATH})
+ elseif(DEFINED ENV{ROCM_PATH})
+@@ -682,7 +715,9 @@ macro(HIP_ADD_EXECUTABLE hip_target)
+ else()
+ message(FATAL_ERROR "Unable to find the clang compiler path. Set ROCM_PATH or HIP_PATH in env")
+ endif()
++ endif() # HIP_CLANG_INSTALL_DIR Check
+ endif()
++
+ set(CMAKE_HIP_LINK_EXECUTABLE "${HIP_HIPCC_CMAKE_LINKER_HELPER} ${HIP_CLANG_PATH} ${HIP_CLANG_PARALLEL_BUILD_LINK_OPTIONS} <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
+ else()
+ set(CMAKE_HIP_LINK_EXECUTABLE "${HIP_HIPCC_CMAKE_LINKER_HELPER} <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
+diff --git a/hip-lang-config.cmake.in b/hip-lang-config.cmake.in
+index 9250a68a..1cf4e40f 100644
+--- a/hip-lang-config.cmake.in
++++ b/hip-lang-config.cmake.in
+@@ -70,15 +70,6 @@ get_filename_component(_DIR "${CMAKE_CURRENT_LIST_DIR}" REALPATH)
+ get_filename_component(_IMPORT_PREFIX "${_DIR}/../../../" REALPATH)
+
+
+-#need _IMPORT_PREFIX to be set #FILE_REORG_BACKWARD_COMPATIBILITY
+-file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS "${_IMPORT_PREFIX}/../llvm/lib/clang/*/include")
+-file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS_REORG "${_IMPORT_PREFIX}/llvm/lib/clang/*/include")
+-find_path(HIP_CLANG_INCLUDE_PATH __clang_cuda_math.h
+- HINTS ${HIP_CLANG_INCLUDE_SEARCH_PATHS}
+- ${HIP_CLANG_INCLUDE_SEARCH_PATHS_REORG}
+- NO_DEFAULT_PATH)
+-get_filename_component(HIP_CLANG_INCLUDE_PATH "${HIP_CLANG_INCLUDE_PATH}" DIRECTORY)
+-
+ #If HIP isnot installed under ROCm, need this to find HSA assuming HSA is under ROCm
+ if( DEFINED ENV{ROCM_PATH} )
+ set(ROCM_PATH "$ENV{ROCM_PATH}")
+@@ -96,18 +87,10 @@ if (NOT HSA_HEADER)
+ message (FATAL_ERROR "HSA header not found! ROCM_PATH environment not set")
+ endif()
+
+-get_filename_component(HIP_COMPILER_INSTALL_PATH ${CMAKE_HIP_COMPILER} DIRECTORY)
+-file(GLOB HIP_CLANGRT_LIB_SEARCH_PATHS "${HIP_COMPILER_INSTALL_PATH}/../lib/clang/*/lib/*")
+-find_library(CLANGRT_BUILTINS
+- NAMES
+- clang_rt.builtins
+- clang_rt.builtins-x86_64
+- PATHS
+- ${HIP_CLANGRT_LIB_SEARCH_PATHS}
+- ${HIP_CLANG_INCLUDE_PATH}/../lib/linux)
++
+ set_target_properties(hip-lang::device PROPERTIES
+- INTERFACE_INCLUDE_DIRECTORIES "$<$<COMPILE_LANGUAGE:HIP>:${_IMPORT_PREFIX}/include;${HIP_CLANG_INCLUDE_PATH}>"
+- INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "$<$<COMPILE_LANGUAGE:HIP>:${_IMPORT_PREFIX}/include;${HIP_CLANG_INCLUDE_PATH}>"
++ INTERFACE_INCLUDE_DIRECTORIES "$<$<COMPILE_LANGUAGE:HIP>:${_IMPORT_PREFIX}/include>"
++ INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "$<$<COMPILE_LANGUAGE:HIP>:${_IMPORT_PREFIX}/include>"
+ )
+
+ set_target_properties(hip-lang::amdhip64 PROPERTIES
+@@ -133,13 +116,33 @@ set_property(TARGET hip-lang::device APPEND PROPERTY
+ INTERFACE_LINK_OPTIONS "$<$<LINK_LANGUAGE:HIP>:--hip-link>"
+ )
+
++# Approach: Check CLANGRT LIB support for CMAKE_HIP_COMPILER
++# Use CMAKE_HIP_COMPILER option -print-libgcc-file-name --rtlib=compiler-rt
++# Note: For Linux add additional option -unwindlib=libgcc also
++# To fetch the compiler rt library file name and confirm.
++# If unsuccessful in getting clangrt using this option then
++# FATAL_ERROR message send since compiler-rt linkage dependency is mandatory.
++# If successful then --rtlib=compiler-rt (and -unwindlib=libgcc for non windows)
++# added to Target's INTERFACE_LINK_LIBRARIES property
++if (NOT WIN32)
++ set(CLANGRT_LINUX_OPTION "-unwindlib=libgcc")
++endif()
++
++execute_process(
++ COMMAND ${CMAKE_HIP_COMPILER} -print-libgcc-file-name --rtlib=compiler-rt ${CLANGRT_LINUX_OPTION}
++ OUTPUT_VARIABLE CLANGRT_BUILTINS
++ OUTPUT_STRIP_TRAILING_WHITESPACE
++ RESULT_VARIABLE CLANGRT_BUILTINS_FETCH_EXIT_CODE)
++
+ # Add support for __fp16 and _Float16, explicitly link with compiler-rt
+-if(NOT CLANGRT_BUILTINS)
+- message(FATAL_ERROR "clangrt builtins lib not found")
+-else()
++if( "${CLANGRT_BUILTINS_FETCH_EXIT_CODE}" STREQUAL "0" )
+ set_property(TARGET hip-lang::device APPEND PROPERTY
+- INTERFACE_LINK_LIBRARIES "$<$<LINK_LANGUAGE:HIP>:${CLANGRT_BUILTINS}>"
++ INTERFACE_LINK_OPTIONS $<$<LINK_LANGUAGE:HIP>:--rtlib=compiler-rt ${CLANGRT_LINUX_OPTION}>
+ )
++else()
++ # FATAL_ERROR send if not successfull on compiler-rt linkage dependency
++ message(FATAL_ERROR
++ "${CMAKE_FIND_PACKAGE_NAME} Error:${CLANGRT_BUILTINS_FETCH_EXIT_CODE} - clangrt builtins lib could not be found.")
+ endif()
+
+ # Approved by CMake to use this name. This is used so that HIP can
+--
+2.38.1
+
diff --git a/dev-util/hip/files/hipvars-5.3.3.pm b/dev-util/hip/files/hipvars-5.3.3.pm
new file mode 100644
index 000000000000..fd1403661efb
--- /dev/null
+++ b/dev-util/hip/files/hipvars-5.3.3.pm
@@ -0,0 +1,20 @@
+#!/usr/bin/perl -w
+package hipvars;
+
+$HIP_BASE_VERSION_MAJOR = "@HIP_BASE_VERSION_MAJOR@";
+$HIP_BASE_VERSION_MINOR = "@HIP_BASE_VERSION_MINOR@";
+
+$isWindows = 0;
+$HIP_PATH='/usr';
+$ROCM_PATH='/usr';
+$CUDA_PATH='/opt/cuda';
+$HSA_PATH='/usr';
+$HIP_CLANG_PATH='@CLANG_PATH@';
+$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 = "@HIP_VERSION_PATCH@";
+$HIP_VERSION="$HIP_VERSION_MAJOR.$HIP_VERSION_MINOR.$HIP_VERSION_PATCH";
diff --git a/dev-util/hip/hip-5.3.3-r2.ebuild b/dev-util/hip/hip-5.3.3-r2.ebuild
index 23778ce69cb9..d52892ff9c6f 100644
--- a/dev-util/hip/hip-5.3.3-r2.ebuild
+++ b/dev-util/hip/hip-5.3.3-r2.ebuild
@@ -47,6 +47,7 @@ PATCHES=(
"${FILESDIR}/${PN}-5.0.1-hip_vector_types.patch"
"${FILESDIR}/${PN}-5.0.2-set-build-id.patch"
"${FILESDIR}/${PN}-5.3.3-remove-cmake-doxygen-commands.patch"
+ "${FILESDIR}/0001-SWDEV-352878-LLVM-pkg-search-directly-using-find_dep.patch"
)
python_check_deps() {
@@ -74,7 +75,6 @@ src_prepare() {
# correctly find HIP_CLANG_INCLUDE_PATH using cmake
local LLVM_PREFIX="$(get_llvm_prefix "${LLVM_MAX_SLOT}")"
- local CLANG_RESOURCE_DIR=$("${LLVM_PREFIX}/bin/clang" -print-resource-dir)
sed -e "/set(HIP_CLANG_ROOT/s:\"\${ROCM_PATH}/llvm\":${LLVM_PREFIX}:" -i hip-config.cmake.in || die
# correct libs and cmake install dir
@@ -84,18 +84,18 @@ src_prepare() {
-e "/CPACK_RESOURCE_FILE_LICENSE/d" -i packaging/CMakeLists.txt || die
pushd ${HIP_S} || die
- eapply "${FILESDIR}/${PN}-5.1.3-clang-include-path.patch"
eapply "${FILESDIR}/${PN}-5.1.3-rocm-path.patch"
eapply "${FILESDIR}/${PN}-5.1.3-fno-stack-protector.patch"
+ eapply "${FILESDIR}/0001-SWDEV-344620-hipcc-fails-to-parse-version-of-clang-i.patch"
+ eapply "${FILESDIR}/0002-SWDEV-355608-Remove-clang-include-path-2996.patch"
+ eapply "${FILESDIR}/0003-SWDEV-352878-Removed-relative-path-based-CLANG-inclu.patch"
# 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 "/HIP.*FLAGS.*isystem.*HIP_INCLUDE_PATH/d" \
-e "s:\$ENV{'DEVICE_LIB_PATH'}:'${EPREFIX}/usr/lib/amdgcn/bitcode':" \
-e "s:\$ENV{'HIP_LIB_PATH'}:'${EPREFIX}/usr/$(get_libdir)':" \
- -e "/rpath/s,--rpath=[^ ]*,," \
- -e "s,\$HIP_CLANG_PATH/../lib/clang/\$HIP_CLANG_VERSION/,${CLANG_RESOURCE_DIR}/,g" \
- -i bin/hipcc.pl || die
+ -e "/rpath/s,--rpath=[^ ]*,," -i bin/hipcc.pl || 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:${EPREFIX}/usr/lib/amdgcn/bitcode:" \
@@ -105,15 +105,10 @@ src_prepare() {
hprefixify $(grep -rl --exclude-dir=build/ --exclude="hip-config.cmake.in" "/usr" "${S}")
hprefixify $(grep -rl --exclude-dir=build/ --exclude="hipcc.pl" "/usr" "${HIP_S}")
- cp "$(prefixify_ro "${FILESDIR}"/hipvars-5.1.3.pm)" bin/hipvars.pm || die "failed to replace hipvars.pm"
+ cp "$(prefixify_ro "${FILESDIR}"/hipvars-5.3.3.pm)" bin/hipvars.pm || die "failed to replace hipvars.pm"
sed -e "s,@HIP_BASE_VERSION_MAJOR@,$(ver_cut 1)," -e "s,@HIP_BASE_VERSION_MINOR@,$(ver_cut 2)," \
-e "s,@HIP_VERSION_PATCH@,$(ver_cut 3)," \
- -e "s,@CLANG_INCLUDE_PATH@,${CLANG_RESOURCE_DIR}/include," \
-e "s,@CLANG_PATH@,${LLVM_PREFIX}/bin," -i bin/hipvars.pm || die
-
- sed -e "/HIP_CLANG_INCLUDE_SEARCH_PATHS/s,\${_IMPORT_PREFIX}.*/include,${CLANG_RESOURCE_DIR}/include," -i hip-lang-config.cmake.in || die
- popd || die
- sed -e "/HIP_CLANG_INCLUDE_SEARCH_PATHS/s,\${HIP_CLANG_ROOT}.*/include,${CLANG_RESOURCE_DIR}/include," -i hip-config.cmake.in || die
}
src_configure() {