[compiler-rt] [libclc] [libcxx] [libcxxabi] [libunwind] [llvm] [CMake] Remove the use of AddLLVM from runtimes (PR #217502)

via cfe-commits cfe-commits at lists.llvm.org
Fri Aug 21 11:52:31 PDT 2026


================
@@ -95,16 +86,20 @@ else()
   )
 endif()
 
+foreach( tool IN ITEMS llvm-link opt )
+  find_program( LLVM_TOOL_${tool} ${tool} PATHS ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH )
+  if( NOT LLVM_TOOL_${tool} )
+    message( FATAL_ERROR "libclc toolchain incomplete - missing tool ${tool}!" )
+  endif()
+  set( ${tool}_exe ${LLVM_TOOL_${tool}} )
+endforeach()
+
 if( NOT LIBCLC_USE_SPIRV_BACKEND )
   # llvm-spirv is an optional dependency, used to build spirv-* targets when
   # the SPIR-V backend hasn't been requested. It may be provided in-tree or
   # externally.
-  if( TARGET llvm-spirv )
-    get_host_tool_path( llvm-spirv LLVM_SPIRV llvm-spirv_exe llvm-spirv_target )
----------------
zeroomega wrote:

This probably will break the cross compilation. The runtimes's CMake file explicitly passes "-DLLVM_NATIVE_TOOL_DIR" to the sub-build to make "get_host_tool_path" work to find the host tools for the cross compilation. But it looks like that the logic won't work with the `find_program` approach after the patch.

Here is a reproducer to trigger a host tool error:

```
mkdir -p /tmp/native_bin
touch /tmp/native_bin/llvm-link /tmp/native_bin/opt
chmod +x /tmp/native_bin/llvm-link /tmp/native_bin/opt

cmake -S runtimes -B /tmp/runtimes-build -GNinja \
    -DLLVM_ENABLE_RUNTIMES=libclc \
    -DLLVM_DEFAULT_TARGET_TRIPLE=nvptx64-nvidia-cuda \
    -DCMAKE_C_COMPILER=clang \
    -DCMAKE_CXX_COMPILER=clang++ \
    -DPACKAGE_VERSION=20.0.0 \
    -DLLVM_NATIVE_TOOL_DIR=/tmp/native_bin
```


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


More information about the cfe-commits mailing list