summaryrefslogtreecommitdiff
path: root/recipes/monotone/files/cryptopp-endianness.patch
blob: 5d52b079bbb25bdff9683835355d71df13373b14 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
--- monotone-0.20/.pc/cryptopp-endianness.patch/cryptopp/config.h	2005-07-05 22:56:31.000000000 -0700
+++ monotone-0.20/cryptopp/config.h	2005-07-12 12:01:02.626693397 -0700
@@ -5,15 +5,28 @@
 
 // ***************** Important Settings ********************
 
-// define this if running on a big-endian CPU
-#if !defined(IS_LITTLE_ENDIAN) && (defined(__BIG_ENDIAN__) || defined(__sparc) || defined(__sparc__) || defined(__hppa__) || defined(__mips__) || (defined(__MWERKS__) && !defined(__INTEL__)))
-#	define IS_BIG_ENDIAN
-#endif
-
-// define this if running on a little-endian CPU
-// big endian will be assumed if IS_LITTLE_ENDIAN is not defined
-#ifndef IS_BIG_ENDIAN
-#	define IS_LITTLE_ENDIAN
+// this is GCC specific, but it is safe - the original version
+// of this file defaulted to little endian without warning...
+// The code will error out if an attempt is made to define
+// IS_LITTLE_ENDIAN or IS_BIG_ENDIAN elsewhere
+#ifndef __BYTE_ORDER
+#  include <endian.h>
+#  ifndef __BYTE_ORDER
+#    error cryptopp needs the correct byte order from the compiler
+#  endif
+#endif
+#if defined(IS_LITTLE_ENDIAN) || defined(IS_BIG_ENDIAN)
+   // It doesn't work to define this on the command line, at least
+   // with the original version
+#  error cryptopp - unexpected endianness definition
+#endif
+
+#if defined(__LITTLE_ENDIAN) && __BYTE_ORDER == __LITTLE_ENDIAN
+#  define IS_LITTLE_ENDIAN
+#elif defined(__BIG_ENDIAN) && __BYTE_ORDER == __BIG_ENDIAN
+#  define IS_BIG_ENDIAN
+#else
+#  error cryptopp - unknown endianness
 #endif
 
 // define this if you want to disable all OS-dependent features,