[ARM] Allow combination of aprofile and rmprofile multilibs
[official-gcc.git] / gcc / config / arm / t-rmprofile
blob8cd735110b68bd5bda8022798204245ea8ad1994
1 # Copyright (C) 2016-2017 Free Software Foundation, Inc.
3 # This file is part of GCC.
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.
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.
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/>.
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.
28 # Arch and FPU variants to build libraries with
30 MULTI_ARCH_OPTS_RM      = march=armv6s-m/march=armv7-m/march=armv7e-m/march=armv7/march=armv8-m.base/march=armv8-m.main
31 MULTI_ARCH_DIRS_RM      = v6-m v7-m v7e-m v7-ar v8-m.base v8-m.main
33 MULTI_FPU_OPTS_RM       = mfpu=vfpv3-d16/mfpu=fpv4-sp-d16/mfpu=fpv5-sp-d16/mfpu=fpv5-d16
34 MULTI_FPU_DIRS_RM       = fpv3 fpv4-sp fpv5-sp fpv5
37 # Option combinations to build library with
39 # Default CPU/Arch
40 MULTILIB_REQUIRED      += mthumb
41 MULTILIB_REQUIRED      += mfloat-abi=hard
43 # ARMv6-M
44 MULTILIB_REQUIRED      += mthumb/march=armv6s-m
46 # ARMv8-M Baseline
47 MULTILIB_REQUIRED      += mthumb/march=armv8-m.base
49 # ARMv7-M
50 MULTILIB_REQUIRED      += mthumb/march=armv7-m
52 # ARMv7E-M
53 MULTILIB_REQUIRED      += mthumb/march=armv7e-m
54 MULTILIB_REQUIRED      += mthumb/march=armv7e-m/mfpu=fpv4-sp-d16/mfloat-abi=softfp
55 MULTILIB_REQUIRED      += mthumb/march=armv7e-m/mfpu=fpv4-sp-d16/mfloat-abi=hard
56 MULTILIB_REQUIRED      += mthumb/march=armv7e-m/mfpu=fpv5-d16/mfloat-abi=softfp
57 MULTILIB_REQUIRED      += mthumb/march=armv7e-m/mfpu=fpv5-d16/mfloat-abi=hard
58 MULTILIB_REQUIRED      += mthumb/march=armv7e-m/mfpu=fpv5-sp-d16/mfloat-abi=softfp
59 MULTILIB_REQUIRED      += mthumb/march=armv7e-m/mfpu=fpv5-sp-d16/mfloat-abi=hard
61 # ARMv8-M Mainline
62 MULTILIB_REQUIRED      += mthumb/march=armv8-m.main
63 MULTILIB_REQUIRED      += mthumb/march=armv8-m.main/mfpu=fpv5-d16/mfloat-abi=softfp
64 MULTILIB_REQUIRED      += mthumb/march=armv8-m.main/mfpu=fpv5-d16/mfloat-abi=hard
65 MULTILIB_REQUIRED      += mthumb/march=armv8-m.main/mfpu=fpv5-sp-d16/mfloat-abi=softfp
66 MULTILIB_REQUIRED      += mthumb/march=armv8-m.main/mfpu=fpv5-sp-d16/mfloat-abi=hard
68 # ARMv7-R as well as ARMv7-A and ARMv8-A if aprofile was not specified
69 MULTILIB_REQUIRED      += mthumb/march=armv7
70 MULTILIB_REQUIRED      += mthumb/march=armv7/mfpu=vfpv3-d16/mfloat-abi=softfp
71 MULTILIB_REQUIRED      += mthumb/march=armv7/mfpu=vfpv3-d16/mfloat-abi=hard
74 # Matches
76 # CPU Matches
77 MULTILIB_MATCHES       += march?armv6s-m=mcpu?cortex-m0
78 MULTILIB_MATCHES       += march?armv6s-m=mcpu?cortex-m0.small-multiply
79 MULTILIB_MATCHES       += march?armv6s-m=mcpu?cortex-m0plus
80 MULTILIB_MATCHES       += march?armv6s-m=mcpu?cortex-m0plus.small-multiply
81 MULTILIB_MATCHES       += march?armv6s-m=mcpu?cortex-m1
82 MULTILIB_MATCHES       += march?armv6s-m=mcpu?cortex-m1.small-multiply
83 MULTILIB_MATCHES       += march?armv7-m=mcpu?cortex-m3
84 MULTILIB_MATCHES       += march?armv7e-m=mcpu?cortex-m4
85 MULTILIB_MATCHES       += march?armv7e-m=mcpu?cortex-m7
86 MULTILIB_MATCHES       += march?armv8-m.base=mcpu?cortex-m23
87 MULTILIB_MATCHES       += march?armv8-m.main=mcpu?cortex-m33
88 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-r4
89 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-r4f
90 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-r5
91 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-r7
92 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-r8
93 MULTILIB_MATCHES       += march?armv7=mcpu?marvell-pj4
94 MULTILIB_MATCHES       += march?armv7=mcpu?generic-armv7-a
95 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-a8
96 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-a9
97 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-a5
98 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-a7
99 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-a15
100 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-a12
101 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-a17
102 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-a15.cortex-a7
103 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-a17.cortex-a7
104 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-a32
105 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-a35
106 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-a53
107 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-a57
108 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-a57.cortex-a53
109 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-a72
110 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-a72.cortex-a53
111 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-a73
112 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-a73.cortex-a35
113 MULTILIB_MATCHES       += march?armv7=mcpu?cortex-a73.cortex-a53
114 MULTILIB_MATCHES       += march?armv7=mcpu?exynos-m1
115 MULTILIB_MATCHES       += march?armv7=mcpu?qdf24xx
116 MULTILIB_MATCHES       += march?armv7=mcpu?xgene1
118 # Arch Matches
119 MULTILIB_MATCHES       += march?armv6s-m=march?armv6-m
120 MULTILIB_MATCHES       += march?armv8-m.main=march?armv8-m.main+dsp
121 MULTILIB_MATCHES       += march?armv7=march?armv7-r
122 ifeq (,$(HAS_APROFILE))
123 MULTILIB_MATCHES       += march?armv7=march?armv7-a
124 MULTILIB_MATCHES       += march?armv7=march?armv7ve
125 MULTILIB_MATCHES       += march?armv7=march?armv8-a
126 MULTILIB_MATCHES       += march?armv7=march?armv8-a+crc
127 MULTILIB_MATCHES       += march?armv7=march?armv8.1-a
128 MULTILIB_MATCHES       += march?armv7=march?armv8.1-a+crc
129 MULTILIB_MATCHES       += march?armv7=march?armv8.2-a
130 MULTILIB_MATCHES       += march?armv7=march?armv8.2-a+fp16
131 endif
133 # FPU matches
134 ifeq (,$(HAS_APROFILE))
135 MULTILIB_MATCHES       += mfpu?vfpv3-d16=mfpu?vfpv3
136 MULTILIB_MATCHES       += mfpu?vfpv3-d16=mfpu?vfpv3-fp16
137 MULTILIB_MATCHES       += mfpu?vfpv3-d16=mfpu?vfpv3-d16-fp16
138 MULTILIB_MATCHES       += mfpu?vfpv3-d16=mfpu?neon
139 MULTILIB_MATCHES       += mfpu?vfpv3-d16=mfpu?neon-fp16
140 MULTILIB_MATCHES       += mfpu?vfpv3-d16=mfpu?vfpv4
141 MULTILIB_MATCHES       += mfpu?vfpv3-d16=mfpu?vfpv4-d16
142 MULTILIB_MATCHES       += mfpu?vfpv3-d16=mfpu?neon-vfpv4
143 MULTILIB_MATCHES       += mfpu?fpv5-d16=mfpu?fp-armv8
144 MULTILIB_MATCHES       += mfpu?fpv5-d16=mfpu?neon-fp-armv8
145 MULTILIB_MATCHES       += mfpu?fpv5-d16=mfpu?crypto-neon-fp-armv8
146 endif
149 # We map all requests for ARMv7-R or ARMv7-A in ARM mode to Thumb mode and
150 # any FPU to VFPv3-d16 if possible.
151 MULTILIB_REUSE         += mthumb/march.armv7=march.armv7
152 MULTILIB_REUSE         += mthumb/march.armv7/mfpu.vfpv3-d16/mfloat-abi.softfp=march.armv7/mfpu.vfpv3-d16/mfloat-abi.softfp
153 MULTILIB_REUSE         += mthumb/march.armv7/mfpu.vfpv3-d16/mfloat-abi.hard=march.armv7/mfpu.vfpv3-d16/mfloat-abi.hard
154 MULTILIB_REUSE         += mthumb/march.armv7/mfpu.vfpv3-d16/mfloat-abi.softfp=march.armv7/mfpu.fpv5-d16/mfloat-abi.softfp
155 MULTILIB_REUSE         += mthumb/march.armv7/mfpu.vfpv3-d16/mfloat-abi.hard=march.armv7/mfpu.fpv5-d16/mfloat-abi.hard
156 MULTILIB_REUSE         += mthumb/march.armv7/mfpu.vfpv3-d16/mfloat-abi.softfp=mthumb/march.armv7/mfpu.fpv5-d16/mfloat-abi.softfp
157 MULTILIB_REUSE         += mthumb/march.armv7/mfpu.vfpv3-d16/mfloat-abi.hard=mthumb/march.armv7/mfpu.fpv5-d16/mfloat-abi.hard