config BR2_PACKAGE_THRIFT
	bool "thrift"
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_USE_WCHAR
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on BR2_ARCH_HAS_ATOMICS
	depends on BR2_PACKAGE_BOOST_ARCH_SUPPORTS
	select BR2_PACKAGE_BOOST
	select BR2_PACKAGE_LIBEVENT
	select BR2_PACKAGE_OPENSSL
	select BR2_PACKAGE_ZLIB
	help
	  The Apache Thrift software framework, for scalable cross-language
	  services development, combines a software stack with a
	  code generation engine to build services that work
	  efficiently and seamlessly between C++, Java, Python, PHP, Ruby,
	  Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk,
	  OCaml and Delphi and other languages.

	  http://thrift.apache.org/

comment "thrift needs a toolchain w/ C++, wchar, threads"
	depends on BR2_ARCH_HAS_ATOMICS
	depends on BR2_PACKAGE_BOOST_ARCH_SUPPORTS
	depends on !BR2_USE_WCHAR || \
		!BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP
