diff --git a/include/Makefile.am b/include/Makefile.am index 30423c4..b40ac03 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -1,6 +1,7 @@ noinst_HEADERS = noinst_HEADERS += signal.h noinst_HEADERS += unistd.h +noinst_HEADERS += machine/endian.h noinst_HEADERS += sys/cdefs.h noinst_HEADERS += sys/queue.h noinst_HEADERS += sys/socket.h diff --git a/include/machine/endian.h b/include/machine/endian.h new file mode 100644 index 0000000..5ec39af --- /dev/null +++ b/include/machine/endian.h @@ -0,0 +1,40 @@ +/* + * Public domain + * machine/endian.h compatibility shim + */ + +#ifndef LIBCRYPTOCOMPAT_BYTE_ORDER_H_ +#define LIBCRYPTOCOMPAT_BYTE_ORDER_H_ + +#if defined(_WIN32) + +#define LITTLE_ENDIAN 1234 +#define BIG_ENDIAN 4321 +#define PDP_ENDIAN 3412 + +/* + * Use GCC and Visual Studio compiler defines to determine endian. + */ +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +#define BYTE_ORDER LITTLE_ENDIAN +#else +#define BYTE_ORDER BIG_ENDIAN +#endif + +#elif defined(__linux__) +#include + +#elif defined(__sun) || defined(_AIX) || defined(__hpux) +#include +#include + +#elif defined(__sgi) +#include +#include + +#else +#include_next + +#endif + +#endif diff --git a/include/sys/types.h b/include/sys/types.h index 109640b..d1c871f 100644 --- a/include/sys/types.h +++ b/include/sys/types.h @@ -30,4 +30,8 @@ typedef uint16_t u_int16_t; typedef uint32_t u_int32_t; typedef uint64_t u_int64_t; +#ifndef BYTE_ORDER +#include +#endif + #endif