X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=blobdiff_plain;f=src%2Futil%2Fu_endian.h;h=d9ead69a4a491694e60047da1769ee92cd52b159;hp=7ec51380ffaef7c046fe36c8298a6e584bcbc60f;hb=7eab6845e9dd49f0ef0bf9a7d986aaf685e77981;hpb=37e54736a7bab3397e316ae4493c2e3d4aebfa5e diff --git a/src/util/u_endian.h b/src/util/u_endian.h index 7ec51380ffa..d9ead69a4a4 100644 --- a/src/util/u_endian.h +++ b/src/util/u_endian.h @@ -30,45 +30,69 @@ #ifdef HAVE_ENDIAN_H #include -#if __BYTE_ORDER == __LITTLE_ENDIAN -# define PIPE_ARCH_LITTLE_ENDIAN -#elif __BYTE_ORDER == __BIG_ENDIAN -# define PIPE_ARCH_BIG_ENDIAN +/* glibc */ +#if defined(__BYTE_ORDER) && (__BYTE_ORDER == __LITTLE_ENDIAN) +# define UTIL_ARCH_LITTLE_ENDIAN 1 +# define UTIL_ARCH_BIG_ENDIAN 0 +#elif defined(__BYTE_ORDER) && (__BYTE_ORDER == __BIG_ENDIAN) +# define UTIL_ARCH_LITTLE_ENDIAN 0 +# define UTIL_ARCH_BIG_ENDIAN 1 +#endif + +#if defined(BYTE_ORDER) && (BYTE_ORDER == LITTLE_ENDIAN) +# define UTIL_ARCH_LITTLE_ENDIAN 1 +# define UTIL_ARCH_BIG_ENDIAN 0 +#elif defined(BYTE_ORDER) && (BYTE_ORDER == BIG_ENDIAN) +# define UTIL_ARCH_LITTLE_ENDIAN 0 +# define UTIL_ARCH_BIG_ENDIAN 1 #endif #elif defined(__APPLE__) #include #if __DARWIN_BYTE_ORDER == __DARWIN_LITTLE_ENDIAN -# define PIPE_ARCH_LITTLE_ENDIAN +# define UTIL_ARCH_LITTLE_ENDIAN 1 +# define UTIL_ARCH_BIG_ENDIAN 0 #elif __DARWIN_BYTE_ORDER == __DARWIN_BIG_ENDIAN -# define PIPE_ARCH_BIG_ENDIAN +# define UTIL_ARCH_LITTLE_ENDIAN 0 +# define UTIL_ARCH_BIG_ENDIAN 1 #endif #elif defined(__sun) #include #if defined(_LITTLE_ENDIAN) -# define PIPE_ARCH_LITTLE_ENDIAN +# define UTIL_ARCH_LITTLE_ENDIAN 1 +# define UTIL_ARCH_BIG_ENDIAN 0 #elif defined(_BIG_ENDIAN) -# define PIPE_ARCH_BIG_ENDIAN +# define UTIL_ARCH_LITTLE_ENDIAN 0 +# define UTIL_ARCH_BIG_ENDIAN 1 #endif -#elif defined(__OpenBSD__) || defined(__NetBSD__) || \ - defined(__FreeBSD__) || defined(__DragonFly__) +#elif defined(__NetBSD__) || defined(__FreeBSD__) || \ + defined(__DragonFly__) #include #include #if _BYTE_ORDER == _LITTLE_ENDIAN -# define PIPE_ARCH_LITTLE_ENDIAN +# define UTIL_ARCH_LITTLE_ENDIAN 1 +# define UTIL_ARCH_BIG_ENDIAN 0 #elif _BYTE_ORDER == _BIG_ENDIAN -# define PIPE_ARCH_BIG_ENDIAN +# define UTIL_ARCH_LITTLE_ENDIAN 0 +# define UTIL_ARCH_BIG_ENDIAN 1 #endif -#elif defined(_WIN32) +#elif defined(_WIN32) || defined(ANDROID) -#define PIPE_ARCH_LITTLE_ENDIAN +#define UTIL_ARCH_LITTLE_ENDIAN 1 +#define UTIL_ARCH_BIG_ENDIAN 0 + +#endif +#if !defined(UTIL_ARCH_LITTLE_ENDIAN) || !defined(UTIL_ARCH_BIG_ENDIAN) +# error "UTIL_ARCH_LITTLE_ENDIAN and/or UTIL_ARCH_BIG_ENDIAN were unset." +#elif UTIL_ARCH_LITTLE_ENDIAN == UTIL_ARCH_BIG_ENDIAN +# error "UTIL_ARCH_LITTLE_ENDIAN and UTIL_ARCH_BIG_ENDIAN must not both be 1 or 0." #endif #endif