From a24aa7dfa579c41365f23f8205b619b838e32184 Mon Sep 17 00:00:00 2001 From: Joseph Huber Date: Wed, 27 Nov 2024 20:14:13 -0600 Subject: [PATCH] [Offload] Use libc 'hand-in-hand' module to find RPC header (#117928) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Summary: We should now use the officialâ„¢ way to include the files from `libc/shared`. This required some code to make sure that it's not included twice if multiple people use it as well as a sanity check on the directory. --- offload/CMakeLists.txt | 2 ++ offload/plugins-nextgen/common/CMakeLists.txt | 7 +++---- .../cmake/Modules/FindLibcCommonUtils.cmake | 17 +++++++++++------ 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/offload/CMakeLists.txt b/offload/CMakeLists.txt index dfd25bad6084..e24f0faa9121 100644 --- a/offload/CMakeLists.txt +++ b/offload/CMakeLists.txt @@ -45,6 +45,8 @@ set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake) list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_CURRENT_SOURCE_DIR}/cmake" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules" + "${CMAKE_CURRENT_SOURCE_DIR}/../runtimes/cmake/Modules" + "${LLVM_COMMON_CMAKE_UTILS}" "${LLVM_COMMON_CMAKE_UTILS}/Modules" ) diff --git a/offload/plugins-nextgen/common/CMakeLists.txt b/offload/plugins-nextgen/common/CMakeLists.txt index 93cf42c89f32..3a861a47eeda 100644 --- a/offload/plugins-nextgen/common/CMakeLists.txt +++ b/offload/plugins-nextgen/common/CMakeLists.txt @@ -22,17 +22,16 @@ if (NOT LLVM_LINK_LLVM_DYLIB) endif() # Include the RPC server from the `libc` project if availible. +include(FindLibcCommonUtils) if(TARGET llvmlibc_rpc_server AND ${LIBOMPTARGET_GPU_LIBC_SUPPORT}) - target_link_libraries(PluginCommon PRIVATE llvmlibc_rpc_server) + target_link_libraries(PluginCommon PRIVATE llvmlibc_rpc_server llvm-libc-common-utilities) target_compile_definitions(PluginCommon PRIVATE LIBOMPTARGET_RPC_SUPPORT) elseif(${LIBOMPTARGET_GPU_LIBC_SUPPORT}) find_library(llvmlibc_rpc_server NAMES llvmlibc_rpc_server PATHS ${LIBOMPTARGET_LLVM_LIBRARY_DIR} NO_DEFAULT_PATH) if(llvmlibc_rpc_server) - target_link_libraries(PluginCommon PRIVATE ${llvmlibc_rpc_server}) + target_link_libraries(PluginCommon PRIVATE ${llvmlibc_rpc_server} llvm-libc-common-utilities) target_compile_definitions(PluginCommon PRIVATE LIBOMPTARGET_RPC_SUPPORT) - # We may need to get the headers directly from the 'libc' source directory. - target_include_directories(PluginCommon PRIVATE ${CMAKE_SOURCE_DIR}/../libc/) endif() endif() diff --git a/runtimes/cmake/Modules/FindLibcCommonUtils.cmake b/runtimes/cmake/Modules/FindLibcCommonUtils.cmake index 763dc81d8bd7..0e65fdff7c34 100644 --- a/runtimes/cmake/Modules/FindLibcCommonUtils.cmake +++ b/runtimes/cmake/Modules/FindLibcCommonUtils.cmake @@ -6,9 +6,14 @@ # #===--------------------------------------------------------------------===// -add_library(llvm-libc-common-utilities INTERFACE) -# TODO: Reorganize the libc shared section so that it can be included without -# adding the root "libc" directory to the include path. -target_include_directories(llvm-libc-common-utilities INTERFACE ${CMAKE_CURRENT_LIST_DIR}/../../../libc) -target_compile_definitions(llvm-libc-common-utilities INTERFACE LIBC_NAMESPACE=__llvm_libc_common_utils) -target_compile_features(llvm-libc-common-utilities INTERFACE cxx_std_17) +if(NOT TARGET llvm-libc-common-utilities) + set(libc_path ${CMAKE_CURRENT_LIST_DIR}/../../../libc) + if (EXISTS ${libc_path} AND IS_DIRECTORY ${libc_path}) + add_library(llvm-libc-common-utilities INTERFACE) + # TODO: Reorganize the libc shared section so that it can be included without + # adding the root "libc" directory to the include path. + target_include_directories(llvm-libc-common-utilities INTERFACE ${libc_path}) + target_compile_definitions(llvm-libc-common-utilities INTERFACE LIBC_NAMESPACE=__llvm_libc_common_utils) + target_compile_features(llvm-libc-common-utilities INTERFACE cxx_std_17) + endif() +endif()