summaryrefslogtreecommitdiffstats
path: root/omni/platform.h
diff options
context:
space:
mode:
Diffstat (limited to 'omni/platform.h')
-rw-r--r--omni/platform.h96
1 files changed, 96 insertions, 0 deletions
diff --git a/omni/platform.h b/omni/platform.h
new file mode 100644
index 0000000..593b79c
--- /dev/null
+++ b/omni/platform.h
@@ -0,0 +1,96 @@
+#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
+