add_library(bongomailauth
  mailauth.c
  spf.c
  dkim.c
  dmarc.c
  srs.c
)

target_include_directories(bongomailauth
  PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}
)

target_link_libraries(bongomailauth
  PUBLIC
    SPF2::SPF2
    OpenDKIM::OpenDKIM
    OpenDMARC::OpenDMARC
    SRS2::SRS2
    LibPSL::LibPSL
    Mailutils::Mailutils
)

install(TARGETS bongomailauth DESTINATION ${LIB_INSTALL_DIR})

if(BUILD_TESTING)
  add_executable(mailauth-srs-test tests/srs-test.c)
  target_link_libraries(mailauth-srs-test PRIVATE bongomailauth)
  add_test(NAME mailauth-srs COMMAND mailauth-srs-test)

  add_executable(mailauth-spf-test tests/spf-test.c)
  target_link_libraries(mailauth-spf-test PRIVATE bongomailauth)
  add_test(NAME mailauth-spf COMMAND mailauth-spf-test)

  add_executable(mailauth-dkim-verify-test tests/dkim-verify-test.c)
  target_link_libraries(mailauth-dkim-verify-test PRIVATE bongomailauth)
  add_test(NAME mailauth-dkim-verify COMMAND mailauth-dkim-verify-test)

  add_executable(mailauth-dmarc-test tests/dmarc-test.c)
  target_link_libraries(mailauth-dmarc-test PRIVATE bongomailauth)
  add_test(NAME mailauth-dmarc COMMAND mailauth-dmarc-test)

  find_program(OPENSSL_EXECUTABLE openssl)
  if(OPENSSL_EXECUTABLE)
    set(DKIM_TEST_KEY "${CMAKE_CURRENT_BINARY_DIR}/dkim-test.private")
    add_test(NAME mailauth-dkim-key
      COMMAND ${OPENSSL_EXECUTABLE} genpkey -quiet -algorithm RSA
              -pkeyopt rsa_keygen_bits:2048 -out ${DKIM_TEST_KEY})
    set_tests_properties(mailauth-dkim-key PROPERTIES FIXTURES_SETUP dkim_key)

    add_executable(mailauth-dkim-test tests/dkim-test.c)
    target_link_libraries(mailauth-dkim-test PRIVATE bongomailauth)
    add_test(NAME mailauth-dkim COMMAND mailauth-dkim-test ${DKIM_TEST_KEY})
    set_tests_properties(mailauth-dkim PROPERTIES FIXTURES_REQUIRED dkim_key)
  endif()
endif()
