diff options
| author | Felix Geyer <debfx@fobos.de> | 2011-06-06 11:33:26 +0200 |
|---|---|---|
| committer | oy <Tom_Adams@web.de> | 2011-06-09 22:11:37 +0200 |
| commit | 3d7bdaee8f1b21409acebef8f87259d01ed8d244 (patch) | |
| tree | 180a53965e3a5c356240f80d520e7ac999af45ff | |
| parent | ee50ab5beaae57da0bc1173878d0582801cc0823 (diff) | |
| download | zcatch-3d7bdaee8f1b21409acebef8f87259d01ed8d244.tar.gz zcatch-3d7bdaee8f1b21409acebef8f87259d01ed8d244.zip | |
Use gcc endianness definitions when available.
detect.h has manual litte/big endian definitions for some architectures but many are missing. Instead of adding more manual definitions it's better to use the definitions of gcc when available.
| -rw-r--r-- | src/base/detect.h | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/src/base/detect.h b/src/base/detect.h index aa89470d..db99f479 100644 --- a/src/base/detect.h +++ b/src/base/detect.h @@ -76,35 +76,56 @@ #endif +/* use gcc endianness definitions when available */ +#ifdef __GNUC__ + #include <endian.h> + #if __BYTE_ORDER == __LITTLE_ENDIAN + #define CONF_ARCH_ENDIAN_LITTLE 1 + #elif __BYTE_ORDER == __BIG_ENDIAN + #define CONF_ARCH_ENDIAN_BIG 1 + #endif +#endif + + /* architectures */ #if defined(i386) || defined(__i386__) || defined(__x86__) || defined(CONF_PLATFORM_WIN32) #define CONF_ARCH_IA32 1 #define CONF_ARCH_STRING "ia32" - #define CONF_ARCH_ENDIAN_LITTLE 1 + #if !defined(CONF_ARCH_ENDIAN_LITTLE) && !defined(CONF_ARCH_ENDIAN_BIG) + #define CONF_ARCH_ENDIAN_LITTLE 1 + #endif #endif #if defined(__ia64__) #define CONF_ARCH_IA64 1 #define CONF_ARCH_STRING "ia64" - #define CONF_ARCH_ENDIAN_LITTLE 1 + #if !defined(CONF_ARCH_ENDIAN_LITTLE) && !defined(CONF_ARCH_ENDIAN_BIG) + #define CONF_ARCH_ENDIAN_LITTLE 1 + #endif #endif #if defined(__amd64__) || defined(__x86_64__) #define CONF_ARCH_AMD64 1 #define CONF_ARCH_STRING "amd64" - #define CONF_ARCH_ENDIAN_LITTLE 1 + #if !defined(CONF_ARCH_ENDIAN_LITTLE) && !defined(CONF_ARCH_ENDIAN_BIG) + #define CONF_ARCH_ENDIAN_LITTLE 1 + #endif #endif #if defined(__powerpc__) || defined(__ppc__) #define CONF_ARCH_PPC 1 #define CONF_ARCH_STRING "ppc" - #define CONF_ARCH_ENDIAN_BIG 1 + #if !defined(CONF_ARCH_ENDIAN_LITTLE) && !defined(CONF_ARCH_ENDIAN_BIG) + #define CONF_ARCH_ENDIAN_BIG 1 + #endif #endif #if defined(__sparc__) #define CONF_ARCH_SPARC 1 #define CONF_ARCH_STRING "sparc" - #define CONF_ARCH_ENDIAN_BIG 1 + #if !defined(CONF_ARCH_ENDIAN_LITTLE) && !defined(CONF_ARCH_ENDIAN_BIG) + #define CONF_ARCH_ENDIAN_BIG 1 + #endif #endif |