SWDEV-352878 - LLVM pkg search directly using find_dep() for CLANG Include path

Change-Id: I355e39890757be07de8b9332deca159f35039dfd
이 커밋은 다음에 포함됨:
AravindanC
2022-08-26 15:02:09 -07:00
부모 3415f0a56e
커밋 c8500cd72d
+64 -44
파일 보기
@@ -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)
@@ -249,11 +270,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})
@@ -277,25 +298,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})