https://github.com/wenju-he created 
https://github.com/llvm/llvm-project/pull/201480

This simplifies cmake configuration without need to pass verbose variables in 
cmake command line. Settings in cache file can still be overriden by passing 
`-D` flags.

Update `libclc/README.md` to document the usage.

>From 502f815015aafb9ff23aec889387639d6689b9be Mon Sep 17 00:00:00 2001
From: Wenju He <[email protected]>
Date: Wed, 3 Jun 2026 10:15:16 +0200
Subject: [PATCH] [libclc][CMake] Add cmake cache files

This simplifies cmake configuration without need to pass verbose
variables in cmake command line. Settings in cache file can still be
overriden by passing `-D` flags.

Update `libclc/README.md` to document the usage.
---
 libclc/README.md                              | 26 ++++++++++++++++++-
 libclc/cmake/caches/all-targets.cmake         | 21 +++++++++++++++
 .../cmake/caches/amdgcn-amd-amdhsa-llvm.cmake |  4 +++
 libclc/cmake/caches/nvptx64-nvidia-cuda.cmake |  4 +++
 libclc/cmake/caches/spirv-vulkan.cmake        |  4 +++
 libclc/cmake/caches/spirv.cmake               |  4 +++
 6 files changed, 62 insertions(+), 1 deletion(-)
 create mode 100644 libclc/cmake/caches/all-targets.cmake
 create mode 100644 libclc/cmake/caches/amdgcn-amd-amdhsa-llvm.cmake
 create mode 100644 libclc/cmake/caches/nvptx64-nvidia-cuda.cmake
 create mode 100644 libclc/cmake/caches/spirv-vulkan.cmake
 create mode 100644 libclc/cmake/caches/spirv.cmake

diff --git a/libclc/README.md b/libclc/README.md
index 54429d71b3e32..69d1c9b25ea69 100644
--- a/libclc/README.md
+++ b/libclc/README.md
@@ -33,6 +33,29 @@ Select the targets to build with `LLVM_RUNTIME_TARGETS`, and 
enable libclc for
 each selected target with the matching
 `RUNTIMES_<target-triple>_LLVM_ENABLE_RUNTIMES` cache entry.
 
+#### Using CMake cache files
+
+CMake cache files for target build are provided under `libclc/cmake/caches/`.
+Pass one with `-C` to avoid setting each variable manually:
+
+| Cache file                    | Targets          |
+|---                            |---               |
+| `amdgcn-amd-amdhsa-llvm.cmake`| AMDGPU           |
+| `nvptx64-nvidia-cuda.cmake`   | NVPTX64          |
+| `spirv.cmake`                 | SPIR-V           |
+| `spirv-vulkan.cmake`          | Vulkan (clspv)   |
+| `all-targets.cmake`           | All of the above |
+
+
+For example, from the root of the `llvm-project` repository:
+```
+cmake -C libclc/cmake/caches/amdgcn-amd-amdhsa-llvm.cmake -G Ninja -B build 
llvm
+```
+
+The cache file sets `LLVM_ENABLE_PROJECTS`, `LLVM_TARGETS_TO_BUILD`,
+`LLVM_RUNTIME_TARGETS`, and all required `RUNTIMES_*` entries.
+Additional `-D` flags can still be appended to override individual settings.
+
 #### Configure for the AMDGPU target
 ```
 cd llvm-project
@@ -53,8 +76,9 @@ cmake ../llvm -G Ninja -DLLVM_ENABLE_PROJECTS="clang" 
-DCMAKE_BUILD_TYPE=Release
 #### Configure for Vulkan (clspv) targets
 ```
 cmake ../llvm -G Ninja -DLLVM_ENABLE_PROJECTS="clang" 
-DCMAKE_BUILD_TYPE=Release \
+  -DRUNTIMES_spirv32-unknown-vulkan_LLVM_ENABLE_RUNTIMES=libclc \
   -DRUNTIMES_spirv64-unknown-vulkan_LLVM_ENABLE_RUNTIMES=libclc \
-  -DLLVM_RUNTIME_TARGETS="spirv64-unknown-vulkan"
+  -DLLVM_RUNTIME_TARGETS="spirv32-unknown-vulkan;spirv64-unknown-vulkan"
 ```
 
 #### Configure for SPIR-V targets
diff --git a/libclc/cmake/caches/all-targets.cmake 
b/libclc/cmake/caches/all-targets.cmake
new file mode 100644
index 0000000000000..7f8cc98461912
--- /dev/null
+++ b/libclc/cmake/caches/all-targets.cmake
@@ -0,0 +1,21 @@
+set(LLVM_ENABLE_PROJECTS "clang" CACHE STRING "")
+set(LLVM_TARGETS_TO_BUILD "AMDGPU;NVPTX" CACHE STRING "")
+
+set(LLVM_RUNTIME_TARGETS
+  amdgcn-amd-amdhsa-llvm
+  nvptx64-nvidia-cuda
+  spirv32-unknown-unknown
+  spirv64-unknown-unknown
+  spirv32-unknown-vulkan
+  spirv64-unknown-vulkan
+  CACHE STRING "")
+
+set(RUNTIMES_amdgcn-amd-amdhsa-llvm_LLVM_ENABLE_RUNTIMES "libclc" CACHE STRING 
"")
+
+set(RUNTIMES_nvptx64-nvidia-cuda_LLVM_ENABLE_RUNTIMES "libclc" CACHE STRING "")
+
+set(RUNTIMES_spirv32-unknown-unknown_LLVM_ENABLE_RUNTIMES "libclc" CACHE 
STRING "")
+set(RUNTIMES_spirv64-unknown-unknown_LLVM_ENABLE_RUNTIMES "libclc" CACHE 
STRING "")
+
+set(RUNTIMES_spirv32-unknown-vulkan_LLVM_ENABLE_RUNTIMES "libclc" CACHE STRING 
"")
+set(RUNTIMES_spirv64-unknown-vulkan_LLVM_ENABLE_RUNTIMES "libclc" CACHE STRING 
"")
diff --git a/libclc/cmake/caches/amdgcn-amd-amdhsa-llvm.cmake 
b/libclc/cmake/caches/amdgcn-amd-amdhsa-llvm.cmake
new file mode 100644
index 0000000000000..d19f413a4d80a
--- /dev/null
+++ b/libclc/cmake/caches/amdgcn-amd-amdhsa-llvm.cmake
@@ -0,0 +1,4 @@
+set(LLVM_ENABLE_PROJECTS "clang" CACHE STRING "")
+set(LLVM_TARGETS_TO_BUILD "AMDGPU" CACHE STRING "")
+set(LLVM_RUNTIME_TARGETS "amdgcn-amd-amdhsa-llvm" CACHE STRING "")
+set(RUNTIMES_amdgcn-amd-amdhsa-llvm_LLVM_ENABLE_RUNTIMES "libclc" CACHE STRING 
"")
diff --git a/libclc/cmake/caches/nvptx64-nvidia-cuda.cmake 
b/libclc/cmake/caches/nvptx64-nvidia-cuda.cmake
new file mode 100644
index 0000000000000..a87ec4a0930b3
--- /dev/null
+++ b/libclc/cmake/caches/nvptx64-nvidia-cuda.cmake
@@ -0,0 +1,4 @@
+set(LLVM_ENABLE_PROJECTS "clang" CACHE STRING "")
+set(LLVM_TARGETS_TO_BUILD "NVPTX" CACHE STRING "")
+set(LLVM_RUNTIME_TARGETS "nvptx64-nvidia-cuda" CACHE STRING "")
+set(RUNTIMES_nvptx64-nvidia-cuda_LLVM_ENABLE_RUNTIMES "libclc" CACHE STRING "")
diff --git a/libclc/cmake/caches/spirv-vulkan.cmake 
b/libclc/cmake/caches/spirv-vulkan.cmake
new file mode 100644
index 0000000000000..172c4c32a5f12
--- /dev/null
+++ b/libclc/cmake/caches/spirv-vulkan.cmake
@@ -0,0 +1,4 @@
+set(LLVM_ENABLE_PROJECTS "clang" CACHE STRING "")
+set(LLVM_RUNTIME_TARGETS "spirv32-unknown-vulkan;spirv64-unknown-vulkan" CACHE 
STRING "")
+set(RUNTIMES_spirv32-unknown-vulkan_LLVM_ENABLE_RUNTIMES "libclc" CACHE STRING 
"")
+set(RUNTIMES_spirv64-unknown-vulkan_LLVM_ENABLE_RUNTIMES "libclc" CACHE STRING 
"")
diff --git a/libclc/cmake/caches/spirv.cmake b/libclc/cmake/caches/spirv.cmake
new file mode 100644
index 0000000000000..03d92f12b357e
--- /dev/null
+++ b/libclc/cmake/caches/spirv.cmake
@@ -0,0 +1,4 @@
+set(LLVM_ENABLE_PROJECTS "clang" CACHE STRING "")
+set(LLVM_RUNTIME_TARGETS "spirv32-unknown-unknown;spirv64-unknown-unknown" 
CACHE STRING "")
+set(RUNTIMES_spirv32-unknown-unknown_LLVM_ENABLE_RUNTIMES "libclc" CACHE 
STRING "")
+set(RUNTIMES_spirv64-unknown-unknown_LLVM_ENABLE_RUNTIMES "libclc" CACHE 
STRING "")

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to