# Makefile fragment for building GCC for the Renesas RX target.
# Copyright (C) 2008-2021 Free Software Foundation, Inc.
# Contributed by Red Hat.
#
# 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/>.

# Enable multilibs:

MULTILIB_OPTIONS    = m64bit-doubles  mnofpu        mbig-endian-data  mpid
MULTILIB_DIRNAMES   =  64-bit-double  no-fpu-libs   big-endian-data   pid

# If necessary uncomment the next two lines to generate multilibs
# using the old, broken, ABI.
# MULTILIB_OPTIONS    += mgcc-abi
# MULTILIB_DIRNAMES   +=  gcc-abi

MULTILIB_OPTIONS   += mno-allow-string-insns
MULTILIB_DIRNAMES  += no-strings

MULTILIB_MATCHES    = nofpu=mnofpu  nofpu=mcpu?rx200  nofpu=mcpu?rx100

MULTILIB_EXCEPTIONS =
MULTILIB_EXTRA_OPTS = 
