#StrictCompile()

add_executable(bongosmtp
	smtpd.c
	internal-relay.c
	capabilities.c
	auth-results.c
	load-policy.c
	protocol.c
	proxy.c
)

target_link_libraries(bongosmtp
	bongoxpl
	bongoconnio
	bongoutil
	bongojson
	bongomsgapi
	bongomailauth
	bongosasl
	bongocollectoraccounts
)

add_executable(bongosmtpc
	smtpc.c
	dane.c
	mta-sts.c
	tls-report.c
	capabilities.c
	outbound-policy.c
	protocol.c
	proxy.c
)

target_link_libraries(bongosmtpc
	bongoxpl
	bongoconnio
	bongoutil
	bongojson
	bongomsgapi
	bongomailauth
	bongocollectoraccounts
	bongotlsrpt
	CURL::libcurl
	GnuTLS::GnuTLS
	GnuTLSDane::GnuTLSDane
	Unbound::Unbound
)

install(TARGETS bongosmtp DESTINATION ${SBIN_INSTALL_DIR})
install(TARGETS bongosmtpc DESTINATION ${SBIN_INSTALL_DIR})

if(BUILD_TESTING)
	add_executable(smtp-capabilities-test
		tests/capabilities-test.c
		capabilities.c
	)
	target_include_directories(smtp-capabilities-test PRIVATE
		${CMAKE_CURRENT_SOURCE_DIR}
	)
	target_link_libraries(smtp-capabilities-test PRIVATE GLib2::GLib2)
	add_test(NAME smtp-capabilities COMMAND smtp-capabilities-test)

	add_executable(smtp-auth-results-test
		tests/auth-results-test.c
		auth-results.c
	)
	target_include_directories(smtp-auth-results-test PRIVATE
		${CMAKE_CURRENT_SOURCE_DIR}
	)
	add_test(NAME smtp-auth-results COMMAND smtp-auth-results-test)

	add_executable(smtp-protocol-test
		tests/protocol-test.c
		protocol.c
	)
	target_include_directories(smtp-protocol-test PRIVATE
		${CMAKE_CURRENT_SOURCE_DIR}
	)
	add_test(NAME smtp-protocol COMMAND smtp-protocol-test)

	add_executable(smtp-outbound-policy-test
		tests/outbound-policy-test.c
		outbound-policy.c
	)
	target_include_directories(smtp-outbound-policy-test PRIVATE
		${CMAKE_CURRENT_SOURCE_DIR}
	)
	add_test(NAME smtp-outbound-policy COMMAND smtp-outbound-policy-test)

	add_executable(smtp-load-policy-test
		tests/load-policy-test.c
		load-policy.c
	)
	target_include_directories(smtp-load-policy-test PRIVATE
		${CMAKE_CURRENT_SOURCE_DIR}
	)
	add_test(NAME smtp-load-policy COMMAND smtp-load-policy-test)

	add_executable(smtp-internal-relay-test
		tests/internal-relay-test.c
		internal-relay.c
	)
	target_include_directories(smtp-internal-relay-test PRIVATE
		${CMAKE_CURRENT_SOURCE_DIR}
	)
	add_test(NAME smtp-internal-relay COMMAND smtp-internal-relay-test)

	add_executable(smtp-proxy-test
		tests/proxy-test.c
		proxy.c
		protocol.c
	)
	target_include_directories(smtp-proxy-test PRIVATE
		${CMAKE_CURRENT_SOURCE_DIR}
	)
	add_test(NAME smtp-proxy COMMAND smtp-proxy-test)

	add_executable(smtp-dane-test
		tests/dane-test.c
		dane.c
	)
	target_include_directories(smtp-dane-test PRIVATE
		${CMAKE_CURRENT_SOURCE_DIR}
	)
	target_link_libraries(smtp-dane-test PRIVATE
		GnuTLSDane::GnuTLSDane
		GnuTLS::GnuTLS
		Unbound::Unbound
	)
	add_test(NAME smtp-dane COMMAND smtp-dane-test)

	add_executable(smtp-mta-sts-test
		tests/mta-sts-test.c
		mta-sts.c
	)
	target_include_directories(smtp-mta-sts-test PRIVATE
		${CMAKE_CURRENT_SOURCE_DIR}
	)
	target_link_libraries(smtp-mta-sts-test PRIVATE
		bongoxpl
		CURL::libcurl
		GLib2::GLib2
	)
	add_test(NAME smtp-mta-sts COMMAND smtp-mta-sts-test)

	add_executable(smtp-tls-report-test
		tests/tls-report-test.c
		tls-report.c
	)
	target_include_directories(smtp-tls-report-test PRIVATE
		${CMAKE_CURRENT_SOURCE_DIR}
	)
	target_link_libraries(smtp-tls-report-test PRIVATE
		bongoxpl
		bongoconnio
		bongoutil
		bongojson
		bongomsgapi
		bongocal
		bongotlsrpt
		GnuTLS::GnuTLS
	)
	if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
		target_link_options(smtp-tls-report-test PRIVATE
			"LINKER:--no-as-needed")
	endif()
	add_test(NAME smtp-tls-report COMMAND smtp-tls-report-test)
endif()
