[llvm] [Offload] Use libc 'hand-in-hand' module to find RPC header (PR #117928)

via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 27 13:26:06 PST 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-offload

Author: Joseph Huber (jhuber6)

<details>
<summary>Changes</summary>

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.


---
Full diff: https://github.com/llvm/llvm-project/pull/117928.diff


3 Files Affected:

- (modified) offload/CMakeLists.txt (+2) 
- (modified) offload/plugins-nextgen/common/CMakeLists.txt (+3-4) 
- (modified) runtimes/cmake/Modules/FindLibcCommonUtils.cmake (+11-6) 


``````````diff
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..3a861a47eedabc 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 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()

``````````

</details>


https://github.com/llvm/llvm-project/pull/117928


More information about the llvm-commits mailing list