]>
Commit | Line | Data |
---|---|---|
23a5b65a | 1 | # Copyright (C) 2012-2014 Free Software Foundation, Inc. |
c9acb877 MGD |
2 | # |
3 | # This file is part of GCC. | |
4 | # | |
5 | # GCC is free software; you can redistribute it and/or modify | |
6 | # it under the terms of the GNU General Public License as published by | |
7 | # the Free Software Foundation; either version 3, or (at your option) | |
8 | # any later version. | |
9 | # | |
10 | # GCC is distributed in the hope that it will be useful, | |
11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | # GNU General Public License for more details. | |
14 | # | |
15 | # You should have received a copy of the GNU General Public License | |
16 | # along with GCC; see the file COPYING3. If not see | |
17 | # <http://www.gnu.org/licenses/>. | |
18 | ||
19 | # This is a target makefile fragment that attempts to get | |
20 | # multilibs built for the range of CPU's, FPU's and ABI's that | |
21 | # are relevant for the A-profile architecture. It should | |
22 | # not be used in conjunction with another make file fragment and | |
23 | # assumes --with-arch, --with-cpu, --with-fpu, --with-float, --with-mode | |
24 | # have their default values during the configure step. We enforce | |
25 | # this during the top-level configury. | |
26 | ||
27 | MULTILIB_OPTIONS = | |
28 | MULTILIB_DIRNAMES = | |
29 | MULTILIB_EXCEPTIONS = | |
30 | MULTILIB_MATCHES = | |
31 | MULTILIB_REUSE = | |
32 | ||
33 | # We have the following hierachy: | |
34 | # ISA: A32 (.) or T32 (thumb) | |
35 | # Architecture: ARMv7-A (v7-a), ARMv7VE (v7ve), or ARMv8-A (v8-a). | |
36 | # FPU: VFPv3-D16 (fpv3), NEONv1 (simdv1), VFPv4-D16 (fpv4), | |
37 | # NEON-VFPV4 (simdvfpv4), NEON for ARMv8 (simdv8), or None (.). | |
38 | # Float-abi: Soft (.), softfp (softfp), or hard (hardfp). | |
39 | ||
c9acb877 MGD |
40 | MULTILIB_OPTIONS += mthumb |
41 | MULTILIB_DIRNAMES += thumb | |
42 | ||
eb6006ad | 43 | MULTILIB_OPTIONS += march=armv7-a/march=armv7ve/march=armv8-a |
c9acb877 MGD |
44 | MULTILIB_DIRNAMES += v7-a v7ve v8-a |
45 | ||
46 | MULTILIB_OPTIONS += mfpu=vfpv3-d16/mfpu=neon/mfpu=vfpv4-d16/mfpu=neon-vfpv4/mfpu=neon-fp-armv8 | |
47 | MULTILIB_DIRNAMES += fpv3 simdv1 fpv4 simdvfpv4 simdv8 | |
48 | ||
49 | MULTILIB_OPTIONS += mfloat-abi=softfp/mfloat-abi=hard | |
50 | MULTILIB_DIRNAMES += softfp hard | |
51 | ||
52 | # We don't build no-float libraries with an FPU. | |
53 | MULTILIB_EXCEPTIONS += *mfpu=vfpv3-d16 | |
54 | MULTILIB_EXCEPTIONS += *mfpu=neon | |
55 | MULTILIB_EXCEPTIONS += *mfpu=vfpv4-d16 | |
56 | MULTILIB_EXCEPTIONS += *mfpu=neon-vfpv4 | |
57 | MULTILIB_EXCEPTIONS += *mfpu=neon-fp-armv8 | |
58 | ||
59 | # We don't build libraries requiring an FPU at the CPU/Arch/ISA level. | |
60 | MULTILIB_EXCEPTIONS += mfloat-abi=* | |
61 | MULTILIB_EXCEPTIONS += mfpu=* | |
62 | MULTILIB_EXCEPTIONS += mthumb/mfloat-abi=* | |
63 | MULTILIB_EXCEPTIONS += mthumb/mfpu=* | |
64 | MULTILIB_EXCEPTIONS += *march=armv7-a/mfloat-abi=* | |
eb6006ad | 65 | MULTILIB_EXCEPTIONS += *march=armv7ve/mfloat-abi=* |
c9acb877 MGD |
66 | MULTILIB_EXCEPTIONS += *march=armv8-a/mfloat-abi=* |
67 | ||
68 | # Ensure the correct FPU variants apply to the correct base architectures. | |
eb6006ad RL |
69 | MULTILIB_EXCEPTIONS += *march=armv7ve/*mfpu=vfpv3-d16* |
70 | MULTILIB_EXCEPTIONS += *march=armv7ve/*mfpu=neon/* | |
c9acb877 MGD |
71 | MULTILIB_EXCEPTIONS += *march=armv8-a/*mfpu=vfpv3-d16* |
72 | MULTILIB_EXCEPTIONS += *march=armv8-a/*mfpu=neon/* | |
73 | MULTILIB_EXCEPTIONS += *march=armv7-a/*mfpu=vfpv4-d16* | |
74 | MULTILIB_EXCEPTIONS += *march=armv7-a/*mfpu=neon-vfpv4* | |
75 | MULTILIB_EXCEPTIONS += *march=armv8-a/*mfpu=vfpv4-d16* | |
76 | MULTILIB_EXCEPTIONS += *march=armv8-a/*mfpu=neon-vfpv4* | |
77 | MULTILIB_EXCEPTIONS += *march=armv7-a/*mfpu=neon-fp-armv8* | |
eb6006ad | 78 | MULTILIB_EXCEPTIONS += *march=armv7ve/*mfpu=neon-fp-armv8* |
c9acb877 MGD |
79 | |
80 | # CPU Matches | |
81 | MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a8 | |
82 | MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a9 | |
83 | MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a5 | |
7ac84c02 RR |
84 | MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a15 |
85 | MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a12 | |
eb6006ad | 86 | MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a15.cortex-a7 |
c9acb877 | 87 | MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a53 |
0d78a2d4 JG |
88 | MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a57 |
89 | MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a57.cortex-a53 | |
c9acb877 MGD |
90 | |
91 | # FPU matches | |
92 | MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3 | |
93 | MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3-fp16 | |
94 | MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3-fp16-d16 | |
95 | MULTILIB_MATCHES += mfpu?vfpv4-d16=mfpu?vfpv4 | |
96 | MULTILIB_MATCHES += mfpu?neon-fp-armv8=mfpu?crypto-neon-fp-armv8 | |
97 | ||
98 | ||
99 | # Map all requests for vfpv3 with a later CPU to vfpv3-d16 v7-a. | |
100 | # So if new CPUs are added above at the newer architecture levels, | |
101 | # do something to map them below here. | |
102 | # We take the approach of mapping down to v7-a regardless of what | |
103 | # the fp option is if the integer architecture brings things down. | |
104 | # This applies to any similar combination at the v7ve and v8-a arch | |
105 | # levels. | |
106 | ||
eb6006ad RL |
107 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=march.armv7ve/mfpu.vfpv3-d16/mfloat-abi.hard |
108 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=march.armv7ve/mfpu.vfpv3-d16/mfloat-abi.softfp | |
c9acb877 MGD |
109 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=march.armv8-a/mfpu.vfpv3-d16/mfloat-abi.hard |
110 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=march.armv8-a/mfpu.vfpv3-d16/mfloat-abi.softfp | |
111 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=march.armv7-a/mfpu.vfpv4-d16/mfloat-abi.hard | |
112 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=march.armv7-a/mfpu.vfpv4-d16/mfloat-abi.softfp | |
113 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=march.armv7-a/mfpu.fp-armv8/mfloat-abi.hard | |
114 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=march.armv7-a/mfpu.fp-armv8/mfloat-abi.softfp | |
115 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=march.armv7-a/mfpu.vfpv4/mfloat-abi.hard | |
116 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=march.armv7-a/mfpu.vfpv4/mfloat-abi.softfp | |
117 | ||
118 | ||
eb6006ad RL |
119 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.hard=march.armv7ve/mfpu.neon/mfloat-abi.hard |
120 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.softfp=march.armv7ve/mfpu.neon/mfloat-abi.softfp | |
c9acb877 MGD |
121 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.hard=march.armv8-a/mfpu.neon/mfloat-abi.hard |
122 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.softfp=march.armv8-a/mfpu.neon/mfloat-abi.softfp | |
123 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.hard=march.armv7-a/mfpu.neon-vfpv4/mfloat-abi.hard | |
124 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.softfp=march.armv7-a/mfpu.neon-vfpv4/mfloat-abi.softfp | |
125 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.hard=march.armv7-a/mfpu.neon-fp-armv8/mfloat-abi.hard | |
126 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.softfp=march.armv7-a/mfpu.neon-fp-armv8/mfloat-abi.softfp | |
127 | ||
128 | ||
eb6006ad RL |
129 | MULTILIB_REUSE += march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.hard=march.armv7ve/mfpu.fp-armv8/mfloat-abi.hard |
130 | MULTILIB_REUSE += march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.softfp=march.armv7ve/mfpu.fp-armv8/mfloat-abi.softfp | |
131 | MULTILIB_REUSE += march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.hard=march.armv8-a/mfpu.vfpv4/mfloat-abi.hard | |
132 | MULTILIB_REUSE += march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.softfp=march.armv8-a/mfpu.vfpv4/mfloat-abi.softfp | |
133 | MULTILIB_REUSE += march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.hard=march.armv8-a/mfpu.vfpv4-d16/mfloat-abi.hard | |
134 | MULTILIB_REUSE += march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.softfp=march.armv8-a/mfpu.vfpv4-d16/mfloat-abi.softfp | |
c9acb877 MGD |
135 | |
136 | ||
eb6006ad RL |
137 | MULTILIB_REUSE += march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.hard=march.armv8-a/mfpu.neon-vfpv4/mfloat-abi.hard |
138 | MULTILIB_REUSE += march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.softfp=march.armv8-a/mfpu.neon-vfpv4/mfloat-abi.softfp | |
139 | MULTILIB_REUSE += march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.hard=march.armv7ve/mfpu.neon-fp-armv8/mfloat-abi.hard | |
140 | MULTILIB_REUSE += march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.softfp=march.armv7ve/mfpu.neon-fp-armv8/mfloat-abi.softfp | |
c9acb877 MGD |
141 | |
142 | ||
143 | ||
144 | # And again for mthumb. | |
145 | ||
eb6006ad RL |
146 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=mthumb/march.armv7ve/mfpu.vfpv3-d16/mfloat-abi.hard |
147 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=mthumb/march.armv7ve/mfpu.vfpv3-d16/mfloat-abi.softfp | |
c9acb877 MGD |
148 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.vfpv3-d16/mfloat-abi.hard |
149 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.vfpv3-d16/mfloat-abi.softfp | |
150 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=mthumb/march.armv7-a/mfpu.vfpv4-d16/mfloat-abi.hard | |
151 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=mthumb/march.armv7-a/mfpu.vfpv4-d16/mfloat-abi.softfp | |
152 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=mthumb/march.armv7-a/mfpu.fp-armv8/mfloat-abi.hard | |
153 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=mthumb/march.armv7-a/mfpu.fp-armv8/mfloat-abi.softfp | |
154 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=mthumb/march.armv7-a/mfpu.vfpv4/mfloat-abi.hard | |
155 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=mthumb/march.armv7-a/mfpu.vfpv4/mfloat-abi.softfp | |
156 | ||
157 | ||
eb6006ad RL |
158 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.hard=mthumb/march.armv7ve/mfpu.neon/mfloat-abi.hard |
159 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=mthumb/march.armv7ve/mfpu.neon/mfloat-abi.softfp | |
c9acb877 MGD |
160 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.neon/mfloat-abi.hard |
161 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.neon/mfloat-abi.softfp | |
162 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.hard=mthumb/march.armv7-a/mfpu.neon-vfpv4/mfloat-abi.hard | |
163 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=mthumb/march.armv7-a/mfpu.neon-vfpv4/mfloat-abi.softfp | |
164 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.hard=mthumb/march.armv7-a/mfpu.neon-fp-armv8/mfloat-abi.hard | |
165 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=mthumb/march.armv7-a/mfpu.neon-fp-armv8/mfloat-abi.softfp | |
166 | ||
167 | ||
eb6006ad RL |
168 | MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.hard=mthumb/march.armv7ve/mfpu.fp-armv8/mfloat-abi.hard |
169 | MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.softfp=mthumb/march.armv7ve/mfpu.fp-armv8/mfloat-abi.softfp | |
170 | MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.vfpv4/mfloat-abi.hard | |
171 | MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.vfpv4/mfloat-abi.softfp | |
172 | MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.vfpv4-d16/mfloat-abi.hard | |
173 | MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.vfpv4-d16/mfloat-abi.softfp | |
c9acb877 MGD |
174 | |
175 | ||
eb6006ad RL |
176 | MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.neon-vfpv4/mfloat-abi.hard |
177 | MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.neon-vfpv4/mfloat-abi.softfp | |
178 | MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.hard=mthumb/march.armv7ve/mfpu.neon-fp-armv8/mfloat-abi.hard | |
179 | MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.softfp=mthumb/march.armv7ve/mfpu.neon-fp-armv8/mfloat-abi.softfp |