File hip-use-env-in-FindHIP.patch of Package rocclr

diff --git a/cmake/FindHIP.cmake b/cmake/FindHIP.cmake
index b59cb3ac..915273c4 100644
--- a/cmake/FindHIP.cmake
+++ b/cmake/FindHIP.cmake
@@ -52,33 +52,42 @@ if(NOT HIP_CXX_COMPILER)
   set(HIP_CXX_COMPILER ${CMAKE_CXX_COMPILER})
 endif()
 
-# Approach: To find HIP_CLANG_PATH for HIP_CXX_COMPILER types
-# For HIP_CXX_COMPILER as *hipcc use hipconfig -l option to get the clang path.
-# For HIP_CXX_COMPILER as *clang use real path of HIP_CXX_COMPILER
-# IF not successful in getting the CLANG_PATH using HIP_CXX_COMPILER
-# fallback to Old Method to find HIP_CLANG_PATH from ENV Vars, ROCMPATH, HIPPATH etc.
-if(HIP_CXX_COMPILER MATCHES ".*hipcc")
-  get_filename_component(HIPCC_PATH "${HIP_CXX_COMPILER}" DIRECTORY)
-  set(_HIPCONFIG_EXECUTABLE "${HIPCC_PATH}/hipconfig")
-  execute_process(COMMAND ${_HIPCONFIG_EXECUTABLE} -l
-             OUTPUT_VARIABLE _HIP_CLANG_INSTALL_PATH
-             OUTPUT_STRIP_TRAILING_WHITESPACE
-             ERROR_VARIABLE _HIPCONFIG_EXE_ERROR
-             ERROR_STRIP_TRAILING_WHITESPACE
-             RESULT_VARIABLE _HIPCONFIG_EXE_EXIT_CODE)
-  if( _HIPCONFIG_EXE_ERROR )
-      message( STATUS "hipconfig -l option failed with error: ${_HIPCONFIG_EXE_ERROR}" )
-  else() #IF hipconfig -l executed with no error
-    if( "${_HIPCONFIG_EXE_EXIT_CODE}" STREQUAL "0" )
-      set(HIP_CLANG_PATH "${_HIP_CLANG_INSTALL_PATH}")
+if("x${HIP_CLANG_PATH}" STREQUAL "x")
+    if(DEFINED ENV{HIP_CLANG_PATH})
+        set(HIP_CLANG_PATH $ENV{HIP_CLANG_PATH})
     else()
-      message( STATUS "${_HIPCONFIG_EXECUTABLE} Failed with Exit code: ${_HIPCONFIG_EXE_EXIT_CODE}" )
+        # Approach: To find HIP_CLANG_PATH for HIP_CXX_COMPILER types
+        # For HIP_CXX_COMPILER as *hipcc use hipconfig -l option to get the clang path.
+        # For HIP_CXX_COMPILER as *clang use real path of HIP_CXX_COMPILER
+        # IF not successful in getting the CLANG_PATH using HIP_CXX_COMPILER
+        # fallback to Old Method to find HIP_CLANG_PATH from ENV Vars, ROCMPATH, HIPPATH etc.
+        if(HIP_CXX_COMPILER MATCHES ".*hipcc")
+            get_filename_component(HIPCC_PATH "${HIP_CXX_COMPILER}" DIRECTORY)
+            set(_HIPCONFIG_EXECUTABLE "${HIPCC_PATH}/hipconfig")
+            execute_process(COMMAND ${_HIPCONFIG_EXECUTABLE} -l
+                        OUTPUT_VARIABLE _HIP_CLANG_INSTALL_PATH
+                        OUTPUT_STRIP_TRAILING_WHITESPACE
+                        ERROR_VARIABLE _HIPCONFIG_EXE_ERROR
+                        ERROR_STRIP_TRAILING_WHITESPACE
+                        RESULT_VARIABLE _HIPCONFIG_EXE_EXIT_CODE)
+            if( _HIPCONFIG_EXE_ERROR )
+                message( STATUS "hipconfig -l option failed with error: ${_HIPCONFIG_EXE_ERROR}" )
+            else() #IF hipconfig -l executed with no error
+                if( "${_HIPCONFIG_EXE_EXIT_CODE}" STREQUAL "0" )
+                    set(HIP_CLANG_PATH "${_HIP_CLANG_INSTALL_PATH}")
+                else()
+                    message( STATUS "${_HIPCONFIG_EXECUTABLE} Failed with Exit code: ${_HIPCONFIG_EXE_EXIT_CODE}" )
+                endif()
+            endif()
+        elseif (HIP_CXX_COMPILER MATCHES ".*clang\\+\\+(-rocm)?")
+            get_filename_component(_HIP_CLANG_REAL_PATH "${HIP_CXX_COMPILER}" REALPATH)
+            get_filename_component(_HIP_CLANG_BIN_PATH "${_HIP_CLANG_REAL_PATH}" DIRECTORY)
+            # handle symlinks correctly
+            get_filename_component(_HIP_CLANG_BIN_NAME "${_HIP_CLANG_REAL_PATH}" NAME)
+            set(HIP_CLANG_PATH "${_HIP_CLANG_BIN_PATH}")
+            set(HIP_CXX_COMPILER "${_HIP_CLANG_BIN_NAME}")
+        endif()
     endif()
-  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)
-  set(HIP_CLANG_PATH "${_HIP_CLANG_BIN_PATH}")
 endif()
 
 if(WIN32)
openSUSE Build Service is sponsored by