menuconfig BR2_PACKAGE_PINENTRY
	bool "pinentry"
	depends on BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS # libgpg-error
	depends on BR2_USE_MMU # libassuan
	select BR2_PACKAGE_LIBASSUAN
	select BR2_PACKAGE_LIBGPG_ERROR
	# At least one backend is needed to avoid build breakage
	select BR2_PACKAGE_PINENTRY_NCURSES if \
		!BR2_PACKAGE_PINENTRY_GTK2 && \
		!BR2_PACKAGE_PINENTRY_QT5
	help
	  A collection of simple PIN or pass-phrase entry dialogs

	  https://www.gnupg.org/related_software/pinentry/

if BR2_PACKAGE_PINENTRY

config BR2_PACKAGE_PINENTRY_NCURSES
	bool "pinentry-ncurses"
	select BR2_PACKAGE_NCURSES
	select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
	help
	  The pinentry-ncurses tool

config BR2_PACKAGE_PINENTRY_GTK2
	bool "pinentry-gtk2"
	depends on BR2_PACKAGE_XORG7
	depends on BR2_USE_WCHAR
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on BR2_USE_MMU
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # libgtk2 -> pango -> harfbuzz
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # libgtk2 -> pango -> harfbuzz
	select BR2_PACKAGE_LIBGTK2
	select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
	help
	  The pinentry-gtk2 tool

comment "pinentry-gtk2 needs X and a toolchain w/ wchar, threads, C++, gcc >= 4.8"
	depends on BR2_USE_MMU
	depends on BR2_TOOLCHAIN_HAS_SYNC_4
	depends on !BR2_PACKAGE_XORG7 || !BR2_USE_WCHAR || \
		!BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \
		!BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS

config BR2_PACKAGE_PINENTRY_QT5
	bool "pinentry-qt5"
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_USE_WCHAR
	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
	depends on !BR2_STATIC_LIBS
	select BR2_PACKAGE_QT5
	select BR2_PACKAGE_QT5BASE_GUI
	select BR2_PACKAGE_QT5BASE_WIDGETS
	help
	  The pinentry-qt5 tool

comment "pinentry-qt5 needs a toolchain w/ wchar, NPTL, C++, dynamic library"
	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \
		!BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS

endif
