[libclc] [libclc][CMake] Add cmake cache files (PR #201480)
Wenju He via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 3 16:57:33 PDT 2026
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 <wenju.he at intel.com>
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 "")
More information about the cfe-commits
mailing list