diff options
author | Jose <jose@zeroc.com> | 2016-06-08 16:37:00 +0200 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2016-06-08 16:37:00 +0200 |
commit | ade0180c7fec40374391686003fc84382540a294 (patch) | |
tree | 5e966783f14bc1ef5a634a420fe4fd5d78d59649 /cpp/include | |
parent | Fix binsuffix so that is only set of x86 builds (diff) | |
download | ice-ade0180c7fec40374391686003fc84382540a294.tar.bz2 ice-ade0180c7fec40374391686003fc84382540a294.tar.xz ice-ade0180c7fec40374391686003fc84382540a294.zip |
Rework endian/wordsize checks
Diffstat (limited to 'cpp/include')
-rw-r--r-- | cpp/include/IceUtil/Config.h | 107 |
1 files changed, 49 insertions, 58 deletions
diff --git a/cpp/include/IceUtil/Config.h b/cpp/include/IceUtil/Config.h index 5783d4fd133..ae7c6eec97a 100644 --- a/cpp/include/IceUtil/Config.h +++ b/cpp/include/IceUtil/Config.h @@ -15,7 +15,7 @@ // and fallback to architecture based checks. // // -#if defined(__GLIBC__) +#if defined(__linux) # include <endian.h> #elif defined(__APPLE__) # include <machine/endian.h> @@ -23,48 +23,43 @@ # include <sys/endian.h> #endif +#if (defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && (__BYTE_ORDER == __LITTLE_ENDIAN)) || \ + (defined(_BYTE_ORDER) && defined(_LITTLE_ENDIAN) && (_BYTE_ORDER == _LITTLE_ENDIAN)) -#if defined(__BYTE_ORDER) -# if defined(__LITTLE_ENDIAN) && (__BYTE_ORDER == __LITTLE_ENDIAN) -# define ICE_LITTLE_ENDIAN -# elif defined(__BIG_ENDIAN) && (__BYTE_ORDER == __BIG_ENDIAN) -# define ICE_BIG_ENDIAN -# endif -#elif defined(_BYTE_ORDER) -# if defined(_LITTLE_ENDIAN) && (_BYTE_ORDER == _LITTLE_ENDIAN) -# define ICE_LITTLE_ENDIAN -# elif defined(_BIG_ENDIAN) && (_BYTE_ORDER == _BIG_ENDIAN) -# define ICE_BIG_ENDIAN -# endif -#else -# if defined(__i386) || \ - defined(_M_IX86) || \ - defined(__x86_64) || \ - defined(_M_X64) || \ - defined(_M_IA64) || \ - defined(__alpha__) || \ - defined(__ARMEL__) || \ - defined(_M_ARM_FP) || \ - defined(__arm64) || \ - defined(__MIPSEL__) \ - -# define ICE_LITTLE_ENDIAN - -# elif defined(__sparc) || \ - defined(__sparc__) || \ - defined(__hppa) || \ - defined(__ppc__) || \ - defined(__powerpc) || \ - defined(_ARCH_COM) || \ - defined(__MIPSEB__) - -# define ICE_BIG_ENDIAN +# define ICE_LITTLE_ENDIAN -# else +#elif (defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && (__BYTE_ORDER == __BIG_ENDIAN)) || \ + (defined(_BYTE_ORDER) && defined(_BIG_ENDIAN) && (_BYTE_ORDER == _BIG_ENDIAN)) -# error "Unknown architecture" +# define ICE_BIG_ENDIAN + +#elif defined(__i386) || \ + defined(_M_IX86) || \ + defined(__x86_64) || \ + defined(_M_X64) || \ + defined(_M_IA64) || \ + defined(__alpha__) || \ + defined(__ARMEL__) || \ + defined(_M_ARM_FP) || \ + defined(__arm64) || \ + defined(__MIPSEL__) + +# define ICE_LITTLE_ENDIAN + +#elif defined(__sparc) || \ + defined(__sparc__) || \ + defined(__hppa) || \ + defined(__ppc__) || \ + defined(__powerpc) || \ + defined(_ARCH_COM) || \ + defined(__MIPSEB__) + +# define ICE_BIG_ENDIAN + +#else + +# error "Unknown architecture" -# endif #endif @@ -74,28 +69,24 @@ // #include <stdint.h> -#ifdef __WORDSIZE -# if (__WORDSIZE == 64) -# define ICE_64 -# else -# define ICE_32 -# endif -#else -# if defined(__sun) && (defined(__sparcv9) || defined(__x86_64)) || \ - defined(__linux) && defined(__x86_64) || \ - defined(__APPLE__) && defined(__x86_64) || \ - defined(__hppa) && defined(__LP64__) || \ - defined(_ARCH_COM) && defined(__64BIT__) || \ - defined(__alpha__) || \ - defined(_WIN64) +#if defined(__WORDSIZE) && (__WORDSIZE == 64) +# define ICE_64 +#elif defined(__WORDSIZE) && (__WORDSIZE == 32) +# define ICE_32 +#elif defined(__sun) && (defined(__sparcv9) || defined(__x86_64)) || \ + defined(__linux) && defined(__x86_64) || \ + defined(__APPLE__) && defined(__x86_64) || \ + defined(__hppa) && defined(__LP64__) || \ + defined(_ARCH_COM) && defined(__64BIT__) || \ + defined(__alpha__) || \ + defined(_WIN64) + +# define ICE_64 -# define ICE_64 - -# else +#else -# define ICE_32 +# define ICE_32 -# endif #endif // |