about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFelix Geyer <debfx@fobos.de>2011-06-06 11:33:26 +0200
committeroy <Tom_Adams@web.de>2011-06-09 22:11:37 +0200
commit3d7bdaee8f1b21409acebef8f87259d01ed8d244 (patch)
tree180a53965e3a5c356240f80d520e7ac999af45ff
parentee50ab5beaae57da0bc1173878d0582801cc0823 (diff)
downloadzcatch-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.h31
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