[llvm] [LLVM] Remove 'LLVM_LIBC_GPU_BUILD' logic (PR #211265)

via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 22 11:55:11 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-offload

Author: Joseph Huber (jhuber6)

<details>
<summary>Changes</summary>

Summary:
This is a holdover from how we used to handle this stuff. We should just
dirctly check the triple for setting the cross-compiling emulator and we
can directly introspect into the  build tree for the lit config like we
already do for flang-rt.


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


6 Files Affected:

- (modified) llvm/CMakeLists.txt (-13) 
- (modified) llvm/cmake/modules/CrossCompile.cmake (+1-5) 
- (modified) llvm/runtimes/CMakeLists.txt (+10-13) 
- (modified) offload/CMakeLists.txt (-9) 
- (modified) offload/test/lit.cfg (+11-4) 
- (modified) offload/test/lit.site.cfg.in (-1) 


``````````diff
diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt
index e60a26681aff6..a9d9f1d11ab44 100644
--- a/llvm/CMakeLists.txt
+++ b/llvm/CMakeLists.txt
@@ -270,19 +270,6 @@ if(LIBOMP_ENABLE_ARM64X)
   set(RUNTIMES_arm64ec-pc-windows-msvc_LIBOMP_ENABLE_ARM64X ON)
 endif()
 
-foreach(_name ${LLVM_RUNTIME_TARGETS})
-  if("libc" IN_LIST RUNTIMES_${_name}_LLVM_ENABLE_RUNTIMES)
-    if("${_name}" STREQUAL "amdgpu-amd-amdhsa" OR "${_name}" STREQUAL "nvptx64-nvidia-cuda" OR "${_name}" STREQUAL "spirv64-intel-unknown")
-      set(LLVM_LIBC_GPU_BUILD ON)
-    endif()
-  endif()
-endforeach()
-if("${LIBC_TARGET_TRIPLE}" STREQUAL "amdgpu-amd-amdhsa" OR
-   "${LIBC_TARGET_TRIPLE}" STREQUAL "nvptx64-nvidia-cuda" OR
-   "${LIBC_TARGET_TRIPLE}" STREQUAL "spirv64-intel-unknown")
-  set(LLVM_LIBC_GPU_BUILD ON)
-endif()
-
 # LLVM_ENABLE_PROJECTS_USED is `ON` if the user has ever used the
 # `LLVM_ENABLE_PROJECTS` CMake cache variable.  This exists for
 # several reasons:
diff --git a/llvm/cmake/modules/CrossCompile.cmake b/llvm/cmake/modules/CrossCompile.cmake
index 54ef8aa6a1c57..0a0be5336c74c 100644
--- a/llvm/cmake/modules/CrossCompile.cmake
+++ b/llvm/cmake/modules/CrossCompile.cmake
@@ -79,10 +79,6 @@ function(llvm_create_cross_target project_name target_name toolchain buildtype)
          "-DLLVM_EXTERNAL_${name}_SOURCE_DIR=${LLVM_EXTERNAL_${name}_SOURCE_DIR}")
   endforeach()
 
-  if(LLVM_LIBC_GPU_BUILD)
-    set(libc_flags -DLLVM_LIBC_GPU_BUILD=ON)
-  endif()
-
   if(PYTHON_EXECUTABLE)
     set(python_executable_flag "-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}")
   endif()
@@ -110,7 +106,7 @@ function(llvm_create_cross_target project_name target_name toolchain buildtype)
         -DLLVM_INCLUDE_EXAMPLES=OFF
         -DLLVM_TABLEGEN_FLAGS="${llvm_tablegen_flags}"
         ${python_executable_flag}
-        ${build_type_flags} ${linker_flag} ${external_clang_dir} ${libc_flags}
+        ${build_type_flags} ${linker_flag} ${external_clang_dir}
         ${ARGN}
     WORKING_DIRECTORY ${${project_name}_${target_name}_BUILD}
     DEPENDS CREATE_${project_name}_${target_name}
diff --git a/llvm/runtimes/CMakeLists.txt b/llvm/runtimes/CMakeLists.txt
index 39db36b661fec..02d58618299a1 100644
--- a/llvm/runtimes/CMakeLists.txt
+++ b/llvm/runtimes/CMakeLists.txt
@@ -643,21 +643,18 @@ if(build_runtimes)
       endif()
     endforeach()
   endif()
-  if(LLVM_LIBC_GPU_BUILD)
-    set(_gpu_loader "${LLVM_TOOLS_BINARY_DIR}/llvm-gpu-loader${CMAKE_EXECUTABLE_SUFFIX}")
-    foreach(name ${LLVM_RUNTIME_TARGETS})
-      if(name MATCHES "^(amdgcn|amdgpu|nvptx)")
-        set(RUNTIMES_${name}_CMAKE_CROSSCOMPILING_EMULATOR "${_gpu_loader}" CACHE STRING "")
+  set(_gpu_loader "${LLVM_TOOLS_BINARY_DIR}/llvm-gpu-loader${CMAKE_EXECUTABLE_SUFFIX}")
+  foreach(name ${LLVM_RUNTIME_TARGETS})
+    if(name MATCHES "^amdgpu|^amdgcn|^nvptx|^spirv")
+      set(RUNTIMES_${name}_CMAKE_CROSSCOMPILING_EMULATOR "${_gpu_loader}" CACHE STRING "")
+      if(TARGET llvm-offload-binary)
+        list(APPEND extra_deps llvm-offload-binary)
+      endif()
+      if(TARGET clang-nvlink-wrapper)
+        list(APPEND extra_deps clang-nvlink-wrapper)
       endif()
-    endforeach()
-    list(APPEND extra_cmake_args "-DLLVM_LIBC_GPU_BUILD=ON")
-    if(TARGET llvm-offload-binary)
-      list(APPEND extra_deps llvm-offload-binary)
-    endif()
-    if(TARGET clang-nvlink-wrapper)
-      list(APPEND extra_deps clang-nvlink-wrapper)
     endif()
-  endif()
+  endforeach()
   if(LLVM_LIBC_FULL_BUILD)
     list(APPEND extra_cmake_args "-DLLVM_LIBC_FULL_BUILD=ON")
   endif()
diff --git a/offload/CMakeLists.txt b/offload/CMakeLists.txt
index ce6ab9452d518..63b3adae8e626 100644
--- a/offload/CMakeLists.txt
+++ b/offload/CMakeLists.txt
@@ -315,15 +315,6 @@ endif()
 
 pythonize_bool(LIBOMPTARGET_OMPT_SUPPORT)
 
-if(${LLVM_LIBC_GPU_BUILD})
-  set(LIBOMPTARGET_HAS_LIBC TRUE)
-else()
-  set(LIBOMPTARGET_HAS_LIBC FALSE)
-endif()
-set(LIBOMPTARGET_GPU_LIBC_SUPPORT ${LIBOMPTARGET_HAS_LIBC} CACHE BOOL
-    "Libomptarget support for the GPU libc")
-pythonize_bool(LIBOMPTARGET_GPU_LIBC_SUPPORT)
-
 set(LIBOMPTARGET_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
 set(LIBOMPTARGET_BINARY_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/include)
 message(STATUS "OpenMP tools dir in libomptarget: ${LIBOMP_OMP_TOOLS_INCLUDE_DIR}")
diff --git a/offload/test/lit.cfg b/offload/test/lit.cfg
index 9a217f675724a..ace2b1ea8a749 100644
--- a/offload/test/lit.cfg
+++ b/offload/test/lit.cfg
@@ -142,13 +142,11 @@ legacy_amdgpu_target = 'amdgcn-amd-amdhsa'
 if config.libomptarget_current_target == amdgpu_target:
   config.available_features.add(legacy_amdgpu_target)
 
-if config.libomptarget_has_libc:
-  config.available_features.add('libc')
-
 profdata_path = os.path.join(config.bin_llvm_tools_dir, "llvm-profdata")
 target = remove_suffix_if_present(config.libomptarget_current_target)
 has_profile_rt = True
 has_flang_rt = True
+has_libc = False
 if target.startswith('amdgpu') or target.startswith('nvptx'):
   has_profile_rt = bool(glob.glob(os.path.join(
       config.llvm_lib_directory, 'clang', '*', 'lib', target,
@@ -156,11 +154,20 @@ if target.startswith('amdgpu') or target.startswith('nvptx'):
   has_flang_rt = bool(glob.glob(os.path.join(
       config.llvm_lib_directory, 'clang', '*', 'lib', target,
       'libflang_rt.runtime.a')))
+  # The GPU libc runtime installs its archive under 'lib/<triple>'. The AMDGPU
+  # triple has both a current ('amdgpu') and legacy ('amdgcn') spelling.
+  libc_targets = [target]
+  if target.startswith('amdgpu'):
+    libc_targets.append('amdgcn-amd-amdhsa')
+  has_libc = any(bool(glob.glob(os.path.join(
+      config.llvm_lib_directory, t, 'libc.a'))) for t in libc_targets)
 if has_profile_rt:
   config.available_features.add('pgo')
   config.substitutions.append(("%profdata", profdata_path))
 if has_flang_rt:
   config.available_features.add('flang-rt')
+if has_libc:
+  config.available_features.add('libc')
 
 # Determine whether the test system supports unified memory.
 # For CUDA, this is the case with compute capability 70 (Volta) or higher.
@@ -281,7 +288,7 @@ def add_libraries(source):
     if "intelgpu" in config.available_features:
         # SPIR-V uses an out-of-tree linker and libc doesn't work.
         return source
-    if config.libomptarget_has_libc:
+    if has_libc:
         return source + " -Xoffload-linker -lc " + \
                "-Xoffload-linker -lm " + \
                "-Xoffload-linker -lompdevice"
diff --git a/offload/test/lit.site.cfg.in b/offload/test/lit.site.cfg.in
index 19012272328f5..011de60aa2c7f 100644
--- a/offload/test/lit.site.cfg.in
+++ b/offload/test/lit.site.cfg.in
@@ -26,7 +26,6 @@ config.libomptarget_not = "@OFFLOAD_NOT_EXECUTABLE@"
 config.offload_device_info = "@OFFLOAD_DEVICE_INFO_EXECUTABLE@"
 config.libomptarget_debug = @LIBOMPTARGET_DEBUG@
 config.has_libomptarget_ompt = @LIBOMPTARGET_OMPT_SUPPORT@
-config.libomptarget_has_libc = @LIBOMPTARGET_GPU_LIBC_SUPPORT@
 config.offload_tblgen = "@OFFLOAD_TBLGEN_EXECUTABLE@"
 config.omp_kernel_replay = "@OMP_KERNEL_REPLAY@"
 # Let the main config do the real work.

``````````

</details>


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


More information about the llvm-commits mailing list