KerMor  0.9
Model order reduction for nonlinear dynamical systems and nonlinear approximation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
CMakeCXXCompilerId.cpp
Go to the documentation of this file.
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 }
char const * info_platform
char const * info_compiler
#define PLATFORM_ID
#define COMPILER_ID
#define ARCHITECTURE_ID
int main(int argc, char *argv[])
char const * info_arch