# Copyright (C) 2006-2022 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/>.

# GP-rel: G0 only
#
# Endianness: EB or EL
#
# ABIs: mabi=32
#	mabi=o64
#	mabi=o64/mlong64
#
# FPU: (default mhard-float)
#      msoft-float (only for mabi=32)
#

MULTILIB_EXTRA_OPTS = G0

MULTILIB_OPTIONS =			\
	EB/EL				\
	mabi=32/mabi=o64		\
	mips32/mips64                   \
	mlong64/msoft-float		\

MULTILIB_DIRNAMES =			\
	eb el				\
	o32 o64				\
	mips32 mips64			\
	long64 soft-float		\

MULTILIB_MATCHES =			\
	EB=meb EL=mel			\

MULTILIB_EXCEPTIONS =			\
        *mabi=32/*mlong64*		\

MULTILIB_EXCLUSIONS =			\
	mips32/!mabi=32                 \
	mabi=32/!mips32			\
	msoft-float/!mabi=32		\

# Small multilib list for quick builds and tests.
# Must either comment out everything above these lines, or everything below
# these lines.

#MULTILIB_OPTIONS = EB/EL msoft-float
#MULTILIB_DIRNAMES = eb el soft-float
#MULTILIB_MATCHES = EB=meb EL=mel
