1/*
2Copyright Rene Rivera 2008-2015
3Distributed under the Boost Software License, Version 1.0.
4(See accompanying file LICENSE_1_0.txt or copy at
5http://www.boost.org/LICENSE_1_0.txt)
6*/
7
8#ifndef BOOST_PREDEF_COMPILER_IBM_H
9#define BOOST_PREDEF_COMPILER_IBM_H
10
11#include <boost/predef/version_number.h>
12#include <boost/predef/make.h>
13
14/* tag::reference[]
15= `BOOST_COMP_IBM`
16
17http://en.wikipedia.org/wiki/VisualAge[IBM XL C/{CPP}] compiler.
18Version number available as major, minor, and patch.
19
20[options="header"]
21|===
22| {predef_symbol} | {predef_version}
23
24| `+__IBMCPP__+` | {predef_detection}
25| `+__xlC__+` | {predef_detection}
26| `+__xlc__+` | {predef_detection}
27
28| `+__COMPILER_VER__+` | V.R.P
29| `+__xlC__+` | V.R.P
30| `+__xlc__+` | V.R.P
31| `+__IBMCPP__+` | V.R.P
32|===
33*/ // end::reference[]
34
35#define BOOST_COMP_IBM BOOST_VERSION_NUMBER_NOT_AVAILABLE
36
37#if defined(__IBMCPP__) || defined(__xlC__) || defined(__xlc__)
38# if !defined(BOOST_COMP_IBM_DETECTION) && defined(__COMPILER_VER__)
39# define BOOST_COMP_IBM_DETECTION BOOST_PREDEF_MAKE_0X_VRRPPPP(__COMPILER_VER__)
40# endif
41# if !defined(BOOST_COMP_IBM_DETECTION) && defined(__xlC__)
42# define BOOST_COMP_IBM_DETECTION BOOST_PREDEF_MAKE_0X_VVRR(__xlC__)
43# endif
44# if !defined(BOOST_COMP_IBM_DETECTION) && defined(__xlc__)
45# define BOOST_COMP_IBM_DETECTION BOOST_PREDEF_MAKE_0X_VVRR(__xlc__)
46# endif
47# if !defined(BOOST_COMP_IBM_DETECTION)
48# define BOOST_COMP_IBM_DETECTION BOOST_PREDEF_MAKE_10_VRP(__IBMCPP__)
49# endif
50#endif
51
52#ifdef BOOST_COMP_IBM_DETECTION
53# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
54# define BOOST_COMP_IBM_EMULATED BOOST_COMP_IBM_DETECTION
55# else
56# undef BOOST_COMP_IBM
57# define BOOST_COMP_IBM BOOST_COMP_IBM_DETECTION
58# endif
59# define BOOST_COMP_IBM_AVAILABLE
60# include <boost/predef/detail/comp_detected.h>
61#endif
62
63#define BOOST_COMP_IBM_NAME "IBM XL C/C++"
64
65#endif
66
67#include <boost/predef/detail/test.h>
68BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_IBM,BOOST_COMP_IBM_NAME)
69
70#ifdef BOOST_COMP_IBM_EMULATED
71#include <boost/predef/detail/test.h>
72BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_IBM_EMULATED,BOOST_COMP_IBM_NAME)
73#endif
74

source code of include/boost/predef/compiler/ibm.h