// SONIC ROBO BLAST 2 //----------------------------------------------------------------------------- // Copyright (C) 2014-2023 by Sonic Team Junior. // // This program is free software distributed under the // terms of the GNU General Public License, version 2. // See the 'LICENSE' file for more details. //----------------------------------------------------------------------------- /// \file endian.h /// \brief Endian detection #ifndef __ENDIAN__ #define __ENDIAN__ #if defined(SRB2_BIG_ENDIAN) || defined(SRB2_LITTLE_ENDIAN) // defined externally #else #if defined(__FreeBSD__) // on FreeBSD, _BIG_ENDIAN is a constant to compare // _BYTE_ORDER to, not a big-endianess flag #include #if _BYTE_ORDER == _BIG_ENDIAN #define SRB2_BIG_ENDIAN #else #define SRB2_LITTLE_ENDIAN #endif #elif defined(__BYTE_ORDER__) // defined by at least gcc and clang #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ #define SRB2_BIG_ENDIAN #else #define SRB2_LITTLE_ENDIAN #endif #else // check used in vanilla SRB2 (may work incorrectly if // _BIG_ENDIAN is used as on FreeBSD) #if defined(_BIG_ENDIAN) #define SRB2_BIG_ENDIAN #else #define SRB2_LITTLE_ENDIAN #endif #endif #endif #endif //__ENDIAN__