summaryrefslogtreecommitdiffstats
path: root/Modules/CMakeCCompilerId.c.in
Commit message (Collapse)AuthorAgeFilesLines
* Recognize Embarcadero compiler (#12604)Brad King2012-02-201-0/+6
| | | | | | | | | | | | | | | | | | | The Borland compiler was re-branded as CodeGear during 2007-2009 and since 2009 is the Embarcadero compiler. They offer predefined macros: http://docwiki.embarcadero.com/RADStudio/en/Predefined_Macros and distinguish themselves by __CODEGEARC__ and __CODEGEARC_VERSION__. Version 6.30 (C++Builder XE) changed the meaning of some flags: http://docwiki.embarcadero.com/RADStudio/en/C%2B%2B_Compiler_Option_Changes_for_XE Teach Embarcadero compiler information files to generate build rules with flags matching the compiler version. Leave the flags unchanged for old Borland versions. Always set the BORLAND toolchain indicator for compatibility with existing projects that test it. Also set the EMBARCADERO indicator for newer toolchains.
* Merge topic 'compiler-version'David Cole2012-01-171-3/+83
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 0df1942 Detect SGI MIPSpro compiler version with its id a5e892c Document compiler version macro formats used for detection d7c6f41 Detect HP compiler version with its id 3dd9fa9 Detect SunPro compiler version with its id c198730 Detect Watcom compiler version with its id 5899b98 Detect Clang compiler version with its id b8cfa65 Detect PGI compiler version with its id 6dae666 Detect IBM XL compiler version with its id 4080d55 Detect Borland compiler version with its id 2cc205a Detect Intel compiler version with its id (#11937) a6d83cc Detect MSVC compiler version with its id a662855 Detect GNU compiler version with its id (#6251) fa7141f Add framework to detect compiler version with its id (#12408)
| * Detect SGI MIPSpro compiler version with its idBrad King2012-01-101-0/+11
| | | | | | | | | | | | | | Decode decimal digits from _SGI_COMPILER_VERSION or _COMPILER_VERSION to compute version number components. See documentation at: http://predef.sourceforge.net/precomp.html
| * Document compiler version macro formats used for detectionBrad King2012-01-101-0/+14
| | | | | | | | | | | | The MSVC, HP, XL, SunPro, Watcom, Borland, and Intel compilers specify their version number in components encoded in a single integer value. Document the components that we use to compute version numbers.
| * Detect HP compiler version with its idBrad King2012-01-101-0/+3
| | | | | | | | | | | | | | | | Decode decimal digits from __HP_cc and __HP_aCC to compute version number components. See documentation at: http://predef.sourceforge.net/precomp.html http://g4u0420c.houston.hp.com/en/14487/preprocess.htm
| * Detect SunPro compiler version with its idBrad King2012-01-101-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Decode hex digits from __SUNPRO_C and __SUNPRO_CC to compute the version number components. Note that the constant encodes decimal digits as hex digits (never larger than 9). We represent them as decimal after extraction. See documentation at http://predef.sourceforge.net/precomp.html Although the documented version number format is 0xVRP where V = Version, R = Revision, P = Patch it holds only though SunPro C/C++ version 5.9. Later versions have a two-digit revision (minor) number so their format is 0xVRRP.
| * Detect Watcom compiler version with its idBrad King2011-12-071-0/+2
| | | | | | | | | | | | | | Decode decimal digits from __WATCOMC__ to compute the version number components. See documentation at: http://predef.sourceforge.net/precomp.html
| * Detect Clang compiler version with its idBrad King2011-12-071-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | Decode decimal digits from __clang_major__ __clang_minor__ __clang_patchlevel__ to compute version number components. See documentation at: http://clang.llvm.org/docs/LanguageExtensions.html#builtinmacros http://predef.sourceforge.net/precomp.html
| * Detect PGI compiler version with its idBrad King2011-12-071-0/+5
| | | | | | | | | | | | | | | | | | | | Decode decimal digits from __PGIC__ __PGIC_MINOR__ __PGIC_PATCHLEVEL__ to compute version number components.
| * Detect IBM XL compiler version with its idBrad King2011-12-071-3/+8
| | | | | | | | | | | | | | | | | | Decode decimal digits from __IBMC__ and __IBMCPP__ to compute version number components. See documentation at: http://predef.sourceforge.net/precomp.html http://publib.boulder.ibm.com/infocenter/comphelp/v111v131/topic/com.ibm.xlc111.aix.doc/compiler_ref/xlmacros.html http://publib.boulder.ibm.com/infocenter/comphelp/v111v131/topic/com.ibm.xlcpp111.aix.doc/compiler_ref/xlmacros.html
| * Detect Borland compiler version with its idBrad King2011-12-071-0/+2
| | | | | | | | | | | | | | | | | | | | Decode hex digits from __BORLANDC__ to compute the version number components. Note that the constant encodes decimal digits as hex digits (never larger than 9). We represent them as decimal after extraction. See documentation at http://predef.sourceforge.net/precomp.html http://docwiki.embarcadero.com/RADStudio/en/Predefined_Macros
| * Detect Intel compiler version with its id (#11937)Brad King2011-12-071-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | Decode decimal digits from __INTEL_COMPILER __INTEL_COMPILER_BUILD_DATE to compute the version number components. See documentation at: http://predef.sourceforge.net/precomp.html http://software.intel.com/sites/products/documentation/hpc/compilerpro/en-us/fortran/lin/compiler_f/bldaps_for/common/bldaps_use_presym.htm
| * Detect MSVC compiler version with its idBrad King2011-12-071-0/+12
| | | | | | | | | | | | | | | | Decode decimal digits from _MSC_VER, _MSC_FULL_VER, and _MSC_BUILD to compute the version number components. See documentation at: http://msdn.microsoft.com/en-us/library/b0084kay.aspx http://predef.sourceforge.net/precomp.html
| * Detect GNU compiler version with its id (#6251)Brad King2011-12-071-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | Decode decimal digits from __GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__ to compute version components. See documentation at http://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html http://predef.sourceforge.net/precomp.html
| * Add framework to detect compiler version with its id (#12408)Brad King2011-12-071-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Teach CMakePlatformId.h to construct an "INFO:compiler_version[]" string literal from macros COMPILER_VERSION_(MAJOR|MINOR|PATCH|TWEAK) to be defined in CMake(C|CXX)CompilerId.(c|cpp) for each compiler. Provide conversion macros DEC() and HEX() to decode decimal or hex digits from integer values. Parse the version out of the compiler id binary along with the other INFO values already present. Store the result in variable CMAKE_<LANG>_COMPILER_VERSION in the format "major[.minor[.patch[.tweak]]]". Save the value persistently in CMake(C|CXX)Compiler.cmake in the build tree. Document the variable for internal use since we do not set it everywhere yet. Report the compiler version on the compiler id result line e.g. The C compiler identification is GNU 4.5.2 Report CMAKE_(C|CXX)_COMPILER_(ID|VERSION) in SystemInformation test.
* | Recognize the Tiny C Compiler (#12605)Brad King2011-12-021-0/+3
|/ | | | | | | | | See compiler home page here: http://tinycc.org/ http://bellard.org/tcc/ Use the id "TinyCC" as it appears in their online documentation.
* Recognize SCO UnixWare C/C++ compilers (#11700)Brad King2011-01-171-0/+3
| | | | | | | | | | | | These compilers define __SCO_VERSION__ as VvvYYYYMML: V = major version vv = minor version YYYY = release year MM = release month http://osr600doc.sco.com/en/manCP/cc.CP.html http://osr600doc.sco.com/en/manCP/CC.CP.html
* Merge topic 'compiler-id-literal-const'Brad King2011-01-041-1/+1
|\ | | | | | | | | dbc79bd Fix constness in compiler id detection
| * Fix constness in compiler id detectionBrad King2010-12-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit 70c2dc8a (Make compiler id detection more robust, 2008-03-10) we store compiler identification strings in test binaries using the form char* info = "info"; Use the const-correct char const* info = "info"; form instead. This allows the C++ compiler identification to work with "-Werror -Wall" or equivalent flags if the compiler would warn about const-to-non-const conversion.
* | Recognize the Texas Instruments DSP compiler (#11645)Wojciech Migda2010-12-281-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | The TI DSP compiler predefines "__TI_COMPILER_VERSION__". Use this to identify the C and C++ compilers. For assembler language the C compiler executable is used: $ cl6x -h TMS320C6x C/C++ Compiler v6.1.11 Tools Copyright (c) 1996-2009 Texas Instruments Incorporated Use this command-line option and output to recognize the assembler.
* | Teach CMake about Cray C, C++, and Fortran compilersBrad King2010-11-121-0/+3
|/ | | | | | The Cray Fortran compiler needs "-em" to enable module output and also "-J." to place the .mod files in the current working directory (instead of next to the .o file).
* Recognize Clang C and C++ compilers (see #10693)Brad King2010-05-171-0/+3
| | | | | | | Map to the platform and compiler information for GNU because the compilers are command-line compatible for common operations. Later we can add Clang-specific features as necessary. We honor the preferred capitalization is "Clang", not the common mis-spelling "CLang".
* Recognize the PathScale C/C++/Fortran compilersBrad King2010-01-131-0/+3
|
* Change the way 32/64 bit compiles are detected with MSVC and intel makefile ↵Bill Hoffman2009-11-201-0/+1
| | | | builds. Use the platform ID preprocessor approach.
* Teach compiler id about VisualAge -> XL rebrandingBrad King2009-08-071-1/+7
| | | | | | | IBM rebranded its VisualAge compiler to XL starting at version 8.0. We use the compiler id "XL" for newer versions and "VisualAge" for older versions. We now also recognize the "z/OS" compiler, which is distinct from XL.
* ENH: Check _SGI_COMPILER_VERSION for compiler idBrad King2009-07-141-1/+1
| | | | | | Some SGI compilers define _SGI_COMPILER_VERSION in addition to the old _COMPILER_VERSION preprocessor symbol. It is more distinctive, so we should check it in case the old one is ever removed.
* ENH: Improve robustness of compiler INFO stringsBrad King2008-08-071-6/+15
| | | | | | | | | | | Compiler INFO strings built at preprocessing time encode information that must appear as a string literal in the resulting binary. We must make sure the strings appear in the final binary no matter what compiler and flags are used. The previous implementation worked in most places but failed with the GNU linker's --gc-sections option which managed to discard the string. Instead we make the program return value depend on an element of the string indexed by a runtime program parameter, which absolutely requires the string to be present.
* ENH: Make compiler id detection more robustBrad King2008-03-101-1/+5
| | | | | | | | | | - Split INFO strings in source into multiple pieces to make sure assembly or other listings produced by the compiler are never matched by the regex - Store INFO strings via pointer instead of array to convince some compilers to store the string literally in the binary - This should help make it work for sdcc 2.8.0 RC1
* ENH: Add support to C compiler identification for void return type from ↵Brad King2008-02-251-0/+7
| | | | main. Cross-compilers for embedded platforms may require it.
* ENH: Improvied compiler identification robustnessBrad King2008-02-251-0/+73
- Write a single source file into the compiler id directory - This avoid requiring the compiler to behave correctly with respect to include rules and the current working directory - Helps to identify cross-compiling toolchains with unusual default behavior