CMakePlatformId.h.in 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. /* Identify known platforms by name. */
  2. #if defined(__linux) || defined(__linux__) || defined(linux)
  3. # define PLATFORM_ID "Linux"
  4. #elif defined(__CYGWIN__)
  5. # define PLATFORM_ID "Cygwin"
  6. #elif defined(__MINGW32__)
  7. # define PLATFORM_ID "MinGW"
  8. #elif defined(__APPLE__)
  9. # define PLATFORM_ID "Darwin"
  10. #elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
  11. # define PLATFORM_ID "Windows"
  12. #elif defined(__FreeBSD__) || defined(__FreeBSD)
  13. # define PLATFORM_ID "FreeBSD"
  14. #elif defined(__NetBSD__) || defined(__NetBSD)
  15. # define PLATFORM_ID "NetBSD"
  16. #elif defined(__OpenBSD__) || defined(__OPENBSD)
  17. # define PLATFORM_ID "OpenBSD"
  18. #elif defined(__sun) || defined(sun)
  19. # define PLATFORM_ID "SunOS"
  20. #elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
  21. # define PLATFORM_ID "AIX"
  22. #elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
  23. # define PLATFORM_ID "IRIX"
  24. #elif defined(__hpux) || defined(__hpux__)
  25. # define PLATFORM_ID "HP-UX"
  26. #elif defined(__HAIKU__)
  27. # define PLATFORM_ID "Haiku"
  28. #elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
  29. # define PLATFORM_ID "BeOS"
  30. #elif defined(__QNX__) || defined(__QNXNTO__)
  31. # define PLATFORM_ID "QNX"
  32. #elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
  33. # define PLATFORM_ID "Tru64"
  34. #elif defined(__riscos) || defined(__riscos__)
  35. # define PLATFORM_ID "RISCos"
  36. #elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
  37. # define PLATFORM_ID "SINIX"
  38. #elif defined(__UNIX_SV__)
  39. # define PLATFORM_ID "UNIX_SV"
  40. #elif defined(__bsdos__)
  41. # define PLATFORM_ID "BSDOS"
  42. #elif defined(_MPRAS) || defined(MPRAS)
  43. # define PLATFORM_ID "MP-RAS"
  44. #elif defined(__osf) || defined(__osf__)
  45. # define PLATFORM_ID "OSF1"
  46. #elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
  47. # define PLATFORM_ID "SCO_SV"
  48. #elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
  49. # define PLATFORM_ID "ULTRIX"
  50. #elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
  51. # define PLATFORM_ID "Xenix"
  52. #elif defined(__WATCOMC__)
  53. # if defined(__LINUX__)
  54. # define PLATFORM_ID "Linux"
  55. # elif defined(__DOS__)
  56. # define PLATFORM_ID "DOS"
  57. # elif defined(__OS2__)
  58. # define PLATFORM_ID "OS2"
  59. # elif defined(__WINDOWS__)
  60. # define PLATFORM_ID "Windows3x"
  61. # else /* unknown platform */
  62. # define PLATFORM_ID ""
  63. # endif
  64. #else /* unknown platform */
  65. # define PLATFORM_ID ""
  66. #endif
  67. /* For windows compilers MSVC and Intel we can determine
  68. the architecture of the compiler being used. This is because
  69. the compilers do not have flags that can change the architecture,
  70. but rather depend on which compiler is being used
  71. */
  72. #if defined(_WIN32) && defined(_MSC_VER)
  73. # if defined(_M_IA64)
  74. # define ARCHITECTURE_ID "IA64"
  75. # elif defined(_M_X64) || defined(_M_AMD64)
  76. # define ARCHITECTURE_ID "x64"
  77. # elif defined(_M_IX86)
  78. # define ARCHITECTURE_ID "X86"
  79. # elif defined(_M_ARM)
  80. # define ARCHITECTURE_ID "ARM"
  81. # elif defined(_M_MIPS)
  82. # define ARCHITECTURE_ID "MIPS"
  83. # elif defined(_M_SH)
  84. # define ARCHITECTURE_ID "SHx"
  85. # else /* unknown architecture */
  86. # define ARCHITECTURE_ID ""
  87. # endif
  88. #elif defined(__WATCOMC__)
  89. # if defined(_M_I86)
  90. # define ARCHITECTURE_ID "I86"
  91. # elif defined(_M_IX86)
  92. # define ARCHITECTURE_ID "X86"
  93. # else /* unknown architecture */
  94. # define ARCHITECTURE_ID ""
  95. # endif
  96. #else
  97. # define ARCHITECTURE_ID ""
  98. #endif
  99. /* Convert integer to decimal digit literals. */
  100. #define DEC(n) \
  101. ('0' + (((n) / 10000000)%10)), \
  102. ('0' + (((n) / 1000000)%10)), \
  103. ('0' + (((n) / 100000)%10)), \
  104. ('0' + (((n) / 10000)%10)), \
  105. ('0' + (((n) / 1000)%10)), \
  106. ('0' + (((n) / 100)%10)), \
  107. ('0' + (((n) / 10)%10)), \
  108. ('0' + ((n) % 10))
  109. /* Convert integer to hex digit literals. */
  110. #define HEX(n) \
  111. ('0' + ((n)>>28 & 0xF)), \
  112. ('0' + ((n)>>24 & 0xF)), \
  113. ('0' + ((n)>>20 & 0xF)), \
  114. ('0' + ((n)>>16 & 0xF)), \
  115. ('0' + ((n)>>12 & 0xF)), \
  116. ('0' + ((n)>>8 & 0xF)), \
  117. ('0' + ((n)>>4 & 0xF)), \
  118. ('0' + ((n) & 0xF))
  119. /* Construct a string literal encoding the version number components. */
  120. #ifdef COMPILER_VERSION_MAJOR
  121. char const info_version[] = {
  122. 'I', 'N', 'F', 'O', ':',
  123. 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
  124. COMPILER_VERSION_MAJOR,
  125. # ifdef COMPILER_VERSION_MINOR
  126. '.', COMPILER_VERSION_MINOR,
  127. # ifdef COMPILER_VERSION_PATCH
  128. '.', COMPILER_VERSION_PATCH,
  129. # ifdef COMPILER_VERSION_TWEAK
  130. '.', COMPILER_VERSION_TWEAK,
  131. # endif
  132. # endif
  133. # endif
  134. ']','\0'};
  135. #endif
  136. /* Construct a string literal encoding the version number components. */
  137. #ifdef SIMULATE_VERSION_MAJOR
  138. char const info_simulate_version[] = {
  139. 'I', 'N', 'F', 'O', ':',
  140. 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
  141. SIMULATE_VERSION_MAJOR,
  142. # ifdef SIMULATE_VERSION_MINOR
  143. '.', SIMULATE_VERSION_MINOR,
  144. # ifdef SIMULATE_VERSION_PATCH
  145. '.', SIMULATE_VERSION_PATCH,
  146. # ifdef SIMULATE_VERSION_TWEAK
  147. '.', SIMULATE_VERSION_TWEAK,
  148. # endif
  149. # endif
  150. # endif
  151. ']','\0'};
  152. #endif
  153. /* Construct the string literal in pieces to prevent the source from
  154. getting matched. Store it in a pointer rather than an array
  155. because some compilers will just produce instructions to fill the
  156. array rather than assigning a pointer to a static array. */
  157. char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
  158. char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";