78 .name =
"uwp-x64-msvc",
85 .name =
"windows-x64-msvc",
92 .name =
"windows-x64-clang",
99 .name =
"android-arm64-clang",
106 .name =
"android-x64-clang",
113 .name =
"linux-x64-clang",
120 .name =
"webapp-webasm32-clang",
137#if INTPTR_MAX == INT64_MAX
138#define ISP_ARCH_BITS 64
139#elif INTPTR_MAX == INT32_MAX
140#define ISP_ARCH_BITS 32
142#error Unknown pointer size or missing size macros!
148# define ISP_WINDOWS 1
149# define ISP_ANDROID 0
151# if defined(__clang__)
152# define ISP_COMPILER_MSVC 0
153# define ISP_COMPILER_CLANG __clang_major__
154# define ISP_COMPILER_GCC 0
158# define ISP_COMPILER_MSVC 1
159# define ISP_COMPILER_CLANG 0
160# define ISP_COMPILER_GCC 0
164# define ISP_ARCHFAM_X86 1
165# define ISP_ARCHFAM_ARM 0
166# define ISP_ARCHFAM_WEBASM 0
167# define ISP_HW_DESTRUCTIVE_INTERFERENCE 64
168# define ISP_TEXT(val) L ## val
169#elif defined(__ANDROID__)
172# define ISP_WINDOWS 0
173# define ISP_ANDROID __ANDROID_API__
175# define ISP_COMPILER_MSVC 0
176# define ISP_COMPILER_CLANG __clang_major__
177# define ISP_COMPILER_GCC 0
179# if defined(__aarch64__) || defined(_M_ARM64)
180# define ISP_ARCHFAM_X86 0
181# define ISP_ARCHFAM_ARM 1
182# define ISP_ARCHFAM_WEBASM 0
185# define ISP_ARCHFAM_X86 1
186# define ISP_ARCHFAM_ARM 0
187# define ISP_ARCHFAM_WEBASM 0
190# define ISP_HW_DESTRUCTIVE_INTERFERENCE 64
191# define ISP_TEXT(val) val
192#elif defined(EMSCRIPTEN)
195# define ISP_WINDOWS 0
196# define ISP_ANDROID 0
198# define ISP_COMPILER_MSVC 0
199# define ISP_COMPILER_CLANG __clang_major__
200# define ISP_COMPILER_GCC 0
202# define ISP_ARCHFAM_X86 0
203# define ISP_ARCHFAM_ARM 0
204# define ISP_ARCHFAM_WEBASM 1
207# define ISP_HW_DESTRUCTIVE_INTERFERENCE 64
208# define ISP_TEXT(val) val
209#elif __unix__ && !__clang__
212# define ISP_WINDOWS 0
213# define ISP_ANDROID 0
215# define ISP_COMPILER_MSVC 0
216# define ISP_COMPILER_CLANG 0
217# define ISP_COMPILER_GCC 1
218# define ISP_ARCHFAM_X86 1
219# define ISP_ARCHFAM_ARM 0
220# define ISP_ARCHFAM_WEBASM 0
222 static constexpr Platform current_platform = platform_unix_x64_gcc;
223# define ISP_HW_DESTRUCTIVE_INTERFERENCE 64
224# define ISP_TEXT(val) val
225#elif __unix__ && __clang__
228# define ISP_WINDOWS 0
229# define ISP_ANDROID 0
231# define ISP_COMPILER_MSVC 0
232# define ISP_COMPILER_CLANG __clang_major__
233# define ISP_COMPILER_GCC 0
234# define ISP_ARCHFAM_X86 1
235# define ISP_ARCHFAM_ARM 0
236# define ISP_ARCHFAM_WEBASM 0
239# define ISP_HW_DESTRUCTIVE_INTERFERENCE 64
240# define ISP_TEXT(val) val
243# define ISP_WINDOWS 0
244# define ISP_ANDROID 0
246# define ISP_COMPILER_MSVC 0
247# define ISP_COMPILER_CLANG 0
248# define ISP_COMPILER_GCC 0
249# define ISP_ARCHFAM_X86 0
250# define ISP_ARCHFAM_ARM 0
251# define ISP_ARCHFAM_WEBASM 0
253 static_assert(
false,
"Unknow platform!");
254# define ISP_HW_DESTRUCTIVE_INTERFERENCE ISP_UNDEFINED
255# define ISP_TEXT(val) ISP_UNDEFINED
272 return left.system == right;
277 return !(left == right);
287 return !(left == right);
292 return left.architecture == right;
297 return !(left == right);
302 return left.compiler == right;
307 return !(left == right);
312 return left.system == right.system
313 && left.architecture == right.architecture
314 && left.compiler == right.compiler;
319 return !(left == right);
328 return "universal_windows_platform";
385 return platform.name;
System
Definition platform.hxx:12
@ UWP
Definition platform.hxx:13
@ Windows
Definition platform.hxx:14
@ WebApp
Definition platform.hxx:17
@ Android
Definition platform.hxx:15
@ Linux
Definition platform.hxx:16
static constexpr Platform platform_webapp_webasm32_clang
Definition platform.hxx:119
static constexpr Platform platform_android_arm64_clang
Definition platform.hxx:98
static constexpr Platform platform_linux_x64_clang
Definition platform.hxx:112
constexpr bool operator==(Platform const &left, System right) noexcept
Definition platform.hxx:270
static constexpr Platform platform_windows_x64_clang
Definition platform.hxx:91
static constexpr Platform all_platforms[]
Definition platform.hxx:126
ArchFamily
Definition platform.hxx:21
@ ARM
Definition platform.hxx:24
@ Unknown
Definition platform.hxx:22
@ WebAsm
Definition platform.hxx:25
@ X86
Definition platform.hxx:23
static constexpr Platform platform_windows_x64_msvc
Definition platform.hxx:84
constexpr auto to_string(Configuration type) noexcept -> std::string_view
Definition config.hxx:69
constexpr bool operator!=(Platform const &left, System right) noexcept
Definition platform.hxx:275
static constexpr Platform platform_uwp_x64_msvc
Definition platform.hxx:77
Compiler
Definition platform.hxx:37
@ MSVC
Definition platform.hxx:38
@ GCC
Definition platform.hxx:40
@ Clang
Definition platform.hxx:39
static constexpr Platform platform_android_x64_clang
Definition platform.hxx:105
Architecture
Definition platform.hxx:29
@ WebAsm32
Definition platform.hxx:33
@ x86_x64
Definition platform.hxx:31
@ x86
Definition platform.hxx:30
@ Arm64
Definition platform.hxx:32
constexpr auto arch_family(Architecture arch) noexcept -> ArchFamily
Definition platform.hxx:258
std::uint8_t u8
Definition types.hxx:24