# Target Makefile Fragment for TI C6X using ELF.
# Copyright (C) 2010-2021 Free Software Foundation, Inc.
# Contributed by CodeSourcery.
#
# 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/>.

EXTRA_HEADERS += $(srcdir)/ginclude/unwind-arm-common.h

# Use this variant for fully testing all CPU types
#MULTILIB_OPTIONS     = mbig-endian march=c674x/march=c64x/march=c67x/march=c67x+/march=c62x
#MULTILIB_DIRNAMES    = be c674x c64x c67x c67x+ c62x

MULTILIB_OPTIONS     = mbig-endian march=c674x
MULTILIB_DIRNAMES    = be c674x
MULTILIB_EXCEPTIONS  =
MULTILIB_MATCHES     =
