take byte order from gcc if gcc has defined it
[musl] / include / endian.h
index 6e14716..41ca171 100644 (file)
@@ -5,7 +5,11 @@
 #define __BIG_ENDIAN 4321
 #define __PDP_ENDIAN 3412
 
+#if defined(__GNUC__) && defined(__BYTE_ORDER__)
+#define __BYTE_ORDER __BYTE_ORDER__
+#else
 #include <bits/endian.h>
+#endif
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 
 
 #include <stdint.h>
 
-static inline uint16_t __bswap16(uint16_t __x)
+#if __STDC_VERSION__ >= 199901L
+inline
+#endif
+static uint16_t __bswap16(uint16_t __x)
 {
        return __x<<8 | __x>>8;
 }
 
-static inline uint32_t __bswap32(uint32_t __x)
+#if __STDC_VERSION__ >= 199901L
+inline
+#endif
+static uint32_t __bswap32(uint32_t __x)
 {
        return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
 }
 
-static inline uint64_t __bswap64(uint64_t __x)
+#if __STDC_VERSION__ >= 199901L
+inline
+#endif
+static uint64_t __bswap64(uint64_t __x)
 {
-       return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
+       return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32);
 }
 
 #if __BYTE_ORDER == __LITTLE_ENDIAN