diff --git a/projects/clr/hipamd/bin/roc-obj b/projects/clr/hipamd/bin/roc-obj index 0b0d12f5f2..5dbde4e902 100755 --- a/projects/clr/hipamd/bin/roc-obj +++ b/projects/clr/hipamd/bin/roc-obj @@ -137,7 +137,16 @@ find_rocm_executable_or_fail() { local -r command="$1"; shift local file local searched=() - for dir in "$BASE_DIR" "${HIP_CLANG_PATH:-"$BASE_DIR/../../llvm/bin"}"; do + + # Look for LLVM directory in ROCm's directory structure + local rocm_llvm_dir_root=`realpath $BASE_DIR/../lib` + local llvm_dir=`find "$rocm_llvm_dir_root" -maxdepth 1 -regextype posix-extended -regex ".*/llvm-[0-9]{2,}" -type d,l | sort -r` + local llvm_bin_dir=() + for d in $llvm_dir; do + llvm_bin_dir+=("$d/bin") + done + + for dir in "$BASE_DIR" "${HIP_CLANG_PATH:-"$BASE_DIR/../../llvm/bin"}" ${llvm_bin_dir[*]}; do file="$dir/$command" if [[ -x $file ]]; then printf "%s" "$file" diff --git a/projects/clr/hipamd/hip-config.cmake.in b/projects/clr/hipamd/hip-config.cmake.in index 6528bab18d..12411aa050 100755 --- a/projects/clr/hipamd/hip-config.cmake.in +++ b/projects/clr/hipamd/hip-config.cmake.in @@ -141,8 +141,20 @@ if(HIP_COMPILER STREQUAL "clang") # if using install folder file(TO_CMAKE_PATH "${HIP_PATH}/../lc" HIP_CLANG_ROOT) endif() - else() + elseif (EXISTS "${ROCM_PATH}/llvm") + # LLVM directory in legacy ROCm directory structure set(HIP_CLANG_ROOT "${ROCM_PATH}/llvm") + else() + file(GLOB __rocm_llvm_dirs + LIST_DIRECTORIES true + "${ROCM_PATH}/lib/llvm-[0-9][0-9]") + list(SORT __rocm_llvm_dirs ORDER DESCENDING) + foreach(__llvm_dir ${__rocm_llvm_dirs}) + if (IS_DIRECTORY ${__llvm_dir}) + set(HIP_CLANG_ROOT ${__llvm_dir}) + break() + endif() + endforeach() endif() if(NOT HIP_CXX_COMPILER) set(HIP_CXX_COMPILER ${CMAKE_CXX_COMPILER}) diff --git a/projects/clr/hipamd/packaging/CMakeLists.txt b/projects/clr/hipamd/packaging/CMakeLists.txt index 92118aea82..183ba6a0d9 100644 --- a/projects/clr/hipamd/packaging/CMakeLists.txt +++ b/projects/clr/hipamd/packaging/CMakeLists.txt @@ -179,13 +179,13 @@ configure_file(hip-devel.postinst ${CMAKE_CURRENT_BINARY_DIR}/dev/postinst @ONLY configure_file(hip-devel.prerm ${CMAKE_CURRENT_BINARY_DIR}/dev/prerm @ONLY) set(CPACK_DEBIAN_DEV_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_BINARY_DIR}/dev/postinst;${CMAKE_CURRENT_BINARY_DIR}/dev/prerm") -set(CPACK_DEBIAN_DEV_PACKAGE_DEPENDS "perl (>= 5.0), liburi-encode-perl, libfile-basedir-perl, libfile-copy-recursive-perl, libfile-listing-perl, libfile-which-perl, libc6, file, rocm-core") +set(CPACK_DEBIAN_DEV_PACKAGE_DEPENDS "perl (>= 5.0), liburi-encode-perl, libfile-basedir-perl, libfile-copy-recursive-perl, libfile-find-rule-perl, libfile-listing-perl, libfile-which-perl, libc6, file, rocm-core") set(CPACK_DEBIAN_DEV_PACKAGE_PROVIDES "hip-base") set(CPACK_DEBIAN_DEV_PACKAGE_REPLACES "hip-base") set(CPACK_RPM_DEV_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/dev/postinst") set(CPACK_RPM_DEV_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_CURRENT_BINARY_DIR}/dev/prerm") -set(CPACK_RPM_DEV_PACKAGE_REQUIRES "perl >= 5.0, perl-File-Which, perl-File-Listing, perl-File-BaseDir, perl-URI-Encode, file, rocm-core") +set(CPACK_RPM_DEV_PACKAGE_REQUIRES "perl >= 5.0, perl-File-Which, perl-File-Listing, perl-File-BaseDir, perl-File-Find-Rule, perl-URI-Encode, file, rocm-core") set(CPACK_RPM_DEV_PACKAGE_PROVIDES "hip-base") set(CPACK_RPM_DEV_PACKAGE_OBSOLETES "hip-base") diff --git a/projects/clr/hipamd/src/CMakeLists.txt b/projects/clr/hipamd/src/CMakeLists.txt index cc1733b626..31bcd14e9b 100644 --- a/projects/clr/hipamd/src/CMakeLists.txt +++ b/projects/clr/hipamd/src/CMakeLists.txt @@ -175,7 +175,7 @@ endif() if(__HIP_ENABLE_PCH) find_package(LLVM REQUIRED CONFIG PATHS - ${ROCM_PATH}/llvm) + ${ROCM_PATH}/llvm ${ROCM_PATH}/lib) # find_package(LLVM) returns the lib/cmake/llvm location. We require the root. if(NOT DEFINED HIP_LLVM_ROOT) set(HIP_LLVM_ROOT "${LLVM_DIR}/../../..") diff --git a/projects/clr/hipamd/src/hiprtc/CMakeLists.txt b/projects/clr/hipamd/src/hiprtc/CMakeLists.txt index 33aa1c0cac..0cc9da9f98 100644 --- a/projects/clr/hipamd/src/hiprtc/CMakeLists.txt +++ b/projects/clr/hipamd/src/hiprtc/CMakeLists.txt @@ -122,8 +122,8 @@ add_to_config(_versionInfo HIP_VERSION_GITHASH) # Enable preprocessed hiprtc-builtins library include(HIPRTC RESULT_VARIABLE HIPRTC_CMAKE) # Requires clang and llvm-mc to create this library. -find_package(LLVM REQUIRED CONFIG PATHS ${ROCM_PATH}/llvm) -find_package(Clang REQUIRED CONFIG PATHS ${ROCM_PATH}/llvm) +find_package(LLVM REQUIRED CONFIG PATHS ${ROCM_PATH}/llvm ${ROCM_PATH}/lib) +find_package(Clang REQUIRED CONFIG PATHS ${ROCM_PATH}/llvm ${ROCM_PATH}/lib) set(HIPRTC_GEN_DIR "${CMAKE_CURRENT_BINARY_DIR}/hip_rtc_gen") set(HIPRTC_GEN_HEADER "${HIPRTC_GEN_DIR}/hipRTC_header.h") set(HIPRTC_GEN_MCIN "${HIPRTC_GEN_DIR}/hipRTC_header.mcin")