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_ARCHITECTURE_SUPERH_H
9#define BOOST_PREDEF_ARCHITECTURE_SUPERH_H
10
11#include <boost/predef/version_number.h>
12#include <boost/predef/make.h>
13
14/* tag::reference[]
15= `BOOST_ARCH_SH`
16
17http://en.wikipedia.org/wiki/SuperH[SuperH] architecture:
18If available versions [1-5] are specifically detected.
19
20[options="header"]
21|===
22| {predef_symbol} | {predef_version}
23
24| `+__sh__+` | {predef_detection}
25
26| `+__SH5__+` | 5.0.0
27| `+__SH4__+` | 4.0.0
28| `+__sh3__+` | 3.0.0
29| `+__SH3__+` | 3.0.0
30| `+__sh2__+` | 2.0.0
31| `+__sh1__+` | 1.0.0
32|===
33*/ // end::reference[]
34
35#define BOOST_ARCH_SH BOOST_VERSION_NUMBER_NOT_AVAILABLE
36
37#if defined(__sh__)
38# undef BOOST_ARCH_SH
39# if !defined(BOOST_ARCH_SH) && (defined(__SH5__))
40# define BOOST_ARCH_SH BOOST_VERSION_NUMBER(5,0,0)
41# endif
42# if !defined(BOOST_ARCH_SH) && (defined(__SH4__))
43# define BOOST_ARCH_SH BOOST_VERSION_NUMBER(4,0,0)
44# endif
45# if !defined(BOOST_ARCH_SH) && (defined(__sh3__) || defined(__SH3__))
46# define BOOST_ARCH_SH BOOST_VERSION_NUMBER(3,0,0)
47# endif
48# if !defined(BOOST_ARCH_SH) && (defined(__sh2__))
49# define BOOST_ARCH_SH BOOST_VERSION_NUMBER(2,0,0)
50# endif
51# if !defined(BOOST_ARCH_SH) && (defined(__sh1__))
52# define BOOST_ARCH_SH BOOST_VERSION_NUMBER(1,0,0)
53# endif
54# if !defined(BOOST_ARCH_SH)
55# define BOOST_ARCH_SH BOOST_VERSION_NUMBER_AVAILABLE
56# endif
57#endif
58
59#if BOOST_ARCH_SH
60# define BOOST_ARCH_SH_AVAILABLE
61#endif
62
63#define BOOST_ARCH_SH_NAME "SuperH"
64
65#endif
66
67#include <boost/predef/detail/test.h>
68BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_SH,BOOST_ARCH_SH_NAME)
69

source code of include/boost/predef/architecture/superh.h