1 | /* |
2 | Copyright Rene Rivera 2008-2019 |
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 | /* tag::reference[] |
17 | = `BOOST_ARCH_ARM` |
18 | |
19 | http://en.wikipedia.org/wiki/ARM_architecture[ARM] architecture. |
20 | |
21 | [options="header"] |
22 | |=== |
23 | | {predef_symbol} | {predef_version} |
24 | |
25 | | `+__ARM_ARCH+` | {predef_detection} |
26 | | `+__TARGET_ARCH_ARM+` | {predef_detection} |
27 | | `+__TARGET_ARCH_THUMB+` | {predef_detection} |
28 | | `+_M_ARM+` | {predef_detection} |
29 | | `+__arm__+` | {predef_detection} |
30 | | `+__arm64+` | {predef_detection} |
31 | | `+__thumb__+` | {predef_detection} |
32 | | `+_M_ARM64+` | {predef_detection} |
33 | | `+__aarch64__+` | {predef_detection} |
34 | | `+__AARCH64EL__+` | {predef_detection} |
35 | | `+__ARM_ARCH_7__+` | {predef_detection} |
36 | | `+__ARM_ARCH_7A__+` | {predef_detection} |
37 | | `+__ARM_ARCH_7R__+` | {predef_detection} |
38 | | `+__ARM_ARCH_7M__+` | {predef_detection} |
39 | | `+__ARM_ARCH_6K__+` | {predef_detection} |
40 | | `+__ARM_ARCH_6Z__+` | {predef_detection} |
41 | | `+__ARM_ARCH_6KZ__+` | {predef_detection} |
42 | | `+__ARM_ARCH_6T2__+` | {predef_detection} |
43 | | `+__ARM_ARCH_5TE__+` | {predef_detection} |
44 | | `+__ARM_ARCH_5TEJ__+` | {predef_detection} |
45 | | `+__ARM_ARCH_4T__+` | {predef_detection} |
46 | | `+__ARM_ARCH_4__+` | {predef_detection} |
47 | |
48 | | `+__ARM_ARCH+` | V.0.0 |
49 | | `+__TARGET_ARCH_ARM+` | V.0.0 |
50 | | `+__TARGET_ARCH_THUMB+` | V.0.0 |
51 | | `+_M_ARM+` | V.0.0 |
52 | | `+__arm64+` | 8.0.0 |
53 | | `+_M_ARM64+` | 8.0.0 |
54 | | `+__aarch64__+` | 8.0.0 |
55 | | `+__AARCH64EL__+` | 8.0.0 |
56 | | `+__ARM_ARCH_7__+` | 7.0.0 |
57 | | `+__ARM_ARCH_7A__+` | 7.0.0 |
58 | | `+__ARM_ARCH_7R__+` | 7.0.0 |
59 | | `+__ARM_ARCH_7M__+` | 7.0.0 |
60 | | `+__ARM_ARCH_6K__+` | 6.0.0 |
61 | | `+__ARM_ARCH_6Z__+` | 6.0.0 |
62 | | `+__ARM_ARCH_6KZ__+` | 6.0.0 |
63 | | `+__ARM_ARCH_6T2__+` | 6.0.0 |
64 | | `+__ARM_ARCH_5TE__+` | 5.0.0 |
65 | | `+__ARM_ARCH_5TEJ__+` | 5.0.0 |
66 | | `+__ARM_ARCH_4T__+` | 4.0.0 |
67 | | `+__ARM_ARCH_4__+` | 4.0.0 |
68 | |=== |
69 | */ // end::reference[] |
70 | |
71 | #define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE |
72 | |
73 | #if \ |
74 | defined(__ARM_ARCH) || defined(__TARGET_ARCH_ARM) || \ |
75 | defined(__TARGET_ARCH_THUMB) || defined(_M_ARM) || \ |
76 | defined(__arm__) || defined(__arm64) || defined(__thumb__) || \ |
77 | defined(_M_ARM64) || defined(__aarch64__) || defined(__AARCH64EL__) || \ |
78 | defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \ |
79 | defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || \ |
80 | defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || \ |
81 | defined(__ARM_ARCH_6KZ__) || defined(__ARM_ARCH_6T2__) || \ |
82 | defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__) || \ |
83 | defined(__ARM_ARCH_4T__) || defined(__ARM_ARCH_4__) |
84 | # undef BOOST_ARCH_ARM |
85 | # if !defined(BOOST_ARCH_ARM) && defined(__ARM_ARCH) |
86 | # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__ARM_ARCH,0,0) |
87 | # endif |
88 | # if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_ARM) |
89 | # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_ARM,0,0) |
90 | # endif |
91 | # if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_THUMB) |
92 | # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_THUMB,0,0) |
93 | # endif |
94 | # if !defined(BOOST_ARCH_ARM) && defined(_M_ARM) |
95 | # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(_M_ARM,0,0) |
96 | # endif |
97 | # if !defined(BOOST_ARCH_ARM) && ( \ |
98 | defined(__arm64) || defined(_M_ARM64) || defined(__aarch64__) || \ |
99 | defined(__AARCH64EL__) ) |
100 | # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(8,0,0) |
101 | # endif |
102 | # if !defined(BOOST_ARCH_ARM) && ( \ |
103 | defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \ |
104 | defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) ) |
105 | # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(7,0,0) |
106 | # endif |
107 | # if !defined(BOOST_ARCH_ARM) && ( \ |
108 | defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || \ |
109 | defined(__ARM_ARCH_6KZ__) || defined(__ARM_ARCH_6T2__) ) |
110 | # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(6,0,0) |
111 | # endif |
112 | # if !defined(BOOST_ARCH_ARM) && ( \ |
113 | defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__) ) |
114 | # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(5,0,0) |
115 | # endif |
116 | # if !defined(BOOST_ARCH_ARM) && ( \ |
117 | defined(__ARM_ARCH_4T__) || defined(__ARM_ARCH_4__) ) |
118 | # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(4,0,0) |
119 | # endif |
120 | # if !defined(BOOST_ARCH_ARM) |
121 | # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_AVAILABLE |
122 | # endif |
123 | #endif |
124 | |
125 | #if BOOST_ARCH_ARM |
126 | # define BOOST_ARCH_ARM_AVAILABLE |
127 | #endif |
128 | |
129 | #define BOOST_ARCH_ARM_NAME "ARM" |
130 | |
131 | #endif |
132 | |
133 | #include <boost/predef/detail/test.h> |
134 | BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_ARM,BOOST_ARCH_ARM_NAME) |
135 | |