Merge topic 'cxx-checks-tolerate-unused-arguments'
[kiteware-cmake.git] / Modules / CMakePlatformId.h.in
blobfd0367e489e8bcca66e6bb0bea96277c4a490295
1 #define STRINGIFY_HELPER(X) #X
2 #define STRINGIFY(X) STRINGIFY_HELPER(X)
4 /* Identify known platforms by name. */
5 #if defined(__linux) || defined(__linux__) || defined(linux)
6 # define PLATFORM_ID "Linux"
8 #elif defined(__MSYS__)
9 # define PLATFORM_ID "MSYS"
11 #elif defined(__CYGWIN__)
12 # define PLATFORM_ID "Cygwin"
14 #elif defined(__MINGW32__)
15 # define PLATFORM_ID "MinGW"
17 #elif defined(__APPLE__)
18 # define PLATFORM_ID "Darwin"
20 #elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
21 # define PLATFORM_ID "Windows"
23 #elif defined(__FreeBSD__) || defined(__FreeBSD)
24 # define PLATFORM_ID "FreeBSD"
26 #elif defined(__NetBSD__) || defined(__NetBSD)
27 # define PLATFORM_ID "NetBSD"
29 #elif defined(__OpenBSD__) || defined(__OPENBSD)
30 # define PLATFORM_ID "OpenBSD"
32 #elif defined(__sun) || defined(sun)
33 # define PLATFORM_ID "SunOS"
35 #elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
36 # define PLATFORM_ID "AIX"
38 #elif defined(__hpux) || defined(__hpux__)
39 # define PLATFORM_ID "HP-UX"
41 #elif defined(__HAIKU__)
42 # define PLATFORM_ID "Haiku"
44 #elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
45 # define PLATFORM_ID "BeOS"
47 #elif defined(__QNX__) || defined(__QNXNTO__)
48 # define PLATFORM_ID "QNX"
50 #elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
51 # define PLATFORM_ID "Tru64"
53 #elif defined(__riscos) || defined(__riscos__)
54 # define PLATFORM_ID "RISCos"
56 #elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
57 # define PLATFORM_ID "SINIX"
59 #elif defined(__UNIX_SV__)
60 # define PLATFORM_ID "UNIX_SV"
62 #elif defined(__bsdos__)
63 # define PLATFORM_ID "BSDOS"
65 #elif defined(_MPRAS) || defined(MPRAS)
66 # define PLATFORM_ID "MP-RAS"
68 #elif defined(__osf) || defined(__osf__)
69 # define PLATFORM_ID "OSF1"
71 #elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
72 # define PLATFORM_ID "SCO_SV"
74 #elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
75 # define PLATFORM_ID "ULTRIX"
77 #elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
78 # define PLATFORM_ID "Xenix"
80 #elif defined(__WATCOMC__)
81 # if defined(__LINUX__)
82 # define PLATFORM_ID "Linux"
84 # elif defined(__DOS__)
85 # define PLATFORM_ID "DOS"
87 # elif defined(__OS2__)
88 # define PLATFORM_ID "OS2"
90 # elif defined(__WINDOWS__)
91 # define PLATFORM_ID "Windows3x"
93 # elif defined(__VXWORKS__)
94 # define PLATFORM_ID "VxWorks"
96 # else /* unknown platform */
97 # define PLATFORM_ID
98 # endif
100 #elif defined(__INTEGRITY)
101 # if defined(INT_178B)
102 # define PLATFORM_ID "Integrity178"
104 # else /* regular Integrity */
105 # define PLATFORM_ID "Integrity"
106 # endif
108 # elif defined(_ADI_COMPILER)
109 # define PLATFORM_ID "ADSP"
111 #else /* unknown platform */
112 # define PLATFORM_ID
114 #endif
116 /* For windows compilers MSVC and Intel we can determine
117 the architecture of the compiler being used. This is because
118 the compilers do not have flags that can change the architecture,
119 but rather depend on which compiler is being used
121 #if defined(_WIN32) && defined(_MSC_VER)
122 # if defined(_M_IA64)
123 # define ARCHITECTURE_ID "IA64"
125 # elif defined(_M_ARM64EC)
126 # define ARCHITECTURE_ID "ARM64EC"
128 # elif defined(_M_X64) || defined(_M_AMD64)
129 # define ARCHITECTURE_ID "x64"
131 # elif defined(_M_IX86)
132 # define ARCHITECTURE_ID "X86"
134 # elif defined(_M_ARM64)
135 # define ARCHITECTURE_ID "ARM64"
137 # elif defined(_M_ARM)
138 # if _M_ARM == 4
139 # define ARCHITECTURE_ID "ARMV4I"
140 # elif _M_ARM == 5
141 # define ARCHITECTURE_ID "ARMV5I"
142 # else
143 # define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
144 # endif
146 # elif defined(_M_MIPS)
147 # define ARCHITECTURE_ID "MIPS"
149 # elif defined(_M_SH)
150 # define ARCHITECTURE_ID "SHx"
152 # else /* unknown architecture */
153 # define ARCHITECTURE_ID ""
154 # endif
156 #elif defined(__WATCOMC__)
157 # if defined(_M_I86)
158 # define ARCHITECTURE_ID "I86"
160 # elif defined(_M_IX86)
161 # define ARCHITECTURE_ID "X86"
163 # else /* unknown architecture */
164 # define ARCHITECTURE_ID ""
165 # endif
167 #elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
168 # if defined(__ICCARM__)
169 # define ARCHITECTURE_ID "ARM"
171 # elif defined(__ICCRX__)
172 # define ARCHITECTURE_ID "RX"
174 # elif defined(__ICCRH850__)
175 # define ARCHITECTURE_ID "RH850"
177 # elif defined(__ICCRL78__)
178 # define ARCHITECTURE_ID "RL78"
180 # elif defined(__ICCRISCV__)
181 # define ARCHITECTURE_ID "RISCV"
183 # elif defined(__ICCAVR__)
184 # define ARCHITECTURE_ID "AVR"
186 # elif defined(__ICC430__)
187 # define ARCHITECTURE_ID "MSP430"
189 # elif defined(__ICCV850__)
190 # define ARCHITECTURE_ID "V850"
192 # elif defined(__ICC8051__)
193 # define ARCHITECTURE_ID "8051"
195 # elif defined(__ICCSTM8__)
196 # define ARCHITECTURE_ID "STM8"
198 # else /* unknown architecture */
199 # define ARCHITECTURE_ID ""
200 # endif
202 #elif defined(__ghs__)
203 # if defined(__PPC64__)
204 # define ARCHITECTURE_ID "PPC64"
206 # elif defined(__ppc__)
207 # define ARCHITECTURE_ID "PPC"
209 # elif defined(__ARM__)
210 # define ARCHITECTURE_ID "ARM"
212 # elif defined(__x86_64__)
213 # define ARCHITECTURE_ID "x64"
215 # elif defined(__i386__)
216 # define ARCHITECTURE_ID "X86"
218 # else /* unknown architecture */
219 # define ARCHITECTURE_ID ""
220 # endif
222 #elif defined(__clang__) && defined(__ti__)
223 # if defined(__ARM_ARCH)
224 # define ARCHITECTURE_ID "Arm"
226 # else /* unknown architecture */
227 # define ARCHITECTURE_ID ""
228 # endif
230 #elif defined(__TI_COMPILER_VERSION__)
231 # if defined(__TI_ARM__)
232 # define ARCHITECTURE_ID "ARM"
234 # elif defined(__MSP430__)
235 # define ARCHITECTURE_ID "MSP430"
237 # elif defined(__TMS320C28XX__)
238 # define ARCHITECTURE_ID "TMS320C28x"
240 # elif defined(__TMS320C6X__) || defined(_TMS320C6X)
241 # define ARCHITECTURE_ID "TMS320C6x"
243 # else /* unknown architecture */
244 # define ARCHITECTURE_ID ""
245 # endif
247 # elif defined(__ADSPSHARC__)
248 # define ARCHITECTURE_ID "SHARC"
250 # elif defined(__ADSPBLACKFIN__)
251 # define ARCHITECTURE_ID "Blackfin"
253 #elif defined(__TASKING__)
255 # if defined(__CTC__) || defined(__CPTC__)
256 # define ARCHITECTURE_ID "TriCore"
258 # elif defined(__CMCS__)
259 # define ARCHITECTURE_ID "MCS"
261 # elif defined(__CARM__)
262 # define ARCHITECTURE_ID "ARM"
264 # elif defined(__CARC__)
265 # define ARCHITECTURE_ID "ARC"
267 # elif defined(__C51__)
268 # define ARCHITECTURE_ID "8051"
270 # elif defined(__CPCP__)
271 # define ARCHITECTURE_ID "PCP"
273 # else
274 # define ARCHITECTURE_ID ""
275 # endif
277 #else
278 # define ARCHITECTURE_ID
279 #endif
281 /* Convert integer to decimal digit literals. */
282 #define DEC(n) \
283 ('0' + (((n) / 10000000)%10)), \
284 ('0' + (((n) / 1000000)%10)), \
285 ('0' + (((n) / 100000)%10)), \
286 ('0' + (((n) / 10000)%10)), \
287 ('0' + (((n) / 1000)%10)), \
288 ('0' + (((n) / 100)%10)), \
289 ('0' + (((n) / 10)%10)), \
290 ('0' + ((n) % 10))
292 /* Convert integer to hex digit literals. */
293 #define HEX(n) \
294 ('0' + ((n)>>28 & 0xF)), \
295 ('0' + ((n)>>24 & 0xF)), \
296 ('0' + ((n)>>20 & 0xF)), \
297 ('0' + ((n)>>16 & 0xF)), \
298 ('0' + ((n)>>12 & 0xF)), \
299 ('0' + ((n)>>8 & 0xF)), \
300 ('0' + ((n)>>4 & 0xF)), \
301 ('0' + ((n) & 0xF))
303 /* Construct a string literal encoding the version number. */
304 #ifdef COMPILER_VERSION
305 char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]";
307 /* Construct a string literal encoding the version number components. */
308 #elif defined(COMPILER_VERSION_MAJOR)
309 char const info_version[] = {
310 'I', 'N', 'F', 'O', ':',
311 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
312 COMPILER_VERSION_MAJOR,
313 # ifdef COMPILER_VERSION_MINOR
314 '.', COMPILER_VERSION_MINOR,
315 # ifdef COMPILER_VERSION_PATCH
316 '.', COMPILER_VERSION_PATCH,
317 # ifdef COMPILER_VERSION_TWEAK
318 '.', COMPILER_VERSION_TWEAK,
319 # endif
320 # endif
321 # endif
322 ']','\0'};
323 #endif
325 /* Construct a string literal encoding the internal version number. */
326 #ifdef COMPILER_VERSION_INTERNAL
327 char const info_version_internal[] = {
328 'I', 'N', 'F', 'O', ':',
329 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_',
330 'i','n','t','e','r','n','a','l','[',
331 COMPILER_VERSION_INTERNAL,']','\0'};
332 #elif defined(COMPILER_VERSION_INTERNAL_STR)
333 char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]";
334 #endif
336 /* Construct a string literal encoding the version number components. */
337 #ifdef SIMULATE_VERSION_MAJOR
338 char const info_simulate_version[] = {
339 'I', 'N', 'F', 'O', ':',
340 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
341 SIMULATE_VERSION_MAJOR,
342 # ifdef SIMULATE_VERSION_MINOR
343 '.', SIMULATE_VERSION_MINOR,
344 # ifdef SIMULATE_VERSION_PATCH
345 '.', SIMULATE_VERSION_PATCH,
346 # ifdef SIMULATE_VERSION_TWEAK
347 '.', SIMULATE_VERSION_TWEAK,
348 # endif
349 # endif
350 # endif
351 ']','\0'};
352 #endif
354 /* Construct the string literal in pieces to prevent the source from
355 getting matched. Store it in a pointer rather than an array
356 because some compilers will just produce instructions to fill the
357 array rather than assigning a pointer to a static array. */
358 char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
359 char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";