]> Creatis software - creaCLI.git/blob - ModuleCall/CMakeFiles/CompilerIdC/CMakeCCompilerId.c
All Slicer modules succesfully compiled into BBTK boxes :P
[creaCLI.git] / ModuleCall / CMakeFiles / CompilerIdC / CMakeCCompilerId.c
1 #ifdef __cplusplus
2 # error "A C++ compiler has been selected for C."
3 #endif
4
5 #if defined(__18CXX)
6 # define ID_VOID_MAIN
7 #endif
8
9 #if defined(__INTEL_COMPILER) || defined(__ICC)
10 # define COMPILER_ID "Intel"
11
12 #elif defined(__clang__)
13 # define COMPILER_ID "Clang"
14
15 #elif defined(__BORLANDC__)
16 # define COMPILER_ID "Borland"
17
18 #elif defined(__WATCOMC__)
19 # define COMPILER_ID "Watcom"
20
21 #elif defined(__SUNPRO_C)
22 # define COMPILER_ID "SunPro"
23
24 #elif defined(__HP_cc)
25 # define COMPILER_ID "HP"
26
27 #elif defined(__DECC)
28 # define COMPILER_ID "Compaq"
29
30 #elif defined(__IBMC__)
31 # if defined(__COMPILER_VER__)
32 #  define COMPILER_ID "zOS"
33 # elif __IBMC__ >= 800
34 #  define COMPILER_ID "XL"
35 # else
36 #  define COMPILER_ID "VisualAge"
37 # endif
38
39 #elif defined(__PGI)
40 # define COMPILER_ID "PGI"
41
42 #elif defined(__PATHSCALE__)
43 # define COMPILER_ID "PathScale"
44
45 #elif defined(_CRAYC)
46 # define COMPILER_ID "Cray"
47
48 #elif defined(__TI_COMPILER_VERSION__)
49 # define COMPILER_ID "TI_DSP"
50
51 #elif defined(__TINYC__)
52 # define COMPILER_ID "TinyCC"
53
54 #elif defined(__SCO_VERSION__)
55 # define COMPILER_ID "SCO"
56
57 #elif defined(__GNUC__)
58 # define COMPILER_ID "GNU"
59
60 #elif defined(_MSC_VER)
61 # define COMPILER_ID "MSVC"
62
63 #elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
64 /* Analog Devices C++ compiler for Blackfin, TigerSHARC and
65    SHARC (21000) DSPs */
66 # define COMPILER_ID "ADSP"
67
68 /* IAR Systems compiler for embedded systems.
69    http://www.iar.com
70    Not supported yet by CMake
71 #elif defined(__IAR_SYSTEMS_ICC__)
72 # define COMPILER_ID "IAR" */
73
74 /* sdcc, the small devices C compiler for embedded systems,
75    http://sdcc.sourceforge.net  */
76 #elif defined(SDCC)
77 # define COMPILER_ID "SDCC"
78
79 #elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
80 # define COMPILER_ID "MIPSpro"
81
82 /* This compiler is either not known or is too old to define an
83    identification macro.  Try to identify the platform and guess that
84    it is the native compiler.  */
85 #elif defined(__sgi)
86 # define COMPILER_ID "MIPSpro"
87
88 #elif defined(__hpux) || defined(__hpua)
89 # define COMPILER_ID "HP"
90
91 #else /* unknown compiler */
92 # define COMPILER_ID ""
93
94 #endif
95
96 /* Construct the string literal in pieces to prevent the source from
97    getting matched.  Store it in a pointer rather than an array
98    because some compilers will just produce instructions to fill the
99    array rather than assigning a pointer to a static array.  */
100 char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
101
102 /* Identify known platforms by name.  */
103 #if defined(__linux) || defined(__linux__) || defined(linux)
104 # define PLATFORM_ID "Linux"
105
106 #elif defined(__CYGWIN__)
107 # define PLATFORM_ID "Cygwin"
108
109 #elif defined(__MINGW32__)
110 # define PLATFORM_ID "MinGW"
111
112 #elif defined(__APPLE__)
113 # define PLATFORM_ID "Darwin"
114
115 #elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
116 # define PLATFORM_ID "Windows"
117
118 #elif defined(__FreeBSD__) || defined(__FreeBSD)
119 # define PLATFORM_ID "FreeBSD"
120
121 #elif defined(__NetBSD__) || defined(__NetBSD)
122 # define PLATFORM_ID "NetBSD"
123
124 #elif defined(__OpenBSD__) || defined(__OPENBSD)
125 # define PLATFORM_ID "OpenBSD"
126
127 #elif defined(__sun) || defined(sun)
128 # define PLATFORM_ID "SunOS"
129
130 #elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
131 # define PLATFORM_ID "AIX"
132
133 #elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
134 # define PLATFORM_ID "IRIX"
135
136 #elif defined(__hpux) || defined(__hpux__)
137 # define PLATFORM_ID "HP-UX"
138
139 #elif defined(__HAIKU) || defined(__HAIKU__) || defined(_HAIKU)
140 # define PLATFORM_ID "Haiku"
141 /* Haiku also defines __BEOS__ so we must 
142    put it prior to the check for __BEOS__
143 */
144
145 #elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
146 # define PLATFORM_ID "BeOS"
147
148 #elif defined(__QNX__) || defined(__QNXNTO__)
149 # define PLATFORM_ID "QNX"
150
151 #elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
152 # define PLATFORM_ID "Tru64"
153
154 #elif defined(__riscos) || defined(__riscos__)
155 # define PLATFORM_ID "RISCos"
156
157 #elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
158 # define PLATFORM_ID "SINIX"
159
160 #elif defined(__UNIX_SV__)
161 # define PLATFORM_ID "UNIX_SV"
162
163 #elif defined(__bsdos__)
164 # define PLATFORM_ID "BSDOS"
165
166 #elif defined(_MPRAS) || defined(MPRAS)
167 # define PLATFORM_ID "MP-RAS"
168
169 #elif defined(__osf) || defined(__osf__)
170 # define PLATFORM_ID "OSF1"
171
172 #elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
173 # define PLATFORM_ID "SCO_SV"
174
175 #elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
176 # define PLATFORM_ID "ULTRIX"
177
178 #elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
179 # define PLATFORM_ID "Xenix"
180
181 #else /* unknown platform */
182 # define PLATFORM_ID ""
183
184 #endif
185
186 /* For windows compilers MSVC and Intel we can determine
187    the architecture of the compiler being used.  This is because
188    the compilers do not have flags that can change the architecture,
189    but rather depend on which compiler is being used
190 */
191 #if defined(_WIN32) && defined(_MSC_VER)
192 # if defined(_M_IA64)
193 #  define ARCHITECTURE_ID "IA64"
194
195 # elif defined(_M_X64) || defined(_M_AMD64)
196 #  define ARCHITECTURE_ID "x64" 
197
198 # elif defined(_M_IX86)
199 #  define ARCHITECTURE_ID "X86"
200
201 # else /* unknown architecture */
202 #  define ARCHITECTURE_ID ""
203 # endif
204
205 #else
206 #  define ARCHITECTURE_ID ""
207 #endif
208
209 /* Construct the string literal in pieces to prevent the source from
210    getting matched.  Store it in a pointer rather than an array
211    because some compilers will just produce instructions to fill the
212    array rather than assigning a pointer to a static array.  */
213 char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
214 char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
215
216
217
218 /*--------------------------------------------------------------------------*/
219
220 #ifdef ID_VOID_MAIN
221 void main() {}
222 #else
223 int main(int argc, char* argv[])
224 {
225   int require = 0;
226   require += info_compiler[argc];
227   require += info_platform[argc];
228   require += info_arch[argc];
229   (void)argv;
230   return require;
231 }
232 #endif