2016-02-04 23:04:13 +01:00
|
|
|
# See src/google/protobuf/stubs/platform_macros.h for supported archs.
|
protobuf: fix detection of __atomic_*() built-ins
- Use the recently introduced BR2_TOOLCHAIN_HAS_ATOMIC boolean.
- Import an upstream patch to fix error handling when atomic operations
are not detected. Without this patch the build fails due to a syntax
error instead of showing the proper message.
- Add a patch to configure.ac to check if libatomic is needed and force
linking to it (we will attempt to submit this upstream).
- Disable build for SPARC64 because it fails due to a missing definition
of Atomic64.
On PowerPC, the __atomic_*() built-ins for 1-byte, 2-byte and 4-byte
types are available built-in. The corresponding built-ins for 8-byte
types, however, are implemented via libatomic, so requiring gcc >= 4.8.
In Buildroot, to simplify things, it was decided to 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
same restriction applies to SPARC.
The build for SPARC64 breaks even using the master branch of protobuf
due to undefined references to some NoBarrier_Atomic*() functions.
Signed-off-by: Henrique Marks <henrique.marks@datacom.ind.br>
Signed-off-by: Carlos Santos <casantos@datacom.ind.br>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-02-17 18:43:01 +01:00
|
|
|
#
|
|
|
|
# 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.
|
|
|
|
#
|
2016-02-04 23:04:13 +01:00
|
|
|
# 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
|
protobuf: fix detection of __atomic_*() built-ins
- Use the recently introduced BR2_TOOLCHAIN_HAS_ATOMIC boolean.
- Import an upstream patch to fix error handling when atomic operations
are not detected. Without this patch the build fails due to a syntax
error instead of showing the proper message.
- Add a patch to configure.ac to check if libatomic is needed and force
linking to it (we will attempt to submit this upstream).
- Disable build for SPARC64 because it fails due to a missing definition
of Atomic64.
On PowerPC, the __atomic_*() built-ins for 1-byte, 2-byte and 4-byte
types are available built-in. The corresponding built-ins for 8-byte
types, however, are implemented via libatomic, so requiring gcc >= 4.8.
In Buildroot, to simplify things, it was decided to 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
same restriction applies to SPARC.
The build for SPARC64 breaks even using the master branch of protobuf
due to undefined references to some NoBarrier_Atomic*() functions.
Signed-off-by: Henrique Marks <henrique.marks@datacom.ind.br>
Signed-off-by: Carlos Santos <casantos@datacom.ind.br>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2016-02-17 18:43:01 +01:00
|
|
|
default y if BR2_TOOLCHAIN_HAS_ATOMIC
|
|
|
|
depends on !BR2_sparc64 # missing definition of Atomic64
|
2016-02-04 23:04:13 +01:00
|
|
|
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
|
2016-08-27 02:17:03 +02:00
|
|
|
depends on BR2_USE_MMU # fork()
|
2016-02-04 23:04:13 +01:00
|
|
|
|
2012-03-15 09:51:27 +01:00
|
|
|
config BR2_PACKAGE_PROTOBUF
|
|
|
|
bool "protobuf"
|
|
|
|
depends on BR2_INSTALL_LIBSTDCPP
|
2013-10-10 09:23:18 +02:00
|
|
|
depends on BR2_TOOLCHAIN_HAS_THREADS
|
2016-02-04 23:04:13 +01:00
|
|
|
depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS
|
2015-08-18 21:23:18 +02:00
|
|
|
depends on !BR2_STATIC_LIBS
|
2012-03-15 09:51:27 +01:00
|
|
|
help
|
|
|
|
Protocol buffers are Google's language-neutral, platform-neutral,
|
|
|
|
extensible mechanism for serializing structured data.
|
|
|
|
|
2015-05-21 12:57:54 +02:00
|
|
|
https://developers.google.com/protocol-buffers
|
2012-03-15 09:51:27 +01:00
|
|
|
|
2015-08-18 21:23:18 +02:00
|
|
|
comment "protobuf needs a toolchain w/ C++, threads, dynamic library"
|
|
|
|
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \
|
|
|
|
|| BR2_STATIC_LIBS
|
2016-02-04 23:04:13 +01:00
|
|
|
depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS
|