#ifndef OMNI_PLATFORM_H #define OMNI_PLATFORM_H /* * * COMPILER INFORMATION * */ #undef OMNI_CC_MSVC #undef OMNI_CC_GNU #if defined(_MSC_VER) #define OMNI_CC_MSVC #endif #if defined(__GNUC__) || defined(__clang__) #define OMNI_CC_GNU #endif #if !defined(OMNI_CC_GNU) && !defined(OMNI_CC_MSVC) #error "compiler not supported" #endif /* * * TARGET ARCHITECTURE INFORMATION * */ #undef OMNI_ARCH_X86 #undef OMNI_ARCH_ARM #undef OMNI_ARCH_64BIT #undef OMNI_ARCH_32BIT #if defined(__i386__) || defined(_M_IX86) #define OMNI_ARCH_X86 #define OMNI_ARCH_32BIT #endif #if defined(__x86_64__) || defined(_M_X64) #define OMNI_ARCH_X86 #define OMNI_ARCH_64BIT #endif #if defined(__arm__) || defined(_M_ARM) #define OMNI_ARCH_ARM #define OMNI_ARCH_32BIT #endif #if defined(__aarch64__) || defined(_M_ARM64) || defined(__arm64__) #define OMNI_ARCH_ARM #define OMNI_ARCH_64BIT #endif #if !defined(OMNI_ARCH_X86) && !defined(OMNI_ARCH_ARM) #error "target architecture is not supported" #endif /* * * TARGET OS INFORMATION * */ #undef OMNI_OS_WIN #undef OMNI_OS_LINUX #undef OMNI_OS_FREEBSD #undef OMNI_OS_OSX #if defined(_WIN32) || defined(_WIN64) #define OMNI_OS_WIN #endif #if defined(__linux__) #define OMNI_OS_LINUX #define OMNI_OS_UNIX #endif #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) #define OMNI_OS_FREEBSD #define OMNI_OS_UNIX #endif #if defined(__APPLE__) && defined(__MACH__) #define OMNI_OS_OSX #define OMNI_OS_UNIX #endif #if !defined(OMNI_OS_UNIX) && !defined(OMNI_OS_WIN) #error "target os not supported" #endif #endif