summaryrefslogtreecommitdiffstats
path: root/Modules/CMakeCXXCompilerId.cpp.in
Commit message (Collapse)AuthorAgeFilesLines
* VS: Add the entry point when compiling for WindowsCEPatrick Gansterer2012-11-301-4/+0
| | | | | Set the entry point to mainACRTStartup to make sure that main() can be found when linking the application to check the compiler.
* VS: Make DetermineCompilerId working with WinCE tooPatrick Gansterer2012-11-271-0/+4
| | | | | | Add a dummy mainCRTStartup() function, since the linker searches for it instead of main() and set the CMAKE_SYSTEM_* variables depending on the MSVC_C_ARCHITECTURE_ID and CMAKE_VS_WINCE_VERSION variables.
* Fix PathScale compiler id for Clang-based upstreamBrad King2012-11-051-8/+8
| | | | | | | Upstream PathScale now uses Clang as its front-end. Test for __PATHCC__ before __clang__. Reported-by: C. Bergström <cbergstrom@pathscale.com>
* Detect Analog VisualDSP++ compiler version with its idBrad King2012-08-221-2/+9
| | | | | | | | | | | | Decode hex digits from __VISUALDSPVERSION__ 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://download.analog.com/dsp/tools/VisualDSP_45_Update_6_Release_Note_v4.pdf http://www.analog.com/static/imported-files/software_manuals/50_asm_man.rev3.1.pdf Note that __VISUALDSPVERSION__ was introduced in version 4.5.6.
* Detect Cray compiler version with its idBrad King2012-08-221-0/+2
| | | | | | | | | | | | Decode decimal digits from _RELEASE _RELEASE_MINOR to compute version number components. See documentation at: http://docs.cray.com/books/S-2179-52/html-S-2179-52/zfixed5fvzxnxo.html http://sourceforge.net/p/predef/wiki/Compilers/#cray-c
* Detect Comeau compiler version with its idBrad King2012-08-221-0/+3
| | | | | | | | Decode decimal digits from __COMO_VERSION__ to compute the version number components. See documentation at: http://www.comeaucomputing.com/4.0/docs/userman/predefs.html http://sourceforge.net/p/predef/wiki/Compilers/#comeau-chttpenwikipediaorgwikicomeau_cc2b2b
* Detect TI compiler version with its idBrad King2012-08-221-0/+4
| | | | | | | | | Decode decimal digits from __TI_COMPILER_VERSION__ to compute version number components. See documentation at: http://processors.wiki.ti.com/index.php/Refer_to_Compiler_Version_in_Your_Source http://www.ti.com/general/docs/lit/getliterature.tsp?literatureNumber=spru187o http://sourceforge.net/p/predef/wiki/Compilers/#texas-instruments-cc-compiler
* Detect PathScale compiler version with its idBrad King2012-08-221-1/+6
| | | | | | | | | | | | | Decode decimal digits from __PATHCC__ __PATHCC_MINOR__ __PATHCC_PATCHLEVEL__ to compute version number components. See documentation at: http://www.pathscale.com/docs/UserGuide.pdf http://sourceforge.net/p/predef/wiki/Compilers/#ekopathhttpenwikipediaorgwikipathscale
* Detect Compaq compiler version with its idBrad King2012-08-221-0/+4
| | | | | | | | | Decode decimal digits from __DECC_VER and __DECCXX_VER to compute version number components. See documentation at: http://www.openvms.compaq.com/commercial/c/docs/5492p024.html#decc_ver_sec http://www.tru64unix.compaq.com/cplus/ugu_impl.html#predef_vernum http://sourceforge.net/p/predef/wiki/Compilers/#compaq-cchttpwwwopenvmscompaqcomopenvmsbrochuresdeccplus
* 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.
* 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 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
|
* 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-3/+11
| | | | | | | | | | | 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: Improvied compiler identification robustnessBrad King2008-02-251-0/+68
- 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