This change improves dependency management by explicitly specifying library linkage visibility in CMake targets. Previously, some ScyllaDB targets used `target_link_libraries()` without `PUBLIC` or `PRIVATE` keywords, which resulted in transitive library dependencies by default. This unintentionally exposed non-public dependencies to downstream targets. Changes: - Always use explicit `PRIVATE` or `PUBLIC` keywords with `target_link_libraries()` - Tighten build dependency tree - Enforce a more modular linkage model See: [CMake documentation on library dependencies](https://cmake.org/cmake/help/latest/command/target_link_libraries.html) Signed-off-by: Kefu Chai <kefu.chai@scylladb.com> Closes scylladb/scylladb#21686
38 lines
732 B
CMake
38 lines
732 B
CMake
include(generate_cql_grammar)
|
|
generate_cql_grammar(
|
|
GRAMMAR expressions.g
|
|
SOURCES cql_grammar_srcs)
|
|
|
|
add_library(alternator STATIC)
|
|
target_sources(alternator
|
|
PRIVATE
|
|
controller.cc
|
|
server.cc
|
|
executor.cc
|
|
stats.cc
|
|
serialization.cc
|
|
expressions.cc
|
|
conditions.cc
|
|
auth.cc
|
|
streams.cc
|
|
consumed_capacity.cc
|
|
ttl.cc
|
|
${cql_grammar_srcs})
|
|
target_include_directories(alternator
|
|
PUBLIC
|
|
${CMAKE_SOURCE_DIR}
|
|
${CMAKE_BINARY_DIR}
|
|
PRIVATE
|
|
${RAPIDJSON_INCLUDE_DIRS})
|
|
target_link_libraries(alternator
|
|
PUBLIC
|
|
Seastar::seastar
|
|
xxHash::xxhash
|
|
PRIVATE
|
|
cql3
|
|
idl
|
|
absl::headers)
|
|
|
|
check_headers(check-headers alternator
|
|
GLOB_RECURSE ${CMAKE_CURRENT_SOURCE_DIR}/*.hh)
|