[llvm-branch-commits] [libc] release/22.x: [libc] Tweak the runtimes cross-build for GPU (#178548) (PR #179496)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Feb 3 08:43:13 PST 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libc
Author: None (llvmbot)
<details>
<summary>Changes</summary>
Backport e07a1182fd58a5b48a2c78bc3ae03872186d4ae0
Requested by: @<!-- -->jhuber6
---
Full diff: https://github.com/llvm/llvm-project/pull/179496.diff
3 Files Affected:
- (modified) libc/cmake/modules/prepare_libc_gpu_build.cmake (+2-2)
- (modified) libc/docs/gpu/building.rst (+6-34)
- (modified) libc/startup/gpu/CMakeLists.txt (+1)
``````````diff
diff --git a/libc/cmake/modules/prepare_libc_gpu_build.cmake b/libc/cmake/modules/prepare_libc_gpu_build.cmake
index 4d12a5917a56f..55cd0242eedeb 100644
--- a/libc/cmake/modules/prepare_libc_gpu_build.cmake
+++ b/libc/cmake/modules/prepare_libc_gpu_build.cmake
@@ -17,8 +17,8 @@ if(NOT LLVM_LIBC_FULL_BUILD)
endif()
# Set the required flags globally so standard CMake utilities can compile.
-if(LIBC_TARGET_TRIPLE)
- set(CMAKE_REQUIRED_FLAGS "--target=${LIBC_TARGET_TRIPLE}")
+if(NOT CMAKE_CXX_COMPILER_TARGET)
+ set(CMAKE_REQUIRED_FLAGS "${LIBC_COMPILE_OPTIONS_DEFAULT}")
endif()
# Optionally set up a job pool to limit the number of GPU tests run in parallel.
diff --git a/libc/docs/gpu/building.rst b/libc/docs/gpu/building.rst
index 9f9528b30d9bf..a7791331423dc 100644
--- a/libc/docs/gpu/building.rst
+++ b/libc/docs/gpu/building.rst
@@ -100,12 +100,12 @@ targeting a GPU architecture.
$> TARGET_C_COMPILER=</path/to/clang>
$> TARGET_CXX_COMPILER=</path/to/clang++>
$> cmake ../runtimes \ # Point to the runtimes build
- -G Ninja \
- -DLLVM_ENABLE_RUNTIMES=libc \
- -DCMAKE_C_COMPILER=$TARGET_C_COMPILER \
- -DCMAKE_CXX_COMPILER=$TARGET_CXX_COMPILER \
- -DLLVM_LIBC_FULL_BUILD=ON \
- -DLLVM_RUNTIMES_TARGET=$TARGET_TRIPLE \
+ -G Ninja \
+ -DLLVM_ENABLE_RUNTIMES=libc \
+ -DCMAKE_C_COMPILER=$TARGET_C_COMPILER \
+ -DCMAKE_CXX_COMPILER=$TARGET_CXX_COMPILER \
+ -DLLVM_LIBC_FULL_BUILD=ON \
+ -DLLVM_DEFAULT_TARGET_TRIPLE=$TARGET_TRIPLE \
-DCMAKE_BUILD_TYPE=Release
$> ninja install
@@ -113,34 +113,6 @@ The above steps will result in a build targeting one of the supported GPU
architectures. Building for multiple targets requires separate CMake
invocations.
-Standalone cross build
-----------------------
-
-The GPU build can also be targeted directly as long as the compiler used is a
-supported ``clang`` compiler. This method is generally not recommended as it can
-only target a single GPU architecture.
-
-.. code-block:: sh
-
- $> cd llvm-project # The llvm-project checkout
- $> mkdir build # A different build directory for the build tools
- $> cd build
- $> CLANG_C_COMPILER=</path/to/clang> # Must be a trunk build
- $> CLANG_CXX_COMPILER=</path/to/clang++> # Must be a trunk build
- $> TARGET_TRIPLE=<amdgcn-amd-amdhsa or nvptx64-nvidia-cuda>
- $> cmake ../llvm \ # Point to the llvm directory
- -G Ninja \
- -DLLVM_ENABLE_PROJECTS=libc \
- -DCMAKE_C_COMPILER=$CLANG_C_COMPILER \
- -DCMAKE_CXX_COMPILER=$CLANG_CXX_COMPILER \
- -DLLVM_LIBC_FULL_BUILD=ON \
- -DLIBC_TARGET_TRIPLE=$TARGET_TRIPLE \
- -DCMAKE_BUILD_TYPE=Release
- $> ninja install
-
-This will build and install the GPU C library along with all the other LLVM
-libraries.
-
Build overview
==============
diff --git a/libc/startup/gpu/CMakeLists.txt b/libc/startup/gpu/CMakeLists.txt
index fa326ef46a9d1..63e2a6c5dee1a 100644
--- a/libc/startup/gpu/CMakeLists.txt
+++ b/libc/startup/gpu/CMakeLists.txt
@@ -34,6 +34,7 @@ function(add_startup_object name)
RUNTIME_OUTPUT_DIRECTORY ${LIBC_LIBRARY_DIR}
RUNTIME_OUTPUT_NAME ${name}.o)
target_link_options(${fq_target_name}.exe PRIVATE
+ ${LIBC_COMPILE_OPTIONS_DEFAULT}
"-r" "-nostdlib" "-flto" "-Wl,--lto-emit-llvm")
endif()
endfunction()
``````````
</details>
https://github.com/llvm/llvm-project/pull/179496
More information about the llvm-branch-commits
mailing list