diff options
Diffstat (limited to 'include')
-rwxr-xr-x | include/asterisk/endian.h | 54 |
1 files changed, 32 insertions, 22 deletions
diff --git a/include/asterisk/endian.h b/include/asterisk/endian.h index 66f796250..35d20f641 100755 --- a/include/asterisk/endian.h +++ b/include/asterisk/endian.h @@ -20,31 +20,41 @@ * Autodetect system endianess */ -#if defined( __OpenBSD__ ) -# include <machine/types.h> -# include <sys/endian.h> -#elif defined( __FreeBSD__ ) || defined( __NetBSD__ ) -# include <sys/types.h> -# include <sys/endian.h> -#elif defined( BSD ) && ( BSD >= 199103 ) || defined(__APPLE__) -# include <machine/endian.h> -#elif defined ( SOLARIS ) -# include <solaris-compat/compat.h> -#elif defined( __GNUC__ ) || defined( __GNU_LIBRARY__ ) -# include <endian.h> -#if !defined(__APPLE__) -# include <byteswap.h> -#endif -#elif defined( linux ) -# include <endian.h> +#ifdef SOLARIS +#include "solaris-compat/compat.h" #endif -#ifndef BYTE_ORDER -#define BYTE_ORDER __BYTE_ORDER -#endif +#ifndef __BYTE_ORDER +#ifdef __linux__ +#include <endian.h> +#elif defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__) +#if defined(__OpenBSD__) +#include <machine/types.h> +#endif /* __OpenBSD__ */ +#include <machine/endian.h> +#define __BYTE_ORDER BYTE_ORDER +#define __LITTLE_ENDIAN LITTLE_ENDIAN +#define __BIG_ENDIAN BIG_ENDIAN +#else +#ifdef __LITTLE_ENDIAN__ +#define __BYTE_ORDER __LITTLE_ENDIAN +#endif /* __LITTLE_ENDIAN */ + +#if defined(i386) || defined(__i386__) +#define __BYTE_ORDER __LITTLE_ENDIAN +#endif /* defined i386 */ + +#if defined(sun) && defined(unix) && defined(sparc) +#define __BYTE_ORDER __BIG_ENDIAN +#endif /* sun unix sparc */ + +#endif /* linux */ + +#endif /* __BYTE_ORDER */ #ifndef __BYTE_ORDER -#error Endianess needs to be defined -#endif +#error Need to know endianess +#endif /* __BYTE_ORDER */ + #endif /* _ASTERISK_ENDIAN_H */ |