From: Robert Suchanek <robert.suchanek@imgtec.com>
Remove single-float and short-double axes from multilib spec.
The single-float/short-double combination is not immediately supportable
from GCC 6 as the -fshort-double option has been removed and we do not
have backend logic to implement a direct replacement. If/when we do this
then it needs appropriate ABI markers to describe the additional
variant.
Remove final remnant of single/short config.
Add the mips32r2 mips16 little endian soft-float multilib.
Add big-endian, MIPS64R6, soft-float, N32/N64 Linux libs.
Add MIPS32R1 HF LE Linux libraries.
Add big endian microMIPSr2 hard/soft float support.
Disable microMIPSr6 multilib configs.
Cherry-picked 2b2481cc71284ad9db3dff60bd6cab2be678e87e,
0e3416279af1417b85d1a09b1e74327c31899a5d,
e50ab07265fd8188bd4275c14b744ed2dc39116d,
32f7098d7d5bee9754c7728639a0e1cdb24d63f7,
24e261b2c9a9bea1c205cfab761c218ad50f938e, and
796ddebed418e953ba7cd5de1da42311fb1fe096
from https://github.com/MIPS/gcc
Signed-off-by: Robert Suchanek <robert.suchanek@imgtec.com>
Signed-off-by: Matthew Fortune <matthew.fortune@imgtec.com>
Signed-off-by: Chao-ying Fu <cfu@mips.com>
Signed-off-by: Faraz Shahbazker <fshahbazker@wavecomp.com>
Signed-off-by: Aleksandar Rakic <aleksandar.rakic@htecgroup.com>
---
config-ml.in | 25 ++-
configure | 25 +++
configure.ac | 25 +++
gcc/Makefile.in | 20 ++
gcc/config.gcc | 12 +-
gcc/config/mips/ml-img-elf | 12 +
gcc/config/mips/ml-img-linux | 10 +
gcc/config/mips/ml-mti-elf | 31 +++
gcc/config/mips/ml-mti-linux | 27 +++
gcc/config/mips/mti-elf.h | 2 +
gcc/config/mips/mti-linux.h | 2 +
gcc/config/mips/t-img-elf | 33 ---
gcc/config/mips/t-img-linux | 38 ----
gcc/config/mips/t-mips-multi | 409 +++++++++++++++++++++++++++++++++++
gcc/config/mips/t-mti-elf | 48 ----
gcc/config/mips/t-mti-linux | 158 --------------
gcc/configure | 8 +-
gcc/configure.ac | 3 +
gcc/genmultilib | 3 -
19 files changed, 604 insertions(+), 287 deletions(-)
create mode 100644 gcc/config/mips/ml-img-elf
create mode 100644 gcc/config/mips/ml-img-linux
create mode 100644 gcc/config/mips/ml-mti-elf
create mode 100644 gcc/config/mips/ml-mti-linux
delete mode 100644 gcc/config/mips/t-img-elf
delete mode 100644 gcc/config/mips/t-img-linux
create mode 100644 gcc/config/mips/t-mips-multi
delete mode 100644 gcc/config/mips/t-mti-elf
delete mode 100644 gcc/config/mips/t-mti-linux
On 1/31/25 10:13 AM, Aleksandar Rakic wrote:
> From: Robert Suchanek <robert.suchanek@imgtec.com>
>
> Remove single-float and short-double axes from multilib spec.
>
> The single-float/short-double combination is not immediately supportable
> from GCC 6 as the -fshort-double option has been removed and we do not
> have backend logic to implement a direct replacement. If/when we do this
> then it needs appropriate ABI markers to describe the additional
> variant.
>
> Remove final remnant of single/short config.
>
> Add the mips32r2 mips16 little endian soft-float multilib.
>
> Add big-endian, MIPS64R6, soft-float, N32/N64 Linux libs.
>
> Add MIPS32R1 HF LE Linux libraries.
>
> Add big endian microMIPSr2 hard/soft float support.
>
> Disable microMIPSr6 multilib configs.
>
> Cherry-picked 2b2481cc71284ad9db3dff60bd6cab2be678e87e,
> 0e3416279af1417b85d1a09b1e74327c31899a5d,
> e50ab07265fd8188bd4275c14b744ed2dc39116d,
> 32f7098d7d5bee9754c7728639a0e1cdb24d63f7,
> 24e261b2c9a9bea1c205cfab761c218ad50f938e, and
> 796ddebed418e953ba7cd5de1da42311fb1fe096
> from https://github.com/MIPS/gcc
>
> Signed-off-by: Robert Suchanek <robert.suchanek@imgtec.com>
> Signed-off-by: Matthew Fortune <matthew.fortune@imgtec.com>
> Signed-off-by: Chao-ying Fu <cfu@mips.com>
> Signed-off-by: Faraz Shahbazker <fshahbazker@wavecomp.com>
> Signed-off-by: Aleksandar Rakic <aleksandar.rakic@htecgroup.com>
> ---
> config-ml.in | 25 ++-
> configure | 25 +++
> configure.ac | 25 +++
> gcc/Makefile.in | 20 ++
> gcc/config.gcc | 12 +-
> gcc/config/mips/ml-img-elf | 12 +
> gcc/config/mips/ml-img-linux | 10 +
> gcc/config/mips/ml-mti-elf | 31 +++
> gcc/config/mips/ml-mti-linux | 27 +++
> gcc/config/mips/mti-elf.h | 2 +
> gcc/config/mips/mti-linux.h | 2 +
> gcc/config/mips/t-img-elf | 33 ---
> gcc/config/mips/t-img-linux | 38 ----
> gcc/config/mips/t-mips-multi | 409 +++++++++++++++++++++++++++++++++++
> gcc/config/mips/t-mti-elf | 48 ----
> gcc/config/mips/t-mti-linux | 158 --------------
> gcc/configure | 8 +-
> gcc/configure.ac | 3 +
> gcc/genmultilib | 3 -
> 19 files changed, 604 insertions(+), 287 deletions(-)
> create mode 100644 gcc/config/mips/ml-img-elf
> create mode 100644 gcc/config/mips/ml-img-linux
> create mode 100644 gcc/config/mips/ml-mti-elf
> create mode 100644 gcc/config/mips/ml-mti-linux
> delete mode 100644 gcc/config/mips/t-img-elf
> delete mode 100644 gcc/config/mips/t-img-linux
> create mode 100644 gcc/config/mips/t-mips-multi
> delete mode 100644 gcc/config/mips/t-mti-elf
> delete mode 100644 gcc/config/mips/t-mti-linux
So I'm not at all concerned about the mips specific bits of this patch.
After all, they only affect mips ports and the changes seem sensible.
They would need a ChangeLog entry to go forward through.
What is concerning is the config.ml change which has no comments about
what it's doing or justification in the cover ltter.
Similarly it's not clear why we need a blob of mips specific code in
configure.ac and the files autogenerated from that.
Jeff
@@ -382,6 +382,23 @@ mips*-*-*)
esac
done
fi
+ if [ x$with_multi_buildlist != x ]
+ then
+ old_multidirs="${multidirs}"
+ if [ ! -f $with_multi_buildlist ]
+ then
+ echo "config-ml.in: Failed to find $with_multi_buildlist"
+ exit 1
+ fi
+ multidirs=""
+ for x in ${old_multidirs}; do
+ found=`grep "^${x}$" $with_multi_buildlist`
+ if [ -n "$found" ]
+ then
+ multidirs="${multidirs} ${x}"
+ fi
+ done
+ fi
;;
msp430-*-*)
if [ x$enable_no_exceptions = xno ]
@@ -597,7 +614,8 @@ else
fi
if [ -z "${with_multisubdir}" ]; then
- ml_subdir=
+ ml_top_subdir=`${CC-gcc} --print-multi-directory 2>/dev/null`
+ ml_subdir=/$ml_top_subdir
ml_builddotdot=
: # ml_srcdotdot= # already set
else
@@ -676,6 +694,11 @@ if [ -n "${multidirs}" ] && [ -z "${ml_norecursion}" ]; then
for ml_dir in ${multidirs}; do
+ if [ "${ml_dir}" == "${ml_top_subdir}" ]; then
+ echo "Skipping configure in multilib subdir ${ml_dir}"
+ continue
+ fi
+
if [ "${ml_verbose}" = --verbose ]; then
echo "Running configure in multilib subdir ${ml_dir}"
echo "pwd: `${PWDCMD-pwd}`"
@@ -11338,6 +11338,31 @@ if test x${enable_multilib} = x ; then
target_configargs="--enable-multilib ${target_configargs}"
fi
+# Select default multilib build variants
+if test x${with_multi_buildlist} = x ; then
+ case "$target" in
+ mips*-img-linux*) multi_buildlist=${srcdir}/gcc/config/mips/ml-img-linux ;;
+ mips*-mti-linux*) multi_buildlist=${srcdir}/gcc/config/mips/ml-mti-linux ;;
+ mips*-img-elf*) multi_buildlist=${srcdir}/gcc/config/mips/ml-img-elf ;;
+ mips*-mti-elf*) multi_buildlist=${srcdir}/gcc/config/mips/ml-mti-elf ;;
+ esac
+ # Verify the file exists before using it in case the gcc component is not
+ # present in the tree.
+ if test -f "${multi_buildlist}" ; then
+ with_multi_buildlist=$multi_buildlist
+ fi
+fi
+
+# Pass through with_multi_buildlist to host and target. 'gcc' needs it for the
+# fixed includes which are multilib'd and target libraries need it as they use
+# config-ml.in.
+if test x${with_multi_buildlist} != x ; then
+ target_configargs="--with-multi-buildlist=${with_multi_buildlist} \
+ ${target_configargs}"
+ host_configargs="--with-multi-buildlist=${with_multi_buildlist} \
+ ${host_configargs}"
+fi
+
# Pass --with-newlib if appropriate. Note that target_configdirs has
# changed from the earlier setting of with_newlib.
if test x${with_newlib} != xno && echo " ${target_configdirs} " | grep " newlib " > /dev/null 2>&1 && test -d ${srcdir}/newlib ; then
@@ -3577,6 +3577,31 @@ if test x${enable_multilib} = x ; then
target_configargs="--enable-multilib ${target_configargs}"
fi
+# Select default multilib build variants
+if test x${with_multi_buildlist} = x ; then
+ case "$target" in
+ mips*-img-linux*) multi_buildlist=${srcdir}/gcc/config/mips/ml-img-linux ;;
+ mips*-mti-linux*) multi_buildlist=${srcdir}/gcc/config/mips/ml-mti-linux ;;
+ mips*-img-elf*) multi_buildlist=${srcdir}/gcc/config/mips/ml-img-elf ;;
+ mips*-mti-elf*) multi_buildlist=${srcdir}/gcc/config/mips/ml-mti-elf ;;
+ esac
+ # Verify the file exists before using it in case the gcc component is not
+ # present in the tree.
+ if test -f "${multi_buildlist}" ; then
+ with_multi_buildlist=$multi_buildlist
+ fi
+fi
+
+# Pass through with_multi_buildlist to host and target. 'gcc' needs it for the
+# fixed includes which are multilib'd and target libraries need it as they use
+# config-ml.in.
+if test x${with_multi_buildlist} != x ; then
+ target_configargs="--with-multi-buildlist=${with_multi_buildlist} \
+ ${target_configargs}"
+ host_configargs="--with-multi-buildlist=${with_multi_buildlist} \
+ ${host_configargs}"
+fi
+
# Pass --with-newlib if appropriate. Note that target_configdirs has
# changed from the earlier setting of with_newlib.
if test x${with_newlib} != xno && echo " ${target_configdirs} " | grep " newlib " > /dev/null 2>&1 && test -d ${srcdir}/newlib ; then
@@ -642,6 +642,9 @@ else
endif
endif
+# Multilib control
+with_multi_buildlist = @with_multi_buildlist@
+
# ------------------------
# Installation directories
# ------------------------
@@ -3383,10 +3386,27 @@ fixinc_list: s-fixinc_list; @true
s-fixinc_list : $(GCC_PASSES)
# Build up a list of multilib directories and corresponding sysroot
# suffixes, in form sysroot;multilib.
+# Use a filtered multilib list if requested.
if $(GCC_FOR_TARGET) -print-sysroot-headers-suffix > /dev/null 2>&1; then \
set -e; for ml in `$(GCC_FOR_TARGET) -print-multi-lib`; do \
multi_dir=`echo $${ml} | sed -e 's/;.*$$//'`; \
flags=`echo $${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
+ case "$(target)" in \
+ mips*-*-*) \
+ if [ x$(with_multi_buildlist) != x ]; then \
+ if [ ! -f $(with_multi_buildlist) ]; then \
+ echo "fixinc_list: Failed to find $(with_multi_buildlist)"; \
+ exit 1; \
+ fi; \
+ set +e; \
+ found=`grep "^$${multi_dir}$$" $(with_multi_buildlist)`; \
+ set -e; \
+ if [ -z "$$found" ]; then \
+ continue; \
+ fi; \
+ fi; \
+ ;; \
+ esac; \
sfx=`$(GCC_FOR_TARGET) $${flags} -print-sysroot-headers-suffix`; \
if [ "$${multi_dir}" = "." ]; \
then multi_dir=""; \
@@ -2625,22 +2625,24 @@ mips*-*-netbsd*) # NetBSD/mips, either endian.
mips*-img-linux*)
tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h mips/mti-linux.h"
extra_options="${extra_options} linux-android.opt"
- tmake_file="${tmake_file} mips/t-img-linux"
+ tmake_file="${tmake_file} mips/t-mips-multi"
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
with_arch_32="mips32r6"
with_arch_64="mips64r6"
gnu_ld=yes
gas=yes
+ TM_MULTILIB_EXCEPTIONS_CONFIG="*mclib=*"
;;
mips*-mti-linux*)
tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h mips/mti-linux.h"
extra_options="${extra_options} linux-android.opt"
- tmake_file="${tmake_file} mips/t-mti-linux"
+ tmake_file="${tmake_file} mips/t-mips-multi"
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
with_arch_32="mips32r2"
with_arch_64="mips64r2"
gnu_ld=yes
gas=yes
+ TM_MULTILIB_EXCEPTIONS_CONFIG="*mclib=*"
;;
mips*-*-linux*) # Linux MIPS, either endian.
tm_file="elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h"
@@ -2705,17 +2707,19 @@ mips*-*-linux*) # Linux MIPS, either endian.
;;
mips*-mti-elf*)
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
- tmake_file="mips/t-mti-elf"
+ tmake_file="mips/t-mips-multi"
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R2 MIPS_ABI_DEFAULT=ABI_32"
with_arch_32="mips32r2"
with_arch_64="mips64r2"
+ TM_MULTILIB_EXCEPTIONS_CONFIG="*mglibc* *muclibc*"
;;
mips*-img-elf*)
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
- tmake_file="mips/t-img-elf"
+ tmake_file="mips/t-mips-multi"
tm_defines="${tm_defines} MIPS_ISA_DEFAULT=MIPS_ISA_MIPS32R6 MIPS_ABI_DEFAULT=ABI_32"
with_arch_32="mips32r6"
with_arch_64="mips64r6"
+ TM_MULTILIB_EXCEPTIONS_CONFIG="*mglibc* *muclibc* *mandroid*"
;;
mips*-sde-elf*)
tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h"
new file mode 100644
@@ -0,0 +1,12 @@
+mips-r6-hard-newlib/lib
+mips-r6-hard-newlib/lib32
+mips-r6-hard-newlib/lib64
+mips-r6-soft-newlib/lib
+mips-r6-soft-newlib/lib32
+mips-r6-soft-newlib/lib64
+mipsel-r6-hard-newlib/lib
+mipsel-r6-hard-newlib/lib32
+mipsel-r6-hard-newlib/lib64
+mipsel-r6-soft-newlib/lib
+mipsel-r6-soft-newlib/lib32
+mipsel-r6-soft-newlib/lib64
new file mode 100644
@@ -0,0 +1,10 @@
+mips-r6-hard/lib
+mips-r6-soft/lib
+mips-r6-hard/lib32
+mips-r6-soft/lib32
+mips-r6-hard/lib64
+mips-r6-soft/lib64
+mipsel-r6-hard/lib
+mipsel-r6-soft/lib
+mipsel-r6-hard/lib32
+mipsel-r6-hard/lib64
new file mode 100644
@@ -0,0 +1,31 @@
+mips-r2-hard-newlib/lib
+mips-r2-hard-newlib/lib32
+mips-r2-hard-newlib/lib64
+mips-r2-hard-nan2008-newlib/lib
+mips-r2-soft-newlib/lib
+mips-r2-soft-newlib/lib32
+mips-r2-soft-newlib/lib64
+mipsel-r2-hard-newlib/lib
+mipsel-r2-hard-newlib/lib32
+mipsel-r2-hard-newlib/lib64
+mipsel-r2-soft-newlib/lib
+mipsel-r2-soft-newlib/lib32
+mipsel-r2-soft-newlib/lib64
+mipsel-r2-mips16-soft-newlib/lib
+mipsel-r2-hard-nan2008-newlib/lib
+micromips-r2-hard-nan2008-newlib/lib
+micromips-r2-soft-newlib/lib
+micromipsel-r2-hard-nan2008-newlib/lib
+micromipsel-r2-soft-newlib/lib
+mips-r6-hard-newlib/lib
+mips-r6-hard-newlib/lib32
+mips-r6-hard-newlib/lib64
+mips-r6-soft-newlib/lib
+mips-r6-soft-newlib/lib32
+mips-r6-soft-newlib/lib64
+mipsel-r6-hard-newlib/lib
+mipsel-r6-hard-newlib/lib32
+mipsel-r6-hard-newlib/lib64
+mipsel-r6-soft-newlib/lib
+mipsel-r6-soft-newlib/lib32
+mipsel-r6-soft-newlib/lib64
new file mode 100644
@@ -0,0 +1,27 @@
+mips-r2-hard/lib
+mips-r2-soft/lib
+mips-r2-hard/lib32
+mips-r2-hard/lib64
+mips-r2-hard-nan2008/lib
+mipsel-r1-hard/lib
+mipsel-r2-hard/lib
+mipsel-r2-soft/lib
+mipsel-r2-hard/lib32
+mipsel-r2-hard/lib64
+mipsel-r2-hard-nan2008/lib
+micromipsel-r2-hard-nan2008/lib
+micromipsel-r2-soft/lib
+mips-r2-hard-uclibc/lib
+mips-r2-hard-nan2008-uclibc/lib
+mipsel-r2-hard-uclibc/lib
+mipsel-r2-hard-nan2008-uclibc/lib
+mips-r6-hard/lib
+mips-r6-soft/lib
+mips-r6-hard/lib32
+mips-r6-soft/lib32
+mips-r6-hard/lib64
+mips-r6-soft/lib64
+mipsel-r6-hard/lib
+mipsel-r6-soft/lib
+mipsel-r6-hard/lib32
+mipsel-r6-hard/lib64
@@ -17,6 +17,8 @@ You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
+#undef MULTILIB_DEFAULTS
+
#undef DRIVER_SELF_SPECS
#define DRIVER_SELF_SPECS \
/* Set the ISA for the default multilib. */ \
@@ -23,6 +23,8 @@ along with GCC; see the file COPYING3. If not see
mips64r3, and mips64r5 will all default to 'r2'. See MULTILIB_MATCHES
definition in t-mti-linux. */
+#undef MULTILIB_DEFAULTS
+
#define MIPS_SYSVERSION_SPEC \
"%{mips32|mips64:r1;mips32r6|mips64r6:r6;:r2}%{mips16:-mips16}"
deleted file mode 100644
@@ -1,33 +0,0 @@
-# Copyright (C) 2014-2024 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-# The default build is mips32r6, hard-float big-endian.
-# A multilib for mips32r6+LE
-# A multilib for mips64r6
-# A multilib for mips64r6+LE
-
-MULTILIB_OPTIONS = mips64r6 mabi=64 EL msoft-float/msingle-float
-MULTILIB_DIRNAMES = mips64r6 64 el sof sgl
-MULTILIB_MATCHES = EL=mel EB=meb
-
-# Don't build 64r6 with single-float
-MULTILIB_EXCEPTIONS += mips64r6/*msingle-float*
-
-MULTILIB_EXCEPTIONS += mabi=64*
-MULTILIB_EXCEPTIONS += msingle-float*
-MULTILIB_EXCEPTIONS += *msingle-float
deleted file mode 100644
@@ -1,38 +0,0 @@
-# Copyright (C) 2014-2024 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-# The default build is mips32r6, hard-float big-endian. Add mips64r6,
-# 64-bit ABI and little-endian variations.
-
-MULTILIB_OPTIONS = mips64r6 mabi=64 EL
-MULTILIB_DIRNAMES = mips64r6 64 el
-MULTILIB_MATCHES = EL=mel EB=meb
-
-MULTILIB_REQUIRED =
-MULTILIB_OSDIRNAMES = .=mips-r6-hard/lib
-MULTILIB_REQUIRED += mips64r6
-MULTILIB_OSDIRNAMES += mips64r6=!mips-r6-hard/lib32
-MULTILIB_REQUIRED += mips64r6/mabi=64
-MULTILIB_OSDIRNAMES += mips64r6/mabi.64=!mips-r6-hard/lib64
-
-MULTILIB_REQUIRED += EL
-MULTILIB_OSDIRNAMES += EL=!mipsel-r6-hard/lib
-MULTILIB_REQUIRED += mips64r6/EL
-MULTILIB_OSDIRNAMES += mips64r6/EL=!mipsel-r6-hard/lib32
-MULTILIB_REQUIRED += mips64r6/mabi=64/EL
-MULTILIB_OSDIRNAMES += mips64r6/mabi.64/EL=!mipsel-r6-hard/lib64
new file mode 100644
@@ -0,0 +1,409 @@
+# Copyright (C) 2024 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+# There is no default build in this multilib setup. This
+# unfortunately does not prevent config-ml.in from building a default
+# but this can be removed via post install scripts.
+#
+# All possible MIPS multilibs are shown in this file. They are
+# limited via a file that lists required multilibs for each vendor/OS
+# combination which can be overridden at build time as well.
+#
+# The benefit to describing all multilibs is that the compiler driver
+# can use any multilib if it is present and therefore additional
+# library variants can be added to an installation after initial
+# build. This could be achieved by building all libraries and
+# removing the ones we don't want to ship but this would massively
+# increase build times in situations where only a few are required
+# immediately.
+
+MULTILIB_OPTIONS = mclib=small/mclib=tiny/muclibc \
+ mips32/mips32r2/mips32r6/mips64/mips64r2/mips64r6 \
+ mips16/mmicromips \
+ mabi=32/mabi=n32/mabi=64 \
+ EB/EL \
+ msoft-float \
+ mnan=2008
+MULTILIB_DIRNAMES = small tiny uclibc mips32 mips32r2 mips32r6 mips64 \
+ mips64r2 mips64r6 mips16 micromips 32 n32 64 \
+ eb el sof nan2008
+MULTILIB_MATCHES = EL=mel EB=meb \
+ mips32r2=mips32r3 mips32r2=mips32r5 \
+ mips64r2=mips64r3 mips64r2=mips64r5
+
+# Allow the exceptions list to be controlled by configure time options
+MULTILIB_EXCEPTIONS = $(TM_MULTILIB_EXCEPTIONS_CONFIG)
+
+# Determine if this is a bare metal target with a newlib default library
+is_newlib = $(if $(filter elf, $(lastword $(subst -, ,$(target)))),-newlib)
+
+MULTILIB_EXCLUSIONS := !mclib=small/!mclib=tiny/!muclibc/!mips32/!mips32r2
+MULTILIB_EXCLUSIONS := $(MULTILIB_EXCLUSIONS)/!mips32r6/!mips64/!mips64r2
+MULTILIB_EXCLUSIONS := $(MULTILIB_EXCLUSIONS)/!mips64r6/!mips16/!mmicromips
+MULTILIB_EXCLUSIONS := $(MULTILIB_EXCLUSIONS)/!mabi=32/!mabi=n32/!mabi=64/!EB
+MULTILIB_EXCLUSIONS := $(MULTILIB_EXCLUSIONS)/!EL/!msoft-float/!mnan=2008
+
+# MIPS32R6/MIPS64R6
+MULTILIB_REQUIRED = mips32r6/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES = mips32r6/mabi.32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-hard$(is_newlib)/lib
+MULTILIB_REUSE = mips32r6/mabi.32/EB/mnan.2008=
+MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r6/mabi.32/EB/mnan.2008
+MULTILIB_REQUIRED += mips64r6/mabi=n32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r6/mabi.n32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-hard$(is_newlib)/lib32
+MULTILIB_REQUIRED += mips64r6/mabi=64/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r6/mabi.64/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-hard$(is_newlib)/lib64
+
+MULTILIB_REQUIRED += mips32r6/mabi=32/EB/msoft-float/mnan=2008
+MULTILIB_OSDIRNAMES += mips32r6/mabi.32/EB/msoft-float/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-soft$(is_newlib)/lib
+MULTILIB_REUSE += mips32r6/mabi.32/EB/msoft-float/mnan.2008=mips64r6
+MULTILIB_REUSE := $(MULTILIB_REUSE)/mabi.32/EB/msoft-float/mnan.2008
+MULTILIB_REQUIRED += mips64r6/mabi=n32/EB/msoft-float/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r6/mabi.n32/EB/msoft-float/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-soft$(is_newlib)/lib32
+MULTILIB_REQUIRED += mips64r6/mabi=64/EB/msoft-float/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r6/mabi.64/EB/msoft-float/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-soft$(is_newlib)/lib64
+
+MULTILIB_REQUIRED += mips32r6/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mips32r6/mabi.32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-hard$(is_newlib)/lib
+MULTILIB_REUSE += mips32r6/mabi.32/EL/mnan.2008=
+MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r6/mabi.32/EL/mnan.2008
+MULTILIB_REQUIRED += mips64r6/mabi=n32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r6/mabi.n32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-hard$(is_newlib)/lib32
+MULTILIB_REQUIRED += mips64r6/mabi=64/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r6/mabi.64/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-hard$(is_newlib)/lib64
+
+MULTILIB_REQUIRED += mips32r6/mabi=32/EL/msoft-float/mnan=2008
+MULTILIB_OSDIRNAMES += mips32r6/mabi.32/EL/msoft-float/mnan.2008=
+MULTILIB_OSDIRNAMES :=$(MULTILIB_OSDIRNAMES)!mipsel-r6-soft$(is_newlib)/lib
+MULTILIB_REUSE += mips32r6/mabi.32/EL/msoft-float/mnan.2008=mips64r6
+MULTILIB_REUSE := $(MULTILIB_REUSE)/mabi.32/EL/msoft-float/mnan.2008
+MULTILIB_REQUIRED += mips64r6/mabi=n32/EL/msoft-float/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r6/mabi.n32/EL/msoft-float/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-soft$(is_newlib)/lib32
+MULTILIB_REQUIRED += mips64r6/mabi=64/EL/msoft-float/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r6/mabi.64/EL/msoft-float/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-soft$(is_newlib)/lib64
+
+# MIPS32R2/MIPS64R2
+MULTILIB_REQUIRED += mips32r2/mabi=32/EB
+MULTILIB_OSDIRNAMES += mips32r2/mabi.32/EB=!mips-r2-hard$(is_newlib)/lib
+MULTILIB_REUSE += mips32r2/mabi.32/EB=mips64r2/mabi.32/EB
+MULTILIB_REQUIRED += mips64r2/mabi=n32/EB
+MULTILIB_OSDIRNAMES += mips64r2/mabi.n32/EB=!mips-r2-hard$(is_newlib)/lib32
+MULTILIB_REQUIRED += mips64r2/mabi=64/EB
+MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EB=!mips-r2-hard$(is_newlib)/lib64
+
+MULTILIB_REQUIRED += mips32r2/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mips32r2/mabi.32/EB/mnan.2008=!mips-r2-hard-nan2008
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+MULTILIB_REUSE += mips32r2/mabi.32/EB/mnan.2008=
+MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r2/mabi.32/EB/mnan.2008
+MULTILIB_REQUIRED += mips64r2/mabi=n32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r2/mabi.n32/EB/mnan.2008=!mips-r2-hard-nan2008
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib32
+MULTILIB_REQUIRED += mips64r2/mabi=64/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EB/mnan.2008=!mips-r2-hard-nan2008
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib64
+
+MULTILIB_REQUIRED += mips32r2/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mips32r2/mabi.32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-soft$(is_newlib)/lib
+MULTILIB_REUSE += mips32r2/mabi.32/EB/msoft-float=
+MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r2/mabi.32/EB/msoft-float
+MULTILIB_REQUIRED += mips64r2/mabi=n32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mips64r2/mabi.n32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-soft$(is_newlib)/lib32
+MULTILIB_REQUIRED += mips64r2/mabi=64/EB/msoft-float
+MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-soft$(is_newlib)/lib64
+
+MULTILIB_REQUIRED += mips32r2/mabi=32/EL
+MULTILIB_OSDIRNAMES += mips32r2/mabi.32/EL=!mipsel-r2-hard$(is_newlib)/lib
+MULTILIB_REUSE += mips32r2/mabi.32/EL=mips64r2/mabi.32/EL
+MULTILIB_REQUIRED += mips64r2/mabi=n32/EL
+MULTILIB_OSDIRNAMES += mips64r2/mabi.n32/EL=!mipsel-r2-hard$(is_newlib)/lib32
+MULTILIB_REQUIRED += mips64r2/mabi=64/EL
+MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EL=!mipsel-r2-hard$(is_newlib)/lib64
+
+MULTILIB_REQUIRED += mips32r2/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mips32r2/mabi.32/EL/mnan.2008=!mipsel-r2-hard-nan2008
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+MULTILIB_REUSE += mips32r2/mabi.32/EL/mnan.2008=
+MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r2/mabi.32/EL/mnan.2008
+MULTILIB_REQUIRED += mips64r2/mabi=n32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r2/mabi.n32/EL/mnan.2008=!mipsel-r2-hard-nan2008
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib32
+MULTILIB_REQUIRED += mips64r2/mabi=64/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EL/mnan.2008=!mipsel-r2-hard-nan2008
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib64
+
+MULTILIB_REQUIRED += mips32r2/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mips32r2/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-soft$(is_newlib)/lib
+MULTILIB_REUSE += mips32r2/mabi.32/EL/msoft-float=
+MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r2/mabi.32/EL/msoft-float
+MULTILIB_REQUIRED += mips64r2/mabi=n32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mips64r2/mabi.n32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-soft$(is_newlib)/lib32
+MULTILIB_REQUIRED += mips64r2/mabi=64/EL/msoft-float
+MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-soft$(is_newlib)/lib64
+
+# MIPS16 - We will not include any 64 bit mips16 combinations.
+MULTILIB_REQUIRED += mips32r2/mips16/mabi=32/EB
+MULTILIB_OSDIRNAMES += mips32r2/mips16/mabi.32/EB=!mips-r2-mips16-hard
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+MULTILIB_REQUIRED += mips32r2/mips16/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mips32r2/mips16/mabi.32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-mips16-hard-nan2008
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+MULTILIB_REQUIRED += mips32r2/mips16/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mips32r2/mips16/mabi.32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-mips16-soft
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+
+MULTILIB_REQUIRED += mips32r2/mips16/mabi=32/EL
+MULTILIB_OSDIRNAMES += mips32r2/mips16/mabi.32/EL=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-mips16-hard
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+MULTILIB_REQUIRED += mips32r2/mips16/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mips32r2/mips16/mabi.32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-mips16-hard-nan2008
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+MULTILIB_REQUIRED += mips32r2/mips16/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mips32r2/mips16/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-mips16-soft
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+
+# microMIPS32R3 - We will not include any 64 bit microMIPS combinations
+MULTILIB_REQUIRED += mips32r2/mmicromips/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mips32r2/mmicromips/mabi.32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromips-r2-hard-nan2008
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+MULTILIB_REQUIRED += mips32r2/mmicromips/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mips32r2/mmicromips/mabi.32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromips-r2-soft$(is_newlib)/lib
+
+MULTILIB_REQUIRED += mips32r2/mmicromips/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mips32r2/mmicromips/mabi.32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromipsel-r2-hard-nan2008
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+MULTILIB_REQUIRED += mips32r2/mmicromips/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mips32r2/mmicromips/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromipsel-r2-soft
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+
+# Version 1 multilibs
+
+MULTILIB_REQUIRED += mips32/mabi=32/EB
+MULTILIB_OSDIRNAMES += mips32/mabi.32/EB=!mips-r1-hard$(is_newlib)/lib
+MULTILIB_REUSE += mips32/mabi.32/EB=mips64/mabi.32/EB
+MULTILIB_REQUIRED += mips64/mabi=n32/EB
+MULTILIB_OSDIRNAMES += mips64/mabi.n32/EB=!mips-r1-hard$(is_newlib)/lib32
+MULTILIB_REQUIRED += mips64/mabi=64/EB
+MULTILIB_OSDIRNAMES += mips64/mabi.64/EB=!mips-r1-hard$(is_newlib)/lib64
+
+MULTILIB_REQUIRED += mips32/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mips32/mabi.32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r1-soft$(is_newlib)/lib
+MULTILIB_REUSE += mips32/mabi.32/EB/msoft-float=
+MULTILIB_REUSE := $(MULTILIB_REUSE)mips64/mabi.32/EB/msoft-float
+MULTILIB_REQUIRED += mips64/mabi=n32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mips64/mabi.n32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r1-soft$(is_newlib)/lib32
+MULTILIB_REQUIRED += mips64/mabi=64/EB/msoft-float
+MULTILIB_OSDIRNAMES += mips64/mabi.64/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r1-soft$(is_newlib)/lib64
+
+MULTILIB_REQUIRED += mips32/mabi=32/EL
+MULTILIB_OSDIRNAMES += mips32/mabi.32/EL=!mipsel-r1-hard$(is_newlib)/lib
+MULTILIB_REUSE += mips32/mabi.32/EL=mips64/mabi.32/EL
+MULTILIB_REQUIRED += mips64/mabi=n32/EL
+MULTILIB_OSDIRNAMES += mips64/mabi.n32/EL=!mipsel-r1-hard$(is_newlib)/lib32
+MULTILIB_REQUIRED += mips64/mabi=64/EL
+MULTILIB_OSDIRNAMES += mips64/mabi.64/EL=!mipsel-r1-hard$(is_newlib)/lib64
+
+MULTILIB_REQUIRED += mips32/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mips32/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r1-soft$(is_newlib)/lib
+MULTILIB_REUSE += mips32/mabi.32/EL/msoft-float=
+MULTILIB_REUSE := $(MULTILIB_REUSE)mips64/mabi.32/EL/msoft-float
+MULTILIB_REQUIRED += mips64/mabi=n32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mips64/mabi.n32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r1-soft$(is_newlib)/lib32
+MULTILIB_REQUIRED += mips64/mabi=64/EL/msoft-float
+MULTILIB_OSDIRNAMES += mips64/mabi.64/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r1-soft$(is_newlib)/lib64
+
+# We will not include any 64 bit mips16 combinations.
+MULTILIB_REQUIRED += mips32/mips16/mabi=32/EB
+MULTILIB_OSDIRNAMES += mips32/mips16/mabi.32/EB=!mips-r1-mips16-hard
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+MULTILIB_REQUIRED += mips32/mips16/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mips32/mips16/mabi.32/EB/msoft-float=!mips-r1-mips16-soft
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+
+MULTILIB_REQUIRED += mips32/mips16/mabi=32/EL
+MULTILIB_OSDIRNAMES += mips32/mips16/mabi.32/EL=!mipsel-r1-mips16-hard
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+MULTILIB_REQUIRED += mips32/mips16/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mips32/mips16/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r1-mips16-soft
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)$(is_newlib)/lib
+
+# Uclibc variants
+MULTILIB_REQUIRED += muclibc/mips32r2/mabi=32/EB
+MULTILIB_OSDIRNAMES += muclibc/mips32r2/mabi.32/EB=!mips-r2-hard-uclibc/lib
+MULTILIB_REUSE += muclibc/mips32r2/mabi.32/EB=muclibc/mips64r2/mabi.32/EB
+MULTILIB_REQUIRED += muclibc/mips32r2/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += muclibc/mips32r2/mabi.32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-hard-nan2008-uclibc/lib
+MULTILIB_REUSE += muclibc/mips32r2/mabi.32/EB/mnan.2008=
+MULTILIB_REUSE := $(MULTILIB_REUSE)muclibc/mips64r2/mabi.32/EB/mnan.2008
+
+MULTILIB_REQUIRED += muclibc/mips32r2/mabi=32/EL
+MULTILIB_OSDIRNAMES += muclibc/mips32r2/mabi.32/EL=!mipsel-r2-hard-uclibc/lib
+MULTILIB_REUSE += muclibc/mips32r2/mabi.32/EL=muclibc/mips64r2/mabi.32/EL
+MULTILIB_REQUIRED += muclibc/mips32r2/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += muclibc/mips32r2/mabi.32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-hard-nan2008-uclibc/lib
+MULTILIB_REUSE += muclibc/mips32r2/mabi.32/EL/mnan.2008=
+MULTILIB_REUSE := $(MULTILIB_REUSE)muclibc/mips64r2/mabi.32/EL/mnan.2008
+
+# MIPS Small/Tiny C library variants
+MULTILIB_REQUIRED += mclib=small/mips32r6/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.small/mips32r6/mabi.32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-hard-small/lib
+MULTILIB_REUSE += mclib.small/mips32r6/mabi.32/EB/mnan.2008=mclib.small/
+MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r6/mabi.32/EB/mnan.2008
+MULTILIB_REQUIRED += mclib=small/mips32r6/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.small/mips32r6/mabi.32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-hard-small/lib
+MULTILIB_REUSE += mclib.small/mips32r6/mabi.32/EL/mnan.2008=mclib.small/
+MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r6/mabi.32/EL/mnan.2008
+MULTILIB_REQUIRED += mclib=small/mips32r6/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mclib.small/mips32r6/mabi.32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-soft-small/lib
+MULTILIB_REUSE += mclib.small/mips32r6/mabi.32/EB/msoft-float=mclib.small/
+MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r6/mabi.32/EB/msoft-float
+MULTILIB_REQUIRED += mclib=small/mips32r6/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mclib.small/mips32r6/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-soft-small/lib
+MULTILIB_REUSE += mclib.small/mips32r6/mabi.32/EL/msoft-float=mclib.small/
+MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r6/mabi.32/EL/msoft-float
+
+MULTILIB_REQUIRED += mclib=small/mips32r2/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mabi.32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-hard-nan2008-small/lib
+MULTILIB_REUSE += mclib.small/mips32r2/mabi.32/EB/mnan.2008=mclib.small/
+MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r2/mabi.32/EB/mnan.2008
+MULTILIB_REQUIRED += mclib=small/mips32r2/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mabi.32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-hard-nan2008-small/lib
+MULTILIB_REUSE += mclib.small/mips32r2/mabi.32/EL/mnan.2008=mclib.small/
+MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r2/mabi.32/EL/mnan.2008
+MULTILIB_REQUIRED += mclib=small/mips32r2/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mabi.32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-soft-small/lib
+MULTILIB_REUSE += mclib.small/mips32r2/mabi.32/EB/msoft-float=mclib.small/
+MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r2/mabi.32/EB/msoft-float
+MULTILIB_REQUIRED += mclib=small/mips32r2/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-soft-small/lib
+MULTILIB_REUSE += mclib.small/mips32r2/mabi.32/EL/msoft-float=mclib.small/
+MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r2/mabi.32/EL/msoft-float
+
+MULTILIB_REQUIRED += mclib=tiny/mips32r6/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r6/mabi.32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-hard-tiny/lib
+MULTILIB_REUSE += mclib.tiny/mips32r6/mabi.32/EB/mnan.2008=
+MULTILIB_REUSE := $(MULTILIB_REUSE)mclib.tiny/mips64r6/mabi.32/EB/mnan.2008
+MULTILIB_REQUIRED += mclib=tiny/mips32r6/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r6/mabi.32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-hard-tiny/lib
+MULTILIB_REUSE += mclib.tiny/mips32r6/mabi.32/EL/mnan.2008=
+MULTILIB_REUSE := $(MULTILIB_REUSE)mclib.tiny/mips64r6/mabi.32/EL/mnan.2008
+MULTILIB_REQUIRED += mclib=tiny/mips32r6/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r6/mabi.32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r6-soft-tiny/lib
+MULTILIB_REUSE += mclib.tiny/mips32r6/mabi.32/EB/msoft-float=mclib.tiny/
+MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r6/mabi.32/EB/msoft-float
+MULTILIB_REQUIRED += mclib=tiny/mips32r6/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r6/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r6-soft-tiny/lib
+MULTILIB_REUSE += mclib.tiny/mips32r6/mabi.32/EL/msoft-float=mclib.tiny/
+MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r6/mabi.32/EL/msoft-float
+
+MULTILIB_REQUIRED += mclib=tiny/mips32r2/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mabi.32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-hard-nan2008-tiny/lib
+MULTILIB_REUSE += mclib.tiny/mips32r2/mabi.32/EB/mnan.2008=
+MULTILIB_REUSE := $(MULTILIB_REUSE)mclib.tiny/mips64r2/mabi.32/EB/mnan.2008
+MULTILIB_REQUIRED += mclib=tiny/mips32r2/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mabi.32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-hard-nan2008-tiny/lib
+MULTILIB_REUSE += mclib.tiny/mips32r2/mabi.32/EL/mnan.2008=
+MULTILIB_REUSE := $(MULTILIB_REUSE)mclib.tiny/mips64r2/mabi.32/EL/mnan.2008
+MULTILIB_REQUIRED += mclib=tiny/mips32r2/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mabi.32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mips-r2-soft-tiny/lib
+MULTILIB_REUSE += mclib.tiny/mips32r2/mabi.32/EB/msoft-float=mclib.tiny/
+MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r2/mabi.32/EB/msoft-float
+MULTILIB_REQUIRED += mclib=tiny/mips32r2/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!mipsel-r2-soft-tiny/lib
+MULTILIB_REUSE += mclib.tiny/mips32r2/mabi.32/EL/msoft-float=mclib.tiny/
+MULTILIB_REUSE := $(MULTILIB_REUSE)mips64r2/mabi.32/EL/msoft-float
+
+# microMIPS Small/Tiny C library variants
+MULTILIB_REQUIRED += mclib=small/mips32r2/mmicromips/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mmicromips/mabi.32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromips-r2-hard-nan2008-small
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)/lib
+MULTILIB_REQUIRED += mclib=small/mips32r2/mmicromips/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mmicromips/mabi.32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromipsel-r2-hard-nan2008-small
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)/lib
+MULTILIB_REQUIRED += mclib=small/mips32r2/mmicromips/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mmicromips/mabi.32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromips-r2-soft-small/lib
+MULTILIB_REQUIRED += mclib=small/mips32r2/mmicromips/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mclib.small/mips32r2/mmicromips/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromipsel-r2-soft-small/lib
+
+MULTILIB_REQUIRED += mclib=tiny/mips32r2/mmicromips/mabi=32/EB/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mmicromips/mabi.32/EB/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromips-r2-hard-nan2008-tiny/lib
+MULTILIB_REQUIRED += mclib=tiny/mips32r2/mmicromips/mabi=32/EL/mnan=2008
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mmicromips/mabi.32/EL/mnan.2008=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromipsel-r2-hard-nan2008-tiny
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)/lib
+MULTILIB_REQUIRED += mclib=tiny/mips32r2/mmicromips/mabi=32/EB/msoft-float
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mmicromips/mabi.32/EB/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromips-r2-soft-tiny/lib
+MULTILIB_REQUIRED += mclib=tiny/mips32r2/mmicromips/mabi=32/EL/msoft-float
+MULTILIB_OSDIRNAMES += mclib.tiny/mips32r2/mmicromips/mabi.32/EL/msoft-float=
+MULTILIB_OSDIRNAMES := $(MULTILIB_OSDIRNAMES)!micromipsel-r2-soft-tiny/lib
deleted file mode 100644
@@ -1,48 +0,0 @@
-# Copyright (C) 2012-2024 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-# The default build is mips32r2, hard-float big-endian. Add mips32,
-# soft-float, and little-endian variations.
-
-MULTILIB_OPTIONS = mips32/mips64/mips64r2 mips16/mmicromips mabi=64 EL msoft-float mnan=2008
-MULTILIB_DIRNAMES = mips32 mips64 mips64r2 mips16 micromips 64 el sof nan2008
-MULTILIB_MATCHES = EL=mel EB=meb mips32r2=mips32r3 mips32r2=mips32r5 mips64r2=mips64r3 mips64r2=mips64r5
-
-# The 64 bit ABI is not supported on the mips32 architecture.
-MULTILIB_EXCEPTIONS += *mips32*/*mabi=64*
-
-# The 64 bit ABI is not supported on the mips32r2 architecture.
-# Because mips32r2 is the default we can't use that flag to trigger
-# the exception so we check for mabi=64 with no specific mips
-# architecture flag instead.
-MULTILIB_EXCEPTIONS += mabi=64*
-
-# We do not want to build mips16 versions of mips64* architectures.
-MULTILIB_EXCEPTIONS += *mips64*/*mips16*
-MULTILIB_EXCEPTIONS += *mips16/mabi=64*
-
-# We only want micromips for mips32r2 architecture.
-MULTILIB_EXCEPTIONS += *mips32/mmicromips*
-MULTILIB_EXCEPTIONS += *mips64*/mmicromips*
-MULTILIB_EXCEPTIONS += *mmicromips/mabi=64*
-
-# We do not want nan2008 libraries for soft-float,
-# mips32[r1], or mips64[r1].
-MULTILIB_EXCEPTIONS += *msoft-float*/*mnan=2008*
-MULTILIB_EXCEPTIONS += *mips32/*mnan=2008*
-MULTILIB_EXCEPTIONS += *mips64/*mnan=2008*
deleted file mode 100644
@@ -1,158 +0,0 @@
-# Copyright (C) 2012-2024 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-# The default build is mips32r2, hard-float big-endian. Add mips32,
-# soft-float, and little-endian variations.
-
-MULTILIB_OPTIONS = mips32/mips64/mips64r2 mips16/mmicromips mabi=64 EL msoft-float mnan=2008
-MULTILIB_DIRNAMES = mips32 mips64 mips64r2 mips16 micromips 64 el sof nan2008
-MULTILIB_MATCHES = EL=mel EB=meb mips32r2=mips32r3 mips32r2=mips32r5 mips64r2=mips64r3 mips64r2=mips64r5
-
-MULTILIB_REQUIRED =
-MULTILIB_OSDIRNAMES = .=mips-r2-hard/lib
-MULTILIB_REQUIRED += mips64r2
-MULTILIB_OSDIRNAMES += mips64r2=!mips-r2-hard/lib32
-MULTILIB_REQUIRED += mips64r2/mabi=64
-MULTILIB_OSDIRNAMES += mips64r2/mabi.64=!mips-r2-hard/lib64
-
-MULTILIB_REQUIRED += mnan=2008
-MULTILIB_OSDIRNAMES += mnan.2008=!mips-r2-hard-nan2008/lib
-MULTILIB_REQUIRED += mips64r2/mnan=2008
-MULTILIB_OSDIRNAMES += mips64r2/mnan.2008=!mips-r2-hard-nan2008/lib32
-MULTILIB_REQUIRED += mips64r2/mabi=64/mnan=2008
-MULTILIB_OSDIRNAMES += mips64r2/mabi.64/mnan.2008=!mips-r2-hard-nan2008/lib64
-
-MULTILIB_REQUIRED += msoft-float
-MULTILIB_OSDIRNAMES += msoft-float=!mips-r2-soft/lib
-MULTILIB_REQUIRED += mips64r2/msoft-float
-MULTILIB_OSDIRNAMES += mips64r2/msoft-float=!mips-r2-soft/lib32
-MULTILIB_REQUIRED += mips64r2/mabi=64/msoft-float
-MULTILIB_OSDIRNAMES += mips64r2/mabi.64/msoft-float=!mips-r2-soft/lib64
-
-#MULTILIB_REQUIRED += msoft-float/mnan=2008
-#MULTILIB_OSDIRNAMES += msoft-float/mnan.2008=!mips-r2-soft-nan2008/lib
-#MULTILIB_REQUIRED += mips64r2/msoft-float/mnan=2008
-#MULTILIB_OSDIRNAMES += mips64r2/msoft-float/mnan.2008=!mips-r2-soft-nan2008/lib32
-#MULTILIB_REQUIRED += mips64r2/mabi=64/msoft-float/mnan=2008
-#MULTILIB_OSDIRNAMES += mips64r2/mabi.64/msoft-float/mnan.2008=!mips-r2-soft-nan2008/lib64
-
-MULTILIB_REQUIRED += EL
-MULTILIB_OSDIRNAMES += EL=!mipsel-r2-hard/lib
-MULTILIB_REQUIRED += mips64r2/EL
-MULTILIB_OSDIRNAMES += mips64r2/EL=!mipsel-r2-hard/lib32
-MULTILIB_REQUIRED += mips64r2/mabi=64/EL
-MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EL=!mipsel-r2-hard/lib64
-
-MULTILIB_REQUIRED += EL/mnan=2008
-MULTILIB_OSDIRNAMES += EL/mnan.2008=!mipsel-r2-hard-nan2008/lib
-MULTILIB_REQUIRED += mips64r2/EL/mnan=2008
-MULTILIB_OSDIRNAMES += mips64r2/EL/mnan.2008=!mipsel-r2-hard-nan2008/lib32
-MULTILIB_REQUIRED += mips64r2/mabi=64/EL/mnan=2008
-MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EL/mnan.2008=!mipsel-r2-hard-nan2008/lib64
-
-MULTILIB_REQUIRED += EL/msoft-float
-MULTILIB_OSDIRNAMES += EL/msoft-float=!mipsel-r2-soft/lib
-MULTILIB_REQUIRED += mips64r2/EL/msoft-float
-MULTILIB_OSDIRNAMES += mips64r2/EL/msoft-float=!mipsel-r2-soft/lib32
-MULTILIB_REQUIRED += mips64r2/mabi=64/EL/msoft-float
-MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EL/msoft-float=!mipsel-r2-soft/lib64
-
-#MULTILIB_REQUIRED += EL/msoft-float/mnan=2008
-#MULTILIB_OSDIRNAMES += EL/msoft-float/mnan.2008=!mipsel-r2-soft-nan2008/lib
-#MULTILIB_REQUIRED += mips64r2/EL/msoft-float/mnan=2008
-#MULTILIB_OSDIRNAMES += mips64r2/EL/msoft-float/mnan.2008=!mipsel-r2-soft-nan2008/lib32
-#MULTILIB_REQUIRED += mips64r2/mabi=64/EL/msoft-float/mnan=2008
-#MULTILIB_OSDIRNAMES += mips64r2/mabi.64/EL/msoft-float/mnan.2008=!mipsel-r2-soft-nan2008/lib64
-
-# We will not include any 64 bit mips16 combinations.
-MULTILIB_REQUIRED += mips16
-MULTILIB_OSDIRNAMES += mips16=!mips-r2-mips16-hard/lib
-MULTILIB_REQUIRED += mips16/mnan=2008
-MULTILIB_OSDIRNAMES += mips16/mnan.2008=!mips-r2-mips16-hard-nan2008/lib
-MULTILIB_REQUIRED += mips16/msoft-float
-MULTILIB_OSDIRNAMES += mips16/msoft-float=!mips-r2-mips16-soft/lib
-#MULTILIB_REQUIRED += mips16/msoft-float/mnan=2008
-#MULTILIB_OSDIRNAMES += mips16/msoft-float/mnan.2008=!mips-r2-mips16-soft-nan2008/lib
-
-MULTILIB_REQUIRED += mips16/EL
-MULTILIB_OSDIRNAMES += mips16/EL=!mipsel-r2-mips16-hard/lib
-MULTILIB_REQUIRED += mips16/EL/mnan=2008
-MULTILIB_OSDIRNAMES += mips16/EL/mnan.2008=!mipsel-r2-mips16-hard-nan2008/lib
-MULTILIB_REQUIRED += mips16/EL/msoft-float
-MULTILIB_OSDIRNAMES += mips16/EL/msoft-float=!mipsel-r2-mips16-soft/lib
-#MULTILIB_REQUIRED += mips16/EL/msoft-float/mnan=2008
-#MULTILIB_OSDIRNAMES += mips16/EL/msoft-float/mnan.2008=!mipsel-r2-mips16-soft-nan2008/lib
-
-MULTILIB_REQUIRED += mmicromips
-MULTILIB_OSDIRNAMES += mmicromips=!micromips-r2-hard/lib
-MULTILIB_REQUIRED += mmicromips/mnan=2008
-MULTILIB_OSDIRNAMES += mmicromips/mnan.2008=!micromips-r2-hard-nan2008/lib
-MULTILIB_REQUIRED += mmicromips/msoft-float
-MULTILIB_OSDIRNAMES += mmicromips/msoft-float=!micromips-r2-soft/lib
-#MULTILIB_REQUIRED += mmicromips/msoft-float/mnan=2008
-#MULTILIB_OSDIRNAMES += mmicromips/msoft-float/mnan.2008=!micromips-r2-soft-nan2008/lib
-
-MULTILIB_REQUIRED += mmicromips/EL
-MULTILIB_OSDIRNAMES += mmicromips/EL=!micromipsel-r2-hard/lib
-MULTILIB_REQUIRED += mmicromips/EL/mnan=2008
-MULTILIB_OSDIRNAMES += mmicromips/EL/mnan.2008=!micromipsel-r2-hard-nan2008/lib
-MULTILIB_REQUIRED += mmicromips/EL/msoft-float
-MULTILIB_OSDIRNAMES += mmicromips/EL/msoft-float=!micromipsel-r2-soft/lib
-#MULTILIB_REQUIRED += mmicromips/EL/msoft-float/mnan=2008
-#MULTILIB_OSDIRNAMES += mmicromips/EL/msoft-float/mnan.2008=!micromipsel-r2-soft-nan2008/lib
-
-# Version 1 multilibs
-
-MULTILIB_REQUIRED += mips32
-MULTILIB_OSDIRNAMES += mips32=!mips-r1-hard/lib
-MULTILIB_REQUIRED += mips64
-MULTILIB_OSDIRNAMES += mips64=!mips-r1-hard/lib32
-MULTILIB_REQUIRED += mips64/mabi=64
-MULTILIB_OSDIRNAMES += mips64/mabi.64=!mips-r1-hard/lib64
-
-MULTILIB_REQUIRED += mips32/msoft-float
-MULTILIB_OSDIRNAMES += mips32/msoft-float=!mips-r1-soft/lib
-MULTILIB_REQUIRED += mips64/msoft-float
-MULTILIB_OSDIRNAMES += mips64/msoft-float=!mips-r1-soft/lib32
-MULTILIB_REQUIRED += mips64/mabi=64/msoft-float
-MULTILIB_OSDIRNAMES += mips64/mabi.64/msoft-float=!mips-r1-soft/lib64
-
-MULTILIB_REQUIRED += mips32/EL
-MULTILIB_OSDIRNAMES += mips32/EL=!mipsel-r1-hard/lib
-MULTILIB_REQUIRED += mips64/EL
-MULTILIB_OSDIRNAMES += mips64/EL=!mipsel-r1-hard/lib32
-MULTILIB_REQUIRED += mips64/mabi=64/EL
-MULTILIB_OSDIRNAMES += mips64/mabi.64/EL=!mipsel-r1-hard/lib64
-
-MULTILIB_REQUIRED += mips32/EL/msoft-float
-MULTILIB_OSDIRNAMES += mips32/EL/msoft-float=!mipsel-r1-soft/lib
-MULTILIB_REQUIRED += mips64/EL/msoft-float
-MULTILIB_OSDIRNAMES += mips64/EL/msoft-float=!mipsel-r1-soft/lib32
-MULTILIB_REQUIRED += mips64/mabi=64/EL/msoft-float
-MULTILIB_OSDIRNAMES += mips64/mabi.64/EL/msoft-float=!mipsel-r1-soft/lib64
-
-# We will not include any 64 bit mips16 combinations.
-MULTILIB_REQUIRED += mips32/mips16
-MULTILIB_OSDIRNAMES += mips32/mips16=!mips-r1-mips16-hard/lib
-MULTILIB_REQUIRED += mips32/mips16/msoft-float
-MULTILIB_OSDIRNAMES += mips32/mips16/msoft-float=!mips-r1-mips16-soft/lib
-
-MULTILIB_REQUIRED += mips32/mips16/EL
-MULTILIB_OSDIRNAMES += mips32/mips16/EL=!mipsel-r1-mips16-hard/lib
-MULTILIB_REQUIRED += mips32/mips16/EL/msoft-float
-MULTILIB_OSDIRNAMES += mips32/mips16/EL/msoft-float=!mipsel-r1-mips16-soft/lib
@@ -853,6 +853,7 @@ enable_fixed_point
enable_decimal_float
DEFAULT_INSNEMIT_PARTITIONS
DEFAULT_MATCHPD_PARTITIONS
+with_multi_buildlist
with_float
with_cpu
enable_multiarch
@@ -7870,6 +7871,9 @@ $as_echo "$enable_multiarch$ma_msg_suffix" >&6; }
+# needed for restricting the fixedincludes multilibs that we install
+
+
# default stack clash protection guard size as power of twos in bytes.
# Please keep these in sync with params.def.
stk_clash_min=12
@@ -21454,7 +21458,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 21457 "configure"
+#line 21461 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -21560,7 +21564,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 21563 "configure"
+#line 21567 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -877,6 +877,9 @@ AC_MSG_RESULT($enable_multiarch$ma_msg_suffix)
AC_SUBST(with_cpu)
AC_SUBST(with_float)
+# needed for restricting the fixedincludes multilibs that we install
+AC_SUBST(with_multi_buildlist)
+
# default stack clash protection guard size as power of twos in bytes.
# Please keep these in sync with params.def.
stk_clash_min=12
@@ -500,9 +500,6 @@ for rrule in ${multilib_reuse}; do
echo "The rule ${rrule} contains an option absent from MULTILIB_OPTIONS." >&2
exit 1
fi
- else
- echo "The rule ${rrule} is trying to reuse nonexistent multilib." >&2
- exit 1
fi
done