StrictCompile()

add_library(bongoacme SHARED
    acme.c
    base64url.c
    certificate.c
    crypto.c
    deploy.c
    dns-python.c
    dns-propagation.c
    dns-provider.c
    dns-rfc2136.c
    http.c
    order.c
)

target_include_directories(bongoacme PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(bongoacme
    PUBLIC GnuTLS::GnuTLS CURL::libcurl LDNS::LDNS
    PRIVATE bongojson bongoutil bongoxpl)

install(TARGETS bongoacme DESTINATION ${LIB_INSTALL_DIR})

configure_file(bongo-acme-dns-provider.py.in bongo-acme-dns-provider @ONLY)
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/bongo-acme-dns-provider
        DESTINATION ${LIBEXEC_INSTALL_DIR}/bongo)

if(BUILD_TESTING)
    add_executable(acme-base64url-test tests/base64url-test.c)
    add_test(NAME acme-base64url COMMAND acme-base64url-test)

    add_executable(acme-certificate-test tests/certificate-test.c)
    add_test(NAME acme-certificate COMMAND acme-certificate-test)

    add_executable(acme-dns-provider-test tests/dns-provider-test.c)
    target_include_directories(acme-dns-provider-test PRIVATE
        ${CMAKE_CURRENT_SOURCE_DIR})
    add_test(NAME acme-dns-provider COMMAND acme-dns-provider-test)

    add_test(NAME acme-dns-provider-plugins
        COMMAND ${CMAKE_COMMAND} -E env
                "PYTHONPATH=${CMAKE_SOURCE_DIR}/src/libs/python"
                "PYTHONPYCACHEPREFIX=${CMAKE_CURRENT_BINARY_DIR}/pycache"
                "PYTHONWARNINGS=error::ResourceWarning"
                ${Python3_EXECUTABLE} -m unittest discover
                -s ${CMAKE_CURRENT_SOURCE_DIR}/tests
                -p test_dns_provider_plugins.py -v)

    foreach(acme_test acme-base64url-test acme-certificate-test
                      acme-dns-provider-test)
        target_link_libraries(${acme_test} PRIVATE
            bongoacme bongomsgapi bongocal bongoxpl bongoutil bongoconnio
            bongojson Threads::Threads)
        if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
            target_link_options(${acme_test} PRIVATE "LINKER:--no-as-needed")
        endif()
    endforeach()
endif()
