]> Creatis software - creaCLI.git/blob - ModuleCall/CMakeFiles/CompilerIdCXX/CMakeCXXCompilerId.cpp
All Slicer modules succesfully compiled into BBTK boxes :P
[creaCLI.git] / ModuleCall / CMakeFiles / CompilerIdCXX / CMakeCXXCompilerId.cpp
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 }