Config.h.cmake 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. // Copyright (C) 2009-2016, Panagiotis Christopoulos Charitos.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #pragma once
  6. /// @addtogroup config
  7. /// @{
  8. #define ANKI_VERSION_MINOR ${ANKI_VERSION_MINOR}
  9. #define ANKI_VERSION_MAJOR ${ANKI_VERSION_MAJOR}
  10. #define ANKI_REVISION ${ANKI_REVISION}
  11. #define ANKI_DEBUG ${ANKI_DEBUG}
  12. #define ANKI_ASSERTIONS ANKI_DEBUG
  13. // Operating system
  14. #define ANKI_OS_LINUX 1
  15. #define ANKI_OS_ANDROID 2
  16. #define ANKI_OS_MACOS 3
  17. #define ANKI_OS_IOS 4
  18. #define ANKI_OS_WINDOWS 5
  19. #if defined(__WIN32__) || defined(_WIN32)
  20. # define ANKI_OS ANKI_OS_WINDOWS
  21. #elif defined(__APPLE_CC__)
  22. # if (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) \
  23. && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 40000) \
  24. || (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) \
  25. && __IPHONE_OS_VERSION_MIN_REQUIRED >= 40000)
  26. # define ANKI_OS ANKI_OS_IOS
  27. # else
  28. # define ANKI_OS ANKI_OS_MACOS
  29. # endif
  30. #elif defined(__ANDROID__)
  31. # define ANKI_OS ANKI_OS_ANDROID
  32. #else
  33. # define ANKI_OS ANKI_OS_LINUX
  34. #endif
  35. // POSIX system or not
  36. #if ANKI_OS == ANKI_OS_LINUX || ANKI_OS == ANKI_OS_ANDROID \
  37. || ANKI_OS == ANKI_OS_MACOS || ANKI_OS == ANKI_OS_IOS
  38. # define ANKI_POSIX 1
  39. #else
  40. # define ANKI_POSIX 0
  41. #endif
  42. // CPU architecture
  43. #define ANKI_CPU_ARCH_INTEL 1
  44. #define ANKI_CPU_ARCH_ARM 2
  45. #if defined(__GNUC__)
  46. # if defined(__arm__)
  47. # define ANKI_CPU_ARCH ANKI_CPU_ARCH_ARM
  48. # define ANKI_CPU_ARCH_STR "ANKI_CPU_ARCH_ARM"
  49. # elif defined(__i386__) || defined(__amd64__)
  50. # define ANKI_CPU_ARCH ANKI_CPU_ARCH_INTEL
  51. # define ANKI_CPU_ARCH_STR "ANKI_CPU_ARCH_INTEL"
  52. # else
  53. # error "Unknown CPU arch"
  54. # endif
  55. #else
  56. # error "Unsupported compiler"
  57. #endif
  58. // SIMD
  59. #define ANKI_ENABLE_SIMD ${_ANKI_ENABLE_SIMD}
  60. #define ANKI_SIMD_NONE 1
  61. #define ANKI_SIMD_SSE 2
  62. #define ANKI_SIMD_NEON 3
  63. #if !ANKI_ENABLE_SIMD
  64. # define ANKI_SIMD ANKI_SIMD_NONE
  65. #else
  66. # if ANKI_CPU_ARCH == ANKI_CPU_ARCH_INTEL
  67. # define ANKI_SIMD ANKI_SIMD_SSE
  68. # elif ANKI_CPU_ARCH == ANKI_CPU_ARCH_ARM
  69. # define ANKI_SIMD ANKI_SIMD_NEON
  70. # endif
  71. #endif
  72. // Window backend
  73. #define ANKI_WINDOW_BACKEND_GLXX11 1
  74. #define ANKI_WINDOW_BACKEND_EGLX11 2
  75. #define ANKI_WINDOW_BACKEND_EGLFBDEV 3
  76. #define ANKI_WINDOW_BACKEND_MACOS 4
  77. #define ANKI_WINDOW_BACKEND_ANDROID 5
  78. #define ANKI_WINDOW_BACKEND_SDL 6
  79. #define ANKI_WINDOW_BACKEND ANKI_WINDOW_BACKEND_${ANKI_WINDOW_BACKEND}
  80. #define ANKI_WINDOW_BACKEND_STR "ANKI_WINDOW_BACKEND_${ANKI_WINDOW_BACKEND}"
  81. // OpenGL version
  82. #define ANKI_GL_DESKTOP 1
  83. #define ANKI_GL_ES 2
  84. #if ANKI_OS == ANKI_OS_LINUX \
  85. || ANKI_OS == ANKI_OS_MACOS \
  86. || ANKI_OS == ANKI_OS_WINDOWS
  87. # define ANKI_GL ANKI_GL_DESKTOP
  88. # define ANKI_GL_STR "ANKI_GL_DESKTOP"
  89. #else
  90. # define ANKI_GL ANKI_GL_ES
  91. # define ANKI_GL_STR "ANKI_GL_ES"
  92. #endif
  93. // Enable performance counters
  94. #define ANKI_ENABLE_TRACE ${_ANKI_ENABLE_TRACE}
  95. //==============================================================================
  96. // Other =
  97. //==============================================================================
  98. #define ANKI_FILE __FILE__
  99. #define ANKI_FUNC __func__
  100. // Some compiler struff
  101. #if defined(__GNUC__)
  102. # define ANKI_LIKELY(x) __builtin_expect((x), 1)
  103. # define ANKI_UNLIKELY(x) __builtin_expect((x), 0)
  104. # define ANKI_RESTRICT __restrict
  105. # define ANKI_USE_RESULT __attribute__((warn_unused_result))
  106. # define ANKI_FORCE_INLINE __attribute__((always_inline))
  107. #else
  108. # define ANKI_LIKELY(x) ((x) == 1)
  109. # define ANKI_UNLIKELY(x) ((x) == 1)
  110. # define ANKI_RESTRICT
  111. # define ANKI_USE_RESULT
  112. # define ANKI_FORCE_INLINE
  113. #endif
  114. #ifdef ANKI_BUILD
  115. # define anki_internal public
  116. #else
  117. # define anki_internal protected
  118. #endif
  119. //==============================================================================
  120. // Engine config =
  121. //==============================================================================
  122. // General config
  123. #define ANKI_SAFE_ALIGNMENT 16
  124. // GL
  125. #define ANKI_GL_MAX_SUB_DRAWCALLS 64
  126. /// @}