zeek/auxil/broker/libbroker/CMakeLists.txt
Patrick Kelley 8fd444092b initial
2025-05-07 15:35:15 -04:00

228 lines
6.7 KiB
CMake

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/broker/config.hh.in
${CMAKE_CURRENT_BINARY_DIR}/broker/config.hh)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/broker/config.hh
DESTINATION include/broker)
set(BROKER_SRC
# src/detail/core_recorder.cc
# src/detail/generator_file_reader.cc
# src/detail/generator_file_writer.cc
# src/gateway.cc
# src/internal/data_generator.cc
# src/internal/generator_file_reader.cc
# src/internal/generator_file_writer.cc
# src/internal/meta_command_writer.cc
# src/internal/meta_data_writer.cc
${OPTIONAL_SRC}
broker/address.cc
broker/alm/multipath.cc
broker/alm/routing_table.cc
broker/builder.cc
broker/command_envelope.cc
broker/configuration.cc
broker/convert.cc
broker/data.cc
broker/data_envelope.cc
broker/detail/abstract_backend.cc
broker/detail/filesystem.cc
broker/detail/flare.cc
broker/detail/make_backend.cc
broker/detail/memory_backend.cc
broker/detail/monotonic_buffer_resource.cc
broker/detail/opaque_type.cc
broker/detail/peer_status_map.cc
broker/detail/prefix_matcher.cc
broker/detail/sink_driver.cc
broker/detail/source_driver.cc
broker/detail/sqlite_backend.cc
broker/detail/store_state.cc
broker/domain_options.cc
broker/endpoint.cc
broker/endpoint_id.cc
broker/endpoint_info.cc
broker/entity_id.cc
broker/envelope.cc
broker/error.cc
broker/event_observer.cc
broker/filter_type.cc
broker/format/bin.cc
broker/format/json.cc
broker/hub.cc
broker/internal/clone_actor.cc
broker/internal/connector.cc
broker/internal/connector_adapter.cc
broker/internal/core_actor.cc
broker/internal/flare_actor.cc
broker/internal/hub_impl.cc
broker/internal/json.cc
broker/internal/json_client.cc
broker/internal/json_type_mapper.cc
broker/internal/master_actor.cc
broker/internal/metric_factory.cc
broker/internal/peering.cc
broker/internal/pending_connection.cc
broker/internal/println.cc
broker/internal/publisher_queue.cc
broker/internal/store_actor.cc
broker/internal/subscriber_queue.cc
broker/internal/web_socket.cc
broker/internal/wire_format.cc
broker/internal_command.cc
broker/logger.cc
broker/mailbox.cc
broker/network_info.cc
broker/overflow_policy.cc
broker/p2p_message_type.cc
broker/peer_status.cc
broker/ping_envelope.cc
broker/pong_envelope.cc
broker/port.cc
broker/publisher.cc
broker/routing_update_envelope.cc
broker/shutdown_options.cc
broker/status.cc
broker/status_subscriber.cc
broker/store.cc
broker/store_event.cc
broker/subnet.cc
broker/subscriber.cc
broker/time.cc
broker/topic.cc
broker/variant.cc
broker/variant_data.cc
broker/variant_list.cc
broker/variant_set.cc
broker/variant_table.cc
broker/variant_tag.cc
broker/version.cc
broker/worker.cc
broker/zeek.cc
)
if (ENABLE_SHARED)
add_library(broker SHARED ${BROKER_SRC})
set_target_properties(broker PROPERTIES
SOVERSION ${BROKER_SOVERSION}
VERSION ${BROKER_VERSION_MAJOR}.${BROKER_VERSION_MINOR}
MACOSX_RPATH true
OUTPUT_NAME broker)
target_link_libraries(broker PUBLIC ${LINK_LIBS})
target_link_libraries(
broker
PRIVATE
CAF::core
CAF::io
CAF::net
broker-prometheus-cpp)
install(TARGETS broker
EXPORT BrokerTargets
DESTINATION ${CMAKE_INSTALL_LIBDIR})
target_include_directories(broker PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
$<INSTALL_INTERFACE:include>)
endif ()
if (ENABLE_STATIC)
add_library(broker_static STATIC ${BROKER_SRC})
set_target_properties(broker_static PROPERTIES OUTPUT_NAME broker)
if (NOT DISABLE_PYTHON_BINDINGS)
set_target_properties(broker_static PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
target_link_libraries(broker_static PUBLIC ${LINK_LIBS})
target_link_libraries(
broker_static
PRIVATE
CAF::core
CAF::io
CAF::net
broker-prometheus-cpp)
install(TARGETS broker_static
EXPORT BrokerTargets
DESTINATION ${CMAKE_INSTALL_LIBDIR})
target_include_directories(broker_static PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
$<INSTALL_INTERFACE:include>)
endif ()
if (ENABLE_SHARED)
set(main_lib_target broker)
else()
set(main_lib_target broker_static)
endif()
set(BROKER_LIBRARY ${main_lib_target} PARENT_SCOPE)
if ( BROKER_DISABLE_TESTS )
return()
endif ()
set(BROKER_TEST_SRC
# broker/internal/data_generator.test.cc
# broker/internal/generator_file_writer.test.cc
# broker/internal/json_type_mapper.test.cc
# broker/internal/meta_command_writer.test.cc
# broker/internal/meta_data_writer.test.cc
broker/alm/multipath.test.cc
broker/alm/routing_table.test.cc
broker/backend.test.cc
broker/broker-test.test.cc
broker/builder.test.cc
broker/data.test.cc
broker/detail/peer_status_map.test.cc
broker/domain_options.test.cc
broker/envelope.test.cc
broker/error.test.cc
broker/filter_type.test.cc
broker/format/bin.test.cc
broker/format/json.test.cc
broker/hub.test.cc
broker/internal/channel.test.cc
broker/internal/json.test.cc
broker/internal/wire_format.test.cc
broker/peering.test.cc
broker/radix_tree.test.cc
broker/shutdown.test.cc
broker/status.test.cc
broker/store.test.cc
broker/store_event.test.cc
broker/topic.test.cc
broker/variant.test.cc
broker/zeek.test.cc
)
# Our sytem testing suites require `socketpair`, but Windows lacks this API.
# if (NOT MSVC)
# list(APPEND tests
# cpp/system/shutdown.cc
# )
# endif()
add_executable(broker-test ${BROKER_TEST_SRC})
target_link_libraries(
broker-test
PRIVATE
${main_lib_target}
CAF::core
CAF::io
CAF::net
CAF::test
broker-prometheus-cpp)
foreach(file_path ${BROKER_TEST_SRC})
get_filename_component(test_dir ${file_path} DIRECTORY)
get_filename_component(test_file ${file_path} NAME_WE)
string(REPLACE "/" "." test_name ${test_dir}/${test_file})
set_source_files_properties(${file_path} PROPERTIES COMPILE_DEFINITIONS SUITE=${test_name})
set(test_verbosity 4)
if (${test_name} STREQUAL broker.radix_tree)
set(test_verbosity 3) # otherwise it just produces way too much output
endif ()
add_test(NAME ${test_name} COMMAND broker-test -v ${test_verbosity} -s "^${test_name}$" ${ARGN})
set_tests_properties(${test_name} PROPERTIES TIMEOUT ${BROKER_TEST_TIMEOUT})
set_tests_properties(${test_name} PROPERTIES ENVIRONMENT
"BROKER_TEST_DIR=${BROKER_TEST_DIR}")
endforeach ()