Project

General

Profile

Statistics
| Branch: | Revision:

scoutos / scout / power / build / CMakeFiles / CompilerIdCXX / CMakeCXXCompilerId.cpp @ dd4eb68c

History | View | Annotate | Download (5.57 KB)

1
/* This source file must have a .cpp extension so that all C++ compilers
2
   recognize the extension without flags.  Borland does not know .cxx for
3
   example.  */
4
#ifndef __cplusplus
5
# error "A C compiler has been selected for C++."
6
#endif
7

    
8
#if defined(__COMO__)
9
# define COMPILER_ID "Comeau"
10

    
11
#elif defined(__INTEL_COMPILER) || defined(__ICC)
12
# define COMPILER_ID "Intel"
13

    
14
#elif defined(__clang__)
15
# define COMPILER_ID "Clang"
16

    
17
#elif defined(__BORLANDC__)
18
# define COMPILER_ID "Borland"
19

    
20
#elif defined(__WATCOMC__)
21
# define COMPILER_ID "Watcom"
22

    
23
#elif defined(__SUNPRO_CC)
24
# define COMPILER_ID "SunPro"
25

    
26
#elif defined(__HP_aCC)
27
# define COMPILER_ID "HP"
28

    
29
#elif defined(__DECCXX)
30
# define COMPILER_ID "Compaq"
31

    
32
#elif defined(__IBMCPP__)
33
# if defined(__COMPILER_VER__)
34
#  define COMPILER_ID "zOS"
35
# elif __IBMCPP__ >= 800
36
#  define COMPILER_ID "XL"
37
# else
38
#  define COMPILER_ID "VisualAge"
39
# endif
40

    
41
#elif defined(__PGI)
42
# define COMPILER_ID "PGI"
43

    
44
#elif defined(__PATHSCALE__)
45
# define COMPILER_ID "PathScale"
46

    
47
#elif defined(_CRAYC)
48
# define COMPILER_ID "Cray"
49

    
50
#elif defined(__TI_COMPILER_VERSION__)
51
# define COMPILER_ID "TI_DSP"
52

    
53
#elif defined(__SCO_VERSION__)
54
# define COMPILER_ID "SCO"
55

    
56
#elif defined(__GNUC__)
57
# define COMPILER_ID "GNU"
58

    
59
#elif defined(_MSC_VER)
60
# define COMPILER_ID "MSVC"
61

    
62
#elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
63
/* Analog Devices C++ compiler for Blackfin, TigerSHARC and
64
   SHARC (21000) DSPs */
65
# define COMPILER_ID "ADSP"
66

    
67
#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
68
# define COMPILER_ID "MIPSpro"
69

    
70
/* This compiler is either not known or is too old to define an
71
   identification macro.  Try to identify the platform and guess that
72
   it is the native compiler.  */
73
#elif defined(__sgi)
74
# define COMPILER_ID "MIPSpro"
75

    
76
#elif defined(__hpux) || defined(__hpua)
77
# define COMPILER_ID "HP"
78

    
79
#else /* unknown compiler */
80
# define COMPILER_ID ""
81

    
82
#endif
83

    
84
/* Construct the string literal in pieces to prevent the source from
85
   getting matched.  Store it in a pointer rather than an array
86
   because some compilers will just produce instructions to fill the
87
   array rather than assigning a pointer to a static array.  */
88
char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
89

    
90
/* Identify known platforms by name.  */
91
#if defined(__linux) || defined(__linux__) || defined(linux)
92
# define PLATFORM_ID "Linux"
93

    
94
#elif defined(__CYGWIN__)
95
# define PLATFORM_ID "Cygwin"
96

    
97
#elif defined(__MINGW32__)
98
# define PLATFORM_ID "MinGW"
99

    
100
#elif defined(__APPLE__)
101
# define PLATFORM_ID "Darwin"
102

    
103
#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
104
# define PLATFORM_ID "Windows"
105

    
106
#elif defined(__FreeBSD__) || defined(__FreeBSD)
107
# define PLATFORM_ID "FreeBSD"
108

    
109
#elif defined(__NetBSD__) || defined(__NetBSD)
110
# define PLATFORM_ID "NetBSD"
111

    
112
#elif defined(__OpenBSD__) || defined(__OPENBSD)
113
# define PLATFORM_ID "OpenBSD"
114

    
115
#elif defined(__sun) || defined(sun)
116
# define PLATFORM_ID "SunOS"
117

    
118
#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
119
# define PLATFORM_ID "AIX"
120

    
121
#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
122
# define PLATFORM_ID "IRIX"
123

    
124
#elif defined(__hpux) || defined(__hpux__)
125
# define PLATFORM_ID "HP-UX"
126

    
127
#elif defined(__HAIKU) || defined(__HAIKU__) || defined(_HAIKU)
128
# define PLATFORM_ID "Haiku"
129
/* Haiku also defines __BEOS__ so we must 
130
   put it prior to the check for __BEOS__
131
*/
132

    
133
#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
134
# define PLATFORM_ID "BeOS"
135

    
136
#elif defined(__QNX__) || defined(__QNXNTO__)
137
# define PLATFORM_ID "QNX"
138

    
139
#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
140
# define PLATFORM_ID "Tru64"
141

    
142
#elif defined(__riscos) || defined(__riscos__)
143
# define PLATFORM_ID "RISCos"
144

    
145
#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
146
# define PLATFORM_ID "SINIX"
147

    
148
#elif defined(__UNIX_SV__)
149
# define PLATFORM_ID "UNIX_SV"
150

    
151
#elif defined(__bsdos__)
152
# define PLATFORM_ID "BSDOS"
153

    
154
#elif defined(_MPRAS) || defined(MPRAS)
155
# define PLATFORM_ID "MP-RAS"
156

    
157
#elif defined(__osf) || defined(__osf__)
158
# define PLATFORM_ID "OSF1"
159

    
160
#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
161
# define PLATFORM_ID "SCO_SV"
162

    
163
#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
164
# define PLATFORM_ID "ULTRIX"
165

    
166
#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
167
# define PLATFORM_ID "Xenix"
168

    
169
#else /* unknown platform */
170
# define PLATFORM_ID ""
171

    
172
#endif
173

    
174
/* For windows compilers MSVC and Intel we can determine
175
   the architecture of the compiler being used.  This is because
176
   the compilers do not have flags that can change the architecture,
177
   but rather depend on which compiler is being used
178
*/
179
#if defined(_WIN32) && defined(_MSC_VER)
180
# if defined(_M_IA64)
181
#  define ARCHITECTURE_ID "IA64"
182

    
183
# elif defined(_M_X64) || defined(_M_AMD64)
184
#  define ARCHITECTURE_ID "x64" 
185

    
186
# elif defined(_M_IX86)
187
#  define ARCHITECTURE_ID "X86"
188

    
189
# else /* unknown architecture */
190
#  define ARCHITECTURE_ID ""
191
# endif
192

    
193
#else
194
#  define ARCHITECTURE_ID ""
195
#endif
196

    
197
/* Construct the string literal in pieces to prevent the source from
198
   getting matched.  Store it in a pointer rather than an array
199
   because some compilers will just produce instructions to fill the
200
   array rather than assigning a pointer to a static array.  */
201
char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
202
char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
203

    
204

    
205

    
206
/*--------------------------------------------------------------------------*/
207

    
208
int main(int argc, char* argv[])
209
{
210
  int require = 0;
211
  require += info_compiler[argc];
212
  require += info_platform[argc];
213
  (void)argv;
214
  return require;
215
}