mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-28 04:06:59 +00:00
Add precompiled header support to CMakeLists.txt and configure.py -
it improves compilation time by approximately 10%.
New header `stdafx.hh` is added, don't include it manually -
the compiler will include it for you. The header contains includes from
external libraries used by Scylla - seastar, standard library,
linux headers and zlib.
The feature is enabled by default, use CMake option `Scylla_USE_PRECOMPILED_HEADER`
or configure.py --disable-precompiled-header to disable.
The feature should be disabled, when trying to check headers - otherwise
you might get false negatives on missing includes from seastar / abseil and so on.
Note: following configuration needs to be added to ccache.conf:
sloppiness = pch_defines,time_macros,include_file_mtime,include_file_ctime
Closes scylladb/scylladb#26617
41 lines
991 B
CMake
41 lines
991 B
CMake
include(add_whole_archive)
|
|
|
|
add_library(scylla_locator STATIC)
|
|
target_sources(scylla_locator
|
|
PRIVATE
|
|
abstract_replication_strategy.cc
|
|
azure_snitch.cc
|
|
simple_strategy.cc
|
|
local_strategy.cc
|
|
network_topology_strategy.cc
|
|
everywhere_replication_strategy.cc
|
|
token_metadata.cc
|
|
snitch_base.cc
|
|
simple_snitch.cc
|
|
rack_inferring_snitch.cc
|
|
gossiping_property_file_snitch.cc
|
|
production_snitch_base.cc
|
|
ec2_snitch.cc
|
|
ec2_multi_region_snitch.cc
|
|
gce_snitch.cc
|
|
tablets.cc
|
|
topology.cc
|
|
util.cc)
|
|
target_include_directories(scylla_locator
|
|
PUBLIC
|
|
${CMAKE_SOURCE_DIR})
|
|
target_link_libraries(scylla_locator
|
|
PUBLIC
|
|
Seastar::seastar
|
|
xxHash::xxhash
|
|
PRIVATE
|
|
db)
|
|
if (Scylla_USE_PRECOMPILED_HEADER_USE)
|
|
target_precompile_headers(scylla_locator REUSE_FROM scylla-precompiled-header)
|
|
endif()
|
|
|
|
add_whole_archive(locator scylla_locator)
|
|
|
|
check_headers(check-headers scylla_locator
|
|
GLOB_RECURSE ${CMAKE_CURRENT_SOURCE_DIR}/*.hh)
|