GMP
0.3.0
Generative Metaprogramming library for C++
Loading...
Searching...
No Matches
platform.hpp
Go to the documentation of this file.
1
// ___ __ __ ___
2
// / __| \/ | _ \ GMP(Generative Metaprogramming)
3
// | (_ | |\/| | _/ version 0.1.0
4
// \___|_| |_|_| https://github.com/lkimuk/gmp
5
//
6
// SPDX-FileCopyrightText: 2023-2026 Miles Li <https://www.cppmore.com/>
7
// SPDX-License-Identifier: MIT
8
//
9
// This file is part of the GMP (Generative Metaprogramming) library.
10
// Full project source: https://github.com/lkimuk/gmp
11
12
#ifndef GMP_PLATFORM_HPP_
13
#define GMP_PLATFORM_HPP_
14
51
#if defined(_WIN32) || defined(_WIN64)
52
#define GMP_PLATFORM_WINDOWS 1
53
#define GMP_PLATFORM_LINUX 0
54
#define GMP_PLATFORM_MAC 0
55
#define GMP_PLATFORM_IOS 0
56
#define GMP_PLATFORM_ANDROID 0
57
#define GMP_PLATFORM_NAME "Windows"
58
#elif defined(__APPLE__) && defined(__MACH__)
59
#include <TargetConditionals.h>
60
#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR
61
#define GMP_PLATFORM_IOS 1
62
#define GMP_PLATFORM_MAC 0
63
#define GMP_PLATFORM_NAME "iOS"
64
#else
65
#define GMP_PLATFORM_MAC 1
66
#define GMP_PLATFORM_IOS 0
67
#define GMP_PLATFORM_NAME "macOS"
68
#endif
69
#define GMP_PLATFORM_WINDOWS 0
70
#define GMP_PLATFORM_LINUX 0
71
#define GMP_PLATFORM_ANDROID 0
72
#elif defined(__linux__)
73
#define GMP_PLATFORM_LINUX 1
74
#define GMP_PLATFORM_WINDOWS 0
75
#define GMP_PLATFORM_MAC 0
76
#define GMP_PLATFORM_IOS 0
77
#if defined(__ANDROID__)
78
#define GMP_PLATFORM_ANDROID 1
79
#define GMP_PLATFORM_NAME "Android"
80
#else
81
#define GMP_PLATFORM_ANDROID 0
82
#define GMP_PLATFORM_NAME "Linux"
83
#endif
84
#else
85
#define GMP_PLATFORM_WINDOWS 0
86
#define GMP_PLATFORM_LINUX 0
87
#define GMP_PLATFORM_MAC 0
88
#define GMP_PLATFORM_IOS 0
89
#define GMP_PLATFORM_ANDROID 0
90
#define GMP_PLATFORM_NAME "Unknown"
91
#endif
127
#if GMP_PLATFORM_WINDOWS
128
#define GMP_WINDOWS_ONLY(code) code
129
#define GMP_LINUX_ONLY(code)
130
#define GMP_MAC_ONLY(code)
131
#define GMP_IOS_ONLY(code)
132
#define GMP_ANDROID_ONLY(code)
133
#elif GMP_PLATFORM_LINUX
134
#define GMP_WINDOWS_ONLY(code)
135
#define GMP_LINUX_ONLY(code) code
136
#define GMP_MAC_ONLY(code)
137
#define GMP_IOS_ONLY(code)
138
#if GMP_PLATFORM_ANDROID
139
#define GMP_ANDROID_ONLY(code) code
140
#else
141
#define GMP_ANDROID_ONLY(code)
142
#endif
143
#elif GMP_PLATFORM_MAC
144
#define GMP_WINDOWS_ONLY(code)
145
#define GMP_LINUX_ONLY(code)
146
#define GMP_MAC_ONLY(code) code
147
#define GMP_IOS_ONLY(code)
148
#define GMP_ANDROID_ONLY(code)
149
#elif GMP_PLATFORM_IOS
150
#define GMP_WINDOWS_ONLY(code)
151
#define GMP_LINUX_ONLY(code)
152
#define GMP_MAC_ONLY(code)
153
#define GMP_IOS_ONLY(code) code
154
#define GMP_ANDROID_ONLY(code)
155
#endif
186
#if defined(_MSC_VER)
187
#define GMP_COMPILER_MSVC 1
188
#define GMP_COMPILER_GCC 0
189
#define GMP_COMPILER_CLANG 0
190
#define GMP_COMPILER_NAME "MSVC"
191
#define GMP_COMPILER_VERSION _MSC_VER
192
#elif defined(__clang__)
193
#define GMP_COMPILER_CLANG 1
194
#define GMP_COMPILER_GCC 0
195
#define GMP_COMPILER_MSVC 0
196
#define GMP_COMPILER_NAME "Clang"
197
#define GMP_COMPILER_VERSION (__clang_major__ * 100 + __clang_minor__)
198
#elif defined(__GNUC__)
199
#define GMP_COMPILER_GCC 1
200
#define GMP_COMPILER_MSVC 0
201
#define GMP_COMPILER_CLANG 0
202
#define GMP_COMPILER_NAME "GCC"
203
#define GMP_COMPILER_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
204
#else
205
#define GMP_COMPILER_MSVC 0
206
#define GMP_COMPILER_GCC 0
207
#define GMP_COMPILER_CLANG 0
208
#define GMP_COMPILER_NAME "Unknown"
209
#define GMP_COMPILER_VERSION 0
210
#endif
233
#if GMP_COMPILER_MSVC
234
#define GMP_MSVC_ONLY(code) code
235
#define GMP_GCC_ONLY(code)
236
#define GMP_CLANG_ONLY(code)
237
#elif GMP_COMPILER_CLANG
238
#define GMP_MSVC_ONLY(code)
239
#define GMP_GCC_ONLY(code)
240
#define GMP_CLANG_ONLY(code) code
241
#elif GMP_COMPILER_GCC
242
#define GMP_MSVC_ONLY(code)
243
#define GMP_GCC_ONLY(code) code
244
#define GMP_CLANG_ONLY(code)
245
#endif
265
#if defined(NDEBUG) || defined(_NDEBUG)
266
#define GMP_BUILD_RELEASE 1
267
#define GMP_BUILD_DEBUG 0
268
#define GMP_BUILD_TYPE "Release"
269
#else
270
#define GMP_BUILD_DEBUG 1
271
#define GMP_BUILD_RELEASE 0
272
#define GMP_BUILD_TYPE "Debug"
273
#endif
297
#if defined(__x86_64__) || defined(_M_X64)
298
#define GMP_ARCH_X64 1
299
#define GMP_ARCH_ARM64 0
300
#define GMP_ARCH_X86 0
301
#define GMP_ARCH_NAME "x64"
302
#elif defined(__aarch64__) || defined(_M_ARM64)
303
#define GMP_ARCH_ARM64 1
304
#define GMP_ARCH_X64 0
305
#define GMP_ARCH_X86 0
306
#define GMP_ARCH_NAME "ARM64"
307
#elif defined(__i386__) || defined(_M_IX86)
308
#define GMP_ARCH_X86 1
309
#define GMP_ARCH_X64 0
310
#define GMP_ARCH_ARM64 0
311
#define GMP_ARCH_NAME "x86"
312
#else
313
#define GMP_ARCH_X64 0
314
#define GMP_ARCH_ARM64 0
315
#define GMP_ARCH_X86 0
316
#define GMP_ARCH_NAME "Unknown"
317
#endif
337
#if defined(_MSC_VER) && (!defined(_MSVC_TRADITIONAL) || _MSVC_TRADITIONAL)
338
#define GMP_MAX_MACRO_ARGS 127
339
#define GMP_PREPROCESSOR_TYPE "MSVC Traditional"
340
#define GMP_STANDARD_PREPROCESSOR 0
341
#else
342
#define GMP_MAX_MACRO_ARGS 256
343
#define GMP_PREPROCESSOR_TYPE "C++ Standard Compliant"
344
#define GMP_STANDARD_PREPROCESSOR 1
345
#endif
350
#endif
// GMP_PLATFORM_HPP_
include
gmp
macro
platform.hpp
Generated by
1.9.8