Christian Heimes added the comment: I think it's not enough as some platforms prefix/suffix the macros with dashes. The values must be compared to BYTE_ORDER iff the macro is defined. too. I've checked some machines of the Snakebite network and came up with this macro cascade:
/* * The endianess (byte order) can be defined in several ways. Some platforms * define either LITTLE_ENDIAN or BIG_ENDIAN while other platforms define * both and require comparison to BYTE_ORDER. Sometimes the macros are * prefixed or suffixed with one or two dashes, too. SPAM seems to be an * alias of __SPAM an all platforms that have SPAM. * The endian check can't be handled in a configure step as it would break * Apple's universal builds. */ #if defined(__BYTE_ORDER) # if defined(__BIG_ENDIAN) && __BYTE_ORDER == __BIG_ENDIAN # define PY_IS_BIG_ENDIAN 1 # elif defined(__LITTLE_ENDIAN) && __BYTE_ORDER == __LITTLE_ENDIAN # define PY_IS_LITTLE_ENDIAN 1 # else # error "__BYTE_ORDER not in (__BIG_ENDIAN, __LITTLE_ENDIAN)" # endif #elif defined(__BIG_ENDIAN) && !defined(__LITTLE_ENDIAN) # define PY_IS_BIG_ENDIAN 1 #elif defined(__LITTLE_ENDIAN) && !defined(__BIG_ENDIAN) # define PY_IS_LITTLE_ENDIAN 1 /* and know the same block with just one dash as prefix */ #elif defined(_BYTE_ORDER) # if defined(_BIG_ENDIAN) && _BYTE_ORDER == _BIG_ENDIAN # define PY_IS_BIG_ENDIAN 1 # elif defined(_LITTLE_ENDIAN) && _BYTE_ORDER == _LITTLE_ENDIAN # define PY_IS_LITTLE_ENDIAN 1 # else # error "_BYTE_ORDER not in (_BIG_ENDIAN, _LITTLE_ENDIAN)" # endif #elif defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN) # define PY_IS_BIG_ENDIAN 1 #elif defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN) # define PY_IS_LITTLE_ENDIAN 1 /* extra apple */ #elif defined(__APPLE__) # if defined(__BIG_ENDIAN__) # define PY_IS_BIG_ENDIAN 1 # elif defined(__LITTLE_ENDIAN__) # define PY_IS_LITTLE_ENDIAN 1 # else # error "__APPLE__ but neither __BIG_ENDIAN__ nor __LITTLE_ENDIAN__" # endif /* Windows */ #elif defined(WIN32) # define PY_IS_LITTLE_ENDIAN 1 #else # error "Unable to detect endianess" #endif ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue16166> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com