[libclc] [libclc][CMake] Add cmake cache files (PR #201480)
Wenju He via cfe-commits
cfe-commits at lists.llvm.org
Wed Aug 5 00:27:45 PDT 2026
https://github.com/wenju-he updated https://github.com/llvm/llvm-project/pull/201480
>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 1/2] [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 "")
>From 7893c7dcb07199209756d405f6ffa2f77b780705 Mon Sep 17 00:00:00 2001
From: Wenju He <wenju.he at intel.com>
Date: Wed, 5 Aug 2026 09:17:46 +0200
Subject: [PATCH 2/2] drop LLVM_TARGETS_TO_BUILD, add
RUNTIMES_spirv64-unknown-unknown_LIBCLC_USE_SPIRV_BACKEND
---
libclc/README.md | 4 ++--
libclc/cmake/caches/all-targets.cmake | 3 ++-
libclc/cmake/caches/amdgcn-amd-amdhsa-llvm.cmake | 1 -
libclc/cmake/caches/nvptx64-nvidia-cuda.cmake | 1 -
libclc/cmake/caches/spirv.cmake | 2 ++
5 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/libclc/README.md b/libclc/README.md
index 69d1c9b25ea69..359cbc45f6be0 100644
--- a/libclc/README.md
+++ b/libclc/README.md
@@ -52,8 +52,8 @@ 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.
+The cache file sets `LLVM_ENABLE_PROJECTS`, `LLVM_RUNTIME_TARGETS`, and all
+required `RUNTIMES_*` entries.
Additional `-D` flags can still be appended to override individual settings.
#### Configure for the AMDGPU target
diff --git a/libclc/cmake/caches/all-targets.cmake b/libclc/cmake/caches/all-targets.cmake
index 7f8cc98461912..21d497d4467d3 100644
--- a/libclc/cmake/caches/all-targets.cmake
+++ b/libclc/cmake/caches/all-targets.cmake
@@ -1,5 +1,4 @@
set(LLVM_ENABLE_PROJECTS "clang" CACHE STRING "")
-set(LLVM_TARGETS_TO_BUILD "AMDGPU;NVPTX" CACHE STRING "")
set(LLVM_RUNTIME_TARGETS
amdgcn-amd-amdhsa-llvm
@@ -14,6 +13,8 @@ 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_spirv64-unknown-unknown_LIBCLC_USE_SPIRV_BACKEND ON CACHE BOOL "")
+set(RUNTIMES_spirv32-unknown-unknown_LIBCLC_USE_SPIRV_BACKEND ON CACHE BOOL "")
set(RUNTIMES_spirv32-unknown-unknown_LLVM_ENABLE_RUNTIMES "libclc" CACHE STRING "")
set(RUNTIMES_spirv64-unknown-unknown_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
index d19f413a4d80a..fd9b6816cab88 100644
--- a/libclc/cmake/caches/amdgcn-amd-amdhsa-llvm.cmake
+++ b/libclc/cmake/caches/amdgcn-amd-amdhsa-llvm.cmake
@@ -1,4 +1,3 @@
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
index a87ec4a0930b3..031ccddcbbeb7 100644
--- a/libclc/cmake/caches/nvptx64-nvidia-cuda.cmake
+++ b/libclc/cmake/caches/nvptx64-nvidia-cuda.cmake
@@ -1,4 +1,3 @@
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.cmake b/libclc/cmake/caches/spirv.cmake
index 03d92f12b357e..9287668492015 100644
--- a/libclc/cmake/caches/spirv.cmake
+++ b/libclc/cmake/caches/spirv.cmake
@@ -1,4 +1,6 @@
set(LLVM_ENABLE_PROJECTS "clang" CACHE STRING "")
set(LLVM_RUNTIME_TARGETS "spirv32-unknown-unknown;spirv64-unknown-unknown" CACHE STRING "")
+set(RUNTIMES_spirv64-unknown-unknown_LIBCLC_USE_SPIRV_BACKEND ON CACHE BOOL "")
+set(RUNTIMES_spirv32-unknown-unknown_LIBCLC_USE_SPIRV_BACKEND ON CACHE BOOL "")
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