diff --git a/octa/platform.h b/octa/platform.h new file mode 100644 index 0000000..45d9b56 --- /dev/null +++ b/octa/platform.h @@ -0,0 +1,72 @@ +/* Platform specific definitions for OctaSTD. + * + * This file is part of OctaSTD. See COPYING.md for futher information. + */ + +#ifndef OCTA_PLATFORM_H +#define OCTA_PLATFORM_H + +#if defined(WIN32) || defined(_WIN32) || (defined(__WIN32) && !defined(__CYGWIN__)) +# define OCTA_PLATFORM_WIN32 1 +# if defined(WIN64) || defined(_WIN64) +# define OCTA_PLATFORM_WIN64 1 +# endif +#else +# define OCTA_PLATFORM_POSIX 1 +# if defined(__linux__) +# define OCTA_PLATFORM_LINUX 1 +# endif +# if defined(__APPLE__) +# define OCTA_PLATFORM_OSX 1 +# endif +# if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) +# define OCTA_PLATFORM_FREEBSD 1 +# define OCTA_PLATFORM_BSD 1 +# endif +# if defined(__NetBSD__) +# define OCTA_PLATFORM_NETBSD 1 +# define OCTA_PLATFORM_BSD 1 +# endif +# if defined(__OpenBSD__) +# define OCTA_PLATFORM_OPENBSD 1 +# define OCTA_PLATFORM_BSD 1 +# endif +# if defined(__DragonFly__) +# define OCTA_PLATFORM_DRAGONFLYBSD 1 +# define OCTA_PLATFORM_BSD 1 +# endif +# if defined(sun) || defined(__sun) +# define OCTA_PLATFORM_SOLARIS 1 +# endif +#endif + +#if defined(__clang__) +# define OCTA_TOOLCHAIN_CLANG 1 +#endif + +#if defined(__GNUC__) +# define OCTA_TOOLCHAIN_GNU 1 +#endif + +#if defined(_MSC_VER) +# define OCTA_TOOLCHAIN_MSVC 1 +#endif + +#define OCTA_ENDIAN_LIL 1234 +#define OCTA_ENDIAN_BIG 4321 + +#ifdef OCTA_PLATFORM_LINUX +# include +# define OCTA_BYTE_ORDER __BYTE_ORDER +#else +# if defined(__BIG_ENDIAN__) || defined(__ARMEB__) || defined(__THUMBEB__) || \ + defined(__AARCH64EB__) || defined(__MIPSEB__) || defined(__MIPSEB) || \ + defined(_MIPSEB) || defined(__ppc__) || defined(__POWERPC__) || \ + defined(_M_PPC) || defined(__sparc__) +# define OCTA_BYTE_ORDER OCTA_ENDIAN_BIG +# else +# define OCTA_BYTE_ORDER OCTA_ENDIAN_LIL +# endif +#endif + +#endif \ No newline at end of file