1/*
2Copyright Rene Rivera 2008-2013
3Copyright Franz Detro 2014
4Copyright (c) Microsoft Corporation 2014
5Distributed under the Boost Software License, Version 1.0.
6(See accompanying file LICENSE_1_0.txt or copy at
7http://www.boost.org/LICENSE_1_0.txt)
8*/
9
10#ifndef BOOST_PREDEF_ARCHITECTURE_ARM_H
11#define BOOST_PREDEF_ARCHITECTURE_ARM_H
12
13#include <boost/predef/version_number.h>
14#include <boost/predef/make.h>
15
16/*`
17[heading `BOOST_ARCH_ARM`]
18
19[@http://en.wikipedia.org/wiki/ARM_architecture ARM] architecture.
20
21[table
22 [[__predef_symbol__] [__predef_version__]]
23
24 [[`__arm__`] [__predef_detection__]]
25 [[`__arm64`] [__predef_detection__]]
26 [[`__thumb__`] [__predef_detection__]]
27 [[`__TARGET_ARCH_ARM`] [__predef_detection__]]
28 [[`__TARGET_ARCH_THUMB`] [__predef_detection__]]
29 [[`_M_ARM`] [__predef_detection__]]
30
31 [[`__arm64`] [8.0.0]]
32 [[`__TARGET_ARCH_ARM`] [V.0.0]]
33 [[`__TARGET_ARCH_THUMB`] [V.0.0]]
34 [[`_M_ARM`] [V.0.0]]
35 ]
36 */
37
38#define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE
39
40#if defined(__arm__) || defined(__arm64) || defined(__thumb__) || \
41 defined(__TARGET_ARCH_ARM) || defined(__TARGET_ARCH_THUMB) || \
42 defined(_M_ARM)
43# undef BOOST_ARCH_ARM
44# if !defined(BOOST_ARCH_ARM) && defined(__arm64)
45# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(8,0,0)
46# endif
47# if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_ARM)
48# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_ARM,0,0)
49# endif
50# if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_THUMB)
51# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_THUMB,0,0)
52# endif
53# if !defined(BOOST_ARCH_ARM) && defined(_M_ARM)
54# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(_M_ARM,0,0)
55# endif
56# if !defined(BOOST_ARCH_ARM)
57# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_AVAILABLE
58# endif
59#endif
60
61#if BOOST_ARCH_ARM
62# define BOOST_ARCH_ARM_AVAILABLE
63#endif
64
65#define BOOST_ARCH_ARM_NAME "ARM"
66
67#include <boost/predef/detail/test.h>
68BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_ARM,BOOST_ARCH_ARM_NAME)
69
70
71#endif
72