Skip to content

Commit 2b58b3d

Browse files
authored
Revert "[CMake] Configure ccache using command line options" (#135664)
Reverts #134857
1 parent a43ff0e commit 2b58b3d

File tree

1 file changed

+16
-37
lines changed

1 file changed

+16
-37
lines changed

llvm/CMakeLists.txt

Lines changed: 16 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -271,51 +271,30 @@ set(LLVM_CCACHE_BUILD OFF CACHE BOOL "Set to ON for a ccache enabled build")
271271
if(LLVM_CCACHE_BUILD)
272272
find_program(CCACHE_PROGRAM ccache)
273273
if(CCACHE_PROGRAM)
274-
# ccache --version example output: "ccache version 4.9.1\n(..)"
275-
execute_process(COMMAND ${CCACHE_PROGRAM} --version OUTPUT_VARIABLE CCACHE_VERSION_STR)
276-
string(REGEX MATCH "[0-9]+\.[0-9]+\.?[0-9]*" CCACHE_VERSION "${CCACHE_VERSION_STR}")
277-
278274
set(LLVM_CCACHE_MAXSIZE "" CACHE STRING "Size of ccache")
279275
set(LLVM_CCACHE_DIR "" CACHE STRING "Directory to keep ccached data")
276+
set(LLVM_CCACHE_PARAMS "CCACHE_CPP2=yes CCACHE_HASHDIR=yes"
277+
CACHE STRING "Parameters to pass through to ccache")
280278

281-
# ccache only supports passing options on the command line from version 4.8.0
282-
# use a workaround with ad-hoc environment variables for older versions
283-
if (CCACHE_VERSION VERSION_LESS "4.8.0")
284-
set(LLVM_CCACHE_PARAMS "CCACHE_CPP2=yes;CCACHE_HASHDIR=yes"
285-
CACHE STRING "Parameters to pass through to ccache")
286-
287-
if(NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
288-
set(launcher_params ${LLVM_CCACHE_PARAMS})
289-
if (LLVM_CCACHE_MAXSIZE)
290-
set(launcher_params CCACHE_MAXSIZE=${LLVM_CCACHE_MAXSIZE} ${launcher_params})
291-
endif()
292-
if (LLVM_CCACHE_DIR)
293-
set(launcher_params CCACHE_DIR=${LLVM_CCACHE_DIR} ${launcher_params})
294-
endif()
295-
set(launcher ${launcher_params} "${CCACHE_PROGRAM}")
296-
else()
297-
if(LLVM_CCACHE_MAXSIZE OR LLVM_CCACHE_DIR OR
298-
NOT LLVM_CCACHE_PARAMS MATCHES "CCACHE_CPP2=yes;CCACHE_HASHDIR=yes")
299-
message(FATAL_ERROR "Ccache configuration through CMake is not supported on Windows. Please use environment variables.")
300-
endif()
301-
set(launcher "${CCACHE_PROGRAM}")
302-
endif()
303-
else()
304-
set(LLVM_CCACHE_PARAMS "run_second_cpp=true;hash_dir=true"
305-
CACHE STRING "Parameters to pass through to ccache")
306-
307-
set(launcher_params ${LLVM_CCACHE_PARAMS})
279+
if(NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
280+
set(CCACHE_PROGRAM "${LLVM_CCACHE_PARAMS} ${CCACHE_PROGRAM}")
308281
if (LLVM_CCACHE_MAXSIZE)
309-
set(launcher_params max_size=${LLVM_CCACHE_MAXSIZE} ${launcher_params})
282+
set(CCACHE_PROGRAM "CCACHE_MAXSIZE=${LLVM_CCACHE_MAXSIZE} ${CCACHE_PROGRAM}")
310283
endif()
311284
if (LLVM_CCACHE_DIR)
312-
set(launcher_params cache_dir=${LLVM_CCACHE_DIR} ${launcher_params})
285+
set(CCACHE_PROGRAM "CCACHE_DIR=${LLVM_CCACHE_DIR} ${CCACHE_PROGRAM}")
313286
endif()
314-
set(launcher "${CCACHE_PROGRAM}" ${launcher_params})
287+
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE_PROGRAM})
288+
else()
289+
if(LLVM_CCACHE_MAXSIZE OR LLVM_CCACHE_DIR OR
290+
NOT LLVM_CCACHE_PARAMS MATCHES "CCACHE_CPP2=yes CCACHE_HASHDIR=yes")
291+
message(FATAL_ERROR "Ccache configuration through CMake is not supported on Windows. Please use environment variables.")
292+
endif()
293+
# RULE_LAUNCH_COMPILE should work with Ninja but currently has issues
294+
# with cmd.exe and some MSVC tools other than cl.exe
295+
set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
296+
set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM})
315297
endif()
316-
317-
set(CMAKE_C_COMPILER_LAUNCHER ${launcher})
318-
set(CMAKE_CXX_COMPILER_LAUNCHER ${launcher})
319298
else()
320299
message(FATAL_ERROR "Unable to find the program ccache. Set LLVM_CCACHE_BUILD to OFF")
321300
endif()

0 commit comments

Comments
 (0)