]>
Commit | Line | Data |
---|---|---|
99dee823 | 1 | # Copyright (C) 2012-2021 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 | ||
2f738ca5 | 27 | # Arch and FPU variants to build libraries with |
c9acb877 | 28 | |
32ba7860 PW |
29 | MULTI_ARCH_OPTS_A = march=armv7-a/march=armv7-a+fp/march=armv7-a+simd/march=armv7ve+simd/march=armv8-a/march=armv8-a+simd/march=armv9-a/march=armv9-a+simd |
30 | MULTI_ARCH_DIRS_A = v7-a v7-a+fp v7-a+simd v7ve+simd v8-a v8-a+simd v9-a v9-a+simd | |
c9acb877 | 31 | |
93aa40fe | 32 | # ARMv7-A - build nofp, fp-d16 and SIMD variants |
c9acb877 | 33 | |
93aa40fe RE |
34 | MULTILIB_REQUIRED += mthumb/march=armv7-a/mfloat-abi=soft |
35 | MULTILIB_REQUIRED += mthumb/march=armv7-a+fp/mfloat-abi=hard | |
36 | MULTILIB_REQUIRED += mthumb/march=armv7-a+fp/mfloat-abi=softfp | |
37 | MULTILIB_REQUIRED += mthumb/march=armv7-a+simd/mfloat-abi=hard | |
38 | MULTILIB_REQUIRED += mthumb/march=armv7-a+simd/mfloat-abi=softfp | |
c9acb877 | 39 | |
93aa40fe RE |
40 | # ARMv7VE - only build a SIMD (+VFPv4) variant. |
41 | MULTILIB_REQUIRED += mthumb/march=armv7ve+simd/mfloat-abi=hard | |
42 | MULTILIB_REQUIRED += mthumb/march=armv7ve+simd/mfloat-abi=softfp | |
03c9d859 | 43 | |
93aa40fe RE |
44 | # ARMv8-A - build nofp and SIMD variants. |
45 | MULTILIB_REQUIRED += mthumb/march=armv8-a/mfloat-abi=soft | |
46 | MULTILIB_REQUIRED += mthumb/march=armv8-a+simd/mfloat-abi=hard | |
47 | MULTILIB_REQUIRED += mthumb/march=armv8-a+simd/mfloat-abi=softfp | |
03c9d859 | 48 | |
32ba7860 PW |
49 | # Armv9-A - build nofp and SIMD variants. |
50 | MULTILIB_REQUIRED += mthumb/march=armv9-a/mfloat-abi=soft | |
51 | MULTILIB_REQUIRED += mthumb/march=armv9-a+simd/mfloat-abi=hard | |
52 | MULTILIB_REQUIRED += mthumb/march=armv9-a+simd/mfloat-abi=softfp | |
53 | ||
93aa40fe | 54 | # Matches |
03c9d859 | 55 | |
93aa40fe | 56 | # Arch Matches |
cab81ec0 RE |
57 | # Map all basic v7-a arch extensions to v7-a |
58 | MULTILIB_MATCHES += $(foreach ARCH, $(v7_a_arch_variants), \ | |
59 | march?armv7-a=march?armv7-a$(ARCH)) | |
60 | ||
93aa40fe RE |
61 | # Map all v7-a FP variants to vfpv3-d16 (+fp) |
62 | MULTILIB_MATCHES += $(foreach ARCH, $(filter-out +fp, $(v7_a_nosimd_variants)), \ | |
63 | march?armv7-a+fp=march?armv7-a$(ARCH)) | |
03c9d859 | 64 | |
cab81ec0 RE |
65 | MULTILIB_MATCHES += $(foreach ARCHVAR, $(v7_a_arch_variants), \ |
66 | $(foreach ARCH, $(v7_a_nosimd_variants), \ | |
67 | march?armv7-a+fp=march?armv7-a$(ARCHVAR)$(ARCH))) | |
68 | ||
93aa40fe RE |
69 | # Map all v7-a SIMD variants to neon-vfpv3 (+simd) |
70 | MULTILIB_MATCHES += $(foreach ARCH, $(filter-out +simd, $(v7_a_simd_variants)), \ | |
71 | march?armv7-a+simd=march?armv7-a$(ARCH)) | |
c9acb877 | 72 | |
cab81ec0 RE |
73 | MULTILIB_MATCHES += $(foreach ARCHVAR, $(v7_a_arch_variants), \ |
74 | $(foreach ARCH, $(v7_a_simd_variants), \ | |
75 | march?armv7-a+simd=march?armv7-a$(ARCHVAR)$(ARCH))) | |
76 | ||
93aa40fe RE |
77 | # Neither FP nor SIMD: map v7ve to v7-a |
78 | MULTILIB_MATCHES += march?armv7-a=march?armv7ve | |
c9acb877 | 79 | |
93aa40fe RE |
80 | # ARMv7ve FP-only variants: map down to v7-a+fp |
81 | MULTILIB_MATCHES += $(foreach ARCH, $(v7ve_nosimd_variants), \ | |
82 | march?armv7-a+fp=march?armv7ve$(ARCH)) | |
2f738ca5 | 83 | |
93aa40fe RE |
84 | # ARMv7ve with SIMD, but SIMD is less capable than the default - map down to v7-a+simd |
85 | MULTILIB_MATCHES += $(foreach ARCH, $(v7ve_vfpv3_simd_variants), \ | |
86 | march?armv7-a+simd=march?armv7ve$(ARCH)) | |
c9acb877 | 87 | |
93aa40fe RE |
88 | # ARMv8 without SIMD: map down to base architecture |
89 | MULTILIB_MATCHES += $(foreach ARCH, $(v8_a_nosimd_variants), \ | |
90 | march?armv8-a=march?armv8-a$(ARCH)) | |
91 | ||
92 | # ARMv8 with SIMD: map down to base arch + simd | |
93 | MULTILIB_MATCHES += march?armv8-a+simd=march?armv8-a+crc+simd \ | |
94 | $(foreach ARCH, $(filter-out +simd, $(v8_a_simd_variants)), \ | |
95 | march?armv8-a+simd=march?armv8-a$(ARCH) \ | |
96 | march?armv8-a+simd=march?armv8-a+crc$(ARCH)) | |
97 | ||
98 | # Baseline v8.1-a: map down to baseline v8-a | |
99 | MULTILIB_MATCHES += march?armv8-a=march?armv8.1-a | |
100 | ||
101 | # Map all v8.1-a SIMD variants to v8-a+simd | |
102 | MULTILIB_MATCHES += $(foreach ARCH, $(v8_1_a_simd_variants), \ | |
103 | march?armv8-a+simd=march?armv8.1-a$(ARCH)) | |
104 | ||
105 | # Baseline v8.2-a: map down to baseline v8-a | |
106 | MULTILIB_MATCHES += march?armv8-a=march?armv8.2-a | |
107 | ||
a00a4222 KT |
108 | # Baseline v8.3-a: map down to baseline v8-a |
109 | MULTILIB_MATCHES += march?armv8-a=march?armv8.3-a | |
110 | ||
111 | # Map all v8.2-a and v8.3-a SIMD variants to v8-a+simd | |
93aa40fe | 112 | MULTILIB_MATCHES += $(foreach ARCH, $(v8_2_a_simd_variants), \ |
a00a4222 KT |
113 | march?armv8-a+simd=march?armv8.2-a$(ARCH) \ |
114 | march?armv8-a+simd=march?armv8.3-a$(ARCH)) | |
93aa40fe | 115 | |
946c6c45 KT |
116 | # Baseline v8.4-a: map down to baseline v8-a |
117 | MULTILIB_MATCHES += march?armv8-a=march?armv8.4-a | |
118 | ||
119 | # Map all v8.4-a SIMD variants to v8-a+simd | |
120 | MULTILIB_MATCHES += $(foreach ARCH, $(v8_4_a_simd_variants), \ | |
121 | march?armv8-a+simd=march?armv8.4-a$(ARCH)) | |
122 | ||
ae78a89f SD |
123 | # Baseline v8.5-a: map down to baseline v8-a |
124 | MULTILIB_MATCHES += march?armv8-a=march?armv8.5-a | |
125 | ||
126 | # Map all v8.5-a SIMD variants to v8-a+simd | |
127 | MULTILIB_MATCHES += $(foreach ARCH, $(v8_5_a_simd_variants), \ | |
128 | march?armv8-a+simd=march?armv8.5-a$(ARCH)) | |
129 | ||
f782b667 DZ |
130 | # Baseline v8.6-a: map down to baseline v8-a |
131 | MULTILIB_MATCHES += march?armv8-a=march?armv8.6-a | |
132 | ||
133 | # Map all v8.6-a SIMD variants to v8-a+simd | |
134 | MULTILIB_MATCHES += $(foreach ARCH, $(v8_6_a_simd_variants), \ | |
135 | march?armv8-a+simd=march?armv8.6-a$(ARCH)) | |
136 | ||
32ba7860 PW |
137 | # Armv9 without SIMD: map down to base architecture |
138 | MULTILIB_MATCHES += $(foreach ARCH, $(v9_a_nosimd_variants), \ | |
139 | march?armv9-a=march?armv9-a$(ARCH)) | |
140 | ||
141 | # Armv9 with SIMD: map down to base arch + simd | |
142 | MULTILIB_MATCHES += march?armv9-a+simd=march?armv9-a+crc+simd \ | |
143 | $(foreach ARCH, $(filter-out +simd, $(v9_a_simd_variants)), \ | |
144 | march?armv9-a+simd=march?armv9-a$(ARCH) \ | |
145 | march?armv9-a+simd=march?armv9-a+crc$(ARCH)) | |
146 | ||
93aa40fe RE |
147 | # Use Thumb libraries for everything. |
148 | ||
149 | MULTILIB_REUSE += mthumb/march.armv7-a/mfloat-abi.soft=marm/march.armv7-a/mfloat-abi.soft | |
150 | ||
151 | MULTILIB_REUSE += mthumb/march.armv8-a/mfloat-abi.soft=marm/march.armv8-a/mfloat-abi.soft | |
152 | ||
32ba7860 PW |
153 | MULTILIB_REUSE += mthumb/march.armv9-a/mfloat-abi.soft=marm/march.armv9-a/mfloat-abi.soft |
154 | ||
93aa40fe | 155 | MULTILIB_REUSE += $(foreach ABI, hard softfp, \ |
32ba7860 | 156 | $(foreach ARCH, armv7-a+fp armv7-a+simd armv7ve+simd armv8-a+simd armv9-a+simd, \ |
93aa40fe RE |
157 | mthumb/march.$(ARCH)/mfloat-abi.$(ABI)=marm/march.$(ARCH)/mfloat-abi.$(ABI))) |
158 | ||
159 | # Softfp but no FP, use the soft-float libraries. | |
160 | MULTILIB_REUSE += $(foreach MODE, arm thumb, \ | |
32ba7860 | 161 | $(foreach ARCH, armv7-a armv8-a armv9-a, \ |
93aa40fe | 162 | mthumb/march.$(ARCH)/mfloat-abi.soft=m$(MODE)/march.$(ARCH)/mfloat-abi.softfp)) |