@@ -271,43 +271,30 @@ set(LLVM_CCACHE_BUILD OFF CACHE BOOL "Set to ON for a ccache enabled build")
271
271
if (LLVM_CCACHE_BUILD)
272
272
find_program (CCACHE_PROGRAM ccache)
273
273
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
-
278
274
set (LLVM_CCACHE_MAXSIZE "" CACHE STRING "Size of ccache" )
279
275
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" )
280
278
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;CCACHE_SLOPPINESS=pch_defines,time_macros"
285
- CACHE STRING "Parameters to pass through to ccache" )
286
-
287
- set (launcher_params ${LLVM_CCACHE_PARAMS} )
288
- if (CCACHE_MAXSIZE)
289
- set (launcher_params "CCACHE_MAXSIZE=${CCACHE_MAXSIZE} ;${launcher_params} " )
279
+ if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows" )
280
+ set (CCACHE_PROGRAM "${LLVM_CCACHE_PARAMS} ${CCACHE_PROGRAM} " )
281
+ if (LLVM_CCACHE_MAXSIZE)
282
+ set (CCACHE_PROGRAM "CCACHE_MAXSIZE=${LLVM_CCACHE_MAXSIZE} ${CCACHE_PROGRAM} " )
290
283
endif ()
291
- if (CCACHE_DIR )
292
- set (launcher_params "CCACHE_DIR=${CCACHE_DIR} ; ${launcher_params } " )
284
+ if (LLVM_CCACHE_DIR )
285
+ set (CCACHE_PROGRAM "CCACHE_DIR=${LLVM_CCACHE_DIR} ${CCACHE_PROGRAM } " )
293
286
endif ()
294
- set (launcher " ${launcher_params} ; ${ CCACHE_PROGRAM}" )
287
+ set_property ( GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${ CCACHE_PROGRAM} )
295
288
else ()
296
- set (LLVM_CCACHE_PARAMS "run_second_cpp=true;hash_dir=true;sloppiness=pch_defines,time_macros"
297
- CACHE STRING "Parameters to pass through to ccache" )
298
-
299
- set (launcher_params ${LLVM_CCACHE_PARAMS} )
300
- if (CCACHE_MAXSIZE)
301
- set (launcher_params "max_size=${CCACHE_MAXSIZE} ;${launcher_params} " )
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." )
302
292
endif ()
303
- if (CCACHE_DIR)
304
- set (launcher_params "cache_dir= ${CCACHE_DIR} ; ${launcher_params} " )
305
- endif ( )
306
- set (launcher " ${CCACHE_PROGRAM} ; ${launcher_params} " )
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} )
307
297
endif ()
308
-
309
- set (CMAKE_C_COMPILER_LAUNCHER ${launcher} )
310
- set (CMAKE_CXX_COMPILER_LAUNCHER ${launcher} )
311
298
else ()
312
299
message (FATAL_ERROR "Unable to find the program ccache. Set LLVM_CCACHE_BUILD to OFF" )
313
300
endif ()
0 commit comments