@ -38,92 +38,27 @@
// http://www.agner.org/optimize/calling_conventions.pdf
// or with gcc, run: "echo | gcc -E -dM -"
# if defined(_M_X64) || defined(__x86_64__)
# define GOOGLE_PROTOBUF_HOST_ARCH_X64 1
# define GOOGLE_PROTOBUF_HOST_ARCH_64_BIT 1
# define GOOGLE_PROTOBUF_HOST_CAN_READ_UNALIGNED 1
# define GOOGLE_PROTOBUF_ARCH_X64 1
# define GOOGLE_PROTOBUF_ARCH_64_BIT 1
# elif defined(_M_IX86) || defined(__i386__)
# define GOOGLE_PROTOBUF_HOST_ARCH_IA32 1
# define GOOGLE_PROTOBUF_HOST_ARCH_32_BIT 1
# define GOOGLE_PROTOBUF_HOST_CAN_READ_UNALIGNED 1
# define GOOGLE_PROTOBUF_ARCH_IA32 1
# define GOOGLE_PROTOBUF_ARCH_32_BIT 1
# elif defined(__ARMEL__)
# define GOOGLE_PROTOBUF_HOST_ARCH_ARM 1
# define GOOGLE_PROTOBUF_HOST_ARCH_32_BIT 1
// Some CPU-OS combinations allow unaligned access on ARM. We assume
// that unaligned accesses are not allowed unless the build system
// defines the CAN_USE_UNALIGNED_ACCESSES macro to be non-zero.
# if CAN_USE_UNALIGNED_ACCESSES
# define GOOGLE_PROTOBUF_HOST_CAN_READ_UNALIGNED 1
# endif
# define GOOGLE_PROTOBUF_ARCH_ARM 1
# define GOOGLE_PROTOBUF_ARCH_32_BIT 1
# elif defined(__MIPSEL__)
# define GOOGLE_PROTOBUF_HOST_ARCH_MIPS 1
# define GOOGLE_PROTOBUF_HOST_ARCH_32_BIT 1
# define GOOGLE_PROTOBUF_ARCH_MIPS 1
# define GOOGLE_PROTOBUF_ARCH_32_BIT 1
# elif defined(__pnacl__)
# define GOOGLE_PROTOBUF_ARCH_32_BIT 1
# else
# error Host architecture was not detected as supported by protobuf
# endif
// Target architecture detection. This may be set externally. If not, detect
// in the same way as the host architecture, that is, target the native
// environment as presented by the compiler.
# if !defined(GOOGLE_PROTOBUF_TARGET_ARCH_X64) && \
! defined ( GOOGLE_PROTOBUF_TARGET_ARCH_IA32 ) & & \
! defined ( GOOGLE_PROTOBUF_TARGET_ARCH_ARM ) & & \
! defined ( GOOGLE_PROTOBUF_TARGET_ARCH_MIPS )
# if defined(_M_X64) || defined(__x86_64__)
# define GOOGLE_PROTOBUF_TARGET_ARCH_X64 1
# elif defined(_M_IX86) || defined(__i386__)
# define GOOGLE_PROTOBUF_TARGET_ARCH_IA32 1
# elif defined(__ARMEL__)
# define GOOGLE_PROTOBUF_TARGET_ARCH_ARM 1
# elif defined(__MIPSEL__)
# define GOOGLE_PROTOBUF_TARGET_ARCH_MIPS 1
# else
# error Target architecture was not detected as supported by protobuf
# endif
# endif
// Check for supported combinations of host and target architectures.
# if defined(GOOGLE_PROTOBUF_TARGET_ARCH_IA32) && \
! defined ( GOOGLE_PROTOBUF_HOST_ARCH_IA32 )
# error Target architecture ia32 is only supported on ia32 host
# endif
# if defined(GOOGLE_PROTOBUF_TARGET_ARCH_X64) && \
! defined ( GOOGLE_PROTOBUF_HOST_ARCH_X64 )
# error Target architecture x64 is only supported on x64 host
# endif
# if (defined(GOOGLE_PROTOBUF_TARGET_ARCH_ARM) && \
! ( defined ( GOOGLE_PROTOBUF_HOST_ARCH_IA32 ) | | \
defined ( GOOGLE_PROTOBUF_HOST_ARCH_ARM ) ) )
# error Target architecture arm is only supported on arm and ia32 host
# endif
# if (defined(GOOGLE_PROTOBUF_TARGET_ARCH_MIPS) && \
! ( defined ( GOOGLE_PROTOBUF_HOST_ARCH_IA32 ) | | \
defined ( GOOGLE_PROTOBUF_HOST_ARCH_MIPS ) ) )
# error Target architecture mips is only supported on mips and ia32 host
# endif
// Define unaligned read for the target architectures supporting it.
# if defined(GOOGLE_PROTOBUF_TARGET_ARCH_X64) || \
defined ( GOOGLE_PROTOBUF_TARGET_ARCH_IA32 )
# define GOOGLE_PROTOBUF_TARGET_CAN_READ_UNALIGNED 1
# elif GOOGLE_PROTOBUF_TARGET_ARCH_ARM
// Some CPU-OS combinations allow unaligned access on ARM. We assume
// that unaligned accesses are not allowed unless the build system
// defines the CAN_USE_UNALIGNED_ACCESSES macro to be non-zero.
# if CAN_USE_UNALIGNED_ACCESSES
# define GOOGLE_PROTOBUF_TARGET_CAN_READ_UNALIGNED 1
# endif
# elif GOOGLE_PROTOBUF_TARGET_ARCH_MIPS
# else
# error Target architecture is not supported by protobuf
# endif
# if (defined(__APPLE__) && defined(__MACH__)) || \
defined ( __FreeBSD__ ) | | defined ( __OpenBSD__ )
# define GOOGLE_PROTOBUF_USING_BSD_ABI
# endif
# if defined(__APPLE__)
# define GOOGLE_PROTOBUF_OS_APPLE
# elif defined(__native_client__)
# define GOOGLE_PROTOBUF_OS_NACL
# endif
# endif // GOOGLE_PROTOBUF_PLATFORM_MACROS_H_