소스 검색

[CMake] Refactor ccache build option

Allow enabling ccache from bare CMake build and make sure both ways do the same
thing.
Petr Penzin 2 달 전
부모
커밋
df8d64fd67
1개의 변경된 파일20개의 추가작업 그리고 7개의 파일을 삭제
  1. 20 7
      CMakeLists.txt

+ 20 - 7
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)