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_EFL
	bool "pinentry-efl"
	depends on BR2_PACKAGE_EFL
	depends on BR2_PACKAGE_XORG7
	select BR2_PACKAGE_EFL_X_XLIB
	help
	  The pinentry-efl tool

comment "pinentry-efl needs efl and X"
	depends on !BR2_PACKAGE_EFL || !BR2_PACKAGE_XORG7

config BR2_PACKAGE_PINENTRY_FLTK
	bool "pinentry-fltk"
	depends on BR2_USE_MMU # fltk
	depends on BR2_INSTALL_LIBSTDCPP # fltk
	depends on BR2_PACKAGE_XORG7 # fltk
	select BR2_PACKAGE_FLTK
	help
	  The pinentry-fltk tool

comment "pinentry-fltk needs X and a toolchain w/ C++"
	depends on BR2_USE_MMU
	depends on !BR2_PACKAGE_XORG7 || !BR2_INSTALL_LIBSTDCPP

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_HOST_GCC_AT_LEAST_5
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5
	depends on !BR2_arc
	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 host gcc >= 5.0, and a toolchain w/ wchar, NPTL, gcc >= 5.0, C++, dynamic library"
	depends on !BR2_arc
	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \
		!BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_TOOLCHAIN_GCC_AT_LEAST_5 || \
		BR2_STATIC_LIBS || !BR2_HOST_GCC_AT_LEAST_5

endif
