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
