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