1 # Copyright (C) 2012-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)
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 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.
27 # Arch and FPU variants to build libraries with
29 MULTI_ARCH_OPTS_A = march=armv7-a/march=armv7ve/march=armv8-a
30 MULTI_ARCH_DIRS_A = v7-a v7ve v8-a
32 MULTI_FPU_OPTS_A = mfpu=vfpv3-d16/mfpu=neon/mfpu=vfpv4-d16/mfpu=neon-vfpv4/mfpu=neon-fp-armv8
33 MULTI_FPU_DIRS_A = fpv3 simdv1 fpv4 simdvfpv4 simdv8
36 # Option combinations to build library with
38 # Default CPU/Arch (ARM is implicitly included because it uses the default
40 MULTILIB_REQUIRED += mthumb
43 MULTILIB_REQUIRED += *march=armv7-a
44 MULTILIB_REQUIRED += *march=armv7-a/mfpu=vfpv3-d16/mfloat-abi=*
45 MULTILIB_REQUIRED += *march=armv7-a/mfpu=neon/mfloat-abi=*
48 MULTILIB_REQUIRED += *march=armv7ve
49 MULTILIB_REQUIRED += *march=armv7ve/mfpu=vfpv4-d16/mfloat-abi=*
50 MULTILIB_REQUIRED += *march=armv7ve/mfpu=neon-vfpv4/mfloat-abi=*
53 MULTILIB_REQUIRED += *march=armv8-a
54 MULTILIB_REQUIRED += *march=armv8-a/mfpu=neon-fp-armv8/mfloat-abi=*
60 MULTILIB_MATCHES += march?armv7-a=mcpu?marvell-pj4
61 MULTILIB_MATCHES += march?armv7-a=mcpu?generic-armv7-a
62 MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a8
63 MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a9
64 MULTILIB_MATCHES += march?armv7-a=mcpu?cortex-a5
65 MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a7
66 MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a15
67 MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a12
68 MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a17
69 MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a15.cortex-a7
70 MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a17.cortex-a7
71 MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a32
72 MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a35
73 MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a53
74 MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a57
75 MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a57.cortex-a53
76 MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a72
77 MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a72.cortex-a53
78 MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a73
79 MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a73.cortex-a35
80 MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a73.cortex-a53
81 MULTILIB_MATCHES += march?armv8-a=mcpu?exynos-m1
82 MULTILIB_MATCHES += march?armv8-a=mcpu?xgene1
85 MULTILIB_MATCHES += march?armv8-a=march?armv8-a+crc
86 MULTILIB_MATCHES += march?armv8-a=march?armv8.1-a
87 MULTILIB_MATCHES += march?armv8-a=march?armv8.1-a+crc
88 MULTILIB_MATCHES += march?armv8-a=march?armv8.2-a
89 MULTILIB_MATCHES += march?armv8-a=march?armv8.2-a+fp16
92 MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3
93 MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3-fp16
94 MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3-d16-fp16
95 MULTILIB_MATCHES += mfpu?neon=mfpu?neon-fp16
96 MULTILIB_MATCHES += mfpu?vfpv4-d16=mfpu?vfpv4
97 MULTILIB_MATCHES += mfpu?vfpv4-d16=mfpu?fpv5-d16
98 MULTILIB_MATCHES += mfpu?vfpv4-d16=mfpu?fp-armv8
99 MULTILIB_MATCHES += mfpu?neon-fp-armv8=mfpu?crypto-neon-fp-armv8
100 MULTILIB_MATCHES += mfpu?vfp=mfpu?vfpv2
101 MULTILIB_MATCHES += mfpu?neon=mfpu?neon-vfpv3
104 # Map all requests for vfpv3 with a later CPU to vfpv3-d16 v7-a.
105 # So if new CPUs are added above at the newer architecture levels,
106 # do something to map them below here.
107 # We take the approach of mapping down to v7-a regardless of what
108 # the fp option is if the integer architecture brings things down.
109 # This applies to any similar combination at the v7ve and v8-a arch
112 MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=march.armv7ve/mfpu.vfpv3-d16/mfloat-abi.hard
113 MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=march.armv7ve/mfpu.vfpv3-d16/mfloat-abi.softfp
114 MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=march.armv8-a/mfpu.vfpv3-d16/mfloat-abi.hard
115 MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=march.armv8-a/mfpu.vfpv3-d16/mfloat-abi.softfp
116 MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=march.armv7-a/mfpu.vfpv4-d16/mfloat-abi.hard
117 MULTILIB_REUSE += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=march.armv7-a/mfpu.vfpv4-d16/mfloat-abi.softfp
120 MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.hard=march.armv7ve/mfpu.neon/mfloat-abi.hard
121 MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.softfp=march.armv7ve/mfpu.neon/mfloat-abi.softfp
122 MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.hard=march.armv8-a/mfpu.neon/mfloat-abi.hard
123 MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.softfp=march.armv8-a/mfpu.neon/mfloat-abi.softfp
124 MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.hard=march.armv7-a/mfpu.neon-vfpv4/mfloat-abi.hard
125 MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.softfp=march.armv7-a/mfpu.neon-vfpv4/mfloat-abi.softfp
126 MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.hard=march.armv7-a/mfpu.neon-fp-armv8/mfloat-abi.hard
127 MULTILIB_REUSE += march.armv7-a/mfpu.neon/mfloat-abi.softfp=march.armv7-a/mfpu.neon-fp-armv8/mfloat-abi.softfp
130 MULTILIB_REUSE += march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.hard=march.armv8-a/mfpu.vfpv4-d16/mfloat-abi.hard
131 MULTILIB_REUSE += march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.softfp=march.armv8-a/mfpu.vfpv4-d16/mfloat-abi.softfp
134 MULTILIB_REUSE += march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.hard=march.armv8-a/mfpu.neon-vfpv4/mfloat-abi.hard
135 MULTILIB_REUSE += march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.softfp=march.armv8-a/mfpu.neon-vfpv4/mfloat-abi.softfp
136 MULTILIB_REUSE += march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.hard=march.armv7ve/mfpu.neon-fp-armv8/mfloat-abi.hard
137 MULTILIB_REUSE += march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.softfp=march.armv7ve/mfpu.neon-fp-armv8/mfloat-abi.softfp
141 # And again for mthumb.
143 MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=mthumb/march.armv7ve/mfpu.vfpv3-d16/mfloat-abi.hard
144 MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=mthumb/march.armv7ve/mfpu.vfpv3-d16/mfloat-abi.softfp
145 MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.vfpv3-d16/mfloat-abi.hard
146 MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.vfpv3-d16/mfloat-abi.softfp
147 MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=mthumb/march.armv7-a/mfpu.vfpv4-d16/mfloat-abi.hard
148 MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=mthumb/march.armv7-a/mfpu.vfpv4-d16/mfloat-abi.softfp
151 MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.hard=mthumb/march.armv7ve/mfpu.neon/mfloat-abi.hard
152 MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=mthumb/march.armv7ve/mfpu.neon/mfloat-abi.softfp
153 MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.neon/mfloat-abi.hard
154 MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.neon/mfloat-abi.softfp
155 MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.hard=mthumb/march.armv7-a/mfpu.neon-vfpv4/mfloat-abi.hard
156 MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=mthumb/march.armv7-a/mfpu.neon-vfpv4/mfloat-abi.softfp
157 MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.hard=mthumb/march.armv7-a/mfpu.neon-fp-armv8/mfloat-abi.hard
158 MULTILIB_REUSE += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=mthumb/march.armv7-a/mfpu.neon-fp-armv8/mfloat-abi.softfp
161 MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.vfpv4-d16/mfloat-abi.hard
162 MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.vfpv4-d16/mfloat-abi.softfp
165 MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.neon-vfpv4/mfloat-abi.hard
166 MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.neon-vfpv4/mfloat-abi.softfp
167 MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.hard=mthumb/march.armv7ve/mfpu.neon-fp-armv8/mfloat-abi.hard
168 MULTILIB_REUSE += mthumb/march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.softfp=mthumb/march.armv7ve/mfpu.neon-fp-armv8/mfloat-abi.softfp