]>
Commit | Line | Data |
---|---|---|
7adcbafe | 1 | # Copyright (C) 2016-2022 Free Software Foundation, Inc. |
3e0201f0 TP |
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 ARM architecture. It should not be used in | |
22 | # conjunction with another make file fragment and assumes --with-arch, | |
23 | # --with-cpu, --with-fpu, --with-float, --with-mode have their default | |
24 | # values during the configure step. We enforce this during the | |
25 | # top-level configury. | |
26 | ||
3e0201f0 | 27 | |
2f738ca5 | 28 | # Arch and FPU variants to build libraries with |
3e0201f0 | 29 | |
f582ca0f MI |
30 | MULTI_ARCH_OPTS_RM = march=armv6s-m/march=armv7-m/march=armv7e-m/march=armv7e-m+fp/march=armv7e-m+fp.dp/march=armv8-m.base/march=armv8-m.main/march=armv8-m.main+fp/march=armv8-m.main+fp.dp/march=armv8.1-m.main+mve |
31 | MULTI_ARCH_DIRS_RM = v6-m v7-m v7e-m v7e-m+fp v7e-m+dp v8-m.base v8-m.main v8-m.main+fp v8-m.main+dp v8.1-m.main+mve | |
3e0201f0 | 32 | |
42093880 RE |
33 | # Base M-profile (no fp) |
34 | MULTILIB_REQUIRED += mthumb/march=armv6s-m/mfloat-abi=soft | |
35 | MULTILIB_REQUIRED += mthumb/march=armv7-m/mfloat-abi=soft | |
36 | MULTILIB_REQUIRED += mthumb/march=armv7e-m/mfloat-abi=soft | |
37 | MULTILIB_REQUIRED += mthumb/march=armv8-m.base/mfloat-abi=soft | |
38 | MULTILIB_REQUIRED += mthumb/march=armv8-m.main/mfloat-abi=soft | |
3e0201f0 | 39 | |
42093880 RE |
40 | # ARMv7e-M with FP (single and double precision variants) |
41 | MULTILIB_REQUIRED += mthumb/march=armv7e-m+fp/mfloat-abi=hard | |
42 | MULTILIB_REQUIRED += mthumb/march=armv7e-m+fp/mfloat-abi=softfp | |
43 | MULTILIB_REQUIRED += mthumb/march=armv7e-m+fp.dp/mfloat-abi=hard | |
44 | MULTILIB_REQUIRED += mthumb/march=armv7e-m+fp.dp/mfloat-abi=softfp | |
3e0201f0 | 45 | |
42093880 RE |
46 | # ARMv8-M with FP (single and double precision variants) |
47 | MULTILIB_REQUIRED += mthumb/march=armv8-m.main+fp/mfloat-abi=hard | |
48 | MULTILIB_REQUIRED += mthumb/march=armv8-m.main+fp/mfloat-abi=softfp | |
49 | MULTILIB_REQUIRED += mthumb/march=armv8-m.main+fp.dp/mfloat-abi=hard | |
50 | MULTILIB_REQUIRED += mthumb/march=armv8-m.main+fp.dp/mfloat-abi=softfp | |
f582ca0f | 51 | MULTILIB_REQUIRED += mthumb/march=armv8.1-m.main+mve/mfloat-abi=hard |
3e0201f0 TP |
52 | |
53 | # Arch Matches | |
42093880 RE |
54 | MULTILIB_MATCHES += march?armv6s-m=march?armv6-m |
55 | ||
f58d03b5 | 56 | # For all MULITIB_MATCHES for v8-m and above add mlibarch? on the right hand side |
63f68535 | 57 | # of = in the variant string instead of march?. This is needed because all the |
f58d03b5 SP |
58 | # MULITIB_MATCHES variant strings are compared with mlibarch option for multilib |
59 | # linking. | |
60 | ||
7b4c373b | 61 | # Map all v8-m.main+dsp FP variants down to the variant without DSP. |
f58d03b5 | 62 | MULTILIB_MATCHES += march?armv8-m.main=mlibarch?armv8-m.main+dsp \ |
42093880 | 63 | $(foreach FP, +fp +fp.dp, \ |
f58d03b5 | 64 | march?armv8-m.main$(FP)=mlibarch?armv8-m.main+dsp$(FP)) |
3e0201f0 | 65 | |
42093880 RE |
66 | # For single-precision only fpv5, use the base fp libraries |
67 | MULTILIB_MATCHES += march?armv7e-m+fp=march?armv7e-m+fpv5 | |
3e0201f0 | 68 | |
42093880 RE |
69 | # Softfp but no FP. Use the soft-float libraries. |
70 | MULTILIB_REUSE += $(foreach ARCH, armv6s-m armv7-m armv7e-m armv8-m\.base armv8-m\.main, \ | |
71 | mthumb/march.$(ARCH)/mfloat-abi.soft=mthumb/march.$(ARCH)/mfloat-abi.softfp) | |
3e0201f0 | 72 | |
7b4c373b | 73 | # Map v8.1-M to v8-M. |
f58d03b5 SP |
74 | MULTILIB_MATCHES += march?armv8-m.main=mlibarch?armv8.1-m.main |
75 | MULTILIB_MATCHES += march?armv8-m.main=mlibarch?armv8.1-m.main+dsp | |
f582ca0f MI |
76 | MULTILIB_REUSE += mthumb/march.armv8-m\.main/mfloat-abi.soft=mthumb/march.armv8\.1-m\.main+mve/mfloat-abi.soft |
77 | MULTILIB_REUSE += mthumb/march.armv8-m\.main/mfloat-abi.soft=mthumb/march.armv8\.1-m\.main+mve/mfloat-abi.softfp | |
7b4c373b | 78 | |
f582ca0f | 79 | v8_1m_sp_variants = +fp +dsp+fp +mve.fp +fp+mve |
7b4c373b MI |
80 | v8_1m_dp_variants = +fp.dp +dsp+fp.dp +fp.dp+mve +fp.dp+mve.fp |
81 | ||
82 | # Map all v8.1-m.main FP sp variants down to v8-m. | |
83 | MULTILIB_MATCHES += $(foreach FP, $(v8_1m_sp_variants), \ | |
f58d03b5 | 84 | march?armv8-m.main+fp=mlibarch?armv8.1-m.main$(FP)) |
7b4c373b MI |
85 | |
86 | # Map all v8.1-m.main FP dp variants down to v8-m. | |
87 | MULTILIB_MATCHES += $(foreach FP, $(v8_1m_dp_variants), \ | |
f58d03b5 SP |
88 | march?armv8-m.main+fp.dp=mlibarch?armv8.1-m.main$(FP)) |
89 | ||
90 | # For all the MULTILIB_REQUIRED for v8-m and above, add MULTILIB_MATCHES which | |
91 | # maps mlibarch with march for multilib linking. | |
92 | MULTILIB_MATCHES += march?armv8-m.main=mlibarch?armv8-m.main | |
93 | MULTILIB_MATCHES += march?armv8-m.main+fp=mlibarch?armv8-m.main+fp | |
94 | MULTILIB_MATCHES += march?armv8-m.main+fp.dp=mlibarch?armv8-m.main+fp.dp | |
95 | MULTILIB_MATCHES += march?armv8.1-m.main+mve=mlibarch?armv8.1-m.main+mve |