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