# SPDX-License-Identifier: MPL-2.0
#
# Brique supervisor du Studio host : lancement du Core depuis une copie fantôme,
# fichier d'exécution, journaux, surveillance de l'exécutable source. Le
# lancement en lui-même est passé dans la brique commune platform/process
# (le Core lance aussi des processus : ADR 0009), que cette brique lie.

add_library(sequa_host_supervisor
    src/files.cpp
    src/paths.cpp
    src/random.cpp
    src/run_file.cpp
    src/shadow.cpp
    src/time.cpp)
add_library(sequa::host_supervisor ALIAS sequa_host_supervisor)
target_include_directories(sequa_host_supervisor PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
target_compile_features(sequa_host_supervisor PUBLIC cxx_std_20)
target_link_libraries(sequa_host_supervisor
    PUBLIC sequa::process
    PRIVATE nlohmann_json::nlohmann_json)
if(WIN32)
    target_link_libraries(sequa_host_supervisor PRIVATE bcrypt)
endif()
sequa_target_defaults(sequa_host_supervisor)

if(SEQUA_BUILD_TESTS)
    add_executable(sequa_host_supervisor_tests
        tests/main.cpp
        tests/test_files.cpp
        tests/test_run_file.cpp
        tests/test_shadow.cpp)
    target_link_libraries(sequa_host_supervisor_tests PRIVATE sequa::host_supervisor doctest::doctest)
    # Enfant de test fourni par platform/process (ajouté avant studio/host).
    target_compile_definitions(sequa_host_supervisor_tests PRIVATE
        SEQUA_TEST_CHILD="$<TARGET_FILE:sequa_process_test_child>")
    add_dependencies(sequa_host_supervisor_tests sequa_process_test_child)
    sequa_target_defaults(sequa_host_supervisor_tests)
    doctest_discover_tests(sequa_host_supervisor_tests)
endif()
