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_SPARC_H
9#define BOOST_PREDEF_ARCHITECTURE_SPARC_H
10
11#include <boost/predef/version_number.h>
12#include <boost/predef/make.h>
13
14/* tag::reference[]
15= `BOOST_ARCH_SPARC`
16
17http://en.wikipedia.org/wiki/SPARC[SPARC] architecture.
18
19[options="header"]
20|===
21| {predef_symbol} | {predef_version}
22
23| `+__sparc__+` | {predef_detection}
24| `+__sparc+` | {predef_detection}
25
26| `+__sparcv9+` | 9.0.0
27| `+__sparc_v9__+` | 9.0.0
28| `+__sparcv8+` | 8.0.0
29| `+__sparc_v8__+` | 8.0.0
30|===
31*/ // end::reference[]
32
33#define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER_NOT_AVAILABLE
34
35#if defined(__sparc__) || defined(__sparc)
36# undef BOOST_ARCH_SPARC
37# if !defined(BOOST_ARCH_SPARC) && (defined(__sparcv9) || defined(__sparc_v9__))
38# define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER(9,0,0)
39# endif
40# if !defined(BOOST_ARCH_SPARC) && (defined(__sparcv8) || defined(__sparc_v8__))
41# define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER(8,0,0)
42# endif
43# if !defined(BOOST_ARCH_SPARC)
44# define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER_AVAILABLE
45# endif
46#endif
47
48#if BOOST_ARCH_SPARC
49# define BOOST_ARCH_SPARC_AVAILABLE
50#endif
51
52#if BOOST_ARCH_SPARC
53# if BOOST_ARCH_SPARC >= BOOST_VERSION_NUMBER(9,0,0)
54# undef BOOST_ARCH_WORD_BITS_64
55# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE
56# else
57# undef BOOST_ARCH_WORD_BITS_32
58# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE
59# endif
60#endif
61
62#define BOOST_ARCH_SPARC_NAME "SPARC"
63
64#endif
65
66#include <boost/predef/detail/test.h>
67BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_SPARC,BOOST_ARCH_SPARC_NAME)
68