From: Alexandre Oliva Date: Fri, 21 Dec 2018 05:40:53 +0000 (+0000) Subject: support --with-multilib-list=@name for ARM X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5d6551f527a1cc39ce44d1f560cfdb9113a5a92d;p=gcc.git support --with-multilib-list=@name for ARM Introduce @name as a means to specify alternate multilib profiles as arguments to --with-multilib-list. So far this is only implemented for ARM. for gcc/ChangeLog * config.gcc (tmake_file): Add name to tmake_file for each @name in --with-multilib-list on arm-*-* targets. * doc/install.texi (with-multilib-list): Document it. From-SVN: r267320 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6fe19d3b1b0..e3eb937e2a5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-12-21 Alexandre Oliva + + * config.gcc (tmake_file): Add name to tmake_file for + each @name in --with-multilib-list on arm-*-* targets. + * doc/install.texi (with-multilib-list): Document it. + 2018-12-21 Jakub Jelinek * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Use diff --git a/gcc/config.gcc b/gcc/config.gcc index 63efbf03396..bd75e06486e 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -3976,6 +3976,7 @@ case "${target}" in # Add extra multilibs if test "x$with_multilib_list" != x; then + ml= arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'` if test "x${arm_multilibs}" != xdefault ; then for arm_multilib in ${arm_multilibs}; do @@ -3983,6 +3984,15 @@ case "${target}" in aprofile|rmprofile) tmake_profile_file="arm/t-multilib" ;; + @*) + ml=`echo "X$arm_multilib" | sed '1s,^X@,,'` + if test -f "${srcdir}/config/arm/${ml}"; then + tmake_file="${tmake_file} arm/${ml}" + else + echo "Error: ${ml} does not exist in ${srcdir}/config/arm" >&2 + exit 1 + fi + ;; *) echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2 exit 1 @@ -4003,6 +4013,9 @@ case "${target}" in || test "x$with_mode" != x ; then echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=${with_multilib_list}" 1>&2 exit 1 + elif test "x$ml" != x ; then + echo "Error: You cannot use builtin multilib profiles along with custom ones" 1>&2 + exit 1 fi # But pass the default value for float-abi # through to the multilib selector diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 19adb7ef870..443003b0fde 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -1078,18 +1078,41 @@ values and meaning for each target is given below. @table @code @item arm*-*-* -@var{list} is a comma separated list of @code{aprofile} and @code{rmprofile} -to build multilibs for A or R and M architecture profiles respectively. Note -that, due to some limitation of the current multilib framework, using the -combined @code{aprofile,rmprofile} multilibs selects in some cases a less -optimal multilib than when using the multilib profile for the architecture -targetted. The special value @code{default} is also accepted and is equivalent -to omitting the option, ie. only the default run-time library will be enabled. +@var{list} is a comma separated list of @code{aprofile} and +@code{rmprofile} to build multilibs for A or R and M architecture +profiles respectively. Note that, due to some limitation of the current +multilib framework, using the combined @code{aprofile,rmprofile} +multilibs selects in some cases a less optimal multilib than when using +the multilib profile for the architecture targetted. The special value +@code{default} is also accepted and is equivalent to omitting the +option, i.e., only the default run-time library will be enabled. + +@var{list} may instead contain @code{@@name}, to use the multilib +configuration Makefile fragment @file{name} in @file{gcc/config/arm} in +the source tree (it is part of the corresponding sources, after all). +It is recommended, but not required, that files used for this purpose to +be named starting with @file{t-ml-}, to make their intended purpose +self-evident, in line with GCC conventions. Such files enable custom, +user-chosen multilib lists to be configured. Whether multiple such +files can be used together depends on the contents of the supplied +files. See @file{gcc/config/arm/t-multilib} and its supplementary +@file{gcc/config/arm/t-*profile} files for an example of what such +Makefile fragments might look like for this version of GCC. The macros +expected to be defined in these fragments are not stable across GCC +releases, so make sure they define the @code{MULTILIB}-related macros +expected by the version of GCC you are building. +@ifnothtml +@xref{Target Fragment,, Target Makefile Fragments, gccint, GNU Compiler +Collection (GCC) Internals}. +@end ifnothtml +@ifhtml +See ``Target Makefile Fragments'' in the internals manual. +@end ifhtml The table below gives the combination of ISAs, architectures, FPUs and -floating-point ABIs for which multilibs are built for each accepted value. -The union of these options is considered when specifying both @code{aprofile} -and @code{rmprofile}. +floating-point ABIs for which multilibs are built for each predefined +profile. The union of these options is considered when specifying both +@code{aprofile} and @code{rmprofile}. @multitable @columnfractions .15 .28 .30 @item Option @tab aprofile @tab rmprofile