]>
Commit | Line | Data |
---|---|---|
c9acb877 MGD |
1 | # Copyright (C) 2012-2013 Free Software Foundation, Inc. |
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 | ||
40 | # We use the option -mcpu=cortex-a7 because we do not yet have march=armv7ve | |
41 | # or march=armv7a+virt as a command line option for the compiler. | |
42 | MULTILIB_OPTIONS += mthumb | |
43 | MULTILIB_DIRNAMES += thumb | |
44 | ||
45 | MULTILIB_OPTIONS += march=armv7-a/mcpu=cortex-a7/march=armv8-a | |
46 | MULTILIB_DIRNAMES += v7-a v7ve v8-a | |
47 | ||
48 | MULTILIB_OPTIONS += mfpu=vfpv3-d16/mfpu=neon/mfpu=vfpv4-d16/mfpu=neon-vfpv4/mfpu=neon-fp-armv8 | |
49 | MULTILIB_DIRNAMES += fpv3 simdv1 fpv4 simdvfpv4 simdv8 | |
50 | ||
51 | MULTILIB_OPTIONS += mfloat-abi=softfp/mfloat-abi=hard | |
52 | MULTILIB_DIRNAMES += softfp hard | |
53 | ||
54 | # We don't build no-float libraries with an FPU. | |
55 | MULTILIB_EXCEPTIONS += *mfpu=vfpv3-d16 | |
56 | MULTILIB_EXCEPTIONS += *mfpu=neon | |
57 | MULTILIB_EXCEPTIONS += *mfpu=vfpv4-d16 | |
58 | MULTILIB_EXCEPTIONS += *mfpu=neon-vfpv4 | |
59 | MULTILIB_EXCEPTIONS += *mfpu=neon-fp-armv8 | |
60 | ||
61 | # We don't build libraries requiring an FPU at the CPU/Arch/ISA level. | |
62 | MULTILIB_EXCEPTIONS += mfloat-abi=* | |
63 | MULTILIB_EXCEPTIONS += mfpu=* | |
64 | MULTILIB_EXCEPTIONS += mthumb/mfloat-abi=* | |
65 | MULTILIB_EXCEPTIONS += mthumb/mfpu=* | |
66 | MULTILIB_EXCEPTIONS += *march=armv7-a/mfloat-abi=* | |
67 | MULTILIB_EXCEPTIONS += *mcpu=cortex-a7/mfloat-abi=* | |
68 | MULTILIB_EXCEPTIONS += *march=armv8-a/mfloat-abi=* | |
69 | ||
70 | # Ensure the correct FPU variants apply to the correct base architectures. | |
71 | MULTILIB_EXCEPTIONS += *mcpu=cortex-a7/*mfpu=vfpv3-d16* | |
72 | MULTILIB_EXCEPTIONS += *mcpu=cortex-a7/*mfpu=neon/* | |
73 | MULTILIB_EXCEPTIONS += *march=armv8-a/*mfpu=vfpv3-d16* | |
74 | MULTILIB_EXCEPTIONS += *march=armv8-a/*mfpu=neon/* | |
75 | MULTILIB_EXCEPTIONS += *march=armv7-a/*mfpu=vfpv4-d16* | |
76 | MULTILIB_EXCEPTIONS += *march=armv7-a/*mfpu=neon-vfpv4* | |
77 | MULTILIB_EXCEPTIONS += *march=armv8-a/*mfpu=vfpv4-d16* | |
78 | MULTILIB_EXCEPTIONS += *march=armv8-a/*mfpu=neon-vfpv4* | |
79 | MULTILIB_EXCEPTIONS += *march=armv7-a/*mfpu=neon-fp-armv8* | |
80 | MULTILIB_EXCEPTIONS += *mcpu=cortex-a7/*mfpu=neon-fp-armv8* | |
81 | ||
82 | # CPU Matches | |
83 | MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a8 | |
84 | MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a9 | |
85 | MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a5 | |
0d78a2d4 JG |
86 | MULTILIB_MATCHES += mcpu?cortex-a7=mcpu?cortex-a15=mcpu?cortex-a12 |
87 | MULTILIB_MATCHES += mcpu?cortex-a7=mcpu?cortex-a15.cortex-a7 | |
c9acb877 | 88 | MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a53 |
0d78a2d4 JG |
89 | MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a57 |
90 | MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a57.cortex-a53 | |
c9acb877 MGD |
91 | |
92 | # FPU matches | |
93 | MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3 | |
94 | MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3-fp16 | |
95 | MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3-fp16-d16 | |
96 | MULTILIB_MATCHES += mfpu?vfpv4-d16=mfpu?vfpv4 | |
97 | MULTILIB_MATCHES += mfpu?neon-fp-armv8=mfpu?crypto-neon-fp-armv8 | |
98 | ||
99 | ||
100 | # Map all requests for vfpv3 with a later CPU to vfpv3-d16 v7-a. | |
101 | # So if new CPUs are added above at the newer architecture levels, | |
102 | # do something to map them below here. | |
103 | # We take the approach of mapping down to v7-a regardless of what | |
104 | # the fp option is if the integer architecture brings things down. | |
105 | # This applies to any similar combination at the v7ve and v8-a arch | |
106 | # levels. | |
107 | ||
108 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=mcpu.cortex-a7/mfpu.vfpv3-d16/mfloat-abi.hard | |
109 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=mcpu.cortex-a7/mfpu.vfpv3-d16/mfloat-abi.softfp | |
110 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=march.armv8-a/mfpu.vfpv3-d16/mfloat-abi.hard | |
111 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=march.armv8-a/mfpu.vfpv3-d16/mfloat-abi.softfp | |
112 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=march.armv7-a/mfpu.vfpv4-d16/mfloat-abi.hard | |
113 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=march.armv7-a/mfpu.vfpv4-d16/mfloat-abi.softfp | |
114 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=march.armv7-a/mfpu.fp-armv8/mfloat-abi.hard | |
115 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=march.armv7-a/mfpu.fp-armv8/mfloat-abi.softfp | |
116 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=march.armv7-a/mfpu.vfpv4/mfloat-abi.hard | |
117 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=march.armv7-a/mfpu.vfpv4/mfloat-abi.softfp | |
118 | ||
119 | ||
120 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.hard=mcpu.cortex-a7/mfpu.neon/mfloat-abi.hard | |
121 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.softfp=mcpu.cortex-a7/mfpu.neon/mfloat-abi.softfp | |
122 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.hard=march.armv8-a/mfpu.neon/mfloat-abi.hard | |
123 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.softfp=march.armv8-a/mfpu.neon/mfloat-abi.softfp | |
124 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.hard=march.armv7-a/mfpu.neon-vfpv4/mfloat-abi.hard | |
125 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.softfp=march.armv7-a/mfpu.neon-vfpv4/mfloat-abi.softfp | |
126 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.hard=march.armv7-a/mfpu.neon-fp-armv8/mfloat-abi.hard | |
127 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.softfp=march.armv7-a/mfpu.neon-fp-armv8/mfloat-abi.softfp | |
128 | ||
129 | ||
130 | MULTILIB_REUSE += mcpu.cortex-a7/mfpu.vfpv4-d16/mfloat-abi.hard=mcpu.cortex-a7/mfpu.fp-armv8/mfloat-abi.hard | |
131 | MULTILIB_REUSE += mcpu.cortex-a7/mfpu.vfpv4-d16/mfloat-abi.softfp=mcpu.cortex-a7/mfpu.fp-armv8/mfloat-abi.softfp | |
132 | MULTILIB_REUSE += mcpu.cortex-a7/mfpu.vfpv4-d16/mfloat-abi.hard=march.armv8-a/mfpu.vfpv4/mfloat-abi.hard | |
133 | MULTILIB_REUSE += mcpu.cortex-a7/mfpu.vfpv4-d16/mfloat-abi.softfp=march.armv8-a/mfpu.vfpv4/mfloat-abi.softfp | |
134 | MULTILIB_REUSE += mcpu.cortex-a7/mfpu.vfpv4-d16/mfloat-abi.hard=march.armv8-a/mfpu.vfpv4-d16/mfloat-abi.hard | |
135 | MULTILIB_REUSE += mcpu.cortex-a7/mfpu.vfpv4-d16/mfloat-abi.softfp=march.armv8-a/mfpu.vfpv4-d16/mfloat-abi.softfp | |
136 | ||
137 | ||
138 | MULTILIB_REUSE += mcpu.cortex-a7/mfpu.neon-vfpv4/mfloat-abi.hard=march.armv8-a/mfpu.neon-vfpv4/mfloat-abi.hard | |
139 | MULTILIB_REUSE += mcpu.cortex-a7/mfpu.neon-vfpv4/mfloat-abi.softfp=march.armv8-a/mfpu.neon-vfpv4/mfloat-abi.softfp | |
140 | MULTILIB_REUSE += mcpu.cortex-a7/mfpu.neon-vfpv4/mfloat-abi.hard=mcpu.cortex-a7/mfpu.neon-fp-armv8/mfloat-abi.hard | |
141 | MULTILIB_REUSE += mcpu.cortex-a7/mfpu.neon-vfpv4/mfloat-abi.softfp=mcpu.cortex-a7/mfpu.neon-fp-armv8/mfloat-abi.softfp | |
142 | ||
143 | ||
144 | ||
145 | # And again for mthumb. | |
146 | ||
147 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=mthumb/mcpu.cortex-a7/mfpu.vfpv3-d16/mfloat-abi.hard | |
148 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=mthumb/mcpu.cortex-a7/mfpu.vfpv3-d16/mfloat-abi.softfp | |
149 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.vfpv3-d16/mfloat-abi.hard | |
150 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.vfpv3-d16/mfloat-abi.softfp | |
151 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=mthumb/march.armv7-a/mfpu.vfpv4-d16/mfloat-abi.hard | |
152 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=mthumb/march.armv7-a/mfpu.vfpv4-d16/mfloat-abi.softfp | |
153 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=mthumb/march.armv7-a/mfpu.fp-armv8/mfloat-abi.hard | |
154 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=mthumb/march.armv7-a/mfpu.fp-armv8/mfloat-abi.softfp | |
155 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=mthumb/march.armv7-a/mfpu.vfpv4/mfloat-abi.hard | |
156 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=mthumb/march.armv7-a/mfpu.vfpv4/mfloat-abi.softfp | |
157 | ||
158 | ||
159 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.hard=mthumb/mcpu.cortex-a7/mfpu.neon/mfloat-abi.hard | |
160 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=mthumb/mcpu.cortex-a7/mfpu.neon/mfloat-abi.softfp | |
161 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.neon/mfloat-abi.hard | |
162 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.neon/mfloat-abi.softfp | |
163 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.hard=mthumb/march.armv7-a/mfpu.neon-vfpv4/mfloat-abi.hard | |
164 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=mthumb/march.armv7-a/mfpu.neon-vfpv4/mfloat-abi.softfp | |
165 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.hard=mthumb/march.armv7-a/mfpu.neon-fp-armv8/mfloat-abi.hard | |
166 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=mthumb/march.armv7-a/mfpu.neon-fp-armv8/mfloat-abi.softfp | |
167 | ||
168 | ||
169 | MULTILIB_REUSE += mthumb/mcpu.cortex-a7/mfpu.vfpv4-d16/mfloat-abi.hard=mthumb/mcpu.cortex-a7/mfpu.fp-armv8/mfloat-abi.hard | |
170 | MULTILIB_REUSE += mthumb/mcpu.cortex-a7/mfpu.vfpv4-d16/mfloat-abi.softfp=mthumb/mcpu.cortex-a7/mfpu.fp-armv8/mfloat-abi.softfp | |
171 | MULTILIB_REUSE += mthumb/mcpu.cortex-a7/mfpu.vfpv4-d16/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.vfpv4/mfloat-abi.hard | |
172 | MULTILIB_REUSE += mthumb/mcpu.cortex-a7/mfpu.vfpv4-d16/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.vfpv4/mfloat-abi.softfp | |
173 | MULTILIB_REUSE += mthumb/mcpu.cortex-a7/mfpu.vfpv4-d16/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.vfpv4-d16/mfloat-abi.hard | |
174 | MULTILIB_REUSE += mthumb/mcpu.cortex-a7/mfpu.vfpv4-d16/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.vfpv4-d16/mfloat-abi.softfp | |
175 | ||
176 | ||
177 | MULTILIB_REUSE += mthumb/mcpu.cortex-a7/mfpu.neon-vfpv4/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.neon-vfpv4/mfloat-abi.hard | |
178 | MULTILIB_REUSE += mthumb/mcpu.cortex-a7/mfpu.neon-vfpv4/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.neon-vfpv4/mfloat-abi.softfp | |
179 | MULTILIB_REUSE += mthumb/mcpu.cortex-a7/mfpu.neon-vfpv4/mfloat-abi.hard=mthumb/mcpu.cortex-a7/mfpu.neon-fp-armv8/mfloat-abi.hard | |
180 | MULTILIB_REUSE += mthumb/mcpu.cortex-a7/mfpu.neon-vfpv4/mfloat-abi.softfp=mthumb/mcpu.cortex-a7/mfpu.neon-fp-armv8/mfloat-abi.softfp |