cmake_minimum_required(VERSION 3.16)
project(SuperJupiterSensorToolkit VERSION 0.1.0 LANGUAGES CXX)
set(_top OFF)
if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
  set(_top ON)
endif()
option(SUPERJUPITER_SENSOR_TOOLKIT_BUILD_TESTS "Build component regression tests" ${_top})
option(SUPERJUPITER_SENSOR_TOOLKIT_INSTALL "Generate relocatable package" ${_top})
add_library(SuperJupiterSensorToolkit INTERFACE)
add_library(SuperJupiter::SensorToolkit ALIAS SuperJupiterSensorToolkit)
set_target_properties(SuperJupiterSensorToolkit PROPERTIES EXPORT_NAME SensorToolkit)
target_compile_features(SuperJupiterSensorToolkit INTERFACE cxx_std_11)
target_include_directories(SuperJupiterSensorToolkit INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src> $<INSTALL_INTERFACE:include>)
if(SUPERJUPITER_SENSOR_TOOLKIT_BUILD_TESTS)
  enable_testing()
  add_executable(check-sensor-quality-consumer-main tests/components/SensorQuality/consumer/main.cpp)
  target_link_libraries(check-sensor-quality-consumer-main PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-sensor-quality-consumer-main COMMAND check-sensor-quality-consumer-main)
  add_executable(check-sensor-quality-namespace_isolation tests/components/SensorQuality/namespace_isolation.cpp)
  target_link_libraries(check-sensor-quality-namespace_isolation PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-sensor-quality-namespace_isolation COMMAND check-sensor-quality-namespace_isolation)
  add_executable(check-sensor-quality-review_regressions tests/components/SensorQuality/review_regressions.cpp)
  target_link_libraries(check-sensor-quality-review_regressions PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-sensor-quality-review_regressions COMMAND check-sensor-quality-review_regressions)
  add_executable(check-sensor-quality-test_sensor_quality tests/components/SensorQuality/test_sensor_quality.cpp)
  target_link_libraries(check-sensor-quality-test_sensor_quality PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-sensor-quality-test_sensor_quality COMMAND check-sensor-quality-test_sensor_quality)
  add_executable(check-sample-window-consumer-main tests/components/SampleWindow/consumer/main.cpp)
  target_link_libraries(check-sample-window-consumer-main PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-sample-window-consumer-main COMMAND check-sample-window-consumer-main)
  add_executable(check-sample-window-namespace_isolation tests/components/SampleWindow/namespace_isolation.cpp)
  target_link_libraries(check-sample-window-namespace_isolation PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-sample-window-namespace_isolation COMMAND check-sample-window-namespace_isolation)
  add_executable(check-sample-window-review_regressions tests/components/SampleWindow/review_regressions.cpp)
  target_link_libraries(check-sample-window-review_regressions PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-sample-window-review_regressions COMMAND check-sample-window-review_regressions)
  add_executable(check-sample-window-test_sample_window tests/components/SampleWindow/test_sample_window.cpp)
  target_link_libraries(check-sample-window-test_sample_window PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-sample-window-test_sample_window COMMAND check-sample-window-test_sample_window)
  add_executable(check-calibration-consumer-main tests/components/Calibration/consumer/main.cpp)
  target_link_libraries(check-calibration-consumer-main PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-calibration-consumer-main COMMAND check-calibration-consumer-main)
  add_executable(check-calibration-namespace_isolation tests/components/Calibration/namespace_isolation.cpp)
  target_link_libraries(check-calibration-namespace_isolation PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-calibration-namespace_isolation COMMAND check-calibration-namespace_isolation)
  add_executable(check-calibration-review_regressions tests/components/Calibration/review_regressions.cpp)
  target_link_libraries(check-calibration-review_regressions PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-calibration-review_regressions COMMAND check-calibration-review_regressions)
  add_executable(check-calibration-test tests/components/Calibration/test.cpp)
  target_link_libraries(check-calibration-test PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-calibration-test COMMAND check-calibration-test)
  add_executable(check-time-anchor-consumer-main tests/components/TimeAnchor/consumer/main.cpp)
  target_link_libraries(check-time-anchor-consumer-main PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-time-anchor-consumer-main COMMAND check-time-anchor-consumer-main)
  add_executable(check-time-anchor-namespace_isolation tests/components/TimeAnchor/namespace_isolation.cpp)
  target_link_libraries(check-time-anchor-namespace_isolation PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-time-anchor-namespace_isolation COMMAND check-time-anchor-namespace_isolation)
  add_executable(check-time-anchor-review_regressions tests/components/TimeAnchor/review_regressions.cpp)
  target_link_libraries(check-time-anchor-review_regressions PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-time-anchor-review_regressions COMMAND check-time-anchor-review_regressions)
  add_executable(check-time-anchor-test tests/components/TimeAnchor/test.cpp)
  target_link_libraries(check-time-anchor-test PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-time-anchor-test COMMAND check-time-anchor-test)
  add_executable(check-signal-filter-consumer-main tests/components/SignalFilter/consumer/main.cpp)
  target_link_libraries(check-signal-filter-consumer-main PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-signal-filter-consumer-main COMMAND check-signal-filter-consumer-main)
  add_executable(check-signal-filter-namespace_isolation tests/components/SignalFilter/namespace_isolation.cpp)
  target_link_libraries(check-signal-filter-namespace_isolation PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-signal-filter-namespace_isolation COMMAND check-signal-filter-namespace_isolation)
  add_executable(check-signal-filter-review_regressions tests/components/SignalFilter/review_regressions.cpp)
  target_link_libraries(check-signal-filter-review_regressions PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-signal-filter-review_regressions COMMAND check-signal-filter-review_regressions)
  add_executable(check-signal-filter-test tests/components/SignalFilter/test.cpp)
  target_link_libraries(check-signal-filter-test PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-signal-filter-test COMMAND check-signal-filter-test)
  add_executable(check-trend-consumer-main tests/components/Trend/consumer/main.cpp)
  target_link_libraries(check-trend-consumer-main PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-trend-consumer-main COMMAND check-trend-consumer-main)
  add_executable(check-trend-namespace_isolation tests/components/Trend/namespace_isolation.cpp)
  target_link_libraries(check-trend-namespace_isolation PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-trend-namespace_isolation COMMAND check-trend-namespace_isolation)
  add_executable(check-trend-review_regressions tests/components/Trend/review_regressions.cpp)
  target_link_libraries(check-trend-review_regressions PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-trend-review_regressions COMMAND check-trend-review_regressions)
  add_executable(check-trend-test tests/components/Trend/test.cpp)
  target_link_libraries(check-trend-test PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-trend-test COMMAND check-trend-test)
  add_executable(check-threshold-events-consumer-main tests/components/ThresholdEvents/consumer/main.cpp)
  target_link_libraries(check-threshold-events-consumer-main PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-threshold-events-consumer-main COMMAND check-threshold-events-consumer-main)
  add_executable(check-threshold-events-namespace_isolation tests/components/ThresholdEvents/namespace_isolation.cpp)
  target_link_libraries(check-threshold-events-namespace_isolation PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-threshold-events-namespace_isolation COMMAND check-threshold-events-namespace_isolation)
  add_executable(check-threshold-events-review_regressions tests/components/ThresholdEvents/review_regressions.cpp)
  target_link_libraries(check-threshold-events-review_regressions PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-threshold-events-review_regressions COMMAND check-threshold-events-review_regressions)
  add_executable(check-threshold-events-test tests/components/ThresholdEvents/test.cpp)
  target_link_libraries(check-threshold-events-test PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-threshold-events-test COMMAND check-threshold-events-test)
  add_executable(check-pulse-metrics-consumer-main tests/components/PulseMetrics/consumer/main.cpp)
  target_link_libraries(check-pulse-metrics-consumer-main PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-pulse-metrics-consumer-main COMMAND check-pulse-metrics-consumer-main)
  add_executable(check-pulse-metrics-namespace_isolation tests/components/PulseMetrics/namespace_isolation.cpp)
  target_link_libraries(check-pulse-metrics-namespace_isolation PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-pulse-metrics-namespace_isolation COMMAND check-pulse-metrics-namespace_isolation)
  add_executable(check-pulse-metrics-review_regressions tests/components/PulseMetrics/review_regressions.cpp)
  target_link_libraries(check-pulse-metrics-review_regressions PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-pulse-metrics-review_regressions COMMAND check-pulse-metrics-review_regressions)
  add_executable(check-pulse-metrics-test tests/components/PulseMetrics/test.cpp)
  target_link_libraries(check-pulse-metrics-test PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-pulse-metrics-test COMMAND check-pulse-metrics-test)
  add_executable(check-time-aggregate-consumer-main tests/components/TimeAggregate/consumer/main.cpp)
  target_link_libraries(check-time-aggregate-consumer-main PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-time-aggregate-consumer-main COMMAND check-time-aggregate-consumer-main)
  add_executable(check-time-aggregate-namespace_isolation tests/components/TimeAggregate/namespace_isolation.cpp)
  target_link_libraries(check-time-aggregate-namespace_isolation PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-time-aggregate-namespace_isolation COMMAND check-time-aggregate-namespace_isolation)
  add_executable(check-time-aggregate-review_regressions tests/components/TimeAggregate/review_regressions.cpp)
  target_link_libraries(check-time-aggregate-review_regressions PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-time-aggregate-review_regressions COMMAND check-time-aggregate-review_regressions)
  add_executable(check-time-aggregate-test tests/components/TimeAggregate/test.cpp)
  target_link_libraries(check-time-aggregate-test PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-time-aggregate-test COMMAND check-time-aggregate-test)
  add_executable(check-integration-consumer-main tests/components/Integration/consumer/main.cpp)
  target_link_libraries(check-integration-consumer-main PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-integration-consumer-main COMMAND check-integration-consumer-main)
  add_executable(check-integration-namespace_isolation tests/components/Integration/namespace_isolation.cpp)
  target_link_libraries(check-integration-namespace_isolation PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-integration-namespace_isolation COMMAND check-integration-namespace_isolation)
  add_executable(check-integration-review_regressions tests/components/Integration/review_regressions.cpp)
  target_link_libraries(check-integration-review_regressions PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-integration-review_regressions COMMAND check-integration-review_regressions)
  add_executable(check-integration-test tests/components/Integration/test.cpp)
  target_link_libraries(check-integration-test PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-integration-test COMMAND check-integration-test)
  add_executable(check-event-capture-consumer-main tests/components/EventCapture/consumer/main.cpp)
  target_link_libraries(check-event-capture-consumer-main PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-event-capture-consumer-main COMMAND check-event-capture-consumer-main)
  add_executable(check-event-capture-namespace_isolation tests/components/EventCapture/namespace_isolation.cpp)
  target_link_libraries(check-event-capture-namespace_isolation PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-event-capture-namespace_isolation COMMAND check-event-capture-namespace_isolation)
  add_executable(check-event-capture-review_regressions tests/components/EventCapture/review_regressions.cpp)
  target_link_libraries(check-event-capture-review_regressions PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-event-capture-review_regressions COMMAND check-event-capture-review_regressions)
  add_executable(check-event-capture-test tests/components/EventCapture/test.cpp)
  target_link_libraries(check-event-capture-test PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-event-capture-test COMMAND check-event-capture-test)
  add_executable(check-channel-align-consumer-main tests/components/ChannelAlign/consumer/main.cpp)
  target_link_libraries(check-channel-align-consumer-main PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-channel-align-consumer-main COMMAND check-channel-align-consumer-main)
  add_executable(check-channel-align-namespace_isolation tests/components/ChannelAlign/namespace_isolation.cpp)
  target_link_libraries(check-channel-align-namespace_isolation PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-channel-align-namespace_isolation COMMAND check-channel-align-namespace_isolation)
  add_executable(check-channel-align-review_regressions tests/components/ChannelAlign/review_regressions.cpp)
  target_link_libraries(check-channel-align-review_regressions PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-channel-align-review_regressions COMMAND check-channel-align-review_regressions)
  add_executable(check-channel-align-test tests/components/ChannelAlign/test.cpp)
  target_link_libraries(check-channel-align-test PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-channel-align-test COMMAND check-channel-align-test)
  add_executable(check-sensor-agreement-consumer-main tests/components/SensorAgreement/consumer/main.cpp)
  target_link_libraries(check-sensor-agreement-consumer-main PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-sensor-agreement-consumer-main COMMAND check-sensor-agreement-consumer-main)
  add_executable(check-sensor-agreement-namespace_isolation tests/components/SensorAgreement/namespace_isolation.cpp)
  target_link_libraries(check-sensor-agreement-namespace_isolation PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-sensor-agreement-namespace_isolation COMMAND check-sensor-agreement-namespace_isolation)
  add_executable(check-sensor-agreement-review_regressions tests/components/SensorAgreement/review_regressions.cpp)
  target_link_libraries(check-sensor-agreement-review_regressions PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-sensor-agreement-review_regressions COMMAND check-sensor-agreement-review_regressions)
  add_executable(check-sensor-agreement-test tests/components/SensorAgreement/test.cpp)
  target_link_libraries(check-sensor-agreement-test PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-sensor-agreement-test COMMAND check-sensor-agreement-test)
  add_executable(check-machine-state-consumer-main tests/components/MachineState/consumer/main.cpp)
  target_link_libraries(check-machine-state-consumer-main PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-machine-state-consumer-main COMMAND check-machine-state-consumer-main)
  add_executable(check-machine-state-namespace_isolation tests/components/MachineState/namespace_isolation.cpp)
  target_link_libraries(check-machine-state-namespace_isolation PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-machine-state-namespace_isolation COMMAND check-machine-state-namespace_isolation)
  add_executable(check-machine-state-review_regressions tests/components/MachineState/review_regressions.cpp)
  target_link_libraries(check-machine-state-review_regressions PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-machine-state-review_regressions COMMAND check-machine-state-review_regressions)
  add_executable(check-machine-state-test tests/components/MachineState/test.cpp)
  target_link_libraries(check-machine-state-test PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-machine-state-test COMMAND check-machine-state-test)
  add_executable(check-sensor-replay-consumer-main tests/components/SensorReplay/consumer/main.cpp)
  target_link_libraries(check-sensor-replay-consumer-main PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-sensor-replay-consumer-main COMMAND check-sensor-replay-consumer-main)
  add_executable(check-sensor-replay-namespace_isolation tests/components/SensorReplay/namespace_isolation.cpp)
  target_link_libraries(check-sensor-replay-namespace_isolation PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-sensor-replay-namespace_isolation COMMAND check-sensor-replay-namespace_isolation)
  add_executable(check-sensor-replay-review_regressions tests/components/SensorReplay/review_regressions.cpp)
  target_link_libraries(check-sensor-replay-review_regressions PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-sensor-replay-review_regressions COMMAND check-sensor-replay-review_regressions)
  add_executable(check-sensor-replay-test tests/components/SensorReplay/test.cpp)
  target_link_libraries(check-sensor-replay-test PRIVATE SuperJupiter::SensorToolkit)
  add_test(NAME check-sensor-replay-test COMMAND check-sensor-replay-test)
endif()
if(SUPERJUPITER_SENSOR_TOOLKIT_INSTALL)
  include(CMakePackageConfigHelpers)
  set(_dest lib/cmake/SuperJupiterSensorToolkit)
  install(TARGETS SuperJupiterSensorToolkit EXPORT SuperJupiterSensorToolkitTargets)
  install(DIRECTORY src/ DESTINATION include FILES_MATCHING PATTERN "*.h")
  install(EXPORT SuperJupiterSensorToolkitTargets NAMESPACE SuperJupiter:: DESTINATION ${_dest})
  configure_package_config_file(cmake/SuperJupiterSensorToolkitConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/SuperJupiterSensorToolkitConfig.cmake INSTALL_DESTINATION ${_dest})
  write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/SuperJupiterSensorToolkitConfigVersion.cmake VERSION ${PROJECT_VERSION} COMPATIBILITY SameMinorVersion ARCH_INDEPENDENT)
  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/SuperJupiterSensorToolkitConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/SuperJupiterSensorToolkitConfigVersion.cmake DESTINATION ${_dest})
  install(FILES LICENSE DESTINATION share/licenses/SuperJupiterSensorToolkit)
endif()
