Both clang and GCC define endianness as builtin defines.
Gbp-Pq: Topic porting
Gbp-Pq: Name Use-compiler-macros-to-detect-big-endian.patch
#define PRIaddress PRIu64
#define PRIoffset PRIzx
+#ifndef WABT_BIG_ENDIAN
+# if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+# define WABT_BIG_ENDIAN 1
+# elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+# define WABT_BIG_ENDIAN 0
+# endif
+#endif
+
namespace wabt {
#if WABT_BIG_ENDIAN
inline void MemcpyEndianAware(void *dst, const void *src, size_t dsize, size_t ssize, size_t doff, size_t soff, size_t len) {
"# define MEM_ACCESS_REF(mem, addr) (char*) addr\n"
"#endif\n"
"\n"
+"#ifndef WABT_BIG_ENDIAN\n"
+"# if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__\n"
+"# define WABT_BIG_ENDIAN 1\n"
+"# elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__\n"
+"# define WABT_BIG_ENDIAN 0\n"
+"# endif\n"
+"#endif\n"
+"\n"
"#if WABT_BIG_ENDIAN\n"
"static inline void load_data(void *dest, const void *src, size_t n) {\n"
" size_t i = 0;\n"
# define MEM_ACCESS_REF(mem, addr) (char*) addr
#endif
+#ifndef WABT_BIG_ENDIAN
+# if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+# define WABT_BIG_ENDIAN 1
+# elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+# define WABT_BIG_ENDIAN 0
+# endif
+#endif
+
#if WABT_BIG_ENDIAN
static inline void load_data(void *dest, const void *src, size_t n) {
size_t i = 0;