]>
Commit | Line | Data |
---|---|---|
818ab71a | 1 | # Copyright (C) 2012-2016 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 | ||
c9acb877 | 52 | |
03c9d859 TP |
53 | # Option combinations to build library with |
54 | ||
55 | # Default CPU/Arch (ARM is implicitly included because it uses the default | |
56 | # multilib) | |
57 | MULTILIB_REQUIRED += mthumb | |
58 | ||
59 | # ARMv7-A | |
60 | MULTILIB_REQUIRED += *march=armv7-a | |
61 | MULTILIB_REQUIRED += *march=armv7-a/mfpu=vfpv3-d16/mfloat-abi=* | |
62 | MULTILIB_REQUIRED += *march=armv7-a/mfpu=neon/mfloat-abi=* | |
63 | ||
64 | # ARMv7VE | |
65 | MULTILIB_REQUIRED += *march=armv7ve | |
66 | MULTILIB_REQUIRED += *march=armv7ve/mfpu=vfpv4-d16/mfloat-abi=* | |
67 | MULTILIB_REQUIRED += *march=armv7ve/mfpu=neon-vfpv4/mfloat-abi=* | |
68 | ||
69 | # ARMv8-A | |
70 | MULTILIB_REQUIRED += *march=armv8-a | |
71 | MULTILIB_REQUIRED += *march=armv8-a/mfpu=neon-fp-armv8/mfloat-abi=* | |
c9acb877 | 72 | |
c9acb877 MGD |
73 | |
74 | # CPU Matches | |
75 | MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a8 | |
76 | MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a9 | |
77 | MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a5 | |
0ba81bbe | 78 | MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a7 |
7ac84c02 RR |
79 | MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a15 |
80 | MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a12 | |
6c7e4a18 | 81 | MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a17 |
eb6006ad | 82 | MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a15.cortex-a7 |
0f4fe895 | 83 | MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a17.cortex-a7 |
debc68ed | 84 | MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a32 |
971f13d7 | 85 | MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a35 |
c9acb877 | 86 | MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a53 |
0d78a2d4 JG |
87 | MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a57 |
88 | MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a57.cortex-a53 | |
4f2ab1e6 MW |
89 | MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a72 |
90 | MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a72.cortex-a53 | |
f9405b63 KT |
91 | MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a73 |
92 | MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a73.cortex-a35 | |
93 | MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a73.cortex-a53 | |
6480dc9d JW |
94 | MULTILIB_MATCHES += march?armv8-a=mcpu?exynos-m1 |
95 | MULTILIB_MATCHES += march?armv8-a=mcpu?qdf24xx | |
96 | MULTILIB_MATCHES += march?armv8-a=mcpu?xgene1 | |
c9acb877 | 97 | |
abd5932e RR |
98 | # Arch Matches |
99 | MULTILIB_MATCHES += march?armv8-a=march?armv8-a+crc | |
df174ca3 MW |
100 | MULTILIB_MATCHES += march?armv8-a=march?armv8.1-a |
101 | MULTILIB_MATCHES += march?armv8-a=march?armv8.1-a+crc | |
abd5932e | 102 | |
c9acb877 MGD |
103 | # FPU matches |
104 | MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3 | |
105 | MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3-fp16 | |
0ba81bbe TP |
106 | MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3-d16-fp16 |
107 | MULTILIB_MATCHES += mfpu?neon=mfpu?neon-fp16 | |
c9acb877 | 108 | MULTILIB_MATCHES += mfpu?vfpv4-d16=mfpu?vfpv4 |
0ba81bbe TP |
109 | MULTILIB_MATCHES += mfpu?vfpv4-d16=mfpu?fpv5-d16 |
110 | MULTILIB_MATCHES += mfpu?vfpv4-d16=mfpu?fp-armv8 | |
c9acb877 MGD |
111 | MULTILIB_MATCHES += mfpu?neon-fp-armv8=mfpu?crypto-neon-fp-armv8 |
112 | ||
113 | ||
114 | # Map all requests for vfpv3 with a later CPU to vfpv3-d16 v7-a. | |
115 | # So if new CPUs are added above at the newer architecture levels, | |
116 | # do something to map them below here. | |
117 | # We take the approach of mapping down to v7-a regardless of what | |
118 | # the fp option is if the integer architecture brings things down. | |
119 | # This applies to any similar combination at the v7ve and v8-a arch | |
120 | # levels. | |
121 | ||
eb6006ad RL |
122 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=march.armv7ve/mfpu.vfpv3-d16/mfloat-abi.hard |
123 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=march.armv7ve/mfpu.vfpv3-d16/mfloat-abi.softfp | |
c9acb877 MGD |
124 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=march.armv8-a/mfpu.vfpv3-d16/mfloat-abi.hard |
125 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=march.armv8-a/mfpu.vfpv3-d16/mfloat-abi.softfp | |
126 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=march.armv7-a/mfpu.vfpv4-d16/mfloat-abi.hard | |
127 | MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=march.armv7-a/mfpu.vfpv4-d16/mfloat-abi.softfp | |
c9acb877 MGD |
128 | |
129 | ||
eb6006ad RL |
130 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.hard=march.armv7ve/mfpu.neon/mfloat-abi.hard |
131 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.softfp=march.armv7ve/mfpu.neon/mfloat-abi.softfp | |
c9acb877 MGD |
132 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.hard=march.armv8-a/mfpu.neon/mfloat-abi.hard |
133 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.softfp=march.armv8-a/mfpu.neon/mfloat-abi.softfp | |
134 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.hard=march.armv7-a/mfpu.neon-vfpv4/mfloat-abi.hard | |
135 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.softfp=march.armv7-a/mfpu.neon-vfpv4/mfloat-abi.softfp | |
136 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.hard=march.armv7-a/mfpu.neon-fp-armv8/mfloat-abi.hard | |
137 | MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.softfp=march.armv7-a/mfpu.neon-fp-armv8/mfloat-abi.softfp | |
138 | ||
139 | ||
eb6006ad RL |
140 | MULTILIB_REUSE += march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.hard=march.armv8-a/mfpu.vfpv4-d16/mfloat-abi.hard |
141 | MULTILIB_REUSE += march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.softfp=march.armv8-a/mfpu.vfpv4-d16/mfloat-abi.softfp | |
c9acb877 MGD |
142 | |
143 | ||
eb6006ad RL |
144 | MULTILIB_REUSE += march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.hard=march.armv8-a/mfpu.neon-vfpv4/mfloat-abi.hard |
145 | MULTILIB_REUSE += march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.softfp=march.armv8-a/mfpu.neon-vfpv4/mfloat-abi.softfp | |
146 | MULTILIB_REUSE += march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.hard=march.armv7ve/mfpu.neon-fp-armv8/mfloat-abi.hard | |
147 | MULTILIB_REUSE += march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.softfp=march.armv7ve/mfpu.neon-fp-armv8/mfloat-abi.softfp | |
c9acb877 MGD |
148 | |
149 | ||
150 | ||
151 | # And again for mthumb. | |
152 | ||
eb6006ad RL |
153 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=mthumb/march.armv7ve/mfpu.vfpv3-d16/mfloat-abi.hard |
154 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=mthumb/march.armv7ve/mfpu.vfpv3-d16/mfloat-abi.softfp | |
c9acb877 MGD |
155 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.vfpv3-d16/mfloat-abi.hard |
156 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.vfpv3-d16/mfloat-abi.softfp | |
157 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=mthumb/march.armv7-a/mfpu.vfpv4-d16/mfloat-abi.hard | |
158 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=mthumb/march.armv7-a/mfpu.vfpv4-d16/mfloat-abi.softfp | |
c9acb877 MGD |
159 | |
160 | ||
eb6006ad RL |
161 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.hard=mthumb/march.armv7ve/mfpu.neon/mfloat-abi.hard |
162 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=mthumb/march.armv7ve/mfpu.neon/mfloat-abi.softfp | |
c9acb877 MGD |
163 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.neon/mfloat-abi.hard |
164 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.neon/mfloat-abi.softfp | |
165 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.hard=mthumb/march.armv7-a/mfpu.neon-vfpv4/mfloat-abi.hard | |
166 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=mthumb/march.armv7-a/mfpu.neon-vfpv4/mfloat-abi.softfp | |
167 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.hard=mthumb/march.armv7-a/mfpu.neon-fp-armv8/mfloat-abi.hard | |
168 | MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=mthumb/march.armv7-a/mfpu.neon-fp-armv8/mfloat-abi.softfp | |
169 | ||
170 | ||
eb6006ad RL |
171 | MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.vfpv4-d16/mfloat-abi.hard |
172 | MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.vfpv4-d16/mfloat-abi.softfp | |
c9acb877 MGD |
173 | |
174 | ||
eb6006ad RL |
175 | MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.neon-vfpv4/mfloat-abi.hard |
176 | MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.neon-vfpv4/mfloat-abi.softfp | |
177 | MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.hard=mthumb/march.armv7ve/mfpu.neon-fp-armv8/mfloat-abi.hard | |
178 | MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.softfp=mthumb/march.armv7ve/mfpu.neon-fp-armv8/mfloat-abi.softfp |