StrictCompile()

add_executable(bongoworker
    worker.c
    worker-config.c
    jobs/registry.c
    jobs/acme-renew.c
    jobs/scanner-health.c
    jobs/scanner-health-support.c
    jobs/tlsrpt-delivery.c
    jobs/tlsrpt-delivery-support.c
)

target_include_directories(bongoworker PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${CMAKE_CURRENT_SOURCE_DIR}/jobs
)
target_compile_definitions(bongoworker PRIVATE
    BONGO_SA_UPDATE_PATH="${LIBEXEC_INSTALL_DIR}/bongo/bongo-sa-update")

target_link_libraries(bongoworker
    bongoacme
    bongoscheduler
    bongojson
    bongoxpl
    bongoutil
    bongomsgapi
    bongoconnio
    bongocal
    SQLite3::SQLite3
    bongotlsrpt
    CURL::libcurl
    ZLIB::ZLIB
    Threads::Threads
)
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
    target_link_options(bongoworker PRIVATE "LINKER:--no-as-needed")
endif()

install(TARGETS bongoworker DESTINATION ${SBIN_INSTALL_DIR})

if(BUILD_TESTING)
    add_executable(worker-config-test
        tests/worker-config-test.c
        worker-config.c
        jobs/registry.c
        jobs/acme-renew.c
        jobs/scanner-health.c
        jobs/scanner-health-support.c
        jobs/tlsrpt-delivery.c
        jobs/tlsrpt-delivery-support.c
    )
    target_include_directories(worker-config-test PRIVATE
        ${CMAKE_CURRENT_SOURCE_DIR}
        ${CMAKE_CURRENT_SOURCE_DIR}/jobs
    )
    target_compile_definitions(worker-config-test PRIVATE
        BONGO_SA_UPDATE_PATH="${LIBEXEC_INSTALL_DIR}/bongo/bongo-sa-update")
    target_link_libraries(worker-config-test PRIVATE
        bongoacme
        bongoxpl
        bongoconnio
        bongoutil
        bongojson
        bongomsgapi
        bongocal
        SQLite3::SQLite3
        bongotlsrpt
        CURL::libcurl
        ZLIB::ZLIB
        GnuTLS::GnuTLS
        Threads::Threads
    )
    if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
        target_link_options(worker-config-test PRIVATE "LINKER:--no-as-needed")
    endif()
    add_test(NAME worker-config COMMAND worker-config-test)

    add_executable(worker-scanner-health-test
        tests/scanner-health-test.c
        jobs/scanner-health-support.c
    )
    target_include_directories(worker-scanner-health-test PRIVATE
        ${CMAKE_CURRENT_SOURCE_DIR}/jobs
    )
    add_test(NAME worker-scanner-health COMMAND worker-scanner-health-test)

    add_executable(worker-tlsrpt-delivery-test
        tests/tlsrpt-delivery-test.c
        jobs/tlsrpt-delivery-support.c
    )
    target_include_directories(worker-tlsrpt-delivery-test PRIVATE
        ${CMAKE_CURRENT_SOURCE_DIR}/jobs
    )
    target_link_libraries(worker-tlsrpt-delivery-test PRIVATE
        ZLIB::ZLIB
    )
    add_test(NAME worker-tlsrpt-delivery COMMAND worker-tlsrpt-delivery-test)
endif()
