commit:     38ab28e27cd7da59f4a241b09d3ac734c4f8b575
Author:     Yiyang Wu <xgreenlandforwyy <AT> gmail <DOT> com>
AuthorDate: Wed Jan 25 03:14:27 2023 +0000
Commit:     Benda XU <heroxbd <AT> gentoo <DOT> org>
CommitDate: Tue Jan 31 13:31:07 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=38ab28e2

dev-util/hip: Backport fixes for clang directories search

Closes: https://bugs.gentoo.org/891013
Signed-off-by: Yiyang Wu <xgreenlandforwyy <AT> gmail.com>
Signed-off-by: Benda Xu <heroxbd <AT> gentoo.org>

 ...0-hipcc-fails-to-parse-version-of-clang-i.patch |  70 +++++++++
 ...8-LLVM-pkg-search-directly-using-find_dep.patch | 163 +++++++++++++++++++
 ...DEV-355608-Remove-clang-include-path-2996.patch |  51 ++++++
 ...8-Removed-relative-path-based-CLANG-inclu.patch | 173 +++++++++++++++++++++
 dev-util/hip/files/hipvars-5.3.3.pm                |  20 +++
 dev-util/hip/hip-5.3.3-r2.ebuild                   |  17 +-
 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 <[email protected]>
+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 <[email protected]>
+---
+ 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 <[email protected]>
+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 <[email protected]>
+---
+ 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 <[email protected]>
+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 <[email protected]>
+---
+ 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 <[email protected]>
+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 <[email protected]>
+---
+ 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() {

Reply via email to