# See src/google/protobuf/stubs/platform_macros.h for supported archs.
#
# On PowerPC, the __atomic_*() built-ins for 1-byte, 2-byte and 4-byte
# types are available built-in. However, the __atomic_*() built-ins for
# 8-byte types is implemented via libatomic, so only available since gcc
# 4.8.
#
# In Buildroot, to simplify things, we've decided to simply require gcc
# 4.8 as soon as the architectures has at least one __atomic_*() built-in
# variant that requires libatomic.
#
# Since protobuf most likely only uses the 1, 2 and 4-byte variants, it
# *could* technically build with gcc 4.7. This is probably not a big deal,
# and we can live with requiring gcc 4.8 on PowerPC to build protobuf.
#
# host-protobuf only builds on certain architectures
config BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS
	bool
	default y if BR2_arm
	default y if BR2_i386
	default y if BR2_mipsel
	default y if BR2_x86_64
	default y if BR2_sparc64
	default y if BR2_TOOLCHAIN_HAS_ATOMIC
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on BR2_USE_MMU # fork()
	depends on !BR2_TOOLCHAIN_HAS_BINUTILS_BUG_21464

config BR2_PACKAGE_PROTOBUF
	bool "protobuf"
	depends on BR2_INSTALL_LIBSTDCPP
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
	depends on !BR2_STATIC_LIBS
	help
	  Protocol buffers are Google's language-neutral,
	  platform-neutral, extensible mechanism for serializing
	  structured data.

	  https://developers.google.com/protocol-buffers

comment "protobuf needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.8"
	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \
		|| BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
	depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS
