[llvm] [Offload] Use libc 'hand-in-hand' module to find RPC header (PR #117928)
Joseph Huber via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 27 13:25:26 PST 2024
https://github.com/jhuber6 created https://github.com/llvm/llvm-project/pull/117928
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.
>From a1236a6fa47c7b1ef9dfb4a8ca13540c5f59db2c Mon Sep 17 00:00:00 2001
From: Joseph Huber <huberjn at outlook.com>
Date: Wed, 27 Nov 2024 15:22:17 -0600
Subject: [PATCH] [Offload] Use libc 'hand-in-hand' module to find RPC header
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 | 5 +++--
.../cmake/Modules/FindLibcCommonUtils.cmake | 17 +++++++++++------
3 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/offload/CMakeLists.txt b/offload/CMakeLists.txt
index dfd25bad608436..e24f0faa912117 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 93cf42c89f321e..2d8e90d7320133 100644
--- a/offload/plugins-nextgen/common/CMakeLists.txt
+++ b/offload/plugins-nextgen/common/CMakeLists.txt
@@ -22,14 +22,15 @@ 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/)
diff --git a/runtimes/cmake/Modules/FindLibcCommonUtils.cmake b/runtimes/cmake/Modules/FindLibcCommonUtils.cmake
index 763dc81d8bd733..0e65fdff7c34b9 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()
More information about the llvm-commits
mailing list