diff --git a/CMakeLists.txt b/CMakeLists.txt index beaf6298d2c..a0b4f4ca7a6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,10 +6,15 @@ set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g") # Disable expected CMake workflow option(CHAKRACORE_BUILD_SH "Use build.sh") +set(CCACHE_PROGRAM_NAME_DEFAULT "ccache") + if(NOT CHAKRACORE_BUILD_SH) option(DISABLE_JIT "Disable JIT compilation" OFF) option(INTL_ICU "Enable Intl" ON) option(EMBED_ICU "Build ICU within ChakraCore build" OFF) + option(USE_CCACHE "Build using ccache" OFF) + set(CCACHE_PROGRAM_NAME ${CCACHE_PROGRAM_NAME_DEFAULT} CACHE + STRING "ccache executable") set(ICU_INCLUDE_PATH "" CACHE STRING "libicu iclude path") if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build type" FORCE) @@ -80,13 +85,21 @@ unset(CC_TARGETS_ARM_SH CACHE) unset(CC_TARGETS_X86_SH CACHE) unset(CC_TARGETS_AMD64_SH CACHE) -if(CCACHE_PROGRAM_NAME_SH) - find_program(CCACHE_PROGRAM ${CCACHE_PROGRAM_NAME_SH}) - if (CCACHE_PROGRAM) - set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM}) - set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PROGRAM}) - endif() - unset(CCACHE_PROGRAM_NAME_SH CACHE) +if (CHAKRACORE_BUILD_SH) + if(CCACHE_PROGRAM_NAME_SH) + set(USE_CCACHE ON) + set(CCACHE_PROGRAM_NAME ${CCACHE_PROGRAM_NAME_SH}) + unset(CCACHE_PROGRAM_NAME_SH CACHE) + else() + set(USE_CCACHE OFF) + set(CCACHE_PROGRAM_NAME ${CCACHE_PROGRAM_NAME_DEFAULT}) + endif() +endif() + +if(USE_CCACHE) + find_program(CCACHE_PROGRAM ${CCACHE_PROGRAM_NAME} REQUIRED) + set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM}) + set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PROGRAM}) endif() if(ENABLE_VALGRIND_SH)