1 /*
2 Copyright Rene Rivera 2008-2015
3 Copyright Franz Detro 2014
4 Copyright (c) Microsoft Corporation 2014
5 Distributed under the Boost Software License, Version 1.0.
6 (See accompanying file LICENSE_1_0.txt or copy at
7 http://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     [[`__ARM_ARCH`] [V.0.0]]
36     [[`_M_ARM`] [V.0.0]]
37     [[`_M_ARM64`] [8.0.0]]
38     ]
39  */
40 
41 #define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE
42 
43 #if defined(__arm__) || defined(__arm64) || defined(__thumb__) || \
44     defined(__TARGET_ARCH_ARM) || defined(__TARGET_ARCH_THUMB) || \
45     defined(__ARM_ARCH) || \
46     defined(_M_ARM) || defined(_M_ARM64)
47 #   undef BOOST_ARCH_ARM
48 #   if !defined(BOOST_ARCH_ARM) && defined(__arm64)
49 #       define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(8,0,0)
50 #   endif
51 #   if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_ARM)
52 #       define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_ARM,0,0)
53 #   endif
54 #   if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_THUMB)
55 #       define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_THUMB,0,0)
56 #   endif
57 #   if !defined(BOOST_ARCH_ARM) && defined(__ARM_ARCH)
58 #       define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__ARM_ARCH,0,0)
59 #   endif
60 #   if !defined(BOOST_ARCH_ARM) && defined(_M_ARM64)
61 #       define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(8,0,0)
62 #   endif
63 #   if !defined(BOOST_ARCH_ARM) && defined(_M_ARM)
64 #       define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(_M_ARM,0,0)
65 #   endif
66 #   if !defined(BOOST_ARCH_ARM)
67 #       define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_AVAILABLE
68 #   endif
69 #endif
70 
71 #if BOOST_ARCH_ARM
72 #   define BOOST_ARCH_ARM_AVAILABLE
73 #endif
74 
75 #define BOOST_ARCH_ARM_NAME "ARM"
76 
77 #endif
78 
79 #include <boost/predef/detail/test.h>
80 BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_ARM,BOOST_ARCH_ARM_NAME)
81