MOOS 0.2375
|
00001 #ifdef __cplusplus 00002 # error "A C++ compiler has been selected for C." 00003 #endif 00004 00005 #if defined(__18CXX) 00006 # define ID_VOID_MAIN 00007 #endif 00008 00009 #if defined(__INTEL_COMPILER) || defined(__ICC) 00010 # define COMPILER_ID "Intel" 00011 00012 #elif defined(__clang__) 00013 # define COMPILER_ID "Clang" 00014 00015 #elif defined(__BORLANDC__) 00016 # define COMPILER_ID "Borland" 00017 00018 #elif defined(__WATCOMC__) 00019 # define COMPILER_ID "Watcom" 00020 00021 #elif defined(__SUNPRO_C) 00022 # define COMPILER_ID "SunPro" 00023 00024 #elif defined(__HP_cc) 00025 # define COMPILER_ID "HP" 00026 00027 #elif defined(__DECC) 00028 # define COMPILER_ID "Compaq" 00029 00030 #elif defined(__IBMC__) 00031 # if defined(__COMPILER_VER__) 00032 # define COMPILER_ID "zOS" 00033 # elif __IBMC__ >= 800 00034 # define COMPILER_ID "XL" 00035 # else 00036 # define COMPILER_ID "VisualAge" 00037 # endif 00038 00039 #elif defined(__PGI) 00040 # define COMPILER_ID "PGI" 00041 00042 #elif defined(__PATHSCALE__) 00043 # define COMPILER_ID "PathScale" 00044 00045 #elif defined(_CRAYC) 00046 # define COMPILER_ID "Cray" 00047 00048 #elif defined(__TI_COMPILER_VERSION__) 00049 # define COMPILER_ID "TI_DSP" 00050 00051 #elif defined(__SCO_VERSION__) 00052 # define COMPILER_ID "SCO" 00053 00054 #elif defined(__GNUC__) 00055 # define COMPILER_ID "GNU" 00056 00057 #elif defined(_MSC_VER) 00058 # define COMPILER_ID "MSVC" 00059 00060 #elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) 00061 /* Analog Devices C++ compiler for Blackfin, TigerSHARC and 00062 SHARC (21000) DSPs */ 00063 # define COMPILER_ID "ADSP" 00064 00065 /* IAR Systems compiler for embedded systems. 00066 http://www.iar.com 00067 Not supported yet by CMake 00068 #elif defined(__IAR_SYSTEMS_ICC__) 00069 # define COMPILER_ID "IAR" */ 00070 00071 /* sdcc, the small devices C compiler for embedded systems, 00072 http://sdcc.sourceforge.net */ 00073 #elif defined(SDCC) 00074 # define COMPILER_ID "SDCC" 00075 00076 #elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION) 00077 # define COMPILER_ID "MIPSpro" 00078 00079 /* This compiler is either not known or is too old to define an 00080 identification macro. Try to identify the platform and guess that 00081 it is the native compiler. */ 00082 #elif defined(__sgi) 00083 # define COMPILER_ID "MIPSpro" 00084 00085 #elif defined(__hpux) || defined(__hpua) 00086 # define COMPILER_ID "HP" 00087 00088 #else /* unknown compiler */ 00089 # define COMPILER_ID "" 00090 00091 #endif 00092 00093 /* Construct the string literal in pieces to prevent the source from 00094 getting matched. Store it in a pointer rather than an array 00095 because some compilers will just produce instructions to fill the 00096 array rather than assigning a pointer to a static array. */ 00097 char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; 00098 00099 /* Identify known platforms by name. */ 00100 #if defined(__linux) || defined(__linux__) || defined(linux) 00101 # define PLATFORM_ID "Linux" 00102 00103 #elif defined(__CYGWIN__) 00104 # define PLATFORM_ID "Cygwin" 00105 00106 #elif defined(__MINGW32__) 00107 # define PLATFORM_ID "MinGW" 00108 00109 #elif defined(__APPLE__) 00110 # define PLATFORM_ID "Darwin" 00111 00112 #elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) 00113 # define PLATFORM_ID "Windows" 00114 00115 #elif defined(__FreeBSD__) || defined(__FreeBSD) 00116 # define PLATFORM_ID "FreeBSD" 00117 00118 #elif defined(__NetBSD__) || defined(__NetBSD) 00119 # define PLATFORM_ID "NetBSD" 00120 00121 #elif defined(__OpenBSD__) || defined(__OPENBSD) 00122 # define PLATFORM_ID "OpenBSD" 00123 00124 #elif defined(__sun) || defined(sun) 00125 # define PLATFORM_ID "SunOS" 00126 00127 #elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) 00128 # define PLATFORM_ID "AIX" 00129 00130 #elif defined(__sgi) || defined(__sgi__) || defined(_SGI) 00131 # define PLATFORM_ID "IRIX" 00132 00133 #elif defined(__hpux) || defined(__hpux__) 00134 # define PLATFORM_ID "HP-UX" 00135 00136 #elif defined(__HAIKU) || defined(__HAIKU__) || defined(_HAIKU) 00137 # define PLATFORM_ID "Haiku" 00138 /* Haiku also defines __BEOS__ so we must 00139 put it prior to the check for __BEOS__ 00140 */ 00141 00142 #elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) 00143 # define PLATFORM_ID "BeOS" 00144 00145 #elif defined(__QNX__) || defined(__QNXNTO__) 00146 # define PLATFORM_ID "QNX" 00147 00148 #elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) 00149 # define PLATFORM_ID "Tru64" 00150 00151 #elif defined(__riscos) || defined(__riscos__) 00152 # define PLATFORM_ID "RISCos" 00153 00154 #elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) 00155 # define PLATFORM_ID "SINIX" 00156 00157 #elif defined(__UNIX_SV__) 00158 # define PLATFORM_ID "UNIX_SV" 00159 00160 #elif defined(__bsdos__) 00161 # define PLATFORM_ID "BSDOS" 00162 00163 #elif defined(_MPRAS) || defined(MPRAS) 00164 # define PLATFORM_ID "MP-RAS" 00165 00166 #elif defined(__osf) || defined(__osf__) 00167 # define PLATFORM_ID "OSF1" 00168 00169 #elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) 00170 # define PLATFORM_ID "SCO_SV" 00171 00172 #elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) 00173 # define PLATFORM_ID "ULTRIX" 00174 00175 #elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) 00176 # define PLATFORM_ID "Xenix" 00177 00178 #else /* unknown platform */ 00179 # define PLATFORM_ID "" 00180 00181 #endif 00182 00183 /* For windows compilers MSVC and Intel we can determine 00184 the architecture of the compiler being used. This is because 00185 the compilers do not have flags that can change the architecture, 00186 but rather depend on which compiler is being used 00187 */ 00188 #if defined(_WIN32) && defined(_MSC_VER) 00189 # if defined(_M_IA64) 00190 # define ARCHITECTURE_ID "IA64" 00191 00192 # elif defined(_M_X64) || defined(_M_AMD64) 00193 # define ARCHITECTURE_ID "x64" 00194 00195 # elif defined(_M_IX86) 00196 # define ARCHITECTURE_ID "X86" 00197 00198 # else /* unknown architecture */ 00199 # define ARCHITECTURE_ID "" 00200 # endif 00201 00202 #else 00203 # define ARCHITECTURE_ID "" 00204 #endif 00205 00206 /* Construct the string literal in pieces to prevent the source from 00207 getting matched. Store it in a pointer rather than an array 00208 because some compilers will just produce instructions to fill the 00209 array rather than assigning a pointer to a static array. */ 00210 char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; 00211 char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; 00212 00213 00214 00215 /*--------------------------------------------------------------------------*/ 00216 00217 #ifdef ID_VOID_MAIN 00218 void main() {} 00219 #else 00220 int main(int argc, char* argv[]) 00221 { 00222 int require = 0; 00223 require += info_compiler[argc]; 00224 require += info_platform[argc]; 00225 require += info_arch[argc]; 00226 (void)argv; 00227 return require; 00228 } 00229 #endif