Since cbee1bfb34274668a05995b9d4c78ddec9e5ea4c endian.h is unconditionally used if available.
glibc has byte order defines with two leading underscores. OpenBSD has private defines with a single leading underscore in machine/endian.h and public defines in endian.h with no underscore. The code under the endian.h block did not check if symbols were defined before equating them so '#if __BYTE_ORDER == __LITTLE_ENDIAN' would turn into '#if 0 == 0' which is always true. Signed-off-by: Jonathan Gray <j...@jsg.id.au> Fixes: cbee1bfb342 ("meson/configure: detect endian.h instead of trying to guess when it's available") --- src/util/u_endian.h | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/util/u_endian.h b/src/util/u_endian.h index 6bbae3c444c..3f76f340837 100644 --- a/src/util/u_endian.h +++ b/src/util/u_endian.h @@ -30,10 +30,20 @@ #ifdef HAVE_ENDIAN_H #include <endian.h> -#if __BYTE_ORDER == __LITTLE_ENDIAN +/* glibc */ +#if defined(__BYTE_ORDER) && (__BYTE_ORDER == __LITTLE_ENDIAN) # define UTIL_ARCH_LITTLE_ENDIAN 1 # define UTIL_ARCH_BIG_ENDIAN 0 -#elif __BYTE_ORDER == __BIG_ENDIAN +#elif defined(__BYTE_ORDER) && (__BYTE_ORDER == __BIG_ENDIAN) +# define UTIL_ARCH_LITTLE_ENDIAN 0 +# define UTIL_ARCH_BIG_ENDIAN 1 +#endif + +/* OpenBSD */ +#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 @@ -60,8 +70,8 @@ # define UTIL_ARCH_BIG_ENDIAN 1 #endif -#elif defined(__OpenBSD__) || defined(__NetBSD__) || \ - defined(__FreeBSD__) || defined(__DragonFly__) +#elif defined(__NetBSD__) || defined(__FreeBSD__) || \ + defined(__DragonFly__) #include <sys/types.h> #include <machine/endian.h> -- 2.24.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev