diff --git a/CMakeLists.txt b/CMakeLists.txt index 9714b1456a1ecdc227b5861d114f09f7464cae97..b4a6dbbaf952f823b1980380214bf5c356f81b35 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,9 +15,18 @@ option(MACE_ENABLE_BENCHMARKS "whether to build c++ micro benchmarks" OFF) option(MACE_ENABLE_EXAMPLES "whether to build examples" OFF) option(MACE_ENABLE_OPT_SIZE "whether to build with optimized binary size" ON) option(MACE_ENABLE_OBFUSCATE "whether to build with code obfuscation" ON) +option(MACE_ENABLE_CCACHE "whether to build with ccache" ON) message("CMAKE_INSTALL_PREFIX: ${CMAKE_INSTALL_PREFIX}") +if(MACE_ENABLE_CCACHE) + find_program(CCACHE_FOUND ccache) + if(CCACHE_FOUND) + set(CMAKE_CXX_COMPILER_LAUNCHER ccache) + set(CMAKE_C_COMPILER_LAUNCHER ccache) + endif(CCACHE_FOUND) +endif(MACE_ENABLE_CCACHE) + # TODO make these flags well defined and organized # TODO enable sanitizer set(MACE_CC_FLAGS "${MACE_CC_FLAGS} -fPIC") diff --git a/docker/mace-dev/Dockerfile b/docker/mace-dev/Dockerfile index 8bb31a7d3a33c4c4d886f170c54fd7ca3d0b6d7d..5ae643a96e1ca49732982182d52d38ee1936a463 100644 --- a/docker/mace-dev/Dockerfile +++ b/docker/mace-dev/Dockerfile @@ -111,3 +111,6 @@ RUN pip install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors RUN pip install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com \ cpplint==1.4.4 + +RUN apt-get install -y --no-install-recommends \ + ccache diff --git a/third_party/gflags/gflags.cmake b/third_party/gflags/gflags.cmake index ded60019268e59a87e8acd612572a606a9562ebd..1134718ca28ef9fd09d62f0aba37120e0f60831d 100644 --- a/third_party/gflags/gflags.cmake +++ b/third_party/gflags/gflags.cmake @@ -24,6 +24,9 @@ ExternalProject_Add( UPDATE_COMMAND "" BUILD_BYPRODUCTS ${GFLAGS_LIBRARIES} CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${GFLAGS_INSTALL_DIR} + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER} + -DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER} -DBUILD_STATIC_LIBS=ON -DBUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} diff --git a/third_party/googletest/googletest.cmake b/third_party/googletest/googletest.cmake index 6b715c877003429fd65b8608a935e5e1887af43a..f5dd0974839275a9475f50f580399cc0aa061451 100644 --- a/third_party/googletest/googletest.cmake +++ b/third_party/googletest/googletest.cmake @@ -32,7 +32,10 @@ if(MACE_ENABLE_TESTS) PREFIX ${GTEST_SOURCES_DIR} UPDATE_COMMAND "" BUILD_BYPRODUCTS ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${GTEST_INSTALL_DIR} + CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER} + -DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER} + -DCMAKE_INSTALL_PREFIX=${GTEST_INSTALL_DIR} -DBUILD_GMOCK=ON -Dgtest_disable_pthreads=ON -Dgtest_force_shared_crt=ON diff --git a/third_party/protobuf/protobuf.cmake b/third_party/protobuf/protobuf.cmake index 4f95317de46f6e420f697d10ac9361c2881b2156..d38635136387c5f82b04b0a3b0a43b18fcd908dd 100644 --- a/third_party/protobuf/protobuf.cmake +++ b/third_party/protobuf/protobuf.cmake @@ -33,7 +33,9 @@ ExternalProject_Add( BUILD_BYPRODUCTS ${PROTOBUF_LITE_LIBRARIES} SOURCE_DIR "${PROTOBUF_SRCS_DIR}/src/protobuf" CONFIGURE_COMMAND ${CMAKE_COMMAND} ../protobuf/cmake/ - #-DCMAKE_BUILD_TYPE=Release + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER} + -DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER} -DCMAKE_INSTALL_PREFIX=${PROTOBUF_INSTALL_DIR} -DCMAKE_VERBOSE_MAKEFILE=OFF -Dprotobuf_BUILD_TESTS=OFF @@ -90,6 +92,8 @@ if(BUILD_PROTOC) SOURCE_DIR "${PROTOC_SRCS_DIR}/src/protoc" CONFIGURE_COMMAND ${CMAKE_COMMAND} ../protoc/cmake/ -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER} + -DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER} -DCMAKE_INSTALL_PREFIX=${PROTOC_INSTALL_DIR} -DCMAKE_VERBOSE_MAKEFILE=OFF -Dprotobuf_BUILD_TESTS=OFF