]>
Commit | Line | Data |
---|---|---|
8d9254fc | 1 | # Copyright (C) 2016-2020 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 | |
42093880 RE |
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 |
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 | |
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 | |
3e0201f0 | 51 | |
3e0201f0 | 52 | |
3e0201f0 TP |
53 | |
54 | # Arch Matches | |
42093880 RE |
55 | MULTILIB_MATCHES += march?armv6s-m=march?armv6-m |
56 | ||
7b4c373b | 57 | # Map all v8-m.main+dsp FP variants down to the variant without DSP. |
42093880 RE |
58 | MULTILIB_MATCHES += march?armv8-m.main=march?armv8-m.main+dsp \ |
59 | $(foreach FP, +fp +fp.dp, \ | |
60 | march?armv8-m.main$(FP)=march?armv8-m.main+dsp$(FP)) | |
3e0201f0 | 61 | |
42093880 RE |
62 | # For single-precision only fpv5, use the base fp libraries |
63 | MULTILIB_MATCHES += march?armv7e-m+fp=march?armv7e-m+fpv5 | |
3e0201f0 | 64 | |
42093880 RE |
65 | # Softfp but no FP. Use the soft-float libraries. |
66 | MULTILIB_REUSE += $(foreach ARCH, armv6s-m armv7-m armv7e-m armv8-m\.base armv8-m\.main, \ | |
67 | mthumb/march.$(ARCH)/mfloat-abi.soft=mthumb/march.$(ARCH)/mfloat-abi.softfp) | |
3e0201f0 | 68 | |
7b4c373b MI |
69 | # Map v8.1-M to v8-M. |
70 | MULTILIB_MATCHES += march?armv8-m.main=march?armv8.1-m.main | |
71 | MULTILIB_MATCHES += march?armv8-m.main=march?armv8.1-m.main+dsp | |
72 | MULTILIB_MATCHES += march?armv8-m.main=march?armv8.1-m.main+mve | |
73 | ||
74 | v8_1m_sp_variants = +fp +dsp+fp +mve.fp | |
75 | v8_1m_dp_variants = +fp.dp +dsp+fp.dp +fp.dp+mve +fp.dp+mve.fp | |
76 | ||
77 | # Map all v8.1-m.main FP sp variants down to v8-m. | |
78 | MULTILIB_MATCHES += $(foreach FP, $(v8_1m_sp_variants), \ | |
79 | march?armv8-m.main+fp=march?armv8.1-m.main$(FP)) | |
80 | ||
81 | # Map all v8.1-m.main FP dp variants down to v8-m. | |
82 | MULTILIB_MATCHES += $(foreach FP, $(v8_1m_dp_variants), \ | |
83 | march?armv8-m.main+fp.dp=march?armv8.1-m.main$(FP)) |