util: unbreak endian detection on OpenBSD

Since cbee1bfb34 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.

Fixes: cbee1bfb34 ("meson/configure: detect endian.h instead of trying to guess when it's available")
Signed-off-by: Jonathan Gray <jsg@jsg.id.au>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5630>
(cherry picked from commit 7eab6845e9)
This commit is contained in:
Jonathan Gray 2018-03-28 14:06:14 +11:00 committed by Eric Engestrom
parent 005f3a92e3
commit ad9b24b068
2 changed files with 14 additions and 5 deletions

View file

@ -1318,7 +1318,7 @@
"description": "util: unbreak endian detection on OpenBSD",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"master_sha": null,
"because_sha": "cbee1bfb34274668a05995b9d4c78ddec9e5ea4c"
},

View file

@ -30,10 +30,19 @@
#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
#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 +69,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>