mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-19 05:45:05 +01:00
cmake: Add ccache
support
This commit is contained in:
parent
cedfdf6c72
commit
dbb7ed14e8
@ -61,6 +61,12 @@ set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/module)
|
||||
|
||||
#=============================
|
||||
# Configurable options
|
||||
#=============================
|
||||
# When adding a new option, end the <help_text> with a full stop for consistency.
|
||||
option(WITH_CCACHE "Attempt to use ccache for compiling." ON)
|
||||
|
||||
set(configure_warnings)
|
||||
|
||||
include(CheckPIESupported)
|
||||
@ -184,6 +190,8 @@ target_link_libraries(core_interface INTERFACE
|
||||
|
||||
include(cmake/introspection.cmake)
|
||||
|
||||
include(cmake/ccache.cmake)
|
||||
|
||||
# Don't allow extended (non-ASCII) symbols in identifiers. This is easier for code review.
|
||||
try_append_cxx_flags("-fno-extended-identifiers" TARGET core_interface SKIP_LINK)
|
||||
|
||||
@ -209,6 +217,7 @@ message("=================")
|
||||
message("C++ compiler .......................... ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}, ${CMAKE_CXX_COMPILER}")
|
||||
include(FlagsSummary)
|
||||
flags_summary()
|
||||
message("Use ccache for compiling .............. ${WITH_CCACHE}")
|
||||
message("\n")
|
||||
if(configure_warnings)
|
||||
message(" ******\n")
|
||||
|
36
cmake/ccache.cmake
Normal file
36
cmake/ccache.cmake
Normal file
@ -0,0 +1,36 @@
|
||||
# Copyright (c) 2023-present The Bitcoin Core developers
|
||||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or https://opensource.org/license/mit/.
|
||||
|
||||
if(NOT MSVC)
|
||||
find_program(CCACHE_EXECUTABLE ccache)
|
||||
if(CCACHE_EXECUTABLE)
|
||||
execute_process(
|
||||
COMMAND readlink -f ${CMAKE_CXX_COMPILER}
|
||||
OUTPUT_VARIABLE compiler_resolved_link
|
||||
ERROR_QUIET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
if(CCACHE_EXECUTABLE STREQUAL compiler_resolved_link AND NOT WITH_CCACHE)
|
||||
list(APPEND configure_warnings
|
||||
"Disabling ccache was attempted using -DWITH_CCACHE=${WITH_CCACHE}, but ccache masquerades as the compiler."
|
||||
)
|
||||
set(WITH_CCACHE ON)
|
||||
elseif(WITH_CCACHE)
|
||||
list(APPEND CMAKE_C_COMPILER_LAUNCHER ${CCACHE_EXECUTABLE})
|
||||
list(APPEND CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_EXECUTABLE})
|
||||
endif()
|
||||
else()
|
||||
set(WITH_CCACHE OFF)
|
||||
endif()
|
||||
if(WITH_CCACHE)
|
||||
try_append_cxx_flags("-fdebug-prefix-map=A=B" TARGET core_interface SKIP_LINK
|
||||
IF_CHECK_PASSED "-fdebug-prefix-map=${PROJECT_SOURCE_DIR}=."
|
||||
)
|
||||
try_append_cxx_flags("-fmacro-prefix-map=A=B" TARGET core_interface SKIP_LINK
|
||||
IF_CHECK_PASSED "-fmacro-prefix-map=${PROJECT_SOURCE_DIR}=."
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
mark_as_advanced(CCACHE_EXECUTABLE)
|
Loading…
Reference in New Issue
Block a user