a2825382a2
This was not noticed until now because: 1/ The older Blackfin toolchain doesn't have libatomic, so it didn't provide the atomic operations that protobuf needs, so protobuf was never built. 2/ The ARM Cortex-M toolchain is static-only, and protobuf requires dynamic library support. So it's only with the new Blackfin toolchain, which is based on gcc 6.x (and therefore provides libatomic) and is FDPIC-based (and therefore has dynamic library support) that this problem appeared. Since protobuf already has a BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS option, we use it to add the BR2_USE_MMU dependency (which is architecture related), which avoids the need to propagate the dependency. Fixes: http://autobuild.buildroot.net/results/2c1/2c151e84d7854a810465dc16869023e0ada2d586/ Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks> [Thomas: - move the BR2_USE_MMU dependency under BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS and remove the propagation to reverse dependencies of protobuf, since they already depend on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS. - improve commit log.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
48 lines
1.8 KiB
Plaintext
48 lines
1.8 KiB
Plaintext
# 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.
|
|
#
|
|
# The SPARC64 build fails due to a missing definition of Atomic64. This
|
|
# has been fixed on the master branch but the build still breaks due to
|
|
# undefined references to internal NoBarrier_Atomic*() functions.
|
|
#
|
|
# 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_TOOLCHAIN_HAS_ATOMIC
|
|
depends on !BR2_sparc64 # missing definition of Atomic64
|
|
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
|
|
depends on BR2_USE_MMU # fork()
|
|
|
|
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_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"
|
|
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \
|
|
|| BR2_STATIC_LIBS
|
|
depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS
|