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