From 272ef9a7bf5fc2a88bfd1cb552e8d148638cf2ce Mon Sep 17 00:00:00 2001 From: zichguan-amd Date: Mon, 20 Jan 2025 16:43:13 -0500 Subject: [PATCH] SWDEV-509518 - Allow LLVM_ROOT and Clang_ROOT to be used with find_program Fixes #123. find_program doesn't follow CMP0074 and thus ignores LLVM_ROOT and Clang_ROOT. This change adds LLVM_ROOT and Clang_ROOT to the search path of find_program for llvm-mc and clang in hiprtc to mimics previous add_package behaviour. Caveat: cmake-specific variables like CMAKE_PREFIX_PATH will take precedence over paths specified with HINTS for find_program, there's no way to change the ordering unless we skip cmake-specific variables all together using NO_CMAKE_PATH and NO_CMAKE_ENVIRONMENT_PATH. Change-Id: I1fedb60cda09744416e19b3c6e3e0c5c9045f8e7 --- hipamd/src/hiprtc/CMakeLists.txt | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/hipamd/src/hiprtc/CMakeLists.txt b/hipamd/src/hiprtc/CMakeLists.txt index a486e84f84..49e7672994 100644 --- a/hipamd/src/hiprtc/CMakeLists.txt +++ b/hipamd/src/hiprtc/CMakeLists.txt @@ -132,9 +132,25 @@ add_to_config(_versionInfo HIP_VERSION_GITHASH) # Enable preprocessed hiprtc-builtins library include(HIPRTC RESULT_VARIABLE HIPRTC_CMAKE) +# Set binary roots to _ROOT cmake and environment variables similar to CMP0074 +# to allow find_program to use LLVM_ROOT and Clang_ROOT +if(DEFINED ENV{LLVM_ROOT}) + set(ENV_LLVM_BIN $ENV{LLVM_ROOT}/bin) +endif() +if(DEFINED LLVM_ROOT) + set(LLVM_BIN ${LLVM_ROOT}/bin) +endif() + +if(DEFINED ENV{Clang_ROOT}) + set(ENV_Clang_BIN $ENV{Clang_ROOT}/bin) +endif() + +if(DEFINED Clang_ROOT) + set(Clang_BIN ${Clang_ROOT}/bin) +endif() # Requires clang and llvm-mc to create this library. -find_program(clang clang HINTS ${ROCM_PATH}/llvm/bin ${ROCM_PATH}) -find_program(llvm-mc llvm-mc HINTS ${ROCM_PATH}/llvm/bin ${ROCM_PATH}) +find_program(clang clang HINTS ${Clang_BIN} ${ENV_Clang_BIN} ${ROCM_PATH}/llvm/bin ${ROCM_PATH}) +find_program(llvm-mc llvm-mc HINTS ${LLVM_BIN} ${ENV_LLVM_BIN} ${ROCM_PATH}/llvm/bin ${ROCM_PATH}) 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")