xref: /aosp_15_r20/external/libconfig/contrib/cmake/CMakeFiles/CompilerIdCXX/CMakeCXXCompilerId.cpp (revision 2e9d491483b805f09ea864149eadd5680efcc72a)
1*2e9d4914SAndroid Build Coastguard Worker /* This source file must have a .cpp extension so that all C++ compilers
2*2e9d4914SAndroid Build Coastguard Worker    recognize the extension without flags.  Borland does not know .cxx for
3*2e9d4914SAndroid Build Coastguard Worker    example.  */
4*2e9d4914SAndroid Build Coastguard Worker #ifndef __cplusplus
5*2e9d4914SAndroid Build Coastguard Worker # error "A C compiler has been selected for C++."
6*2e9d4914SAndroid Build Coastguard Worker #endif
7*2e9d4914SAndroid Build Coastguard Worker 
8*2e9d4914SAndroid Build Coastguard Worker #if defined(__COMO__)
9*2e9d4914SAndroid Build Coastguard Worker # define COMPILER_ID "Comeau"
10*2e9d4914SAndroid Build Coastguard Worker 
11*2e9d4914SAndroid Build Coastguard Worker #elif defined(__INTEL_COMPILER) || defined(__ICC)
12*2e9d4914SAndroid Build Coastguard Worker # define COMPILER_ID "Intel"
13*2e9d4914SAndroid Build Coastguard Worker 
14*2e9d4914SAndroid Build Coastguard Worker #elif defined(__BORLANDC__)
15*2e9d4914SAndroid Build Coastguard Worker # define COMPILER_ID "Borland"
16*2e9d4914SAndroid Build Coastguard Worker 
17*2e9d4914SAndroid Build Coastguard Worker #elif defined(__WATCOMC__)
18*2e9d4914SAndroid Build Coastguard Worker # define COMPILER_ID "Watcom"
19*2e9d4914SAndroid Build Coastguard Worker 
20*2e9d4914SAndroid Build Coastguard Worker #elif defined(__SUNPRO_CC)
21*2e9d4914SAndroid Build Coastguard Worker # define COMPILER_ID "SunPro"
22*2e9d4914SAndroid Build Coastguard Worker 
23*2e9d4914SAndroid Build Coastguard Worker #elif defined(__HP_aCC)
24*2e9d4914SAndroid Build Coastguard Worker # define COMPILER_ID "HP"
25*2e9d4914SAndroid Build Coastguard Worker 
26*2e9d4914SAndroid Build Coastguard Worker #elif defined(__DECCXX)
27*2e9d4914SAndroid Build Coastguard Worker # define COMPILER_ID "Compaq"
28*2e9d4914SAndroid Build Coastguard Worker 
29*2e9d4914SAndroid Build Coastguard Worker #elif defined(__IBMCPP__)
30*2e9d4914SAndroid Build Coastguard Worker # define COMPILER_ID "VisualAge"
31*2e9d4914SAndroid Build Coastguard Worker 
32*2e9d4914SAndroid Build Coastguard Worker #elif defined(__PGI)
33*2e9d4914SAndroid Build Coastguard Worker # define COMPILER_ID "PGI"
34*2e9d4914SAndroid Build Coastguard Worker 
35*2e9d4914SAndroid Build Coastguard Worker #elif defined(__GNUC__)
36*2e9d4914SAndroid Build Coastguard Worker # define COMPILER_ID "GNU"
37*2e9d4914SAndroid Build Coastguard Worker 
38*2e9d4914SAndroid Build Coastguard Worker #elif defined(_MSC_VER)
39*2e9d4914SAndroid Build Coastguard Worker # define COMPILER_ID "MSVC"
40*2e9d4914SAndroid Build Coastguard Worker 
41*2e9d4914SAndroid Build Coastguard Worker #elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
42*2e9d4914SAndroid Build Coastguard Worker /* Analog Devices C++ compiler for Blackfin, TigerSHARC and
43*2e9d4914SAndroid Build Coastguard Worker    SHARC (21000) DSPs */
44*2e9d4914SAndroid Build Coastguard Worker # define COMPILER_ID "ADSP"
45*2e9d4914SAndroid Build Coastguard Worker 
46*2e9d4914SAndroid Build Coastguard Worker #elif defined(_COMPILER_VERSION)
47*2e9d4914SAndroid Build Coastguard Worker # define COMPILER_ID "MIPSpro"
48*2e9d4914SAndroid Build Coastguard Worker 
49*2e9d4914SAndroid Build Coastguard Worker /* This compiler is either not known or is too old to define an
50*2e9d4914SAndroid Build Coastguard Worker    identification macro.  Try to identify the platform and guess that
51*2e9d4914SAndroid Build Coastguard Worker    it is the native compiler.  */
52*2e9d4914SAndroid Build Coastguard Worker #elif defined(__sgi)
53*2e9d4914SAndroid Build Coastguard Worker # define COMPILER_ID "MIPSpro"
54*2e9d4914SAndroid Build Coastguard Worker 
55*2e9d4914SAndroid Build Coastguard Worker #elif defined(__hpux) || defined(__hpua)
56*2e9d4914SAndroid Build Coastguard Worker # define COMPILER_ID "HP"
57*2e9d4914SAndroid Build Coastguard Worker 
58*2e9d4914SAndroid Build Coastguard Worker #else /* unknown compiler */
59*2e9d4914SAndroid Build Coastguard Worker # define COMPILER_ID ""
60*2e9d4914SAndroid Build Coastguard Worker 
61*2e9d4914SAndroid Build Coastguard Worker #endif
62*2e9d4914SAndroid Build Coastguard Worker 
63*2e9d4914SAndroid Build Coastguard Worker /* Construct the string literal in pieces to prevent the source from
64*2e9d4914SAndroid Build Coastguard Worker    getting matched.  Store it in a pointer rather than an array
65*2e9d4914SAndroid Build Coastguard Worker    because some compilers will just produce instructions to fill the
66*2e9d4914SAndroid Build Coastguard Worker    array rather than assigning a pointer to a static array.  */
67*2e9d4914SAndroid Build Coastguard Worker char* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
68*2e9d4914SAndroid Build Coastguard Worker 
69*2e9d4914SAndroid Build Coastguard Worker /* Identify known platforms by name.  */
70*2e9d4914SAndroid Build Coastguard Worker #if defined(__linux) || defined(__linux__) || defined(linux)
71*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "Linux"
72*2e9d4914SAndroid Build Coastguard Worker 
73*2e9d4914SAndroid Build Coastguard Worker #elif defined(__CYGWIN__)
74*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "Cygwin"
75*2e9d4914SAndroid Build Coastguard Worker 
76*2e9d4914SAndroid Build Coastguard Worker #elif defined(__MINGW32__)
77*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "MinGW"
78*2e9d4914SAndroid Build Coastguard Worker 
79*2e9d4914SAndroid Build Coastguard Worker #elif defined(__APPLE__)
80*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "Darwin"
81*2e9d4914SAndroid Build Coastguard Worker 
82*2e9d4914SAndroid Build Coastguard Worker #elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
83*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "Windows"
84*2e9d4914SAndroid Build Coastguard Worker 
85*2e9d4914SAndroid Build Coastguard Worker #elif defined(__FreeBSD__) || defined(__FreeBSD)
86*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "FreeBSD"
87*2e9d4914SAndroid Build Coastguard Worker 
88*2e9d4914SAndroid Build Coastguard Worker #elif defined(__NetBSD__) || defined(__NetBSD)
89*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "NetBSD"
90*2e9d4914SAndroid Build Coastguard Worker 
91*2e9d4914SAndroid Build Coastguard Worker #elif defined(__OpenBSD__) || defined(__OPENBSD)
92*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "OpenBSD"
93*2e9d4914SAndroid Build Coastguard Worker 
94*2e9d4914SAndroid Build Coastguard Worker #elif defined(__sun) || defined(sun)
95*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "SunOS"
96*2e9d4914SAndroid Build Coastguard Worker 
97*2e9d4914SAndroid Build Coastguard Worker #elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
98*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "AIX"
99*2e9d4914SAndroid Build Coastguard Worker 
100*2e9d4914SAndroid Build Coastguard Worker #elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
101*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "IRIX"
102*2e9d4914SAndroid Build Coastguard Worker 
103*2e9d4914SAndroid Build Coastguard Worker #elif defined(__hpux) || defined(__hpux__)
104*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "HP-UX"
105*2e9d4914SAndroid Build Coastguard Worker 
106*2e9d4914SAndroid Build Coastguard Worker #elif defined(__HAIKU) || defined(__HAIKU__) || defined(_HAIKU)
107*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "Haiku"
108*2e9d4914SAndroid Build Coastguard Worker /* Haiku also defines __BEOS__ so we must
109*2e9d4914SAndroid Build Coastguard Worker    put it prior to the check for __BEOS__
110*2e9d4914SAndroid Build Coastguard Worker */
111*2e9d4914SAndroid Build Coastguard Worker 
112*2e9d4914SAndroid Build Coastguard Worker #elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
113*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "BeOS"
114*2e9d4914SAndroid Build Coastguard Worker 
115*2e9d4914SAndroid Build Coastguard Worker #elif defined(__QNX__) || defined(__QNXNTO__)
116*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "QNX"
117*2e9d4914SAndroid Build Coastguard Worker 
118*2e9d4914SAndroid Build Coastguard Worker #elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
119*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "Tru64"
120*2e9d4914SAndroid Build Coastguard Worker 
121*2e9d4914SAndroid Build Coastguard Worker #elif defined(__riscos) || defined(__riscos__)
122*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "RISCos"
123*2e9d4914SAndroid Build Coastguard Worker 
124*2e9d4914SAndroid Build Coastguard Worker #elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
125*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "SINIX"
126*2e9d4914SAndroid Build Coastguard Worker 
127*2e9d4914SAndroid Build Coastguard Worker #elif defined(__UNIX_SV__)
128*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "UNIX_SV"
129*2e9d4914SAndroid Build Coastguard Worker 
130*2e9d4914SAndroid Build Coastguard Worker #elif defined(__bsdos__)
131*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "BSDOS"
132*2e9d4914SAndroid Build Coastguard Worker 
133*2e9d4914SAndroid Build Coastguard Worker #elif defined(_MPRAS) || defined(MPRAS)
134*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "MP-RAS"
135*2e9d4914SAndroid Build Coastguard Worker 
136*2e9d4914SAndroid Build Coastguard Worker #elif defined(__osf) || defined(__osf__)
137*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "OSF1"
138*2e9d4914SAndroid Build Coastguard Worker 
139*2e9d4914SAndroid Build Coastguard Worker #elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
140*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "SCO_SV"
141*2e9d4914SAndroid Build Coastguard Worker 
142*2e9d4914SAndroid Build Coastguard Worker #elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
143*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "ULTRIX"
144*2e9d4914SAndroid Build Coastguard Worker 
145*2e9d4914SAndroid Build Coastguard Worker #elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
146*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID "Xenix"
147*2e9d4914SAndroid Build Coastguard Worker 
148*2e9d4914SAndroid Build Coastguard Worker #else /* unknown platform */
149*2e9d4914SAndroid Build Coastguard Worker # define PLATFORM_ID ""
150*2e9d4914SAndroid Build Coastguard Worker 
151*2e9d4914SAndroid Build Coastguard Worker #endif
152*2e9d4914SAndroid Build Coastguard Worker 
153*2e9d4914SAndroid Build Coastguard Worker /* Construct the string literal in pieces to prevent the source from
154*2e9d4914SAndroid Build Coastguard Worker    getting matched.  Store it in a pointer rather than an array
155*2e9d4914SAndroid Build Coastguard Worker    because some compilers will just produce instructions to fill the
156*2e9d4914SAndroid Build Coastguard Worker    array rather than assigning a pointer to a static array.  */
157*2e9d4914SAndroid Build Coastguard Worker char* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
158*2e9d4914SAndroid Build Coastguard Worker 
159*2e9d4914SAndroid Build Coastguard Worker 
160*2e9d4914SAndroid Build Coastguard Worker /*--------------------------------------------------------------------------*/
161*2e9d4914SAndroid Build Coastguard Worker 
main(int argc,char * argv[])162*2e9d4914SAndroid Build Coastguard Worker int main(int argc, char* argv[])
163*2e9d4914SAndroid Build Coastguard Worker {
164*2e9d4914SAndroid Build Coastguard Worker   int require = 0;
165*2e9d4914SAndroid Build Coastguard Worker   require += info_compiler[argc];
166*2e9d4914SAndroid Build Coastguard Worker   require += info_platform[argc];
167*2e9d4914SAndroid Build Coastguard Worker   (void)argv;
168*2e9d4914SAndroid Build Coastguard Worker   return require;
169*2e9d4914SAndroid Build Coastguard Worker }
170