Commit | Line | Data |
---|---|---|
dbc3c34e TF |
1 | From Anatol Pomozov <anatol.pomozov@gmail.com> |
2 | Taken from Arch Linux arm-none-eabi-gcc package. | |
3 | ||
4 | Modified version of ARM patch https://gcc.gnu.org/ml/gcc-patches/2012-05/msg00083/enable-with-multilib-list-for-arm.patch | |
5 | ||
6 | This patch enables the use of the "--with-multilib-list" flag, when | |
7 | configuring GCC 6.2. It makes GCC 6 compatible with the configure flags used | |
8 | in the "gcc-arm-none-eabi-4.9" package. | |
9 | ||
10 | ||
11 | diff --git a/gcc/Makefile.in b/gcc/Makefile.in | |
12 | index 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@ | |
23 | diff --git a/gcc/config.gcc b/gcc/config.gcc | |
24 | index 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*) | |
79 | diff --git a/gcc/config/arm/t-mlibs b/gcc/config/arm/t-mlibs | |
80 | new file mode 100644 | |
81 | index 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 | |
174 | diff --git a/gcc/configure b/gcc/configure | |
175 | index 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 | # ------------------------- | |
194 | diff --git a/gcc/configure.ac b/gcc/configure.ac | |
195 | index 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 |