#ifdef __cplusplus # error "A C++ compiler has been selected for C." #endif #if defined(__18CXX) # define ID_VOID_MAIN #endif #if defined(__INTEL_COMPILER) || defined(__ICC) # define COMPILER_ID "Intel" #elif defined(__clang__) # define COMPILER_ID "Clang" #elif defined(__BORLANDC__) # define COMPILER_ID "Borland" #elif defined(__WATCOMC__) # define COMPILER_ID "Watcom" #elif defined(__SUNPRO_C) # define COMPILER_ID "SunPro" #elif defined(__HP_cc) # define COMPILER_ID "HP" #elif defined(__DECC) # define COMPILER_ID "Compaq" #elif defined(__IBMC__) # if defined(__COMPILER_VER__) # define COMPILER_ID "zOS" # elif __IBMC__ >= 800 # define COMPILER_ID "XL" # else # define COMPILER_ID "VisualAge" # endif #elif defined(__PGI) # define COMPILER_ID "PGI" #elif defined(__PATHSCALE__) # define COMPILER_ID "PathScale" #elif defined(_CRAYC) # define COMPILER_ID "Cray" #elif defined(__TI_COMPILER_VERSION__) # define COMPILER_ID "TI_DSP" #elif defined(__SCO_VERSION__) # define COMPILER_ID "SCO" #elif defined(__GNUC__) # define COMPILER_ID "GNU" #elif defined(_MSC_VER) # define COMPILER_ID "MSVC" #elif defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) /* Analog Devices C++ compiler for Blackfin, TigerSHARC and SHARC (21000) DSPs */ # define COMPILER_ID "ADSP" /* IAR Systems compiler for embedded systems. http://www.iar.com Not supported yet by CMake #elif defined(__IAR_SYSTEMS_ICC__) # define COMPILER_ID "IAR" */ /* sdcc, the small devices C compiler for embedded systems, http://sdcc.sourceforge.net */ #elif defined(SDCC) # define COMPILER_ID "SDCC" #elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION) # define COMPILER_ID "MIPSpro" /* This compiler is either not known or is too old to define an identification macro. Try to identify the platform and guess that it is the native compiler. */ #elif defined(__sgi) # define COMPILER_ID "MIPSpro" #elif defined(__hpux) || defined(__hpua) # define COMPILER_ID "HP" #else /* unknown compiler */ # define COMPILER_ID "" #endif /* Construct the string literal in pieces to prevent the source from getting matched. Store it in a pointer rather than an array because some compilers will just produce instructions to fill the array rather than assigning a pointer to a static array. */ char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; @CMAKE_C_COMPILER_ID_PLATFORM_CONTENT@ /*--------------------------------------------------------------------------*/ #ifdef ID_VOID_MAIN void main() {} #else int main(int argc, char* argv[]) { int require = 0; require += info_compiler[argc]; require += info_platform[argc]; require += info_arch[argc]; (void)argv; return require; } #endif