Imported Upstream version 3.25.0
[platform/upstream/cmake.git] / Modules / CMakePlatformId.h.in
1 #define STRINGIFY_HELPER(X) #X
2 #define STRINGIFY(X) STRINGIFY_HELPER(X)
3
4 /* Identify known platforms by name.  */
5 #if defined(__linux) || defined(__linux__) || defined(linux)
6 # define PLATFORM_ID "Linux"
7
8 #elif defined(__MSYS__)
9 # define PLATFORM_ID "MSYS"
10
11 #elif defined(__CYGWIN__)
12 # define PLATFORM_ID "Cygwin"
13
14 #elif defined(__MINGW32__)
15 # define PLATFORM_ID "MinGW"
16
17 #elif defined(__APPLE__)
18 # define PLATFORM_ID "Darwin"
19
20 #elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
21 # define PLATFORM_ID "Windows"
22
23 #elif defined(__FreeBSD__) || defined(__FreeBSD)
24 # define PLATFORM_ID "FreeBSD"
25
26 #elif defined(__NetBSD__) || defined(__NetBSD)
27 # define PLATFORM_ID "NetBSD"
28
29 #elif defined(__OpenBSD__) || defined(__OPENBSD)
30 # define PLATFORM_ID "OpenBSD"
31
32 #elif defined(__sun) || defined(sun)
33 # define PLATFORM_ID "SunOS"
34
35 #elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
36 # define PLATFORM_ID "AIX"
37
38 #elif defined(__hpux) || defined(__hpux__)
39 # define PLATFORM_ID "HP-UX"
40
41 #elif defined(__HAIKU__)
42 # define PLATFORM_ID "Haiku"
43
44 #elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
45 # define PLATFORM_ID "BeOS"
46
47 #elif defined(__QNX__) || defined(__QNXNTO__)
48 # define PLATFORM_ID "QNX"
49
50 #elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
51 # define PLATFORM_ID "Tru64"
52
53 #elif defined(__riscos) || defined(__riscos__)
54 # define PLATFORM_ID "RISCos"
55
56 #elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
57 # define PLATFORM_ID "SINIX"
58
59 #elif defined(__UNIX_SV__)
60 # define PLATFORM_ID "UNIX_SV"
61
62 #elif defined(__bsdos__)
63 # define PLATFORM_ID "BSDOS"
64
65 #elif defined(_MPRAS) || defined(MPRAS)
66 # define PLATFORM_ID "MP-RAS"
67
68 #elif defined(__osf) || defined(__osf__)
69 # define PLATFORM_ID "OSF1"
70
71 #elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
72 # define PLATFORM_ID "SCO_SV"
73
74 #elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
75 # define PLATFORM_ID "ULTRIX"
76
77 #elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
78 # define PLATFORM_ID "Xenix"
79
80 #elif defined(__WATCOMC__)
81 # if defined(__LINUX__)
82 #  define PLATFORM_ID "Linux"
83
84 # elif defined(__DOS__)
85 #  define PLATFORM_ID "DOS"
86
87 # elif defined(__OS2__)
88 #  define PLATFORM_ID "OS2"
89
90 # elif defined(__WINDOWS__)
91 #  define PLATFORM_ID "Windows3x"
92
93 # elif defined(__VXWORKS__)
94 #  define PLATFORM_ID "VxWorks"
95
96 # else /* unknown platform */
97 #  define PLATFORM_ID
98 # endif
99
100 #elif defined(__INTEGRITY)
101 # if defined(INT_178B)
102 #  define PLATFORM_ID "Integrity178"
103
104 # else /* regular Integrity */
105 #  define PLATFORM_ID "Integrity"
106 # endif
107
108 # elif defined(_ADI_COMPILER)
109 #  define PLATFORM_ID "ADSP"
110
111 #else /* unknown platform */
112 # define PLATFORM_ID
113
114 #endif
115
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
120 */
121 #if defined(_WIN32) && defined(_MSC_VER)
122 # if defined(_M_IA64)
123 #  define ARCHITECTURE_ID "IA64"
124
125 # elif defined(_M_ARM64EC)
126 #  define ARCHITECTURE_ID "ARM64EC"
127
128 # elif defined(_M_X64) || defined(_M_AMD64)
129 #  define ARCHITECTURE_ID "x64"
130
131 # elif defined(_M_IX86)
132 #  define ARCHITECTURE_ID "X86"
133
134 # elif defined(_M_ARM64)
135 #  define ARCHITECTURE_ID "ARM64"
136
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
145
146 # elif defined(_M_MIPS)
147 #  define ARCHITECTURE_ID "MIPS"
148
149 # elif defined(_M_SH)
150 #  define ARCHITECTURE_ID "SHx"
151
152 # else /* unknown architecture */
153 #  define ARCHITECTURE_ID ""
154 # endif
155
156 #elif defined(__WATCOMC__)
157 # if defined(_M_I86)
158 #  define ARCHITECTURE_ID "I86"
159
160 # elif defined(_M_IX86)
161 #  define ARCHITECTURE_ID "X86"
162
163 # else /* unknown architecture */
164 #  define ARCHITECTURE_ID ""
165 # endif
166
167 #elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC)
168 # if defined(__ICCARM__)
169 #  define ARCHITECTURE_ID "ARM"
170
171 # elif defined(__ICCRX__)
172 #  define ARCHITECTURE_ID "RX"
173
174 # elif defined(__ICCRH850__)
175 #  define ARCHITECTURE_ID "RH850"
176
177 # elif defined(__ICCRL78__)
178 #  define ARCHITECTURE_ID "RL78"
179
180 # elif defined(__ICCRISCV__)
181 #  define ARCHITECTURE_ID "RISCV"
182
183 # elif defined(__ICCAVR__)
184 #  define ARCHITECTURE_ID "AVR"
185
186 # elif defined(__ICC430__)
187 #  define ARCHITECTURE_ID "MSP430"
188
189 # elif defined(__ICCV850__)
190 #  define ARCHITECTURE_ID "V850"
191
192 # elif defined(__ICC8051__)
193 #  define ARCHITECTURE_ID "8051"
194
195 # elif defined(__ICCSTM8__)
196 #  define ARCHITECTURE_ID "STM8"
197
198 # else /* unknown architecture */
199 #  define ARCHITECTURE_ID ""
200 # endif
201
202 #elif defined(__ghs__)
203 # if defined(__PPC64__)
204 #  define ARCHITECTURE_ID "PPC64"
205
206 # elif defined(__ppc__)
207 #  define ARCHITECTURE_ID "PPC"
208
209 # elif defined(__ARM__)
210 #  define ARCHITECTURE_ID "ARM"
211
212 # elif defined(__x86_64__)
213 #  define ARCHITECTURE_ID "x64"
214
215 # elif defined(__i386__)
216 #  define ARCHITECTURE_ID "X86"
217
218 # else /* unknown architecture */
219 #  define ARCHITECTURE_ID ""
220 # endif
221
222 #elif defined(__TI_COMPILER_VERSION__)
223 # if defined(__TI_ARM__)
224 #  define ARCHITECTURE_ID "ARM"
225
226 # elif defined(__MSP430__)
227 #  define ARCHITECTURE_ID "MSP430"
228
229 # elif defined(__TMS320C28XX__)
230 #  define ARCHITECTURE_ID "TMS320C28x"
231
232 # elif defined(__TMS320C6X__) || defined(_TMS320C6X)
233 #  define ARCHITECTURE_ID "TMS320C6x"
234
235 # else /* unknown architecture */
236 #  define ARCHITECTURE_ID ""
237 # endif
238
239 # elif defined(__ADSPSHARC__)
240 #  define ARCHITECTURE_ID "SHARC"
241
242 # elif defined(__ADSPBLACKFIN__)
243 #  define ARCHITECTURE_ID "Blackfin"
244
245 #elif defined(__TASKING__)
246
247 # if defined(__CTC__) || defined(__CPTC__)
248 #  define ARCHITECTURE_ID "TriCore"
249
250 # elif defined(__CMCS__)
251 #  define ARCHITECTURE_ID "MCS"
252
253 # elif defined(__CARM__)
254 #  define ARCHITECTURE_ID "ARM"
255
256 # elif defined(__CARC__)
257 #  define ARCHITECTURE_ID "ARC"
258
259 # elif defined(__C51__)
260 #  define ARCHITECTURE_ID "8051"
261
262 # elif defined(__CPCP__)
263 #  define ARCHITECTURE_ID "PCP"
264
265 # else
266 #  define ARCHITECTURE_ID ""
267 # endif
268
269 #else
270 #  define ARCHITECTURE_ID
271 #endif
272
273 /* Convert integer to decimal digit literals.  */
274 #define DEC(n)                   \
275   ('0' + (((n) / 10000000)%10)), \
276   ('0' + (((n) / 1000000)%10)),  \
277   ('0' + (((n) / 100000)%10)),   \
278   ('0' + (((n) / 10000)%10)),    \
279   ('0' + (((n) / 1000)%10)),     \
280   ('0' + (((n) / 100)%10)),      \
281   ('0' + (((n) / 10)%10)),       \
282   ('0' +  ((n) % 10))
283
284 /* Convert integer to hex digit literals.  */
285 #define HEX(n)             \
286   ('0' + ((n)>>28 & 0xF)), \
287   ('0' + ((n)>>24 & 0xF)), \
288   ('0' + ((n)>>20 & 0xF)), \
289   ('0' + ((n)>>16 & 0xF)), \
290   ('0' + ((n)>>12 & 0xF)), \
291   ('0' + ((n)>>8  & 0xF)), \
292   ('0' + ((n)>>4  & 0xF)), \
293   ('0' + ((n)     & 0xF))
294
295 /* Construct a string literal encoding the version number. */
296 #ifdef COMPILER_VERSION
297 char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]";
298
299 /* Construct a string literal encoding the version number components. */
300 #elif defined(COMPILER_VERSION_MAJOR)
301 char const info_version[] = {
302   'I', 'N', 'F', 'O', ':',
303   'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
304   COMPILER_VERSION_MAJOR,
305 # ifdef COMPILER_VERSION_MINOR
306   '.', COMPILER_VERSION_MINOR,
307 #  ifdef COMPILER_VERSION_PATCH
308    '.', COMPILER_VERSION_PATCH,
309 #   ifdef COMPILER_VERSION_TWEAK
310     '.', COMPILER_VERSION_TWEAK,
311 #   endif
312 #  endif
313 # endif
314   ']','\0'};
315 #endif
316
317 /* Construct a string literal encoding the internal version number. */
318 #ifdef COMPILER_VERSION_INTERNAL
319 char const info_version_internal[] = {
320   'I', 'N', 'F', 'O', ':',
321   'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_',
322   'i','n','t','e','r','n','a','l','[',
323   COMPILER_VERSION_INTERNAL,']','\0'};
324 #elif defined(COMPILER_VERSION_INTERNAL_STR)
325 char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]";
326 #endif
327
328 /* Construct a string literal encoding the version number components. */
329 #ifdef SIMULATE_VERSION_MAJOR
330 char const info_simulate_version[] = {
331   'I', 'N', 'F', 'O', ':',
332   's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
333   SIMULATE_VERSION_MAJOR,
334 # ifdef SIMULATE_VERSION_MINOR
335   '.', SIMULATE_VERSION_MINOR,
336 #  ifdef SIMULATE_VERSION_PATCH
337    '.', SIMULATE_VERSION_PATCH,
338 #   ifdef SIMULATE_VERSION_TWEAK
339     '.', SIMULATE_VERSION_TWEAK,
340 #   endif
341 #  endif
342 # endif
343   ']','\0'};
344 #endif
345
346 /* Construct the string literal in pieces to prevent the source from
347    getting matched.  Store it in a pointer rather than an array
348    because some compilers will just produce instructions to fill the
349    array rather than assigning a pointer to a static array.  */
350 char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
351 char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";