summaryrefslogtreecommitdiff
path: root/Modules/CMakeCXXCompilerId.cpp.in
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2011-12-07 09:22:11 -0500
committerBrad King <brad.king@kitware.com>2012-01-10 11:59:14 -0500
commit3dd9fa9d6af775473736a01a8970b107b4e0fd47 (patch)
tree76ffec5ed87b8a679135b3b44fd52c05c15cccc4 /Modules/CMakeCXXCompilerId.cpp.in
parentc198730b4558d03b9b98a5eedbf5653eb79ac09d (diff)
downloadcmake-3dd9fa9d6af775473736a01a8970b107b4e0fd47.tar.gz
Detect SunPro compiler version with its id
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.
Diffstat (limited to 'Modules/CMakeCXXCompilerId.cpp.in')
-rw-r--r--Modules/CMakeCXXCompilerId.cpp.in9
1 files changed, 9 insertions, 0 deletions
diff --git a/Modules/CMakeCXXCompilerId.cpp.in b/Modules/CMakeCXXCompilerId.cpp.in
index d3fcc4b875..5f0cb6bab6 100644
--- a/Modules/CMakeCXXCompilerId.cpp.in
+++ b/Modules/CMakeCXXCompilerId.cpp.in
@@ -35,6 +35,15 @@
#elif defined(__SUNPRO_CC)
# define COMPILER_ID "SunPro"
+# if __SUNPRO_CC >= 0x5100
+# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12)
+# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF)
+# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF)
+# else
+# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8)
+# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF)
+# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF)
+# endif
#elif defined(__HP_aCC)
# define COMPILER_ID "HP"