Merge branch 'master' into core-updates
[jackhill/guix/guix.git] / gnu / packages / patches / gcc-6-arm-none-eabi-multilib.patch
CommitLineData
dbc3c34e
TF
1From Anatol Pomozov <anatol.pomozov@gmail.com>
2Taken from Arch Linux arm-none-eabi-gcc package.
3
4Modified version of ARM patch https://gcc.gnu.org/ml/gcc-patches/2012-05/msg00083/enable-with-multilib-list-for-arm.patch
5
6This patch enables the use of the "--with-multilib-list" flag, when
7configuring GCC 6.2. It makes GCC 6 compatible with the configure flags used
8in the "gcc-arm-none-eabi-4.9" package.
9
10
11diff --git a/gcc/Makefile.in b/gcc/Makefile.in
12index 4ab7405..6e1ea2c 100644
13--- a/gcc/Makefile.in
14+++ b/gcc/Makefile.in
15@@ -535,6 +535,7 @@ lang_opt_files=@lang_opt_files@ $(srcdir)/c-family/c.opt $(srcdir)/common.opt
16 lang_specs_files=@lang_specs_files@
17 lang_tree_files=@lang_tree_files@
18 target_cpu_default=@target_cpu_default@
19+with_multilib_list=@with_multilib_list@
20 OBJC_BOEHM_GC=@objc_boehm_gc@
21 extra_modes_file=@extra_modes_file@
22 extra_opt_files=@extra_opt_files@
23diff --git a/gcc/config.gcc b/gcc/config.gcc
24index cb08a5c..7bded02 100644
25--- a/gcc/config.gcc
26+++ b/gcc/config.gcc
27@@ -1072,7 +1072,7 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*)
28 case ${target} in
29 arm*-*-eabi*)
30 tm_file="$tm_file newlib-stdint.h"
31- tmake_file="${tmake_file} arm/t-bpabi"
32+ tmake_file="${tmake_file} arm/t-bpabi arm/t-mlibs"
33 use_gcc_stdint=wrap
34 ;;
35 arm*-*-rtems*)
36@@ -3684,42 +3684,6 @@ case "${target}" in
37 exit 1
38 fi
39
40- # Add extra multilibs
41- if test "x$with_multilib_list" != x; then
42- arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
43- for arm_multilib in ${arm_multilibs}; do
44- case ${arm_multilib} in
45- aprofile)
46- # Note that arm/t-aprofile is a
47- # stand-alone make file fragment to be
48- # used only with itself. We do not
49- # specifically use the
50- # TM_MULTILIB_OPTION framework because
51- # this shorthand is more
52- # pragmatic. Additionally it is only
53- # designed to work without any
54- # with-cpu, with-arch with-mode
55- # with-fpu or with-float options.
56- if test "x$with_arch" != x \
57- || test "x$with_cpu" != x \
58- || test "x$with_float" != x \
59- || test "x$with_fpu" != x \
60- || test "x$with_mode" != x ; then
61- echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=aprofile" 1>&2
62- exit 1
63- fi
64- tmake_file="${tmake_file} arm/t-aprofile"
65- break
66- ;;
67- default)
68- ;;
69- *)
70- echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
71- exit 1
72- ;;
73- esac
74- done
75- fi
76 ;;
77
78 fr*-*-*linux*)
79diff --git a/gcc/config/arm/t-mlibs b/gcc/config/arm/t-mlibs
80new file mode 100644
81index 0000000..5720cf7
82--- /dev/null
83+++ b/gcc/config/arm/t-mlibs
84@@ -0,0 +1,89 @@
85+# A set of predefined MULTILIB which can be used for different ARM targets.
86+# Via the configure option --with-multilib-list, user can customize the
87+# final MULTILIB implementation.
88+
89+comma := ,
90+space :=
91+space +=
92+
93+MULTILIB_OPTIONS = mthumb/marm
94+MULTILIB_DIRNAMES = thumb arm
95+MULTILIB_OPTIONS += march=armv6s-m/march=armv7-m/march=armv7e-m/march=armv7
96+MULTILIB_DIRNAMES += armv6-m armv7-m armv7e-m armv7-ar
97+MULTILIB_OPTIONS += mfloat-abi=softfp/mfloat-abi=hard
98+MULTILIB_DIRNAMES += softfp fpu
99+MULTILIB_OPTIONS += mfpu=fpv4-sp-d16/mfpu=vfpv3-d16
100+MULTILIB_DIRNAMES += fpv4-sp-d16 vfpv3-d16
101+
102+MULTILIB_MATCHES = march?armv6s-m=mcpu?cortex-m0
103+MULTILIB_MATCHES += march?armv6s-m=mcpu?cortex-m0plus
104+MULTILIB_MATCHES += march?armv6s-m=mcpu?cortex-m1
105+MULTILIB_MATCHES += march?armv6s-m=march?armv6-m
106+MULTILIB_MATCHES += march?armv7-m=mcpu?cortex-m3
107+MULTILIB_MATCHES += march?armv7e-m=mcpu?cortex-m4
108+MULTILIB_MATCHES += march?armv7e-m=mcpu?cortex-m7
109+MULTILIB_MATCHES += march?armv7=march?armv7-r
110+MULTILIB_MATCHES += march?armv7=march?armv7-a
111+MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4
112+MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4f
113+MULTILIB_MATCHES += march?armv7=mcpu?cortex-r5
114+MULTILIB_MATCHES += march?armv7=mcpu?cortex-r7
115+MULTILIB_MATCHES += march?armv7=mcpu?cortex-a5
116+MULTILIB_MATCHES += march?armv7=mcpu?cortex-a7
117+MULTILIB_MATCHES += march?armv7=mcpu?cortex-a8
118+MULTILIB_MATCHES += march?armv7=mcpu?cortex-a9
119+MULTILIB_MATCHES += march?armv7=mcpu?cortex-a15
120+MULTILIB_MATCHES += mfpu?fpv4-sp-d16=mfpu?fpv5-sp-d16
121+MULTILIB_MATCHES += mfpu?fpv4-sp-d16=mfpu?fpv5-d16
122+MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3
123+MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3-fp16
124+MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3-d16-fp16
125+MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3xd
126+MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv3xd-fp16
127+MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv4
128+MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?vfpv4-d16
129+MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?neon
130+MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?neon-fp16
131+MULTILIB_MATCHES += mfpu?vfpv3-d16=mfpu?neon-vfpv4
132+
133+MULTILIB_EXCEPTIONS =
134+MULTILIB_REUSE =
135+
136+MULTILIB_REQUIRED = mthumb
137+MULTILIB_REQUIRED += marm
138+MULTILIB_REQUIRED += mfloat-abi=hard
139+
140+MULTILIB_OSDIRNAMES = mthumb=!thumb
141+MULTILIB_OSDIRNAMES += marm=!arm
142+MULTILIB_OSDIRNAMES += mfloat-abi.hard=!fpu
143+
144+ifneq (,$(findstring armv6-m,$(subst $(comma),$(space),$(with_multilib_list))))
145+MULTILIB_REQUIRED += mthumb/march=armv6s-m
146+MULTILIB_OSDIRNAMES += mthumb/march.armv6s-m=!armv6-m
147+endif
148+
149+ifneq (,$(findstring armv7-m,$(subst $(comma),$(space),$(with_multilib_list))))
150+MULTILIB_REQUIRED += mthumb/march=armv7-m
151+MULTILIB_OSDIRNAMES += mthumb/march.armv7-m=!armv7-m
152+endif
153+
154+ifneq (,$(findstring armv7e-m,$(subst $(comma),$(space),$(with_multilib_list))))
155+MULTILIB_REQUIRED += mthumb/march=armv7e-m
156+MULTILIB_REQUIRED += mthumb/march=armv7e-m/mfloat-abi=softfp/mfpu=fpv4-sp-d16
157+MULTILIB_REQUIRED += mthumb/march=armv7e-m/mfloat-abi=hard/mfpu=fpv4-sp-d16
158+MULTILIB_OSDIRNAMES += mthumb/march.armv7e-m=!armv7e-m
159+MULTILIB_OSDIRNAMES += mthumb/march.armv7e-m/mfloat-abi.hard/mfpu.fpv4-sp-d16=!armv7e-m/fpu
160+MULTILIB_OSDIRNAMES += mthumb/march.armv7e-m/mfloat-abi.softfp/mfpu.fpv4-sp-d16=!armv7e-m/softfp
161+endif
162+
163+ifneq (,$(filter armv7 armv7-r armv7-a,$(subst $(comma),$(space),$(with_multilib_list))))
164+MULTILIB_REQUIRED += mthumb/march=armv7
165+MULTILIB_REQUIRED += mthumb/march=armv7/mfloat-abi=softfp/mfpu=vfpv3-d16
166+MULTILIB_REQUIRED += mthumb/march=armv7/mfloat-abi=hard/mfpu=vfpv3-d16
167+MULTILIB_OSDIRNAMES += mthumb/march.armv7=!armv7-ar/thumb
168+MULTILIB_OSDIRNAMES += mthumb/march.armv7/mfloat-abi.hard/mfpu.vfpv3-d16=!armv7-ar/thumb/fpu
169+MULTILIB_OSDIRNAMES += mthumb/march.armv7/mfloat-abi.softfp/mfpu.vfpv3-d16=!armv7-ar/thumb/softfp
170+MULTILIB_REUSE += mthumb/march.armv7=marm/march.armv7
171+MULTILIB_REUSE += mthumb/march.armv7/mfloat-abi.softfp/mfpu.vfpv3-d16=marm/march.armv7/mfloat-abi.softfp/mfpu.vfpv3-d16
172+MULTILIB_REUSE += mthumb/march.armv7/mfloat-abi.hard/mfpu.vfpv3-d16=marm/march.armv7/mfloat-abi.hard/mfpu.vfpv3-d16
173+endif
174diff --git a/gcc/configure b/gcc/configure
175index 9523773..24952e3 100755
176--- a/gcc/configure
177+++ b/gcc/configure
178@@ -763,6 +763,7 @@ SET_MAKE
179 accel_dir_suffix
180 real_target_noncanonical
181 enable_as_accelerator
182+with_multilib_list
183 REPORT_BUGS_TEXI
184 REPORT_BUGS_TO
185 PKGVERSION
186@@ -7462,6 +7463,7 @@ else
187 fi
188
189
190+
191 # -------------------------
192 # Checks for other programs
193 # -------------------------
194diff --git a/gcc/configure.ac b/gcc/configure.ac
195index 68b0ee8..f8a1097 100644
196--- a/gcc/configure.ac
197+++ b/gcc/configure.ac
198@@ -925,6 +925,7 @@ AC_ARG_WITH(multilib-list,
199 [AS_HELP_STRING([--with-multilib-list], [select multilibs (AArch64, SH and x86-64 only)])],
200 :,
201 with_multilib_list=default)
202+AC_SUBST(with_multilib_list)
203
204 # -------------------------
205 # Checks for other programs
206