# Copyright (C) 2016-2018 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/>.

# This is a target makefile fragment that attempts to get
# multilibs built for the range of CPU's, FPU's and ABI's that
# are relevant for the ARM architecture.  It should not be used in
# conjunction with another make file fragment and assumes --with-arch,
# --with-cpu, --with-fpu, --with-float, --with-mode have their default
# values during the configure step.  We enforce this during the
# top-level configury.


# Arch and FPU variants to build libraries with

MULTI_ARCH_OPTS_RM	= march=armv6s-m/march=armv7-m/march=armv7e-m/march=armv7e-m+fp/march=armv7e-m+fp.dp/march=armv8-m.base/march=armv8-m.main/march=armv8-m.main+fp/march=armv8-m.main+fp.dp
MULTI_ARCH_DIRS_RM	= v6-m v7-m v7e-m v7e-m+fp v7e-m+dp v8-m.base v8-m.main v8-m.main+fp v8-m.main+dp

# Base M-profile (no fp)
MULTILIB_REQUIRED	+= mthumb/march=armv6s-m/mfloat-abi=soft
MULTILIB_REQUIRED	+= mthumb/march=armv7-m/mfloat-abi=soft
MULTILIB_REQUIRED	+= mthumb/march=armv7e-m/mfloat-abi=soft
MULTILIB_REQUIRED	+= mthumb/march=armv8-m.base/mfloat-abi=soft
MULTILIB_REQUIRED	+= mthumb/march=armv8-m.main/mfloat-abi=soft

# ARMv7e-M with FP (single and double precision variants)
MULTILIB_REQUIRED	+= mthumb/march=armv7e-m+fp/mfloat-abi=hard
MULTILIB_REQUIRED	+= mthumb/march=armv7e-m+fp/mfloat-abi=softfp
MULTILIB_REQUIRED	+= mthumb/march=armv7e-m+fp.dp/mfloat-abi=hard
MULTILIB_REQUIRED	+= mthumb/march=armv7e-m+fp.dp/mfloat-abi=softfp

# ARMv8-M with FP (single and double precision variants)
MULTILIB_REQUIRED	+= mthumb/march=armv8-m.main+fp/mfloat-abi=hard
MULTILIB_REQUIRED	+= mthumb/march=armv8-m.main+fp/mfloat-abi=softfp
MULTILIB_REQUIRED	+= mthumb/march=armv8-m.main+fp.dp/mfloat-abi=hard
MULTILIB_REQUIRED	+= mthumb/march=armv8-m.main+fp.dp/mfloat-abi=softfp



# Arch Matches
MULTILIB_MATCHES	+= march?armv6s-m=march?armv6-m

# Map all v8-m.main+dsp FP variants down the the variant without DSP.
MULTILIB_MATCHES	+= march?armv8-m.main=march?armv8-m.main+dsp \
			   $(foreach FP, +fp +fp.dp, \
			     march?armv8-m.main$(FP)=march?armv8-m.main+dsp$(FP))

# For single-precision only fpv5, use the base fp libraries
MULTILIB_MATCHES	+= march?armv7e-m+fp=march?armv7e-m+fpv5

# Softfp but no FP.  Use the soft-float libraries.
MULTILIB_REUSE		+= $(foreach ARCH, armv6s-m armv7-m armv7e-m armv8-m\.base armv8-m\.main, \
			     mthumb/march.$(ARCH)/mfloat-abi.soft=mthumb/march.$(ARCH)/mfloat-abi.softfp)

