[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