Unravel Engine C++ Reference
Loading...
Searching...
No Matches
config.hpp
Go to the documentation of this file.
1#pragma once
2#include <cstdint>
3
4#if !defined(DEBUG) && !defined(_DEBUG)
5#ifndef NDEBUG
6#define NDEBUG
7#endif
8#ifndef _NDEBUG
9#define _NDEBUG
10#endif
11#define UNRAVEL_DEBUG 0
12#define UNRAVEL_RELEASE 1
13#else
14#define UNRAVEL_DEBUG 1
15#define UNRAVEL_RELEASE 0
16#endif
17
18
19// Architecture
20#define UNRAVEL_ARCH_32BIT 0
21#define UNRAVEL_ARCH_64BIT 0
22
23// Compiler
24#define UNRAVEL_COMPILER_CLANG 0
25#define UNRAVEL_COMPILER_CLANG_ANALYZER 0
26#define UNRAVEL_COMPILER_GCC 0
27#define UNRAVEL_COMPILER_MSVC 0
28
29// Endianness
30#define UNRAVEL_CPU_ENDIAN_BIG 0
31#define UNRAVEL_CPU_ENDIAN_LITTLE 0
32
33// CPU
34#define UNRAVEL_CPU_ARM 0
35#define UNRAVEL_CPU_JIT 0
36#define UNRAVEL_CPU_MIPS 0
37#define UNRAVEL_CPU_PPC 0
38#define UNRAVEL_CPU_RISCV 0
39#define UNRAVEL_CPU_X86 0
40
41// C Runtime
42#define UNRAVEL_CRT_BIONIC 0
43#define UNRAVEL_CRT_GLIBC 0
44#define UNRAVEL_CRT_LIBCXX 0
45#define UNRAVEL_CRT_MINGW 0
46#define UNRAVEL_CRT_MSVC 0
47#define UNRAVEL_CRT_NEWLIB 0
48
49#ifndef UNRAVEL_CRT_NONE
50# define UNRAVEL_CRT_NONE 0
51#endif // UNRAVEL_CRT_NONE
52
53// Language standard version
54#define UNRAVEL_LANGUAGE_CPP17 201703L
55#define UNRAVEL_LANGUAGE_CPP20 202002L
56#define UNRAVEL_LANGUAGE_CPP23 202207L
57
58// Platform
59#define UNRAVEL_PLATFORM_ANDROID 0
60#define UNRAVEL_PLATFORM_BSD 0
61#define UNRAVEL_PLATFORM_EMSCRIPTEN 0
62#define UNRAVEL_PLATFORM_HAIKU 0
63#define UNRAVEL_PLATFORM_HURD 0
64#define UNRAVEL_PLATFORM_IOS 0
65#define UNRAVEL_PLATFORM_LINUX 0
66#define UNRAVEL_PLATFORM_NX 0
67#define UNRAVEL_PLATFORM_OSX 0
68#define UNRAVEL_PLATFORM_PS4 0
69#define UNRAVEL_PLATFORM_PS5 0
70#define UNRAVEL_PLATFORM_RPI 0
71#define UNRAVEL_PLATFORM_VISIONOS 0
72#define UNRAVEL_PLATFORM_WINDOWS 0
73#define UNRAVEL_PLATFORM_WINRT 0
74#define UNRAVEL_PLATFORM_XBOXONE 0
75
76// http://sourceforge.net/apps/mediawiki/predef/index.php?title=Compilers
77#if defined(__clang__)
78// clang defines __GNUC__ or _MSC_VER
79# undef UNRAVEL_COMPILER_CLANG
80# define UNRAVEL_COMPILER_CLANG (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__)
81# if defined(__clang_analyzer__)
82# undef UNRAVEL_COMPILER_CLANG_ANALYZER
83# define UNRAVEL_COMPILER_CLANG_ANALYZER 1
84# endif // defined(__clang_analyzer__)
85#elif defined(_MSC_VER)
86# undef UNRAVEL_COMPILER_MSVC
87# define UNRAVEL_COMPILER_MSVC _MSC_VER
88#elif defined(__GNUC__)
89# undef UNRAVEL_COMPILER_GCC
90# define UNRAVEL_COMPILER_GCC (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
91#else
92# error "UNRAVEL_COMPILER_* is not defined!"
93#endif //
94
95// http://sourceforge.net/apps/mediawiki/predef/index.php?title=Architectures
96#if defined(__arm__) \
97 || defined(__aarch64__) \
98 || defined(_M_ARM)
99# undef UNRAVEL_CPU_ARM
100# define UNRAVEL_CPU_ARM 1
101# define UNRAVEL_CACHE_LINE_SIZE 64
102#elif defined(__MIPSEL__) \
103 || defined(__mips_isa_rev) \
104 || defined(__mips64)
105# undef UNRAVEL_CPU_MIPS
106# define UNRAVEL_CPU_MIPS 1
107# define UNRAVEL_CACHE_LINE_SIZE 64
108#elif defined(_M_PPC) \
109 || defined(__powerpc__) \
110 || defined(__powerpc64__)
111# undef UNRAVEL_CPU_PPC
112# define UNRAVEL_CPU_PPC 1
113# define UNRAVEL_CACHE_LINE_SIZE 128
114#elif defined(__riscv) \
115 || defined(__riscv__) \
116 || defined(RISCVEL)
117# undef UNRAVEL_CPU_RISCV
118# define UNRAVEL_CPU_RISCV 1
119# define UNRAVEL_CACHE_LINE_SIZE 64
120#elif defined(_M_IX86) \
121 || defined(_M_X64) \
122 || defined(__i386__) \
123 || defined(__x86_64__)
124# undef UNRAVEL_CPU_X86
125# define UNRAVEL_CPU_X86 1
126# define UNRAVEL_CACHE_LINE_SIZE 64
127#else // PNaCl doesn't have CPU defined.
128# undef UNRAVEL_CPU_JIT
129# define UNRAVEL_CPU_JIT 1
130# define UNRAVEL_CACHE_LINE_SIZE 64
131#endif //
132
133#if defined(__x86_64__) \
134 || defined(_M_X64) \
135 || defined(__aarch64__) \
136 || defined(__64BIT__) \
137 || defined(__mips64) \
138 || defined(__powerpc64__) \
139 || defined(__ppc64__) \
140 || defined(__LP64__)
141# undef UNRAVEL_ARCH_64BIT
142# define UNRAVEL_ARCH_64BIT 64
143#else
144# undef UNRAVEL_ARCH_32BIT
145# define UNRAVEL_ARCH_32BIT 32
146#endif //
147
148#if UNRAVEL_CPU_PPC
149// __BIG_ENDIAN__ is gcc predefined macro
150# if defined(__BIG_ENDIAN__)
151# undef UNRAVEL_CPU_ENDIAN_BIG
152# define UNRAVEL_CPU_ENDIAN_BIG 1
153# else
154# undef UNRAVEL_CPU_ENDIAN_LITTLE
155# define UNRAVEL_CPU_ENDIAN_LITTLE 1
156# endif
157#else
158# undef UNRAVEL_CPU_ENDIAN_LITTLE
159# define UNRAVEL_CPU_ENDIAN_LITTLE 1
160#endif // UNRAVEL_CPU_PPC
161
162// http://sourceforge.net/apps/mediawiki/predef/index.php?title=Operating_Systems
163#if defined(_DURANGO) || defined(_XBOX_ONE)
164# undef UNRAVEL_PLATFORM_XBOXONE
165# define UNRAVEL_PLATFORM_XBOXONE 1
166#elif defined(_WIN32) || defined(_WIN64)
167// http://msdn.microsoft.com/en-us/library/6sehtctf.aspx
168# ifndef NOMINMAX
169# define NOMINMAX
170# endif // NOMINMAX
171// If _USING_V110_SDK71_ is defined it means we are using the v110_xp or v120_xp toolset.
172# if defined(_MSC_VER) && (_MSC_VER >= 1700) && !defined(_USING_V110_SDK71_)
173# include <winapifamily.h>
174# endif // defined(_MSC_VER) && (_MSC_VER >= 1700) && (!_USING_V110_SDK71_)
175# if !defined(WINAPI_FAMILY) || (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP)
176# undef UNRAVEL_PLATFORM_WINDOWS
177# if !defined(WINVER) && !defined(_WIN32_WINNT)
178# if UNRAVEL_ARCH_64BIT
179// When building 64-bit target Win7 and above.
180# define WINVER 0x0601
181# define _WIN32_WINNT 0x0601
182# else
183// Windows Server 2003 with SP1, Windows XP with SP2 and above
184# define WINVER 0x0502
185# define _WIN32_WINNT 0x0502
186# endif // UNRAVEL_ARCH_64BIT
187# endif // !defined(WINVER) && !defined(_WIN32_WINNT)
188# define UNRAVEL_PLATFORM_WINDOWS _WIN32_WINNT
189# else
190# undef UNRAVEL_PLATFORM_WINRT
191# define UNRAVEL_PLATFORM_WINRT 1
192# endif
193#elif defined(__ANDROID__)
194// Android compiler defines __linux__
195# include <sys/cdefs.h> // Defines __BIONIC__ and includes android/api-level.h
196# undef UNRAVEL_PLATFORM_ANDROID
197# define UNRAVEL_PLATFORM_ANDROID __ANDROID_API__
198#elif defined(__VCCOREVER__)
199// RaspberryPi compiler defines __linux__
200# undef UNRAVEL_PLATFORM_RPI
201# define UNRAVEL_PLATFORM_RPI 1
202#elif defined(__linux__)
203# undef UNRAVEL_PLATFORM_LINUX
204# define UNRAVEL_PLATFORM_LINUX 1
205#elif defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) \
206 || defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__)
207# undef UNRAVEL_PLATFORM_IOS
208# define UNRAVEL_PLATFORM_IOS 1
209#elif defined(__has_builtin) && __has_builtin(__is_target_os) && __is_target_os(xros)
210# undef UNRAVEL_PLATFORM_VISIONOS
211# define UNRAVEL_PLATFORM_VISIONOS 1
212#elif defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__)
213# undef UNRAVEL_PLATFORM_OSX
214# define UNRAVEL_PLATFORM_OSX __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
215#elif defined(__EMSCRIPTEN__)
216# include <emscripten/version.h>
217# undef UNRAVEL_PLATFORM_EMSCRIPTEN
218# define UNRAVEL_PLATFORM_EMSCRIPTEN (__EMSCRIPTEN_major__ * 10000 + __EMSCRIPTEN_minor__ * 100 + __EMSCRIPTEN_tiny__)
219#elif defined(__ORBIS__)
220# undef UNRAVEL_PLATFORM_PS4
221# define UNRAVEL_PLATFORM_PS4 1
222#elif defined(__PROSPERO__)
223# undef UNRAVEL_PLATFORM_PS5
224# define UNRAVEL_PLATFORM_PS5 1
225#elif defined(__FreeBSD__) \
226 || defined(__FreeBSD_kernel__) \
227 || defined(__NetBSD__) \
228 || defined(__OpenBSD__) \
229 || defined(__DragonFly__)
230# undef UNRAVEL_PLATFORM_BSD
231# define UNRAVEL_PLATFORM_BSD 1
232#elif defined(__GNU__)
233# undef UNRAVEL_PLATFORM_HURD
234# define UNRAVEL_PLATFORM_HURD 1
235#elif defined(__NX__)
236# undef UNRAVEL_PLATFORM_NX
237# define UNRAVEL_PLATFORM_NX 1
238#elif defined(__HAIKU__)
239# undef UNRAVEL_PLATFORM_HAIKU
240# define UNRAVEL_PLATFORM_HAIKU 1
241#endif //
242
243#if !UNRAVEL_CRT_NONE
244// https://sourceforge.net/p/predef/wiki/Libraries/
245# if defined(__BIONIC__)
246# undef UNRAVEL_CRT_BIONIC
247# define UNRAVEL_CRT_BIONIC 1
248# elif defined(__GLIBC__)
249# undef UNRAVEL_CRT_GLIBC
250# define UNRAVEL_CRT_GLIBC (__GLIBC__ * 10000 + __GLIBC_MINOR__ * 100)
251# elif defined(__apple_build_version__) || defined(__ORBIS__) || defined(__EMSCRIPTEN__) || defined(__llvm__) || defined(__HAIKU__)
252# undef UNRAVEL_CRT_LIBCXX
253# define UNRAVEL_CRT_LIBCXX 1
254# elif defined(__MINGW32__) || defined(__MINGW64__)
255# undef UNRAVEL_CRT_MINGW
256# define UNRAVEL_CRT_MINGW 1
257# elif defined(_MSC_VER)
258# undef UNRAVEL_CRT_MSVC
259# define UNRAVEL_CRT_MSVC 1
260# endif //
261#endif // !UNRAVEL_CRT_NONE
262
264#define UNRAVEL_PLATFORM_POSIX (0 \
265 || UNRAVEL_PLATFORM_ANDROID \
266 || UNRAVEL_PLATFORM_BSD \
267 || UNRAVEL_PLATFORM_EMSCRIPTEN \
268 || UNRAVEL_PLATFORM_HAIKU \
269 || UNRAVEL_PLATFORM_HURD \
270 || UNRAVEL_PLATFORM_IOS \
271 || UNRAVEL_PLATFORM_LINUX \
272 || UNRAVEL_PLATFORM_NX \
273 || UNRAVEL_PLATFORM_OSX \
274 || UNRAVEL_PLATFORM_PS4 \
275 || UNRAVEL_PLATFORM_PS5 \
276 || UNRAVEL_PLATFORM_RPI \
277 || UNRAVEL_PLATFORM_VISIONOS \
278 )
279
281#define UNRAVEL_PLATFORM_NONE !(0 \
282 || UNRAVEL_PLATFORM_ANDROID \
283 || UNRAVEL_PLATFORM_BSD \
284 || UNRAVEL_PLATFORM_EMSCRIPTEN \
285 || UNRAVEL_PLATFORM_HAIKU \
286 || UNRAVEL_PLATFORM_HURD \
287 || UNRAVEL_PLATFORM_IOS \
288 || UNRAVEL_PLATFORM_LINUX \
289 || UNRAVEL_PLATFORM_NX \
290 || UNRAVEL_PLATFORM_OSX \
291 || UNRAVEL_PLATFORM_PS4 \
292 || UNRAVEL_PLATFORM_PS5 \
293 || UNRAVEL_PLATFORM_RPI \
294 || UNRAVEL_PLATFORM_VISIONOS \
295 || UNRAVEL_PLATFORM_WINDOWS \
296 || UNRAVEL_PLATFORM_WINRT \
297 || UNRAVEL_PLATFORM_XBOXONE \
298 )
299
301#define UNRAVEL_PLATFORM_OS_CONSOLE (0 \
302 || UNRAVEL_PLATFORM_NX \
303 || UNRAVEL_PLATFORM_PS4 \
304 || UNRAVEL_PLATFORM_PS5 \
305 || UNRAVEL_PLATFORM_WINRT \
306 || UNRAVEL_PLATFORM_XBOXONE \
307 )
308
310#define UNRAVEL_PLATFORM_OS_DESKTOP (0 \
311 || UNRAVEL_PLATFORM_BSD \
312 || UNRAVEL_PLATFORM_HAIKU \
313 || UNRAVEL_PLATFORM_HURD \
314 || UNRAVEL_PLATFORM_LINUX \
315 || UNRAVEL_PLATFORM_OSX \
316 || UNRAVEL_PLATFORM_WINDOWS \
317 )
318
320#define UNRAVEL_PLATFORM_OS_EMBEDDED (0 \
321 || UNRAVEL_PLATFORM_RPI \
322 )
323
325#define UNRAVEL_PLATFORM_OS_MOBILE (0 \
326 || UNRAVEL_PLATFORM_ANDROID \
327 || UNRAVEL_PLATFORM_IOS \
328 )
329
331#define UNRAVEL_PLATFORM_OS_WEB (0 \
332 || UNRAVEL_PLATFORM_EMSCRIPTEN \
333 )
334
336#if UNRAVEL_COMPILER_GCC
337# define UNRAVEL_COMPILER_NAME "GCC " \
338 UNRAVEL_STRINGIZE(__GNUC__) "." \
339 UNRAVEL_STRINGIZE(__GNUC_MINOR__) "." \
340 UNRAVEL_STRINGIZE(__GNUC_PATCHLEVEL__)
341#elif UNRAVEL_COMPILER_CLANG
342# define UNRAVEL_COMPILER_NAME "Clang " \
343 UNRAVEL_STRINGIZE(__clang_major__) "." \
344 UNRAVEL_STRINGIZE(__clang_minor__) "." \
345 UNRAVEL_STRINGIZE(__clang_patchlevel__)
346#elif UNRAVEL_COMPILER_MSVC
347# if UNRAVEL_COMPILER_MSVC >= 1930 // Visual Studio 2022
348# define UNRAVEL_COMPILER_NAME "MSVC 17.0"
349# elif UNRAVEL_COMPILER_MSVC >= 1920 // Visual Studio 2019
350# define UNRAVEL_COMPILER_NAME "MSVC 16.0"
351# elif UNRAVEL_COMPILER_MSVC >= 1910 // Visual Studio 2017
352# define UNRAVEL_COMPILER_NAME "MSVC 15.0"
353# elif UNRAVEL_COMPILER_MSVC >= 1900 // Visual Studio 2015
354# define UNRAVEL_COMPILER_NAME "MSVC 14.0"
355# elif UNRAVEL_COMPILER_MSVC >= 1800 // Visual Studio 2013
356# define UNRAVEL_COMPILER_NAME "MSVC 12.0"
357# elif UNRAVEL_COMPILER_MSVC >= 1700 // Visual Studio 2012
358# define UNRAVEL_COMPILER_NAME "MSVC 11.0"
359# elif UNRAVEL_COMPILER_MSVC >= 1600 // Visual Studio 2010
360# define UNRAVEL_COMPILER_NAME "MSVC 10.0"
361# elif UNRAVEL_COMPILER_MSVC >= 1500 // Visual Studio 2008
362# define UNRAVEL_COMPILER_NAME "MSVC 9.0"
363# else
364# define UNRAVEL_COMPILER_NAME "MSVC"
365# endif //
366#endif // UNRAVEL_COMPILER_
367
368#if UNRAVEL_PLATFORM_ANDROID
369# define UNRAVEL_PLATFORM_NAME "Android " \
370 UNRAVEL_STRINGIZE(UNRAVEL_PLATFORM_ANDROID)
371#elif UNRAVEL_PLATFORM_BSD
372# define UNRAVEL_PLATFORM_NAME "BSD"
373#elif UNRAVEL_PLATFORM_EMSCRIPTEN
374# define UNRAVEL_PLATFORM_NAME "Emscripten " \
375 UNRAVEL_STRINGIZE(__EMSCRIPTEN_major__) "." \
376 UNRAVEL_STRINGIZE(__EMSCRIPTEN_minor__) "." \
377 UNRAVEL_STRINGIZE(__EMSCRIPTEN_tiny__)
378#elif UNRAVEL_PLATFORM_HAIKU
379# define UNRAVEL_PLATFORM_NAME "Haiku"
380#elif UNRAVEL_PLATFORM_HURD
381# define UNRAVEL_PLATFORM_NAME "Hurd"
382#elif UNRAVEL_PLATFORM_IOS
383# define UNRAVEL_PLATFORM_NAME "iOS"
384#elif UNRAVEL_PLATFORM_LINUX
385# define UNRAVEL_PLATFORM_NAME "Linux"
386#elif UNRAVEL_PLATFORM_NONE
387# define UNRAVEL_PLATFORM_NAME "None"
388#elif UNRAVEL_PLATFORM_NX
389# define UNRAVEL_PLATFORM_NAME "NX"
390#elif UNRAVEL_PLATFORM_OSX
391# define UNRAVEL_PLATFORM_NAME "macOS"
392#elif UNRAVEL_PLATFORM_PS4
393# define UNRAVEL_PLATFORM_NAME "PlayStation 4"
394#elif UNRAVEL_PLATFORM_PS5
395# define UNRAVEL_PLATFORM_NAME "PlayStation 5"
396#elif UNRAVEL_PLATFORM_RPI
397# define UNRAVEL_PLATFORM_NAME "RaspberryPi"
398#elif UNRAVEL_PLATFORM_VISIONOS
399# define UNRAVEL_PLATFORM_NAME "visionOS"
400#elif UNRAVEL_PLATFORM_WINDOWS
401# define UNRAVEL_PLATFORM_NAME "Windows"
402#elif UNRAVEL_PLATFORM_WINRT
403# define UNRAVEL_PLATFORM_NAME "WinRT"
404#elif UNRAVEL_PLATFORM_XBOXONE
405# define UNRAVEL_PLATFORM_NAME "Xbox One"
406#else
407# error "Unknown UNRAVEL_PLATFORM!"
408#endif // UNRAVEL_PLATFORM_
409
410#if UNRAVEL_CPU_ARM
411# define UNRAVEL_CPU_NAME "ARM"
412#elif UNRAVEL_CPU_JIT
413# define UNRAVEL_CPU_NAME "JIT-VM"
414#elif UNRAVEL_CPU_MIPS
415# define UNRAVEL_CPU_NAME "MIPS"
416#elif UNRAVEL_CPU_PPC
417# define UNRAVEL_CPU_NAME "PowerPC"
418#elif UNRAVEL_CPU_RISCV
419# define UNRAVEL_CPU_NAME "RISC-V"
420#elif UNRAVEL_CPU_X86
421# define UNRAVEL_CPU_NAME "x86"
422#endif // UNRAVEL_CPU_
423
424#if UNRAVEL_CRT_BIONIC
425# define UNRAVEL_CRT_NAME "Bionic libc"
426#elif UNRAVEL_CRT_GLIBC
427# define UNRAVEL_CRT_NAME "GNU C Library"
428#elif UNRAVEL_CRT_MSVC
429# define UNRAVEL_CRT_NAME "MSVC C Runtime"
430#elif UNRAVEL_CRT_MINGW
431# define UNRAVEL_CRT_NAME "MinGW C Runtime"
432#elif UNRAVEL_CRT_LIBCXX
433# define UNRAVEL_CRT_NAME "Clang C Library"
434#elif UNRAVEL_CRT_NEWLIB
435# define UNRAVEL_CRT_NAME "Newlib"
436#elif UNRAVEL_CRT_NONE
437# define UNRAVEL_CRT_NAME "None"
438#else
439# define UNRAVEL_CRT_NAME "Unknown CRT"
440#endif // UNRAVEL_CRT_
441
442#if UNRAVEL_ARCH_32BIT
443# define UNRAVEL_ARCH_NAME "32-bit"
444#elif UNRAVEL_ARCH_64BIT
445# define UNRAVEL_ARCH_NAME "64-bit"
446#endif // UNRAVEL_ARCH_
447
448#if defined(__cplusplus)
449# if UNRAVEL_COMPILER_MSVC && defined(_MSVC_LANG) && _MSVC_LANG != __cplusplus
450# error "When using MSVC you must set /Zc:__cplusplus compiler option."
451# endif // UNRAVEL_COMPILER_MSVC && defined(_MSVC_LANG) && _MSVC_LANG != __cplusplus
452
453# if __cplusplus < UNRAVEL_LANGUAGE_CPP17
454# define UNRAVEL_CPP_NAME "C++Unsupported"
455# elif __cplusplus < UNRAVEL_LANGUAGE_CPP20
456# define UNRAVEL_CPP_NAME "C++17"
457# elif __cplusplus < UNRAVEL_LANGUAGE_CPP23
458# define UNRAVEL_CPP_NAME "C++20"
459# else
460// See: https://gist.github.com/bkaradzic/2e39896bc7d8c34e042b#orthodox-c
461# define UNRAVEL_CPP_NAME "C++WayTooModern"
462# endif // UNRAVEL_CPP_NAME
463#else
464# define UNRAVEL_CPP_NAME "C++Unknown"
465#endif // defined(__cplusplus)
466
467#if defined(__cplusplus)
468
469static_assert(__cplusplus >= UNRAVEL_LANGUAGE_CPP20, "\n\n"
470 "\t** IMPORTANT! **\n\n"
471 "\tC++20 standard support is required to build.\n"
472 "\t\n");
473
474// https://releases.llvm.org/
475static_assert(!UNRAVEL_COMPILER_CLANG || UNRAVEL_COMPILER_CLANG >= 110000, "\n\n"
476 "\t** IMPORTANT! **\n\n"
477 "\tMinimum supported Clang version is 11.0 (October 12, 2020).\n"
478 "\t\n");
479
480// https://gcc.gnu.org/releases.html
481static_assert(!UNRAVEL_COMPILER_GCC || UNRAVEL_COMPILER_GCC >= 80400, "\n\n"
482 "\t** IMPORTANT! **\n\n"
483 "\tMinimum supported GCC version is 8.4 (March 4, 2020).\n"
484 "\t\n");
485
486static_assert(!UNRAVEL_CPU_ENDIAN_BIG, "\n\n"
487 "\t** IMPORTANT! **\n\n"
488 "\tThe code was not tested for big endian, and big endian CPU is considered unsupported.\n"
489 "\t\n");
490
492 "\t** IMPORTANT! **\n\n"
493 "\tYou're compiling for unsupported platform!\n"
494 "\tIf you wish to support this platform, make your own fork, and modify code for _yourself_.\n"
495 "\t\n"
496 "\tDo not submit PR to main repo, it won't be considered, and it would code rot anyway. I have no ability\n"
497 "\tto test on these platforms, and over years there wasn't any serious contributor who wanted to take\n"
498 "\tburden of maintaining code for these platforms.\n"
499 "\t\n");
500
501#endif // defined(__cplusplus)
502
#define UNRAVEL_COMPILER_CLANG
Definition config.hpp:24
#define UNRAVEL_PLATFORM_HAIKU
Definition config.hpp:62
#define UNRAVEL_PLATFORM_BSD
Definition config.hpp:60
#define UNRAVEL_CPU_ENDIAN_BIG
Definition config.hpp:30
#define UNRAVEL_PLATFORM_HURD
Definition config.hpp:63
#define UNRAVEL_COMPILER_GCC
Definition config.hpp:26
#define UNRAVEL_LANGUAGE_CPP20
Definition config.hpp:55