add_executable(bongoimap
	imapd.c
	capabilities.c
	protocol.c
	enable.c
	utf8-mailbox.c
	append-message.c
	idle.c
	uidplus.c
	special-use.c
	list-extended.c
	literal.c
	binary.c
	copy.c
	event.c
	fetch.c
	progress.c
	store.c
	search.c
	search-result.c
	status.c
	quota.c
	session.c
	rfc822parse.c
	uid.c
)

target_link_libraries(bongoimap
	bongoxpl
	bongoconnio
	bongoutil
	bongojson
	bongomsgapi
	bongostreamio
	bongosasl
	GMime::GMime
)

install(TARGETS bongoimap DESTINATION ${SBIN_INSTALL_DIR})

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

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

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

	add_executable(imap-utf8-mailbox-test
		tests/utf8-mailbox-test.c
		utf8-mailbox.c
		${PROJECT_SOURCE_DIR}/src/libs/util/utf7mod.c
	)
	target_include_directories(imap-utf8-mailbox-test PRIVATE
		${CMAKE_CURRENT_SOURCE_DIR}
	)
	target_link_libraries(imap-utf8-mailbox-test
		GLib2::GLib2
	)
	add_test(NAME imap-utf8-mailbox COMMAND imap-utf8-mailbox-test)

	add_executable(imap-append-message-test
		tests/append-message-test.c
		append-message.c
	)
	target_include_directories(imap-append-message-test PRIVATE
		${CMAKE_CURRENT_SOURCE_DIR}
	)
	target_link_libraries(imap-append-message-test GLib2::GLib2)
	add_test(NAME imap-append-message COMMAND imap-append-message-test)

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

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

	add_executable(imap-special-use-test
		tests/special-use-test.c
		special-use.c
	)
	target_include_directories(imap-special-use-test PRIVATE
		${CMAKE_CURRENT_SOURCE_DIR}
	)
	add_test(NAME imap-special-use COMMAND imap-special-use-test)

	add_executable(imap-list-extended-test
		tests/list-extended-test.c
		list-extended.c
	)
	target_include_directories(imap-list-extended-test PRIVATE
		${CMAKE_CURRENT_SOURCE_DIR}
	)
	add_test(NAME imap-list-extended COMMAND imap-list-extended-test)

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

	add_executable(imap-search-result-test
		tests/search-result-test.c
		search-result.c
	)
	target_include_directories(imap-search-result-test PRIVATE
		${CMAKE_CURRENT_SOURCE_DIR}
	)
	add_test(NAME imap-search-result COMMAND imap-search-result-test)

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

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

	add_executable(imap-binary-test
		tests/binary-test.c
		binary.c
	)
	target_include_directories(imap-binary-test PRIVATE
		${CMAKE_CURRENT_SOURCE_DIR}
	)
	target_link_libraries(imap-binary-test GMime::GMime)
	add_test(NAME imap-binary COMMAND imap-binary-test)
endif()
