[llvm] Revert "[CMake] Configure ccache using command line options" (PR #135664)
Kajetan Puchalski via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 14 12:35:29 PDT 2025
https://github.com/mrkajetanp created https://github.com/llvm/llvm-project/pull/135664
Reverts llvm/llvm-project#134857
>From 34a1afaf7412311f627af671b4339fc92acb305b Mon Sep 17 00:00:00 2001
From: Kajetan Puchalski <kajetan.puchalski at tuta.io>
Date: Mon, 14 Apr 2025 20:35:15 +0100
Subject: [PATCH] Revert "[CMake] Configure ccache using command line options
(#134857)"
This reverts commit 904f1b17d30335b102bd05f63a73e9ed5576ba0a.
---
llvm/CMakeLists.txt | 53 ++++++++++++++-------------------------------
1 file changed, 16 insertions(+), 37 deletions(-)
diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt
index 6913fde73be67..cfd1a086c0fc2 100644
--- a/llvm/CMakeLists.txt
+++ b/llvm/CMakeLists.txt
@@ -271,51 +271,30 @@ set(LLVM_CCACHE_BUILD OFF CACHE BOOL "Set to ON for a ccache enabled build")
if(LLVM_CCACHE_BUILD)
find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM)
- # ccache --version example output: "ccache version 4.9.1\n(..)"
- execute_process(COMMAND ${CCACHE_PROGRAM} --version OUTPUT_VARIABLE CCACHE_VERSION_STR)
- string(REGEX MATCH "[0-9]+\.[0-9]+\.?[0-9]*" CCACHE_VERSION "${CCACHE_VERSION_STR}")
-
set(LLVM_CCACHE_MAXSIZE "" CACHE STRING "Size of ccache")
set(LLVM_CCACHE_DIR "" CACHE STRING "Directory to keep ccached data")
+ set(LLVM_CCACHE_PARAMS "CCACHE_CPP2=yes CCACHE_HASHDIR=yes"
+ CACHE STRING "Parameters to pass through to ccache")
- # ccache only supports passing options on the command line from version 4.8.0
- # use a workaround with ad-hoc environment variables for older versions
- if (CCACHE_VERSION VERSION_LESS "4.8.0")
- set(LLVM_CCACHE_PARAMS "CCACHE_CPP2=yes;CCACHE_HASHDIR=yes"
- CACHE STRING "Parameters to pass through to ccache")
-
- if(NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
- set(launcher_params ${LLVM_CCACHE_PARAMS})
- if (LLVM_CCACHE_MAXSIZE)
- set(launcher_params CCACHE_MAXSIZE=${LLVM_CCACHE_MAXSIZE} ${launcher_params})
- endif()
- if (LLVM_CCACHE_DIR)
- set(launcher_params CCACHE_DIR=${LLVM_CCACHE_DIR} ${launcher_params})
- endif()
- set(launcher ${launcher_params} "${CCACHE_PROGRAM}")
- else()
- if(LLVM_CCACHE_MAXSIZE OR LLVM_CCACHE_DIR OR
- NOT LLVM_CCACHE_PARAMS MATCHES "CCACHE_CPP2=yes;CCACHE_HASHDIR=yes")
- message(FATAL_ERROR "Ccache configuration through CMake is not supported on Windows. Please use environment variables.")
- endif()
- set(launcher "${CCACHE_PROGRAM}")
- endif()
- else()
- set(LLVM_CCACHE_PARAMS "run_second_cpp=true;hash_dir=true"
- CACHE STRING "Parameters to pass through to ccache")
-
- set(launcher_params ${LLVM_CCACHE_PARAMS})
+ if(NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
+ set(CCACHE_PROGRAM "${LLVM_CCACHE_PARAMS} ${CCACHE_PROGRAM}")
if (LLVM_CCACHE_MAXSIZE)
- set(launcher_params max_size=${LLVM_CCACHE_MAXSIZE} ${launcher_params})
+ set(CCACHE_PROGRAM "CCACHE_MAXSIZE=${LLVM_CCACHE_MAXSIZE} ${CCACHE_PROGRAM}")
endif()
if (LLVM_CCACHE_DIR)
- set(launcher_params cache_dir=${LLVM_CCACHE_DIR} ${launcher_params})
+ set(CCACHE_PROGRAM "CCACHE_DIR=${LLVM_CCACHE_DIR} ${CCACHE_PROGRAM}")
endif()
- set(launcher "${CCACHE_PROGRAM}" ${launcher_params})
+ set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE_PROGRAM})
+ else()
+ if(LLVM_CCACHE_MAXSIZE OR LLVM_CCACHE_DIR OR
+ NOT LLVM_CCACHE_PARAMS MATCHES "CCACHE_CPP2=yes CCACHE_HASHDIR=yes")
+ message(FATAL_ERROR "Ccache configuration through CMake is not supported on Windows. Please use environment variables.")
+ endif()
+ # RULE_LAUNCH_COMPILE should work with Ninja but currently has issues
+ # with cmd.exe and some MSVC tools other than cl.exe
+ set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
+ set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
endif()
-
- set(CMAKE_C_COMPILER_LAUNCHER ${launcher})
- set(CMAKE_CXX_COMPILER_LAUNCHER ${launcher})
else()
message(FATAL_ERROR "Unable to find the program ccache. Set LLVM_CCACHE_BUILD to OFF")
endif()
More information about the llvm-commits
mailing list