File indexing completed on 2025-09-15 09:17:18
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031 #if !defined(_PORTABLE_PLATFORM_H) || !defined(PLATFORM_HEADER_VERSION) \
0032 || _PORTABLE_PLATFORM_H != PLATFORM_HEADER_VERSION \
0033 || PLATFORM_HEADER_VERSION < 22
0034 #undef PLATFORM_HEADER_VERSION
0035 #define PLATFORM_HEADER_VERSION 22
0036 #undef _PORTABLE_PLATFORM_H
0037 #define _PORTABLE_PLATFORM_H PLATFORM_HEADER_VERSION
0038
0039
0040
0041
0042 #undef PLATFORM_COMPILER_FAMILYNAME
0043 #undef PLATFORM_COMPILER_FAMILYID
0044 #undef PLATFORM_COMPILER_ID
0045 #undef PLATFORM_COMPILER_VERSION
0046 #undef PLATFORM_COMPILER_VERSION_STR
0047 #undef PLATFORM_COMPILER_VERSION_INT
0048 #undef PLATFORM_COMPILER_IDSTR
0049 #undef PLATFORM_COMPILER_VERSION_GT
0050 #undef PLATFORM_COMPILER_VERSION_GE
0051 #undef PLATFORM_COMPILER_VERSION_EQ
0052 #undef PLATFORM_COMPILER_VERSION_LE
0053 #undef PLATFORM_COMPILER_VERSION_LT
0054 #undef PLATFORM_COMPILER_C_LANGLVL
0055 #undef PLATFORM_COMPILER_CXX_LANGLVL
0056 #undef PLATFORM_COMPILER_INTEL
0057 #undef PLATFORM_COMPILER_INTEL_C
0058 #undef PLATFORM_COMPILER_INTEL_CXX
0059 #undef PLATFORM_COMPILER_PATHSCALE
0060 #undef PLATFORM_COMPILER_PATHSCALE_C
0061 #undef PLATFORM_COMPILER_PATHSCALE_CXX
0062 #undef PLATFORM_COMPILER_PGI
0063 #undef PLATFORM_COMPILER_PGI_C
0064 #undef PLATFORM_COMPILER_PGI_CXX
0065 #undef PLATFORM_COMPILER_XLC
0066 #undef PLATFORM_COMPILER_XLC_C
0067 #undef PLATFORM_COMPILER_XLC_CXX
0068 #undef PLATFORM_COMPILER_COMPAQ
0069 #undef PLATFORM_COMPILER_COMPAQ_C
0070 #undef PLATFORM_COMPILER_COMPAQ_CXX
0071 #undef PLATFORM_COMPILER_SUN
0072 #undef PLATFORM_COMPILER_SUN_C
0073 #undef PLATFORM_COMPILER_SUN_CXX
0074 #undef PLATFORM_COMPILER_HP
0075 #undef PLATFORM_COMPILER_HP_C
0076 #undef PLATFORM_COMPILER_HP_CXX
0077 #undef PLATFORM_COMPILER_SGI
0078 #undef PLATFORM_COMPILER_SGI_C
0079 #undef PLATFORM_COMPILER_SGI_CXX
0080 #undef PLATFORM_COMPILER_CRAY
0081 #undef PLATFORM_COMPILER_CRAY_C
0082 #undef PLATFORM_COMPILER_CRAY_CXX
0083 #undef PLATFORM_COMPILER_KAI
0084 #undef PLATFORM_COMPILER_KAI_C
0085 #undef PLATFORM_COMPILER_KAI_CXX
0086 #undef PLATFORM_COMPILER_MTA
0087 #undef PLATFORM_COMPILER_MTA_C
0088 #undef PLATFORM_COMPILER_MTA_CXX
0089 #undef PLATFORM_COMPILER_NECSX
0090 #undef PLATFORM_COMPILER_NECSX_C
0091 #undef PLATFORM_COMPILER_NECSX_CXX
0092 #undef PLATFORM_COMPILER_MICROSOFT
0093 #undef PLATFORM_COMPILER_MICROSOFT_C
0094 #undef PLATFORM_COMPILER_MICROSOFT_CXX
0095 #undef PLATFORM_COMPILER_TINY
0096 #undef PLATFORM_COMPILER_TINY_C
0097 #undef PLATFORM_COMPILER_TINY_CXX
0098 #undef PLATFORM_COMPILER_LCC
0099 #undef PLATFORM_COMPILER_LCC_C
0100 #undef PLATFORM_COMPILER_LCC_CXX
0101 #undef PLATFORM_COMPILER_OPEN64
0102 #undef PLATFORM_COMPILER_OPEN64_C
0103 #undef PLATFORM_COMPILER_OPEN64_CXX
0104 #undef PLATFORM_COMPILER_PCC
0105 #undef PLATFORM_COMPILER_PCC_C
0106 #undef PLATFORM_COMPILER_PCC_CXX
0107 #undef PLATFORM_COMPILER_CLANG
0108 #undef PLATFORM_COMPILER_CLANG_C
0109 #undef PLATFORM_COMPILER_CLANG_CXX
0110 #undef PLATFORM_COMPILER_NVHPC
0111 #undef PLATFORM_COMPILER_NVHPC_C
0112 #undef PLATFORM_COMPILER_NVHPC_CXX
0113 #undef PLATFORM_COMPILER_GNU
0114 #undef PLATFORM_COMPILER_GNU_C
0115 #undef PLATFORM_COMPILER_GNU_CXX
0116 #undef PLATFORM_COMPILER_UNKNOWN
0117
0118 #undef PLATFORM_OS_FAMILYNAME
0119 #undef PLATFORM_OS_SUBFAMILYNAME
0120 #undef PLATFORM_OS_CATAMOUNT
0121 #undef PLATFORM_OS_BGP
0122 #undef PLATFORM_OS_BGQ
0123 #undef PLATFORM_OS_K42
0124 #undef PLATFORM_OS_UCLINUX
0125 #undef PLATFORM_OS_LINUX
0126 #undef PLATFORM_OS_CNL
0127 #undef PLATFORM_OS_SUBFAMILY_CNL
0128 #undef PLATFORM_OS_WSL
0129 #undef PLATFORM_OS_SUBFAMILY_WSL
0130 #undef PLATFORM_OS_BLRTS
0131 #undef PLATFORM_OS_CYGWIN
0132 #undef PLATFORM_OS_MSWINDOWS
0133 #undef PLATFORM_OS_AIX
0134 #undef PLATFORM_OS_TRU64
0135 #undef PLATFORM_OS_FREEBSD
0136 #undef PLATFORM_OS_NETBSD
0137 #undef PLATFORM_OS_OPENBSD
0138 #undef PLATFORM_OS_SOLARIS
0139 #undef PLATFORM_OS_DARWIN
0140 #undef PLATFORM_OS_IRIX
0141 #undef PLATFORM_OS_HPUX
0142 #undef PLATFORM_OS_UNICOS
0143 #undef PLATFORM_OS_MTA
0144 #undef PLATFORM_OS_SUPERUX
0145 #undef PLATFORM_OS_UNKNOWN
0146
0147 #undef PLATFORM_ARCH_FAMILYNAME
0148 #undef PLATFORM_ARCH_32
0149 #undef _PLATFORM_ARCH_32
0150 #undef PLATFORM_ARCH_64
0151 #undef _PLATFORM_ARCH_64
0152 #undef PLATFORM_ARCH_BIG_ENDIAN
0153 #undef _PLATFORM_ARCH_BIG_ENDIAN
0154 #undef PLATFORM_ARCH_LITTLE_ENDIAN
0155 #undef _PLATFORM_ARCH_LITTLE_ENDIAN
0156 #undef PLATFORM_ARCH_POWERPC
0157 #undef PLATFORM_ARCH_MIC
0158 #undef PLATFORM_ARCH_X86_64
0159 #undef PLATFORM_ARCH_IA64
0160 #undef PLATFORM_ARCH_X86
0161 #undef PLATFORM_ARCH_ALPHA
0162 #undef PLATFORM_ARCH_MIPS
0163 #undef PLATFORM_ARCH_SPARC
0164 #undef PLATFORM_ARCH_PARISC
0165 #undef PLATFORM_ARCH_CRAYX1
0166 #undef PLATFORM_ARCH_CRAYT3E
0167 #undef PLATFORM_ARCH_MTA
0168 #undef PLATFORM_ARCH_NECSX
0169 #undef PLATFORM_ARCH_MICROBLAZE
0170 #undef PLATFORM_ARCH_ARM
0171 #undef PLATFORM_ARCH_AARCH64
0172 #undef PLATFORM_ARCH_TILE
0173 #undef PLATFORM_ARCH_S390
0174 #undef PLATFORM_ARCH_RISCV
0175 #undef PLATFORM_ARCH_UNKNOWN
0176
0177
0178 #undef OMPI_PORTABLE_PLATFORM_H
0179 #define OMPI_PORTABLE_PLATFORM_H
0180 #undef OPAL_PORTABLE_PLATFORM_H
0181 #define OPAL_PORTABLE_PLATFORM_H
0182
0183
0184
0185
0186
0187
0188
0189
0190
0191
0192 #undef _PLATFORM_STRINGIFY_HELPER
0193 #define _PLATFORM_STRINGIFY_HELPER(x) #x
0194 #undef PLATFORM_STRINGIFY
0195 #define PLATFORM_STRINGIFY(x) _PLATFORM_STRINGIFY_HELPER(x)
0196
0197
0198
0199
0200
0201
0202
0203
0204
0205
0206
0207
0208
0209
0210
0211
0212
0213
0214
0215
0216
0217
0218
0219
0220
0221
0222
0223
0224
0225
0226
0227
0228
0229
0230
0231
0232 #if defined(__INTEL_COMPILER)
0233 #define PLATFORM_COMPILER_INTEL 1
0234 #define PLATFORM_COMPILER_FAMILYNAME INTEL
0235 #define PLATFORM_COMPILER_FAMILYID 2
0236 #ifdef __cplusplus
0237 #define PLATFORM_COMPILER_INTEL_CXX 1
0238 #else
0239 #define PLATFORM_COMPILER_INTEL_C 1
0240 #endif
0241
0242
0243
0244
0245
0246
0247
0248
0249
0250
0251
0252
0253
0254
0255
0256
0257
0258 #undef _PLATFORM_INTEL_COMPILER_BUILD_DATE
0259 #undef _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE
0260 #define _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE 19900000
0261
0262
0263
0264
0265 #ifdef __INTEL_COMPILER_BUILD_DATE
0266 #define _PLATFORM_INTEL_COMPILER_BUILD_DATE __INTEL_COMPILER_BUILD_DATE
0267 #else
0268 #define _PLATFORM_INTEL_COMPILER_BUILD_DATE _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE
0269 #endif
0270
0271 #define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \
0272 (((((maj) * 100) + (min)) << 19) | \
0273 ((pat) < _PLATFORM_COMPILER_INTEL_MIN_BUILDDATE ? \
0274 0 : ((pat)-_PLATFORM_COMPILER_INTEL_MIN_BUILDDATE)))
0275 #undef _PLATFORM__INTEL_COMPILER
0276 #if __INTEL_COMPILER == 9999
0277 #define _PLATFORM__INTEL_COMPILER 1201
0278 #else
0279 #define _PLATFORM__INTEL_COMPILER __INTEL_COMPILER
0280 #endif
0281 #define PLATFORM_COMPILER_VERSION \
0282 PLATFORM_COMPILER_VERSION_INT(_PLATFORM__INTEL_COMPILER/100, _PLATFORM__INTEL_COMPILER%100, _PLATFORM_INTEL_COMPILER_BUILD_DATE)
0283 #define PLATFORM_COMPILER_VERSION_STR \
0284 PLATFORM_STRINGIFY(_PLATFORM__INTEL_COMPILER) "." PLATFORM_STRINGIFY(_PLATFORM_INTEL_COMPILER_BUILD_DATE)
0285
0286 #elif defined(__PATHSCALE__)
0287 #define PLATFORM_COMPILER_PATHSCALE 1
0288 #define PLATFORM_COMPILER_FAMILYNAME PATHSCALE
0289 #define PLATFORM_COMPILER_FAMILYID 3
0290 #ifdef __cplusplus
0291 #define PLATFORM_COMPILER_PATHSCALE_CXX 1
0292 #else
0293 #define PLATFORM_COMPILER_PATHSCALE_C 1
0294 #endif
0295 #define PLATFORM_COMPILER_VERSION \
0296 PLATFORM_COMPILER_VERSION_INT(__PATHCC__,__PATHCC_MINOR__,__PATHCC_PATCHLEVEL__+0)
0297 #define PLATFORM_COMPILER_VERSION_STR __PATHSCALE__
0298
0299 #elif defined(__NVCOMPILER)
0300 #define PLATFORM_COMPILER_NVHPC 1
0301 #define PLATFORM_COMPILER_FAMILYNAME NVHPC
0302 #define PLATFORM_COMPILER_FAMILYID 20
0303 #ifdef __cplusplus
0304 #define PLATFORM_COMPILER_NVHPC_CXX 1
0305 #else
0306 #define PLATFORM_COMPILER_NVHPC_C 1
0307 #endif
0308 #define PLATFORM_COMPILER_VERSION \
0309 PLATFORM_COMPILER_VERSION_INT(__NVCOMPILER_MAJOR__,__NVCOMPILER_MINOR__,__NVCOMPILER_PATCHLEVEL__)
0310 #define PLATFORM_COMPILER_VERSION_STR \
0311 PLATFORM_STRINGIFY(__NVCOMPILER_MAJOR__) "." PLATFORM_STRINGIFY(__NVCOMPILER_MINOR__) "-" PLATFORM_STRINGIFY(__NVCOMPILER_PATCHLEVEL__)
0312
0313 #elif defined(__PGI)
0314 #define PLATFORM_COMPILER_PGI 1
0315 #define PLATFORM_COMPILER_FAMILYNAME PGI
0316 #define PLATFORM_COMPILER_FAMILYID 4
0317 #ifdef __cplusplus
0318 #define PLATFORM_COMPILER_PGI_CXX 1
0319 #else
0320 #define PLATFORM_COMPILER_PGI_C 1
0321 #endif
0322 #if __PGIC__ == 99
0323
0324
0325 #define PLATFORM_COMPILER_VERSION 0x070000
0326 #define PLATFORM_COMPILER_VERSION_STR "7.?-?"
0327 #elif defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__)
0328 #define PLATFORM_COMPILER_VERSION \
0329 PLATFORM_COMPILER_VERSION_INT(__PGIC__,__PGIC_MINOR__,__PGIC_PATCHLEVEL__)
0330 #define PLATFORM_COMPILER_VERSION_STR \
0331 PLATFORM_STRINGIFY(__PGIC__) "." PLATFORM_STRINGIFY(__PGIC_MINOR__) "-" PLATFORM_STRINGIFY(__PGIC_PATCHLEVEL__)
0332 #else
0333
0334 #ifdef PLATFORM_PGI_IS_ANCIENT
0335
0336
0337 #define PLATFORM_COMPILER_VERSION 0
0338 #elif defined(__x86_64__)
0339 #include "omp.h"
0340 #if defined(_PGOMP_H)
0341
0342 #define PLATFORM_COMPILER_VERSION 0x060101
0343 #define PLATFORM_COMPILER_VERSION_STR ">=6.1-1"
0344 #else
0345
0346 #define PLATFORM_COMPILER_VERSION 0
0347 #define PLATFORM_COMPILER_VERSION_STR "<=6.0-8"
0348 #endif
0349 #else
0350 #include "omp.h"
0351 #if defined(_PGOMP_H)
0352
0353 #define PLATFORM_COMPILER_VERSION 0x060008
0354 #define PLATFORM_COMPILER_VERSION_STR ">=6.0-8"
0355 #else
0356
0357 #define PLATFORM_COMPILER_VERSION 0
0358 #define PLATFORM_COMPILER_VERSION_STR "<=5.2-4"
0359 #endif
0360 #endif
0361 #endif
0362
0363 #elif defined(__xlC__) || defined(__ibmxl__)
0364 #define PLATFORM_COMPILER_XLC 1
0365 #define PLATFORM_COMPILER_FAMILYNAME XLC
0366 #define PLATFORM_COMPILER_FAMILYID 5
0367 #ifdef __cplusplus
0368 #define PLATFORM_COMPILER_XLC_CXX 1
0369 #else
0370 #define PLATFORM_COMPILER_XLC_C 1
0371 #endif
0372 #ifdef __ibmxl_version__
0373 #define PLATFORM_COMPILER_VERSION \
0374 (__ibmxl_version__ << 24 | __ibmxl_release__ << 16 | \
0375 __ibmxl_modification__ << 8 | __ibmxl_ptf_fix_level__)
0376 #define PLATFORM_COMPILER_VERSION_STR \
0377 PLATFORM_STRINGIFY(__ibmxl_version__) "." PLATFORM_STRINGIFY(__ibmxl_release__) "." PLATFORM_STRINGIFY(__ibmxl_modification__) "." PLATFORM_STRINGIFY(__ibmxl_ptf_fix_level__)
0378 #else
0379 #ifdef __xlC_ver__
0380 #define PLATFORM_COMPILER_VERSION (__xlC__ << 16 | __xlC_ver__)
0381 #else
0382 #define PLATFORM_COMPILER_VERSION (__xlC__ << 16)
0383 #endif
0384 #ifdef __xlc__
0385 #define PLATFORM_COMPILER_VERSION_STR __xlc__
0386 #else
0387 #define PLATFORM_COMPILER_VERSION_STR PLATFORM_STRINGIFY(__xlC__)
0388 #endif
0389 #endif
0390 #define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \
0391 ( ((maj) << 24) | ((min) << 16) | ((pat) << 8) )
0392
0393 #elif defined(__DECC) || defined(__DECCXX)
0394 #define PLATFORM_COMPILER_COMPAQ 1
0395 #define PLATFORM_COMPILER_FAMILYNAME COMPAQ
0396 #define PLATFORM_COMPILER_FAMILYID 6
0397 #ifdef __cplusplus
0398 #define PLATFORM_COMPILER_COMPAQ_CXX 1
0399 #else
0400 #define PLATFORM_COMPILER_COMPAQ_C 1
0401 #endif
0402 #if defined(__DECC_VER)
0403 #define PLATFORM_COMPILER_VERSION __DECC_VER
0404 #elif defined(__DECCXX_VER)
0405 #define PLATFORM_COMPILER_VERSION __DECCXX_VER
0406 #endif
0407
0408 #define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \
0409 ( ((maj) * 10000000) + ((min) * 100000) + (90000) + (pat) )
0410
0411
0412 #elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
0413 #define PLATFORM_COMPILER_SUN 1
0414 #define PLATFORM_COMPILER_FAMILYNAME SUN
0415 #define PLATFORM_COMPILER_FAMILYID 7
0416 #ifdef __cplusplus
0417 #define PLATFORM_COMPILER_SUN_CXX 1
0418 #else
0419 #define PLATFORM_COMPILER_SUN_C 1
0420 #endif
0421 #if defined(__SUNPRO_C) && __SUNPRO_C > 0
0422 #define PLATFORM_COMPILER_VERSION __SUNPRO_C
0423 #elif defined(__SUNPRO_CC) && __SUNPRO_CC > 0
0424 #define PLATFORM_COMPILER_VERSION __SUNPRO_CC
0425 #endif
0426
0427
0428
0429 #define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) ( \
0430 (min) < 10 ? \
0431 ( ((maj) << 8) | ((min) << 4) | (pat) ) : \
0432 ( ((maj) << 12) | (((min)/10) << 8) | (((min)%10) << 4) | (pat) ) )
0433
0434 #elif defined(__HP_cc) || defined(__HP_aCC)
0435 #define PLATFORM_COMPILER_HP 1
0436 #define PLATFORM_COMPILER_FAMILYNAME HP
0437 #define PLATFORM_COMPILER_FAMILYID 8
0438 #ifdef __cplusplus
0439 #define PLATFORM_COMPILER_HP_CXX 1
0440 #else
0441 #define PLATFORM_COMPILER_HP_C 1
0442 #endif
0443 #if defined(__HP_cc) && __HP_cc > 0
0444 #define PLATFORM_COMPILER_VERSION __HP_cc
0445 #elif defined(__HP_aCC) && __HP_aCC > 0
0446 #define PLATFORM_COMPILER_VERSION __HP_aCC
0447 #endif
0448 #define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \
0449 ( ((maj) << 16) | ((min) << 8) | (pat) )
0450
0451 #elif defined(_SGI_COMPILER_VERSION) || \
0452 (defined(_COMPILER_VERSION) && defined(__sgi) && !defined(__GNUC__))
0453 #define PLATFORM_COMPILER_SGI 1
0454 #define PLATFORM_COMPILER_FAMILYNAME SGI
0455 #define PLATFORM_COMPILER_FAMILYID 9
0456 #ifdef __cplusplus
0457 #define PLATFORM_COMPILER_SGI_CXX 1
0458 #else
0459 #define PLATFORM_COMPILER_SGI_C 1
0460 #endif
0461 #if defined(_SGI_COMPILER_VERSION) && _SGI_COMPILER_VERSION > 0
0462 #define PLATFORM_COMPILER_VERSION _SGI_COMPILER_VERSION
0463 #elif defined(_COMPILER_VERSION) && _COMPILER_VERSION > 0
0464 #define PLATFORM_COMPILER_VERSION _COMPILER_VERSION
0465 #endif
0466 #define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \
0467 ( ((maj) << 8) | ((min) << 4) | (pat) )
0468
0469 #elif defined(_CRAYC)
0470 #define PLATFORM_COMPILER_CRAY 1
0471 #define PLATFORM_COMPILER_FAMILYNAME CRAY
0472 #define PLATFORM_COMPILER_FAMILYID 10
0473 #ifdef __cplusplus
0474 #define PLATFORM_COMPILER_CRAY_CXX 1
0475 #else
0476 #define PLATFORM_COMPILER_CRAY_C 1
0477 #endif
0478 #if defined(_RELEASE_MAJOR) && defined(_RELEASE_MINOR)
0479 #define PLATFORM_COMPILER_VERSION \
0480 PLATFORM_COMPILER_VERSION_INT(_RELEASE_MAJOR,_RELEASE_MINOR,0)
0481 #elif defined(_RELEASE) && defined(_RELEASE_MINOR)
0482 #define PLATFORM_COMPILER_VERSION \
0483 PLATFORM_COMPILER_VERSION_INT(_RELEASE,_RELEASE_MINOR,0)
0484 #elif defined(_RELEASE)
0485 #define PLATFORM_COMPILER_VERSION \
0486 PLATFORM_COMPILER_VERSION_INT(_RELEASE,0,0)
0487 #endif
0488 #ifdef _RELEASE_STRING
0489 #define PLATFORM_COMPILER_VERSION_STR _RELEASE_STRING
0490 #endif
0491
0492 #elif defined(__KCC)
0493 #define PLATFORM_COMPILER_KAI 1
0494 #define PLATFORM_COMPILER_FAMILYNAME KAI
0495 #define PLATFORM_COMPILER_FAMILYID 11
0496 #ifdef __cplusplus
0497 #define PLATFORM_COMPILER_KAI_CXX 1
0498 #else
0499 #define PLATFORM_COMPILER_KAI_C 1
0500 #endif
0501
0502 #elif defined(__MTA__)
0503 #define PLATFORM_COMPILER_MTA 1
0504 #define PLATFORM_COMPILER_FAMILYNAME MTA
0505 #define PLATFORM_COMPILER_FAMILYID 12
0506 #ifdef __cplusplus
0507 #define PLATFORM_COMPILER_MTA_CXX 1
0508 #else
0509 #define PLATFORM_COMPILER_MTA_C 1
0510 #endif
0511
0512 #elif defined(_SX)
0513 #define PLATFORM_COMPILER_NECSX 1
0514 #define PLATFORM_COMPILER_FAMILYNAME NECSX
0515 #define PLATFORM_COMPILER_FAMILYID 13
0516 #ifdef __cplusplus
0517 #define PLATFORM_COMPILER_NECSX_CXX 1
0518 #else
0519 #define PLATFORM_COMPILER_NECSX_C 1
0520 #endif
0521
0522 #elif defined(_MSC_VER)
0523 #define PLATFORM_COMPILER_MICROSOFT 1
0524 #define PLATFORM_COMPILER_FAMILYNAME MICROSOFT
0525 #define PLATFORM_COMPILER_FAMILYID 14
0526 #ifdef __cplusplus
0527 #define PLATFORM_COMPILER_MICROSOFT_CXX 1
0528 #else
0529 #define PLATFORM_COMPILER_MICROSOFT_C 1
0530 #endif
0531 #define PLATFORM_COMPILER_VERSION _MSC_VER
0532
0533 #elif defined(__TINYC__)
0534 #define PLATFORM_COMPILER_TINY 1
0535 #define PLATFORM_COMPILER_FAMILYNAME TINY
0536 #define PLATFORM_COMPILER_FAMILYID 15
0537 #ifdef __cplusplus
0538 #define PLATFORM_COMPILER_TINY_CXX 1
0539 #else
0540 #define PLATFORM_COMPILER_TINY_C 1
0541 #endif
0542
0543 #elif defined(__LCC__)
0544 #define PLATFORM_COMPILER_LCC 1
0545 #define PLATFORM_COMPILER_FAMILYNAME LCC
0546 #define PLATFORM_COMPILER_FAMILYID 16
0547 #ifdef __cplusplus
0548 #define PLATFORM_COMPILER_LCC_CXX 1
0549 #else
0550 #define PLATFORM_COMPILER_LCC_C 1
0551 #endif
0552
0553 #elif defined(__OPENCC__)
0554 #define PLATFORM_COMPILER_OPEN64 1
0555 #define PLATFORM_COMPILER_FAMILYNAME OPEN64
0556 #define PLATFORM_COMPILER_FAMILYID 17
0557 #ifdef __cplusplus
0558 #define PLATFORM_COMPILER_OPEN64_CXX 1
0559 #else
0560 #define PLATFORM_COMPILER_OPEN64_C 1
0561 #endif
0562
0563
0564 #define PLATFORM_COMPILER_VERSION \
0565 PLATFORM_COMPILER_VERSION_INT(__OPENCC__,__OPENCC_MINOR__,0)
0566 #define PLATFORM_COMPILER_VERSION_STR __OPEN64__
0567
0568 #elif defined(__PCC__)
0569 #define PLATFORM_COMPILER_PCC 1
0570 #define PLATFORM_COMPILER_FAMILYNAME PCC
0571 #define PLATFORM_COMPILER_FAMILYID 18
0572 #ifdef __cplusplus
0573 #define PLATFORM_COMPILER_PCC_CXX 1
0574 #else
0575 #define PLATFORM_COMPILER_PCC_C 1
0576 #endif
0577 #define PLATFORM_COMPILER_VERSION \
0578 PLATFORM_COMPILER_VERSION_INT(__PCC__,__PCC_MINOR__,__PCC_MINORMINOR__)
0579 #define PLATFORM_COMPILER_VERSION_STR \
0580 PLATFORM_STRINGIFY(__PCC__) "." PLATFORM_STRINGIFY(__PCC_MINOR__) "." PLATFORM_STRINGIFY(__PCC_MINORMINOR__)
0581
0582 #elif defined(__clang__)
0583 #define PLATFORM_COMPILER_CLANG 1
0584 #define PLATFORM_COMPILER_FAMILYNAME CLANG
0585 #define PLATFORM_COMPILER_FAMILYID 19
0586 #ifdef __cplusplus
0587 #define PLATFORM_COMPILER_CLANG_CXX 1
0588 #else
0589 #define PLATFORM_COMPILER_CLANG_C 1
0590 #endif
0591 #ifdef __clang_version__
0592
0593 #define PLATFORM_COMPILER_VERSION \
0594 PLATFORM_COMPILER_VERSION_INT(__clang_major__,__clang_minor__,__clang_patchlevel__)
0595 #define PLATFORM_COMPILER_VERSION_STR __clang_version__
0596 #endif
0597
0598
0599
0600 #else
0601 #define PLATFORM_COMPILER_UNKNOWN 1
0602 #endif
0603
0604
0605
0606 #undef _PLATFORM_COMPILER_GNU_VERSION_STR
0607 #undef __PLATFORM_COMPILER_GNU_VERSION_STR
0608 #if defined(__GNUC__)
0609 #undef PLATFORM_COMPILER_UNKNOWN
0610 #ifndef PLATFORM_COMPILER_FAMILYID
0611 #define PLATFORM_COMPILER_GNU 1
0612 #define PLATFORM_COMPILER_FAMILYNAME GNU
0613 #define PLATFORM_COMPILER_FAMILYID 1
0614 #ifdef __cplusplus
0615 #define PLATFORM_COMPILER_GNU_CXX 1
0616 #else
0617 #define PLATFORM_COMPILER_GNU_C 1
0618 #endif
0619 #if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
0620 #define PLATFORM_COMPILER_VERSION \
0621 PLATFORM_COMPILER_VERSION_INT(__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__)
0622 #elif defined(__GNUC_MINOR__)
0623 #define PLATFORM_COMPILER_VERSION \
0624 PLATFORM_COMPILER_VERSION_INT(__GNUC__,__GNUC_MINOR__,0)
0625 #else
0626 #define PLATFORM_COMPILER_VERSION \
0627 PLATFORM_COMPILER_VERSION_INT(__GNUC__,0,0)
0628 #endif
0629 #define PLATFORM_COMPILER_VERSION_STR __PLATFORM_COMPILER_GNU_VERSION_STR
0630 #else
0631 #define _PLATFORM_COMPILER_GNU_VERSION_STR __PLATFORM_COMPILER_GNU_VERSION_STR
0632 #endif
0633
0634 #if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
0635 #define __PLATFORM_COMPILER_GNU_VERSION_STR \
0636 PLATFORM_STRINGIFY(__GNUC__) "." PLATFORM_STRINGIFY(__GNUC_MINOR__) "." PLATFORM_STRINGIFY(__GNUC_PATCHLEVEL__)
0637 #elif defined(__GNUC_MINOR__)
0638 #define __PLATFORM_COMPILER_GNU_VERSION_STR \
0639 PLATFORM_STRINGIFY(__GNUC__) "." PLATFORM_STRINGIFY(__GNUC_MINOR__) ".?"
0640 #else
0641 #define __PLATFORM_COMPILER_GNU_VERSION_STR \
0642 PLATFORM_STRINGIFY(__GNUC__) ".?.?"
0643 #endif
0644 #elif defined(PLATFORM_COMPILER_UNKNOWN)
0645 #define PLATFORM_COMPILER_FAMILYNAME UNKNOWN
0646 #define PLATFORM_COMPILER_FAMILYID 0
0647 #endif
0648
0649
0650
0651 #ifndef PLATFORM_COMPILER_VERSION
0652 #define PLATFORM_COMPILER_VERSION 0
0653 #endif
0654
0655 #ifndef PLATFORM_COMPILER_VERSION_STR
0656 #define PLATFORM_COMPILER_VERSION_STR PLATFORM_STRINGIFY(PLATFORM_COMPILER_VERSION)
0657 #endif
0658
0659 #ifndef PLATFORM_COMPILER_VERSION_INT
0660 #define PLATFORM_COMPILER_VERSION_INT(maj,min,pat) \
0661 (((maj) << 16) | ((min) << 8) | (pat))
0662 #endif
0663
0664
0665
0666 #define PLATFORM_COMPILER_VERSION_GT(maj,min,pat) \
0667 PLATFORM_COMPILER_VERSION > PLATFORM_COMPILER_VERSION_INT(maj,min,pat)
0668 #define PLATFORM_COMPILER_VERSION_GE(maj,min,pat) \
0669 PLATFORM_COMPILER_VERSION >= PLATFORM_COMPILER_VERSION_INT(maj,min,pat)
0670 #define PLATFORM_COMPILER_VERSION_EQ(maj,min,pat) \
0671 PLATFORM_COMPILER_VERSION == PLATFORM_COMPILER_VERSION_INT(maj,min,pat)
0672 #define PLATFORM_COMPILER_VERSION_LE(maj,min,pat) \
0673 PLATFORM_COMPILER_VERSION <= PLATFORM_COMPILER_VERSION_INT(maj,min,pat)
0674 #define PLATFORM_COMPILER_VERSION_LT(maj,min,pat) \
0675 PLATFORM_COMPILER_VERSION < PLATFORM_COMPILER_VERSION_INT(maj,min,pat)
0676
0677
0678
0679 #ifdef __cplusplus
0680 #define PLATFORM_COMPILER_ID (10000+PLATFORM_COMPILER_FAMILYID)
0681 #else
0682 #define PLATFORM_COMPILER_ID PLATFORM_COMPILER_FAMILYID
0683 #endif
0684
0685
0686 #if !defined(PLATFORM_COMPILER_C_LANGLVL) && !defined(PLATFORM_COMPILER_CXX_LANGLVL)
0687 #if defined(__cplusplus) && (__cplusplus > 0)
0688 #define PLATFORM_COMPILER_CXX_LANGLVL __cplusplus
0689 #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ > 0)
0690 #define PLATFORM_COMPILER_C_LANGLVL __STDC_VERSION__
0691 #elif defined(__STDC__) && !defined(__cplusplus) && !defined(__STDC_VERSION__)
0692 #define PLATFORM_COMPILER_C_LANGLVL 199000L
0693 #else
0694
0695 #endif
0696 #endif
0697
0698 #undef _PLATFORM_COMPILER_STD_STDC
0699 #ifdef __STDC__
0700 #define _PLATFORM_COMPILER_STD_STDC "__STDC__"
0701 #else
0702 #define _PLATFORM_COMPILER_STD_STDC "-"
0703 #endif
0704 #undef _PLATFORM_COMPILER_STD_STDC_VERSION
0705 #ifdef __STDC_VERSION__
0706 #define _PLATFORM_COMPILER_STD_STDC_VERSION ",__STDC_VERSION__=" PLATFORM_STRINGIFY(__STDC_VERSION__)
0707 #else
0708 #define _PLATFORM_COMPILER_STD_STDC_VERSION
0709 #endif
0710 #undef _PLATFORM_COMPILER_STD_STDC_EXT
0711 #ifdef __STDC_EXT__
0712 #define _PLATFORM_COMPILER_STD_STDC_EXT ",__STDC_EXT__=" PLATFORM_STRINGIFY(__STDC_EXT__)
0713 #else
0714 #define _PLATFORM_COMPILER_STD_STDC_EXT
0715 #endif
0716 #undef _PLATFORM_COMPILER_STD_CPLUSPLUS
0717 #ifdef __cplusplus
0718 #define _PLATFORM_COMPILER_STD_CPLUSPLUS ",__cplusplus=" PLATFORM_STRINGIFY(__cplusplus)
0719 #else
0720 #define _PLATFORM_COMPILER_STD_CPLUSPLUS
0721 #endif
0722
0723 #undef _PLATFORM_COMPILER_MISC_VERSION_STR
0724 #ifndef _PLATFORM_COMPILER_MISC_VERSION_STR
0725 #ifdef __VERSION__
0726 #define _PLATFORM_COMPILER_MISC_VERSION_STR "|misc:" __VERSION__
0727 #else
0728 #define _PLATFORM_COMPILER_MISC_VERSION_STR
0729 #endif
0730 #endif
0731 #undef _PLATFORM_COMPILER_GNU_VERSION_STR_HELP
0732 #ifdef _PLATFORM_COMPILER_GNU_VERSION_STR
0733 #define _PLATFORM_COMPILER_GNU_VERSION_STR_HELP "|GNU:" _PLATFORM_COMPILER_GNU_VERSION_STR
0734 #else
0735 #define _PLATFORM_COMPILER_GNU_VERSION_STR_HELP
0736 #endif
0737
0738 #define PLATFORM_COMPILER_IDSTR \
0739 "|COMPILER_FAMILY:" \
0740 PLATFORM_STRINGIFY(PLATFORM_COMPILER_FAMILYNAME) \
0741 "|COMPILER_VERSION:" PLATFORM_COMPILER_VERSION_STR \
0742 "|COMPILER_FAMILYID:" \
0743 PLATFORM_STRINGIFY(PLATFORM_COMPILER_FAMILYID) \
0744 _PLATFORM_COMPILER_GNU_VERSION_STR_HELP \
0745 "|STD:" _PLATFORM_COMPILER_STD_STDC \
0746 _PLATFORM_COMPILER_STD_STDC_VERSION \
0747 _PLATFORM_COMPILER_STD_STDC_EXT \
0748 _PLATFORM_COMPILER_STD_CPLUSPLUS \
0749 _PLATFORM_COMPILER_MISC_VERSION_STR \
0750 "|"
0751
0752
0753
0754
0755
0756
0757
0758
0759
0760
0761
0762
0763
0764
0765 #if defined(__LIBCATAMOUNT__) || defined(__QK_USER__)
0766 #define PLATFORM_OS_CATAMOUNT 1
0767 #define PLATFORM_OS_FAMILYNAME CATAMOUNT
0768
0769 #elif defined(GASNETI_ARCH_BGP) || defined(__bgp__)
0770 #define PLATFORM_OS_BGP 1
0771 #define PLATFORM_OS_FAMILYNAME BGP
0772
0773 #elif defined(GASNETI_ARCH_BGQ) || defined(__bgq__)
0774 #define PLATFORM_OS_BGQ 1
0775 #define PLATFORM_OS_FAMILYNAME BGQ
0776
0777 #elif defined(__K42)
0778 #define PLATFORM_OS_K42 1
0779 #define PLATFORM_OS_FAMILYNAME K42
0780
0781 #elif defined(__uClinux__)
0782 #define PLATFORM_OS_UCLINUX 1
0783 #define PLATFORM_OS_FAMILYNAME UCLINUX
0784
0785 #elif defined(__linux) || defined(__linux__) || defined(__gnu_linux__)
0786 #define PLATFORM_OS_LINUX 1
0787 #define PLATFORM_OS_FAMILYNAME LINUX
0788 #if defined(GASNETI_ARCH_WSL)
0789 #define PLATFORM_OS_SUBFAMILY_WSL 1
0790 #define PLATFORM_OS_SUBFAMILYNAME WSL
0791 #elif defined(__CRAYXT_COMPUTE_LINUX_TARGET)
0792
0793 #define PLATFORM_OS_SUBFAMILY_CNL 1
0794 #define PLATFORM_OS_SUBFAMILYNAME CNL
0795 #endif
0796
0797 #elif defined(__blrts) || defined(__blrts__) || defined(__gnu_blrts__)
0798 #define PLATFORM_OS_BLRTS 1
0799 #define PLATFORM_OS_FAMILYNAME BLRTS
0800
0801 #elif defined(__CYGWIN__)
0802 #define PLATFORM_OS_CYGWIN 1
0803 #define PLATFORM_OS_FAMILYNAME CYGWIN
0804
0805 #elif defined(_WIN32)
0806 #define PLATFORM_OS_MSWINDOWS 1
0807 #define PLATFORM_OS_FAMILYNAME MSWINDOWS
0808
0809 #elif defined(_AIX)
0810 #define PLATFORM_OS_AIX 1
0811 #define PLATFORM_OS_FAMILYNAME AIX
0812
0813 #elif defined(__osf__) || defined(__digital__)
0814 #define PLATFORM_OS_TRU64 1
0815 #define PLATFORM_OS_FAMILYNAME TRU64
0816
0817 #elif defined(__FreeBSD) || defined(__FreeBSD__)
0818 #define PLATFORM_OS_FREEBSD 1
0819 #define PLATFORM_OS_FAMILYNAME FREEBSD
0820
0821 #elif defined(__NetBSD) || defined(__NetBSD__)
0822 #define PLATFORM_OS_NETBSD 1
0823 #define PLATFORM_OS_FAMILYNAME NETBSD
0824
0825 #elif defined(__OpenBSD__)
0826 #define PLATFORM_OS_OPENBSD 1
0827 #define PLATFORM_OS_FAMILYNAME OPENBSD
0828
0829 #elif defined(__sun) || defined(__sun__)
0830 #define PLATFORM_OS_SOLARIS 1
0831 #define PLATFORM_OS_FAMILYNAME SOLARIS
0832
0833 #elif (defined(__APPLE__) && defined(__MACH__)) || \
0834 defined(__osx86__)
0835 #define PLATFORM_OS_DARWIN 1
0836 #define PLATFORM_OS_FAMILYNAME DARWIN
0837
0838 #elif defined(__sgi) || defined(__sgi__)
0839 #define PLATFORM_OS_IRIX 1
0840 #define PLATFORM_OS_FAMILYNAME IRIX
0841
0842 #elif defined(__hpux) || defined(__hpux__)
0843 #define PLATFORM_OS_HPUX 1
0844 #define PLATFORM_OS_FAMILYNAME HPUX
0845
0846 #elif defined(_CRAY) || defined(_UNICOSMP)
0847 #define PLATFORM_OS_UNICOS 1
0848 #define PLATFORM_OS_FAMILYNAME UNICOS
0849
0850 #elif defined(__MTA__)
0851 #define PLATFORM_OS_MTA 1
0852 #define PLATFORM_OS_FAMILYNAME MTA
0853
0854 #elif defined(_SX)
0855 #define PLATFORM_OS_SUPERUX 1
0856 #define PLATFORM_OS_FAMILYNAME SUPERUX
0857
0858 #else
0859 #define PLATFORM_OS_UNKNOWN 1
0860 #define PLATFORM_OS_FAMILYNAME UNKNOWN
0861 #endif
0862
0863
0864
0865
0866
0867
0868
0869
0870
0871
0872
0873
0874
0875
0876
0877
0878 #if defined(__ppc64) || defined(__ppc64__) || \
0879 defined(__PPC64) || defined(__PPC64__) || \
0880 defined(__powerpc64) || defined(__powerpc64__)
0881 #define PLATFORM_ARCH_POWERPC 1
0882 #define PLATFORM_ARCH_FAMILYNAME POWERPC
0883 #define _PLATFORM_ARCH_64 1
0884 #define _PLATFORM_ARCH_BIG_ENDIAN 1
0885
0886 #elif defined(_POWER) || \
0887 defined(__PPC) || defined(__PPC__) || \
0888 defined(__powerpc) || defined(__powerpc__) || \
0889 defined(__ppc) || defined(__ppc__) || \
0890 defined(__POWERPC__)
0891 #define PLATFORM_ARCH_POWERPC 1
0892 #define PLATFORM_ARCH_FAMILYNAME POWERPC
0893 #define _PLATFORM_ARCH_32 1
0894 #define _PLATFORM_ARCH_BIG_ENDIAN 1
0895
0896 #elif defined(_ARCH_PPC) || defined(_ARCH_PPC64)
0897 #define PLATFORM_ARCH_POWERPC 1
0898 #define PLATFORM_ARCH_FAMILYNAME POWERPC
0899 #define _PLATFORM_ARCH_BIG_ENDIAN 1
0900
0901 #elif defined(__KNC__) || defined(__MIC__)
0902 #define PLATFORM_ARCH_MIC 1
0903 #define PLATFORM_ARCH_FAMILYNAME MIC
0904 #define _PLATFORM_ARCH_64 1
0905 #define _PLATFORM_ARCH_LITTLE_ENDIAN 1
0906
0907 #elif defined(__x86_64) || defined(__x86_64__) || \
0908 defined(__athlon) || defined(__athlon__) || \
0909 defined(__amd64) || defined(__amd64__)
0910 #define PLATFORM_ARCH_X86_64 1
0911 #define PLATFORM_ARCH_FAMILYNAME X86_64
0912 #define _PLATFORM_ARCH_64 1
0913 #define _PLATFORM_ARCH_LITTLE_ENDIAN 1
0914
0915 #elif defined(__ia64__) || defined(__ia64)
0916 #define PLATFORM_ARCH_IA64 1
0917 #define PLATFORM_ARCH_FAMILYNAME IA64
0918 #define _PLATFORM_ARCH_64 1
0919 #if defined(PLATFORM_OS_LINUX) || defined(PLATFORM_OS_FREEBSD)
0920 #define _PLATFORM_ARCH_LITTLE_ENDIAN 1
0921 #elif defined(PLATFORM_OS_HPUX)
0922 #define _PLATFORM_ARCH_BIG_ENDIAN 1
0923 #else
0924
0925 #endif
0926
0927 #elif defined(__i386__) || defined(__i386) || \
0928 defined(__i486__) || defined(__i486) || \
0929 defined(__i586__) || defined(__i586) || \
0930 defined(__i686__) || defined(__i686) || \
0931 defined(__pentiumpro) || defined(__pentiumpro__) || \
0932 defined(_M_IX86)
0933 #define PLATFORM_ARCH_X86 1
0934 #define PLATFORM_ARCH_FAMILYNAME X86
0935 #define _PLATFORM_ARCH_32 1
0936 #define _PLATFORM_ARCH_LITTLE_ENDIAN 1
0937
0938 #elif defined(__alpha) || defined(__alpha__)
0939 #define PLATFORM_ARCH_ALPHA 1
0940 #define PLATFORM_ARCH_FAMILYNAME ALPHA
0941 #define _PLATFORM_ARCH_64 1
0942 #define _PLATFORM_ARCH_LITTLE_ENDIAN 1
0943
0944 #elif defined(_mips) || defined(__mips) || defined(__mips__) || \
0945 defined(__host_mips) || defined(__host_mips__) || \
0946 defined(_MIPS_ARCH) || defined(__R4000)
0947 #define PLATFORM_ARCH_MIPS 1
0948 #define PLATFORM_ARCH_FAMILYNAME MIPS
0949 #ifdef _MIPSEL
0950
0951 #define _PLATFORM_ARCH_LITTLE_ENDIAN 1
0952 #else
0953
0954 #define _PLATFORM_ARCH_BIG_ENDIAN 1
0955 #endif
0956 #ifdef _MIPS_SZPTR
0957 #if _MIPS_SZPTR == 32
0958 #define _PLATFORM_ARCH_32 1
0959 #elif _MIPS_SZPTR == 64
0960 #define _PLATFORM_ARCH_64 1
0961 #endif
0962 #endif
0963
0964 #elif defined(__sparc) || defined(__sparc__) || \
0965 defined(__sparclet__) || defined(__sparclite__) || \
0966 defined(__sparcv8) || defined(__sparcv9)
0967 #define PLATFORM_ARCH_SPARC 1
0968 #define PLATFORM_ARCH_FAMILYNAME SPARC
0969 #define _PLATFORM_ARCH_BIG_ENDIAN 1
0970
0971 #elif defined(__hppa) || defined(__hppa__) || \
0972 defined(__parisc) || defined(__parisc__) || \
0973 defined(_PA_RISC1_1) || defined(_PA_RISC2_0)
0974 #define PLATFORM_ARCH_PARISC 1
0975 #define PLATFORM_ARCH_FAMILYNAME PARISC
0976 #define _PLATFORM_ARCH_BIG_ENDIAN 1
0977
0978 #elif defined(__crayx1)
0979 #define PLATFORM_ARCH_CRAYX1 1
0980 #define PLATFORM_ARCH_FAMILYNAME CRAYX1
0981 #define _PLATFORM_ARCH_BIG_ENDIAN 1
0982 #define _PLATFORM_ARCH_64 1
0983
0984 #elif defined(_CRAYT3E)
0985 #define PLATFORM_ARCH_CRAYT3E 1
0986 #define PLATFORM_ARCH_FAMILYNAME CRAYT3E
0987 #define _PLATFORM_ARCH_BIG_ENDIAN 1
0988 #define _PLATFORM_ARCH_64 1
0989
0990 #elif defined(__MTA__)
0991 #define PLATFORM_ARCH_MTA 1
0992 #define PLATFORM_ARCH_FAMILYNAME MTA
0993
0994 #elif defined(_SX)
0995 #define PLATFORM_ARCH_NECSX 1
0996 #define PLATFORM_ARCH_FAMILYNAME NECSX
0997
0998 #elif defined(__MICROBLAZE__)
0999 #define PLATFORM_ARCH_MICROBLAZE 1
1000 #define PLATFORM_ARCH_FAMILYNAME MICROBLAZE
1001 #define _PLATFORM_ARCH_BIG_ENDIAN 1
1002 #define _PLATFORM_ARCH_32 1
1003
1004 #elif defined(__arm__)
1005 #define PLATFORM_ARCH_ARM 1
1006 #define PLATFORM_ARCH_FAMILYNAME ARM
1007 #define _PLATFORM_ARCH_32 1
1008 #if defined(__ARMEB__)
1009 #define _PLATFORM_ARCH_BIG_ENDIAN 1
1010 #elif defined(__ARMEL__)
1011 #define _PLATFORM_ARCH_LITTLE_ENDIAN 1
1012 #endif
1013
1014 #elif defined(__aarch64__)
1015 #define PLATFORM_ARCH_AARCH64 1
1016 #define PLATFORM_ARCH_FAMILYNAME AARCH64
1017 #if defined(__AARCH64EB__)
1018 #define _PLATFORM_ARCH_BIG_ENDIAN 1
1019 #elif defined(__AARCH64EL__)
1020 #define _PLATFORM_ARCH_LITTLE_ENDIAN 1
1021 #endif
1022
1023 #elif defined(__tile__)
1024 #define PLATFORM_ARCH_TILE 1
1025 #define PLATFORM_ARCH_FAMILYNAME TILE
1026 #define _PLATFORM_ARCH_LITTLE_ENDIAN 1
1027 #if defined(__tilegx__)
1028 #define _PLATFORM_ARCH_64 1
1029 #else
1030 #define _PLATFORM_ARCH_32 1
1031 #endif
1032
1033 #elif defined(__s390__)
1034 #define PLATFORM_ARCH_S390 1
1035 #define PLATFORM_ARCH_FAMILYNAME S390
1036 #define _PLATFORM_ARCH_BIG_ENDIAN 1
1037 #if defined(__s390x__)
1038 #define _PLATFORM_ARCH_64 1
1039 #else
1040 #define _PLATFORM_ARCH_32 1
1041 #endif
1042
1043 #elif defined(__riscv)
1044 #define PLATFORM_ARCH_RISCV 1
1045 #define PLATFORM_ARCH_FAMILYNAME RISCV
1046 #define _PLATFORM_ARCH_LITTLE_ENDIAN 1
1047 #if __riscv_xlen == 32
1048 #define _PLATFORM_ARCH_32 1
1049 #else
1050 #define _PLATFORM_ARCH_64 1
1051 #endif
1052
1053 #else
1054 #define PLATFORM_ARCH_UNKNOWN 1
1055 #define PLATFORM_ARCH_FAMILYNAME UNKNOWN
1056 #endif
1057
1058
1059
1060 #if defined(PLATFORM_ARCH_BIG_ENDIAN) || defined(PLATFORM_ARCH_LITTLE_ENDIAN)
1061 #error internal error in endianness configuration
1062 #endif
1063
1064
1065
1066
1067
1068
1069 #if defined(__BIG_ENDIAN__) || defined(WORDS_BIGENDIAN) || \
1070 ( __BYTE_ORDER__ > 0 && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ )
1071 #define PLATFORM_ARCH_BIG_ENDIAN 1
1072 #elif defined(__LITTLE_ENDIAN__) || defined(WORDS_LITTLEENDIAN) || \
1073 ( __BYTE_ORDER__ > 0 && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ )
1074 #define PLATFORM_ARCH_LITTLE_ENDIAN 1
1075 #elif defined(_PLATFORM_ARCH_BIG_ENDIAN)
1076 #define PLATFORM_ARCH_BIG_ENDIAN 1
1077 #elif defined(_PLATFORM_ARCH_LITTLE_ENDIAN)
1078 #define PLATFORM_ARCH_LITTLE_ENDIAN 1
1079 #endif
1080 #undef _PLATFORM_ARCH_BIG_ENDIAN
1081 #undef _PLATFORM_ARCH_LITTLE_ENDIAN
1082
1083 #if defined(PLATFORM_ARCH_BIG_ENDIAN) && defined(PLATFORM_ARCH_LITTLE_ENDIAN)
1084 #error conflicting endianness information
1085 #endif
1086
1087
1088
1089
1090
1091
1092 #if defined(PLATFORM_ARCH_64) || defined(PLATFORM_ARCH_32)
1093 #error internal error in bit width configuration
1094 #endif
1095
1096 #if SIZEOF_VOID_P == 8
1097 #define PLATFORM_ARCH_64 1
1098 #elif SIZEOF_VOID_P == 4
1099 #define PLATFORM_ARCH_32 1
1100 #elif defined(_LP64) || defined(__LP64__) || \
1101 defined(__arch64__) || defined(__64BIT__) || \
1102 __INTPTR_MAX__ > 2147483647
1103 #define PLATFORM_ARCH_64 1
1104 #elif defined(_ILP32) || defined(__ILP32__) || \
1105 defined(__arch32__) || defined(__32BIT__) || \
1106 __INTPTR_MAX__ == 2147483647
1107 #define PLATFORM_ARCH_32 1
1108 #elif defined(_PLATFORM_ARCH_64)
1109 #define PLATFORM_ARCH_64 1
1110 #elif defined(_PLATFORM_ARCH_32)
1111 #define PLATFORM_ARCH_32 1
1112 #endif
1113 #undef _PLATFORM_ARCH_64
1114 #undef _PLATFORM_ARCH_32
1115
1116 #if defined(PLATFORM_ARCH_64) && defined(PLATFORM_ARCH_32)
1117 #error conflicting bit width information
1118 #elif !defined(PLATFORM_ARCH_64) && !defined(PLATFORM_ARCH_32)
1119 #error missing bit width information
1120 #endif
1121
1122
1123
1124 #ifdef PLATFORM_SHOW
1125 #include <stdio.h>
1126 #include <assert.h>
1127 const char *
1128 COMPILER_FAMILYNAME = PLATFORM_STRINGIFY(PLATFORM_COMPILER_FAMILYNAME)
1129 , *
1130 COMPILER_FAMILYID = PLATFORM_STRINGIFY(PLATFORM_COMPILER_FAMILYID)
1131 , *
1132 COMPILER_VERSION_STR = PLATFORM_COMPILER_VERSION_STR
1133 , *
1134 COMPILER_IDSTR = PLATFORM_COMPILER_IDSTR
1135 , *
1136 OS_FAMILYNAME = PLATFORM_STRINGIFY(PLATFORM_OS_FAMILYNAME)
1137 , *
1138 ARCH_FAMILYNAME = PLATFORM_STRINGIFY(PLATFORM_ARCH_FAMILYNAME)
1139 ;
1140 int main(void) {
1141 #define PLATFORM_DISP(x) printf("PLATFORM_"#x"=%s\n",x)
1142 #define PLATFORM_DISPI(x) printf("PLATFORM_"#x"=%li\n",(long int)PLATFORM_##x)
1143 #define PLATFORM_DISPX(x) printf("PLATFORM_"#x"=0x%lx\n",(long int)PLATFORM_##x)
1144 PLATFORM_DISP(COMPILER_FAMILYNAME);
1145 PLATFORM_DISP(COMPILER_FAMILYID);
1146 PLATFORM_DISPI(COMPILER_ID);
1147 PLATFORM_DISPX(COMPILER_VERSION);
1148 PLATFORM_DISP(COMPILER_VERSION_STR);
1149 PLATFORM_DISP(COMPILER_IDSTR);
1150 #ifdef PLATFORM_COMPILER_C_LANGLVL
1151 PLATFORM_DISPI(COMPILER_C_LANGLVL);
1152 #elif defined(PLATFORM_COMPILER_CXX_LANGLVL)
1153 PLATFORM_DISPI(COMPILER_CXX_LANGLVL);
1154 #else
1155 printf("WARNING: Missing PLATFORM_COMPILER_C(XX)_LANGLVL!");
1156 #endif
1157 PLATFORM_DISP(OS_FAMILYNAME);
1158 #ifdef PLATFORM_OS_SUBFAMILYNAME
1159 { const char * OS_SUBFAMILYNAME = PLATFORM_STRINGIFY(PLATFORM_OS_SUBFAMILYNAME);
1160 PLATFORM_DISP(OS_SUBFAMILYNAME);
1161 }
1162 #endif
1163 PLATFORM_DISP(ARCH_FAMILYNAME);
1164 #ifdef PLATFORM_ARCH_32
1165 PLATFORM_DISPI(ARCH_32);
1166 assert(sizeof(void *) == 4);
1167 #else
1168 PLATFORM_DISPI(ARCH_64);
1169 assert(sizeof(void *) == 8);
1170 #endif
1171 { int x = 0x00FF;
1172 unsigned char *p = (unsigned char *)&x;
1173 #ifdef PLATFORM_ARCH_BIG_ENDIAN
1174 PLATFORM_DISPI(ARCH_BIG_ENDIAN);
1175 assert(*p == 0);
1176 #else
1177 PLATFORM_DISPI(ARCH_LITTLE_ENDIAN);
1178 assert(*p == 0xFF);
1179 #endif
1180 }
1181 return 0;
1182 }
1183 #endif
1184
1185 #endif