cmake_minimum_required(VERSION 3.16)
project(SuperJupiterEmbeddedReliability VERSION 0.1.0 LANGUAGES CXX)
set(_top OFF)
if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
  set(_top ON)
endif()
option(SUPERJUPITER_EMBEDDED_RELIABILITY_BUILD_TESTS "Build component regression tests" ${_top})
option(SUPERJUPITER_EMBEDDED_RELIABILITY_INSTALL "Generate relocatable package" ${_top})
add_library(SuperJupiterEmbeddedReliability INTERFACE)
add_library(SuperJupiter::EmbeddedReliability ALIAS SuperJupiterEmbeddedReliability)
set_target_properties(SuperJupiterEmbeddedReliability PROPERTIES EXPORT_NAME EmbeddedReliability)
target_compile_features(SuperJupiterEmbeddedReliability INTERFACE cxx_std_11)
target_include_directories(SuperJupiterEmbeddedReliability INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src> $<INSTALL_INTERFACE:include>)
if(SUPERJUPITER_EMBEDDED_RELIABILITY_BUILD_TESTS)
  enable_testing()
  add_executable(check-record-journal-consumer-main tests/components/RecordJournal/consumer/main.cpp)
  target_link_libraries(check-record-journal-consumer-main PRIVATE SuperJupiter::EmbeddedReliability)
  add_test(NAME check-record-journal-consumer-main COMMAND check-record-journal-consumer-main)
  add_executable(check-record-journal-namespace_isolation tests/components/RecordJournal/namespace_isolation.cpp)
  target_link_libraries(check-record-journal-namespace_isolation PRIVATE SuperJupiter::EmbeddedReliability)
  add_test(NAME check-record-journal-namespace_isolation COMMAND check-record-journal-namespace_isolation)
  add_executable(check-record-journal-review_regressions tests/components/RecordJournal/review_regressions.cpp)
  target_link_libraries(check-record-journal-review_regressions PRIVATE SuperJupiter::EmbeddedReliability)
  add_test(NAME check-record-journal-review_regressions COMMAND check-record-journal-review_regressions)
  add_executable(check-record-journal-test tests/components/RecordJournal/test.cpp)
  target_link_libraries(check-record-journal-test PRIVATE SuperJupiter::EmbeddedReliability)
  add_test(NAME check-record-journal-test COMMAND check-record-journal-test)
  add_executable(check-store-forward-consumer-main tests/components/StoreForward/consumer/main.cpp)
  target_link_libraries(check-store-forward-consumer-main PRIVATE SuperJupiter::EmbeddedReliability)
  add_test(NAME check-store-forward-consumer-main COMMAND check-store-forward-consumer-main)
  add_executable(check-store-forward-namespace_isolation tests/components/StoreForward/namespace_isolation.cpp)
  target_link_libraries(check-store-forward-namespace_isolation PRIVATE SuperJupiter::EmbeddedReliability)
  add_test(NAME check-store-forward-namespace_isolation COMMAND check-store-forward-namespace_isolation)
  add_executable(check-store-forward-review_regressions tests/components/StoreForward/review_regressions.cpp)
  target_link_libraries(check-store-forward-review_regressions PRIVATE SuperJupiter::EmbeddedReliability)
  add_test(NAME check-store-forward-review_regressions COMMAND check-store-forward-review_regressions)
  add_executable(check-store-forward-test tests/components/StoreForward/test.cpp)
  target_link_libraries(check-store-forward-test PRIVATE SuperJupiter::EmbeddedReliability)
  add_test(NAME check-store-forward-test COMMAND check-store-forward-test)
  add_executable(check-config-store-consumer-main tests/components/ConfigStore/consumer/main.cpp)
  target_link_libraries(check-config-store-consumer-main PRIVATE SuperJupiter::EmbeddedReliability)
  add_test(NAME check-config-store-consumer-main COMMAND check-config-store-consumer-main)
  add_executable(check-config-store-namespace_isolation tests/components/ConfigStore/namespace_isolation.cpp)
  target_link_libraries(check-config-store-namespace_isolation PRIVATE SuperJupiter::EmbeddedReliability)
  add_test(NAME check-config-store-namespace_isolation COMMAND check-config-store-namespace_isolation)
  add_executable(check-config-store-review_regressions tests/components/ConfigStore/review_regressions.cpp)
  target_link_libraries(check-config-store-review_regressions PRIVATE SuperJupiter::EmbeddedReliability)
  add_test(NAME check-config-store-review_regressions COMMAND check-config-store-review_regressions)
  add_executable(check-config-store-test tests/components/ConfigStore/test.cpp)
  target_link_libraries(check-config-store-test PRIVATE SuperJupiter::EmbeddedReliability)
  add_test(NAME check-config-store-test COMMAND check-config-store-test)
  add_executable(check-device-health-consumer-main tests/components/DeviceHealth/consumer/main.cpp)
  target_link_libraries(check-device-health-consumer-main PRIVATE SuperJupiter::EmbeddedReliability)
  add_test(NAME check-device-health-consumer-main COMMAND check-device-health-consumer-main)
  add_executable(check-device-health-namespace_isolation tests/components/DeviceHealth/namespace_isolation.cpp)
  target_link_libraries(check-device-health-namespace_isolation PRIVATE SuperJupiter::EmbeddedReliability)
  add_test(NAME check-device-health-namespace_isolation COMMAND check-device-health-namespace_isolation)
  add_executable(check-device-health-review_regressions tests/components/DeviceHealth/review_regressions.cpp)
  target_link_libraries(check-device-health-review_regressions PRIVATE SuperJupiter::EmbeddedReliability)
  add_test(NAME check-device-health-review_regressions COMMAND check-device-health-review_regressions)
  add_executable(check-device-health-test tests/components/DeviceHealth/test.cpp)
  target_link_libraries(check-device-health-test PRIVATE SuperJupiter::EmbeddedReliability)
  add_test(NAME check-device-health-test COMMAND check-device-health-test)
  add_executable(check-power-budget-consumer-main tests/components/PowerBudget/consumer/main.cpp)
  target_link_libraries(check-power-budget-consumer-main PRIVATE SuperJupiter::EmbeddedReliability)
  add_test(NAME check-power-budget-consumer-main COMMAND check-power-budget-consumer-main)
  add_executable(check-power-budget-namespace_isolation tests/components/PowerBudget/namespace_isolation.cpp)
  target_link_libraries(check-power-budget-namespace_isolation PRIVATE SuperJupiter::EmbeddedReliability)
  add_test(NAME check-power-budget-namespace_isolation COMMAND check-power-budget-namespace_isolation)
  add_executable(check-power-budget-review_regressions tests/components/PowerBudget/review_regressions.cpp)
  target_link_libraries(check-power-budget-review_regressions PRIVATE SuperJupiter::EmbeddedReliability)
  add_test(NAME check-power-budget-review_regressions COMMAND check-power-budget-review_regressions)
  add_executable(check-power-budget-test tests/components/PowerBudget/test.cpp)
  target_link_libraries(check-power-budget-test PRIVATE SuperJupiter::EmbeddedReliability)
  add_test(NAME check-power-budget-test COMMAND check-power-budget-test)
endif()
if(SUPERJUPITER_EMBEDDED_RELIABILITY_INSTALL)
  include(CMakePackageConfigHelpers)
  set(_dest lib/cmake/SuperJupiterEmbeddedReliability)
  install(TARGETS SuperJupiterEmbeddedReliability EXPORT SuperJupiterEmbeddedReliabilityTargets)
  install(DIRECTORY src/ DESTINATION include FILES_MATCHING PATTERN "*.h")
  install(EXPORT SuperJupiterEmbeddedReliabilityTargets NAMESPACE SuperJupiter:: DESTINATION ${_dest})
  configure_package_config_file(cmake/SuperJupiterEmbeddedReliabilityConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/SuperJupiterEmbeddedReliabilityConfig.cmake INSTALL_DESTINATION ${_dest})
  write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/SuperJupiterEmbeddedReliabilityConfigVersion.cmake VERSION ${PROJECT_VERSION} COMPATIBILITY SameMinorVersion ARCH_INDEPENDENT)
  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/SuperJupiterEmbeddedReliabilityConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/SuperJupiterEmbeddedReliabilityConfigVersion.cmake DESTINATION ${_dest})
  install(FILES LICENSE DESTINATION share/licenses/SuperJupiterEmbeddedReliability)
endif()
