config BR2_PACKAGE_POCO_ARCH_SUPPORTS
	bool
	default y
	depends on !BR2_arc
	depends on !BR2_microblaze
	depends on !BR2_mipsel
	depends on !BR2_or1k
	depends on !BR2_RISCV_32
	depends on !BR2_xtensa

config BR2_PACKAGE_POCO
	bool "poco"
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_USE_WCHAR
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14
	# pthread_condattr_setclock
	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
	depends on !BR2_STATIC_LIBS # dlopen()
	depends on BR2_PACKAGE_POCO_ARCH_SUPPORTS
	select BR2_PACKAGE_ZLIB
	select BR2_PACKAGE_PCRE
	help
	  The C++ Portable Components Libraries

	  http://pocoproject.org

if BR2_PACKAGE_POCO

comment "poco components"

config BR2_PACKAGE_POCO_JSON
	bool "json"

config BR2_PACKAGE_POCO_XML
	bool "xml"
	select BR2_PACKAGE_EXPAT

config BR2_PACKAGE_POCO_UTIL
	bool "util"
	select BR2_PACKAGE_POCO_XML

config BR2_PACKAGE_POCO_NET
	bool "net"

config BR2_PACKAGE_POCO_CRYPTO
	bool "crypto"
	select BR2_PACKAGE_OPENSSL

config BR2_PACKAGE_POCO_NETSSL_OPENSSL
	bool "netssl_openssl"
	select BR2_PACKAGE_POCO_NET
	select BR2_PACKAGE_POCO_CRYPTO
	select BR2_PACKAGE_POCO_UTIL
	select BR2_PACKAGE_OPENSSL

config BR2_PACKAGE_POCO_ZIP
	bool "zip"
	select BR2_PACKAGE_POCO_XML
	select BR2_PACKAGE_POCO_NET
	select BR2_PACKAGE_POCO_UTIL

config BR2_PACKAGE_POCO_CPP_PARSER
	bool "cpp_parser"

config BR2_PACKAGE_POCO_PDF
	bool "pdf"
	select BR2_PACKAGE_POCO_JSON
	select BR2_PACKAGE_POCO_UTIL
	select BR2_PACKAGE_POCO_XML

config BR2_PACKAGE_POCO_REDIS
	bool "redis"
	select BR2_PACKAGE_POCO_NET

config BR2_PACKAGE_POCO_MONGODB
	bool "mongodb"
	select BR2_PACKAGE_POCO_NET

config BR2_PACKAGE_POCO_DATA
	bool

config BR2_PACKAGE_POCO_DATA_SQLITE
	bool "sqlite"
	select BR2_PACKAGE_POCO_DATA
	select BR2_PACKAGE_SQLITE

config BR2_PACKAGE_POCO_DATA_MYSQL
	bool "mysql"
	depends on BR2_USE_MMU # mysql
	select BR2_PACKAGE_POCO_DATA
	select BR2_PACKAGE_MYSQL

config BR2_PACKAGE_POCO_JWT
	bool "jwt"
	select BR2_PACKAGE_POCO_JSON
	select BR2_PACKAGE_POCO_CRYPTO

endif # BR2_PACKAGE_POCO

comment "poco needs a toolchain w/ wchar, NPTL, C++, dynamic library, gcc >= 5 w/ C++14"
	depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP \
		|| !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \
		|| !BR2_TOOLCHAIN_GCC_AT_LEAST_5
	depends on BR2_PACKAGE_POCO_ARCH_SUPPORTS
