#pragma once

/**
 * GNU and FreeBSD have various ways to express the
 * endianess but none of them is similiar enough. This
 * will create two defines that allows to decide on the
 * endian. The following will be defined to either 0 or
 * 1 at the end of the file.
 *
 *      OSMO_IS_LITTLE_ENDIAN
 *      OSMO_IS_BIG_ENDIAN
 *
 */

#if defined(__FreeBSD__)
#include <sys/endian.h>
        #if BYTE_ORDER == LITTLE_ENDIAN
                #define OSMO_IS_LITTLE_ENDIAN           1
                #define OSMO_IS_BIG_ENDIAN              0
        #elif BYTE_ORDER == BIG_ENDIAN
                #define OSMO_IS_LITTLE_ENDIAN           0
                #define OSMO_IS_BIG_ENDIAN              1
        #else
                #error "Unknown endian"
        #endif
#elif defined(__APPLE__)
#include <machine/endian.h>
	#if defined(__DARWIN_LITTLE_ENDIAN)
		#define OSMO_IS_LITTLE_ENDIAN		1
		#define OSMO_IS_BIG_ENDIAN		0
	#elif defined(__DARWIN_BIG_ENDIAN)
		#define OSMO_IS_LITTLE_ENDIAN		0
		#define OSMO_IS_BIG_ENDIAN		1
	#else
		#error "Unknown endian"
	#endif
#elif defined(__linux__)
#include <endian.h>
        #if __BYTE_ORDER == __LITTLE_ENDIAN
                #define OSMO_IS_LITTLE_ENDIAN           1
                #define OSMO_IS_BIG_ENDIAN              0
        #elif __BYTE_ORDER == __BIG_ENDIAN
                #define OSMO_IS_LITTLE_ENDIAN           0
                #define OSMO_IS_BIG_ENDIAN              1
        #else
                #error "Unknown endian"
        #endif
#else
	/* let's try to rely on the compiler.  GCC and CLANG/LLVM seem
	 * to support this ... */
	#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
		#define OSMO_IS_LITTLE_ENDIAN           1
		#define OSMO_IS_BIG_ENDIAN              0
	#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
		#define OSMO_IS_LITTLE_ENDIAN           0
		#define OSMO_IS_BIG_ENDIAN              1
	#else
		#error "Unknown endian"
	#endif
#endif

