|
|
@@ -3,6 +3,8 @@
|
|
|
// Code licensed under the BSD License.
|
|
|
// http://www.anki3d.org/LICENSE
|
|
|
|
|
|
+// ====================== WARNING: THIS FILE IS AUTO-GENERATED BY THE BUILD SYSTEM. DON'T ALTER IT =====================
|
|
|
+
|
|
|
#pragma once
|
|
|
|
|
|
/// @addtogroup config
|
|
|
@@ -19,134 +21,130 @@
|
|
|
#define ANKI_DEBUG_SYMBOLS ${ANKI_DEBUG_SYMBOLS}
|
|
|
#define ANKI_OPTIMIZE ${ANKI_OPTIMIZE}
|
|
|
#define ANKI_TESTS ${ANKI_TESTS}
|
|
|
+#define ANKI_ENABLE_TRACE ${_ANKI_ENABLE_TRACE}
|
|
|
|
|
|
// Compiler
|
|
|
-#define ANKI_COMPILER_CLANG 0
|
|
|
-#define ANKI_COMPILER_GCC 1
|
|
|
-#define ANKI_COMPILER_MSVC 2
|
|
|
-
|
|
|
#if defined(__clang__)
|
|
|
-# define ANKI_COMPILER ANKI_COMPILER_CLANG
|
|
|
+# define ANKI_COMPILER_CLANG 1
|
|
|
+# define ANKI_COMPILER_GCC 0
|
|
|
+# define ANKI_COMPILER_MSVC 0
|
|
|
+# define ANKI_COMPILER_GCC_COMPATIBLE 1
|
|
|
# define ANKI_COMPILER_STR "clang " __VERSION__
|
|
|
#elif defined(__GNUC__) || defined(__GNUG__)
|
|
|
-# define ANKI_COMPILER ANKI_COMPILER_GCC
|
|
|
+# define ANKI_COMPILER_CLANG 0
|
|
|
+# define ANKI_COMPILER_GCC 1
|
|
|
+# define ANKI_COMPILER_MSVC 0
|
|
|
+# define ANKI_COMPILER_GCC_COMPATIBLE 1
|
|
|
# define ANKI_COMPILER_STR "gcc " __VERSION__
|
|
|
#elif defined(_MSC_VER)
|
|
|
-# define ANKI_COMPILER ANKI_COMPILER_MSVC
|
|
|
+# define ANKI_COMPILER_CLANG 0
|
|
|
+# define ANKI_COMPILER_GCC 0
|
|
|
+# define ANKI_COMPILER_MSVC 1
|
|
|
+# define ANKI_COMPILER_GCC_COMPATIBLE 0
|
|
|
# define ANKI_COMPILER_STR "MSVC " _ANKI_STR(_MSC_FULL_VER)
|
|
|
#else
|
|
|
# error Unknown compiler
|
|
|
#endif
|
|
|
|
|
|
// Operating system
|
|
|
-#define ANKI_OS_LINUX 1
|
|
|
-#define ANKI_OS_ANDROID 2
|
|
|
-#define ANKI_OS_MACOS 3
|
|
|
-#define ANKI_OS_IOS 4
|
|
|
-#define ANKI_OS_WINDOWS 5
|
|
|
-
|
|
|
#if defined(__WIN32__) || defined(_WIN32)
|
|
|
-# define ANKI_OS ANKI_OS_WINDOWS
|
|
|
+# define ANKI_OS_LINUX 0
|
|
|
+# define ANKI_OS_ANDROID 0
|
|
|
+# define ANKI_OS_MACOS 0
|
|
|
+# define ANKI_OS_IOS 0
|
|
|
+# define ANKI_OS_WINDOWS 1
|
|
|
+# define ANKI_OS_STR "Windows"
|
|
|
#elif defined(__APPLE_CC__)
|
|
|
-# if (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) \
|
|
|
- && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 40000) \
|
|
|
- || (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 40000)
|
|
|
-# define ANKI_OS ANKI_OS_IOS
|
|
|
+# if (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 40000) || (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 40000)
|
|
|
+# define ANKI_OS_LINUX 0
|
|
|
+# define ANKI_OS_ANDROID 0
|
|
|
+# define ANKI_OS_MACOS 0
|
|
|
+# define ANKI_OS_IOS 1
|
|
|
+# define ANKI_OS_WINDOWS 0
|
|
|
+# define ANKI_OS_STR "iOS"
|
|
|
# else
|
|
|
-# define ANKI_OS ANKI_OS_MACOS
|
|
|
+# define ANKI_OS_LINUX 0
|
|
|
+# define ANKI_OS_ANDROID 0
|
|
|
+# define ANKI_OS_MACOS 1
|
|
|
+# define ANKI_OS_IOS 0
|
|
|
+# define ANKI_OS_WINDOWS 0
|
|
|
+# define ANKI_OS_STR "MacOS"
|
|
|
# endif
|
|
|
#elif defined(__ANDROID__)
|
|
|
-# define ANKI_OS ANKI_OS_ANDROID
|
|
|
+# define ANKI_OS_LINUX 0
|
|
|
+# define ANKI_OS_ANDROID 1
|
|
|
+# define ANKI_OS_MACOS 0
|
|
|
+# define ANKI_OS_IOS 0
|
|
|
+# define ANKI_OS_WINDOWS 0
|
|
|
+# define ANKI_OS_STR "Android"
|
|
|
+#elif defined(__linux__)
|
|
|
+# define ANKI_OS_LINUX 1
|
|
|
+# define ANKI_OS_ANDROID 0
|
|
|
+# define ANKI_OS_MACOS 0
|
|
|
+# define ANKI_OS_IOS 0
|
|
|
+# define ANKI_OS_WINDOWS 0
|
|
|
+# define ANKI_OS_STR "Linux"
|
|
|
#else
|
|
|
-# define ANKI_OS ANKI_OS_LINUX
|
|
|
+# error Unknown OS
|
|
|
#endif
|
|
|
|
|
|
// POSIX system or not
|
|
|
-#if ANKI_OS == ANKI_OS_LINUX || ANKI_OS == ANKI_OS_ANDROID || ANKI_OS == ANKI_OS_MACOS || ANKI_OS == ANKI_OS_IOS
|
|
|
+#if ANKI_OS_LINUX || ANKI_OS_ANDROID || ANKI_OS_MACOS || ANKI_OS_IOS
|
|
|
# define ANKI_POSIX 1
|
|
|
#else
|
|
|
# define ANKI_POSIX 0
|
|
|
#endif
|
|
|
|
|
|
// CPU architecture
|
|
|
-#define ANKI_CPU_ARCH_INTEL 1
|
|
|
-#define ANKI_CPU_ARCH_ARM 2
|
|
|
-
|
|
|
-#if defined(__GNUC__)
|
|
|
+#if ANKI_COMPILER_GCC_COMPATIBLE
|
|
|
# if defined(__arm__)
|
|
|
-# define ANKI_CPU_ARCH ANKI_CPU_ARCH_ARM
|
|
|
-# define ANKI_CPU_ARCH_STR "ANKI_CPU_ARCH_ARM"
|
|
|
+# define ANKI_CPU_ARCH_X86 0
|
|
|
+# define ANKI_CPU_ARCH_ARM 1
|
|
|
# elif defined(__i386__) || defined(__amd64__)
|
|
|
-# define ANKI_CPU_ARCH ANKI_CPU_ARCH_INTEL
|
|
|
-# define ANKI_CPU_ARCH_STR "ANKI_CPU_ARCH_INTEL"
|
|
|
-# else
|
|
|
-# error "Unknown CPU arch"
|
|
|
+# define ANKI_CPU_ARCH_X86 1
|
|
|
+# define ANKI_CPU_ARCH_ARM 0
|
|
|
# endif
|
|
|
-#elif ANKI_COMPILER == ANKI_COMPILER_MSVC
|
|
|
+#elif ANKI_COMPILER_MSVC
|
|
|
# if defined(_M_ARM)
|
|
|
-# define ANKI_CPU_ARCH ANKI_CPU_ARCH_ARM
|
|
|
-# define ANKI_CPU_ARCH_STR "ANKI_CPU_ARCH_ARM"
|
|
|
+# define ANKI_CPU_ARCH_X86 0
|
|
|
+# define ANKI_CPU_ARCH_ARM 1
|
|
|
# elif defined(_M_X64) || defined(_M_IX86)
|
|
|
-# define ANKI_CPU_ARCH ANKI_CPU_ARCH_INTEL
|
|
|
-# define ANKI_CPU_ARCH_STR "ANKI_CPU_ARCH_INTEL"
|
|
|
-# else
|
|
|
-# error "Unknown CPU arch"
|
|
|
+# define ANKI_CPU_ARCH_X86 1
|
|
|
+# define ANKI_CPU_ARCH_ARM 0
|
|
|
# endif
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(ANKI_CPU_ARCH_X86) && ANKI_CPU_ARCH_X86
|
|
|
+# define ANKI_GPU_ARCH_STR "x86"
|
|
|
+#elif defined(ANKI_CPU_ARCH_ARM) && ANKI_CPU_ARCH_ARM
|
|
|
+# define ANKI_GPU_ARCH_STR "arm"
|
|
|
#else
|
|
|
-# error "Unsupported compiler"
|
|
|
+# error Unknown CPU arch
|
|
|
#endif
|
|
|
|
|
|
// SIMD
|
|
|
#define ANKI_ENABLE_SIMD ${_ANKI_ENABLE_SIMD}
|
|
|
|
|
|
-#define ANKI_SIMD_NONE 1
|
|
|
-#define ANKI_SIMD_SSE 2
|
|
|
-#define ANKI_SIMD_NEON 3
|
|
|
-
|
|
|
#if !ANKI_ENABLE_SIMD
|
|
|
-# define ANKI_SIMD ANKI_SIMD_NONE
|
|
|
-#else
|
|
|
-# if ANKI_CPU_ARCH == ANKI_CPU_ARCH_INTEL
|
|
|
-# define ANKI_SIMD ANKI_SIMD_SSE
|
|
|
-# elif ANKI_CPU_ARCH == ANKI_CPU_ARCH_ARM
|
|
|
-# define ANKI_SIMD ANKI_SIMD_NEON
|
|
|
-# endif
|
|
|
-#endif
|
|
|
-
|
|
|
-// Window backend
|
|
|
-#define ANKI_WINDOW_BACKEND_GLXX11 1
|
|
|
-#define ANKI_WINDOW_BACKEND_EGLX11 2
|
|
|
-#define ANKI_WINDOW_BACKEND_EGLFBDEV 3
|
|
|
-#define ANKI_WINDOW_BACKEND_MACOS 4
|
|
|
-#define ANKI_WINDOW_BACKEND_ANDROID 5
|
|
|
-#define ANKI_WINDOW_BACKEND_SDL 6
|
|
|
-#define ANKI_WINDOW_BACKEND ANKI_WINDOW_BACKEND_${ANKI_WINDOW_BACKEND}
|
|
|
-#define ANKI_WINDOW_BACKEND_STR "ANKI_WINDOW_BACKEND_${ANKI_WINDOW_BACKEND}"
|
|
|
-
|
|
|
-// OpenGL version
|
|
|
-#define ANKI_GL_DESKTOP 1
|
|
|
-#define ANKI_GL_ES 2
|
|
|
-#if ANKI_OS == ANKI_OS_LINUX || ANKI_OS == ANKI_OS_MACOS || ANKI_OS == ANKI_OS_WINDOWS
|
|
|
-# define ANKI_GL ANKI_GL_DESKTOP
|
|
|
-# define ANKI_GL_STR "ANKI_GL_DESKTOP"
|
|
|
+# define ANKI_SIMD_NONE 1
|
|
|
+# define ANKI_SIMD_SSE 0
|
|
|
+# define ANKI_SIMD_NEON 0
|
|
|
+#elif ANKI_CPU_ARCH_X86
|
|
|
+# define ANKI_SIMD_NONE 0
|
|
|
+# define ANKI_SIMD_SSE 1
|
|
|
+# define ANKI_SIMD_NEON 0
|
|
|
#else
|
|
|
-# define ANKI_GL ANKI_GL_ES
|
|
|
-# define ANKI_GL_STR "ANKI_GL_ES"
|
|
|
+# define ANKI_SIMD_NONE 0
|
|
|
+# define ANKI_SIMD_SSE 0
|
|
|
+# define ANKI_SIMD_NEON 1
|
|
|
#endif
|
|
|
|
|
|
// Graphics backend
|
|
|
-#define ANKI_GR_BACKEND_GL 1
|
|
|
-#define ANKI_GR_BACKEND_VULKAN 2
|
|
|
-#define ANKI_GR_BACKEND ANKI_GR_BACKEND_${ANKI_GR_BACKEND}
|
|
|
-
|
|
|
-// Enable performance counters
|
|
|
-#define ANKI_ENABLE_TRACE ${_ANKI_ENABLE_TRACE}
|
|
|
+#define ANKI_GR_BACKEND_GL 0
|
|
|
+#define ANKI_GR_BACKEND_VULKAN 1
|
|
|
|
|
|
-#define ANKI_FILE __FILE__
|
|
|
-#define ANKI_FUNC __func__
|
|
|
-
|
|
|
-// Some compiler struff
|
|
|
-#if defined(__GNUC__)
|
|
|
+// Some compiler attributes
|
|
|
+#if ANKI_COMPILER_GCC_COMPATIBLE
|
|
|
# define ANKI_LIKELY(x) __builtin_expect((x), 1)
|
|
|
# define ANKI_UNLIKELY(x) __builtin_expect((x), 0)
|
|
|
# define ANKI_RESTRICT __restrict
|
|
|
@@ -158,7 +156,7 @@
|
|
|
# define ANKI_HOT __attribute__ ((hot))
|
|
|
# define ANKI_UNREACHABLE() __builtin_unreachable()
|
|
|
# define ANKI_PREFETCH_MEMORY(addr) __builtin_prefetch(addr)
|
|
|
-#elif defined(_MSC_VER)
|
|
|
+#else
|
|
|
# define ANKI_LIKELY(x) ((x) == 1)
|
|
|
# define ANKI_UNLIKELY(x) ((x) == 1)
|
|
|
# define ANKI_RESTRICT
|
|
|
@@ -170,12 +168,10 @@
|
|
|
# define ANKI_HOT
|
|
|
# define ANKI_UNREACHABLE() __assume(false)
|
|
|
# define ANKI_PREFETCH_MEMORY(addr) (void)(addr)
|
|
|
-#else
|
|
|
-# error Unsupported compiler
|
|
|
#endif
|
|
|
|
|
|
// Pack structs
|
|
|
-#if defined(_MSC_VER)
|
|
|
+#if ANKI_COMPILER_MSVC
|
|
|
# define ANKI_BEGIN_PACKED_STRUCT __pragma(pack (push, 1))
|
|
|
# define ANKI_END_PACKED_STRUCT __pragma(pack (pop))
|
|
|
#else
|
|
|
@@ -183,20 +179,24 @@
|
|
|
# define ANKI_END_PACKED_STRUCT _Pragma("pack (pop)")
|
|
|
#endif
|
|
|
|
|
|
-// Popcount
|
|
|
-#ifdef _MSC_VER
|
|
|
+// Builtins
|
|
|
+#if ANKI_COMPILER_MSVC
|
|
|
# include <intrin.h>
|
|
|
# define __builtin_popcount __popcnt
|
|
|
# define __builtin_clzll(x) ((int)__lzcnt64(x))
|
|
|
#endif
|
|
|
|
|
|
+// Constants
|
|
|
+#define ANKI_SAFE_ALIGNMENT 16
|
|
|
+#define ANKI_CACHE_LINE_SIZE 64
|
|
|
+
|
|
|
+// Misc
|
|
|
+#define ANKI_FILE __FILE__
|
|
|
+#define ANKI_FUNC __func__
|
|
|
+
|
|
|
#ifdef ANKI_BUILD
|
|
|
# define anki_internal public
|
|
|
#else
|
|
|
# define anki_internal protected
|
|
|
#endif
|
|
|
-
|
|
|
-// General config
|
|
|
-#define ANKI_SAFE_ALIGNMENT 16
|
|
|
-#define ANKI_CACHE_LINE_SIZE 64
|
|
|
/// @}
|