Browse Source

Detect IBM XL compiler version with its id

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
Brad King 14 years ago
parent
commit
6dae6660fc
2 changed files with 16 additions and 6 deletions
  1. 8 3
      Modules/CMakeCCompilerId.c.in
  2. 8 3
      Modules/CMakeCXXCompilerId.cpp.in

+ 8 - 3
Modules/CMakeCCompilerId.c.in

@@ -38,10 +38,15 @@
 #elif defined(__IBMC__)
 # if defined(__COMPILER_VER__)
 #  define COMPILER_ID "zOS"
-# elif __IBMC__ >= 800
-#  define COMPILER_ID "XL"
 # else
-#  define COMPILER_ID "VisualAge"
+#  if __IBMC__ >= 800
+#   define COMPILER_ID "XL"
+#  else
+#   define COMPILER_ID "VisualAge"
+#  endif
+#  define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
+#  define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(__IBMC__    % 10)
 # endif
 
 #elif defined(__PGI)

+ 8 - 3
Modules/CMakeCXXCompilerId.cpp.in

@@ -40,10 +40,15 @@
 #elif defined(__IBMCPP__)
 # if defined(__COMPILER_VER__)
 #  define COMPILER_ID "zOS"
-# elif __IBMCPP__ >= 800
-#  define COMPILER_ID "XL"
 # else
-#  define COMPILER_ID "VisualAge"
+#  if __IBMCPP__ >= 800
+#   define COMPILER_ID "XL"
+#  else
+#   define COMPILER_ID "VisualAge"
+#  endif
+#  define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
+#  define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(__IBMCPP__    % 10)
 # endif
 
 #elif defined(__PGI)