1/*
2Copyright Rene Rivera 2008-2015
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 [[`_M_ARM64`] [__predef_detection__]]
31
32 [[`__arm64`] [8.0.0]]
33 [[`__TARGET_ARCH_ARM`] [V.0.0]]
34 [[`__TARGET_ARCH_THUMB`] [V.0.0]]
35 [[`_M_ARM`] [V.0.0]]
36 [[`_M_ARM64`] [8.0.0]]
37 ]
38 */
39
40#define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE
41
42#if defined(__arm__) || defined(__arm64) || defined(__thumb__) || \
43 defined(__TARGET_ARCH_ARM) || defined(__TARGET_ARCH_THUMB) || \
44 defined(_M_ARM) || defined(_M_ARM64)
45# undef BOOST_ARCH_ARM
46# if !defined(BOOST_ARCH_ARM) && defined(__arm64)
47# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(8,0,0)
48# endif
49# if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_ARM)
50# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_ARM,0,0)
51# endif
52# if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_THUMB)
53# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_THUMB,0,0)
54# endif
55# if !defined(BOOST_ARCH_ARM) && defined(_M_ARM64)
56# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(8,0,0)
57# endif
58# if !defined(BOOST_ARCH_ARM) && defined(_M_ARM)
59# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(_M_ARM,0,0)
60# endif
61# if !defined(BOOST_ARCH_ARM)
62# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_AVAILABLE
63# endif
64#endif
65
66#if BOOST_ARCH_ARM
67# define BOOST_ARCH_ARM_AVAILABLE
68#endif
69
70#define BOOST_ARCH_ARM_NAME "ARM"
71
72#endif
73
74#include <boost/predef/detail/test.h>
75BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_ARM,BOOST_ARCH_ARM_NAME)
76