find_package(Qt6 REQUIRED COMPONENTS Core Network)
find_package(OpenSSL REQUIRED COMPONENTS Crypto)
find_package(LibArchive REQUIRED)
set(C4_RUNTIME_POLICY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../packaging/runtime_policy.json")
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${C4_RUNTIME_POLICY_PATH}")
file(READ "${C4_RUNTIME_POLICY_PATH}" C4_RUNTIME_POLICY)
if(C4_RUNTIME_POLICY MATCHES "\\)C4_POLICY\"")
    message(FATAL_ERROR "Runtime policy contains an invalid C++ raw-string delimiter")
endif()
configure_file(src/runtime_policy_data.hpp.in c4_runtime_policy_data.hpp @ONLY)
add_executable(c4-updater src/main.cpp)
target_compile_features(c4-updater PRIVATE cxx_std_20)
target_include_directories(c4-updater PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
target_link_libraries(c4-updater PRIVATE Qt6::Core Qt6::Network OpenSSL::Crypto LibArchive::LibArchive)
if(TARGET c4_warnings)
    target_link_libraries(c4-updater PRIVATE c4_warnings)
endif()
install(TARGETS c4-updater RUNTIME DESTINATION bin)
if(BUILD_TESTING)
    find_package(Python3 REQUIRED COMPONENTS Interpreter)
    add_test(NAME updater-safety COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/tests/safety.py --updater $<TARGET_FILE:c4-updater>)
endif()
