228 lines
6.7 KiB
CMake
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 ()
|