# GCC target-specific configuration file.
# Copyright (C) 1997-2020 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 the GCC target-specific configuration file
# where a configuration type is mapped to different system-specific
# definitions and files.  This is invoked by the autoconf-generated
# configure script.  Putting it in a separate shell file lets us skip
# running autoconf when modifying target-specific information.

# When you change the cases in the OS or target switches, consider
# updating ../libgcc/config.host also.

# This file switches on the shell variable ${target}, and also uses the
# following shell variables:
#
#  with_*		Various variables as set by configure.
#
#  enable_threads	Either the name, yes or no depending on whether
#			threads support was requested.
#
#  default_use_cxa_atexit
#			  The default value for the $enable___cxa_atexit
#			variable.  enable___cxa_atexit needs to be set to
#			"yes" for the correct operation of C++ destructors
#			but it relies upon the presence of a non-standard C
#			library	function called	__cxa_atexit.
#			  Since not all C libraries provide __cxa_atexit the
#			default value of $default_use_cxa_atexit is set to
#			"no" except for targets which are known to be OK.
#
#  default_gnu_indirect_function
#                       The default value for the $enable_gnu_indirect_function
#                       variable.  enable_gnu_indirect_function relies
#			upon the presence of a non-standard gnu ifunc support
#			in the assembler, linker and dynamic linker.
#			Since not all libraries provide the dynamic linking
#			support, the default value of
#			$default_gnu_indirect_function is set to
#			"no" except for targets which are known to be OK.
#
#  gas_flag		Either yes or no depending on whether GNU as was
#			requested.
#
#  gnu_ld_flag		Either yes or no depending on whether GNU ld was
#			requested.

# This file sets the following shell variables for use by the
# autoconf-generated configure script:
#
#  cpu_type		The name of the cpu, if different from the first
#			chunk of the canonical target name.
#
#  tm_defines		List of target macros to define for all compilations.
#
#  tm_file		A list of target macro files, if different from
#			"$cpu_type/$cpu_type.h". Usually it's constructed
#			per target in a way like this:
#			tm_file="${tm_file} dbxelf.h elfos.h ${cpu_type.h}/elf.h"
#			Note that the preferred order is:
#			- specific target header "${cpu_type}/${cpu_type.h}"
#			- generic headers like dbxelf.h elfos.h, etc.
#			- specializing target headers like ${cpu_type.h}/elf.h
#			This helps to keep OS specific stuff out of the CPU
#			defining header ${cpu_type}/${cpu_type.h}.
#
#			It is possible to include automatically-generated
#			build-directory files by prefixing them with "./".
#			All other files should relative to $srcdir/config.
#
#  tm_p_file		Location of file with declarations for functions
#			in $out_file.
#
#  tm_d_file		A list of headers with definitions of target hook
#			macros for the D compiler.
#
#  out_file		The name of the machine description C support
#			file, if different from "$cpu_type/$cpu_type.c".
#
#  common_out_file	The name of the source file for code shared between
#			the compiler proper and the driver.
#
#  md_file		The name of the machine-description file, if
#			different from "$cpu_type/$cpu_type.md".
#
#  tmake_file		A list of machine-description-specific
#			makefile-fragments, if different from
#			"$cpu_type/t-$cpu_type".
#
#  extra_modes          The name of the file containing a list of extra
#                       machine modes, if necessary and different from
#                       "$cpu_type/$cpu_type-modes.def".
#
#  extra_objs		List of extra objects that should be linked into
#			the compiler proper (cc1, cc1obj, cc1plus)
#			depending on target.
#
#  extra_gcc_objs	List of extra objects that should be linked into
#			the compiler driver (gcc) depending on target.
#
#  extra_headers	List of used header files from the directory
#			config/${cpu_type}.
#
#  user_headers_inc_next_pre
#			List of header file names of internal gcc header
#			files, which should be prefixed by an include_next.
#  user_headers_inc_next_post
#			List of header file names of internal gcc header
#			files, which should be postfixed by an include_next.
#  use_gcc_tgmath	If set, add tgmath.h to the list of used header
#			files.
#
#  use_gcc_stdint	If "wrap", install a version of stdint.h that
#			wraps the system's copy for hosted compilations;
#			if "provide", provide a version of systems without
#			such a system header; otherwise "none", do not
#			provide such a header at all.
#
#  extra_programs	List of extra executables compiled for this target
#			machine, used when linking.
#
#  extra_options	List of target-dependent .opt files.
#
#  c_target_objs	List of extra target-dependent objects that be
#			linked into the C compiler only.
#
#  cxx_target_objs	List of extra target-dependent objects that be
#			linked into the C++ compiler only.
#
#  d_target_objs	List of extra target-dependent objects that be
#			linked into the D compiler only.
#
#  fortran_target_objs	List of extra target-dependent objects that be
#			linked into the fortran compiler only.
#
#  target_gtfiles       List of extra source files with type information.
#
#  xm_defines		List of macros to define when compiling for the
#			target machine.
#
#  xm_file		List of files to include when compiling for the
#			target machine.
#
#  use_collect2		Set to yes or no, depending on whether collect2
#			will be used.
#
#  target_cpu_default	Set to override the default target model.
#
#  gdb_needs_out_file_path
#			Set to yes if gdb needs a dir command with
#			`dirname $out_file`.
#
#  thread_file		Set to control which thread package to use.
#
#  gas			Set to yes or no depending on whether the target
#			system normally uses GNU as.
#
#  configure_default_options
#			Set to an initializer for configure_default_options
#			in configargs.h, based on --with-cpu et cetera.
#
#  native_system_header_dir
#			Where system header files are found for this
#			target.  This defaults to /usr/include.  If
#			the --with-sysroot configure option or the
#			--sysroot command line option is used this
#			will be relative to the sysroot.
# target_type_format_char 
# 			The default character to be used for formatting
#			the attribute in a
#			.type symbol_name, ${t_t_f_c}<property>
#			directive.

# The following variables are used in each case-construct to build up the
# outgoing variables:
#
#  gnu_ld		Set to yes or no depending on whether the target
#			system normally uses GNU ld.
#
#  target_has_targetcm	Set to yes or no depending on whether the target
#			has its own definition of targetcm.
#
#  target_has_targetm_common	Set to yes or no depending on whether the
#			target has its own definition of targetm_common.
#
#  target_has_targetdm	Set to yes or no depending on whether the target
#			has its own definition of targetdm.

out_file=
common_out_file=
tmake_file=
extra_headers=
user_headers_inc_next_pre=
user_headers_inc_next_post=
use_gcc_tgmath=yes
use_gcc_stdint=none
extra_programs=
extra_objs=
extra_gcc_objs=
extra_options=
c_target_objs=
cxx_target_objs=
d_target_objs=
fortran_target_objs=
target_has_targetcm=no
target_has_targetm_common=yes
target_has_targetdm=no
tm_defines=
xm_defines=
# Set this to force installation and use of collect2.
use_collect2=
# Set this to override the default target model.
target_cpu_default=
# Set this if gdb needs a dir command with `dirname $out_file`
gdb_needs_out_file_path=
# Set this to control which thread package will be used.
thread_file=
# Reinitialize these from the flag values every loop pass, since some
# configure entries modify them.
gas="$gas_flag"
gnu_ld="$gnu_ld_flag"
default_use_cxa_atexit=no
default_gnu_indirect_function=no
target_gtfiles=
need_64bit_isa=
native_system_header_dir=/usr/include
target_type_format_char='@'

# Don't carry these over build->host->target.  Please.
xm_file=
md_file=

# Obsolete configurations.
case ${target} in
  tile*-*-*				\
 | crisv32-*-*				\
 | cris-*-linux*			\
 )
    if test "x$enable_obsolete" != xyes; then
      echo "*** Configuration ${target} is obsolete." >&2
      echo "*** Specify --enable-obsolete to build it anyway." >&2
      echo "*** Support will be REMOVED in the next major release of GCC," >&2
      echo "*** unless a maintainer comes forward." >&2
      exit 1
    fi;;
esac

# Unsupported targets list.  Do not put an entry in this list unless
# it would otherwise be caught by a more permissive pattern.  The list
# should be in alphabetical order.
case ${target} in
 # Avoid special cases that are not obsolete
   arm*-*-*eabi*			\
 )
	;;
   arm*-wince-pe*			\
 | arm*-*-ecos-elf			\
 | arm*-*-elf				\
 | arm*-*-linux*			\
 | arm*-*-uclinux*			\
 | i[34567]86-go32-*			\
 | i[34567]86-*-go32*			\
 | m68k-*-uclinuxoldabi*		\
 | mips64orion*-*-rtems*		\
 | pdp11-*-bsd				\
 | powerpc*-*-linux*paired*		\
 | powerpc*-*-*spe*			\
 | sparc-hal-solaris2*			\
 | spu*-*-*				\
 | thumb-*-*				\
 | *-*-freebsd[12] | *-*-freebsd[1234].* \
 | *-*-freebsd*aout*			\
 | *-*-linux*aout*			\
 | *-*-linux*coff*			\
 | *-*-linux*libc1*			\
 | *-*-linux*oldld*			\
 | *-*-rtemsaout*			\
 | *-*-rtemscoff*			\
 | *-*-solaris2				\
 | *-*-solaris2.[0-9]			\
 | *-*-solaris2.[0-9].*			\
 | *-*-solaris2.10*			\
 | *-*-sysv*				\
 | vax-*-vms*				\
 )
	echo "*** Configuration ${target} not supported" 1>&2
	exit 1
	;;
esac

# Set default cpu_type, tm_file, tm_p_file and xm_file so it can be
# updated in each machine entry.  Also set default extra_headers for some
# machines.
tm_p_file=
cpu_type=`echo ${target} | sed 's/-.*$//'`
cpu_is_64bit=
case ${target} in
m32c*-*-*)
        cpu_type=m32c
	tmake_file=m32c/t-m32c
	target_has_targetm_common=no
        ;;
aarch64*-*-*)
	cpu_type=aarch64
	extra_headers="arm_fp16.h arm_neon.h arm_bf16.h arm_acle.h arm_sve.h"
	c_target_objs="aarch64-c.o"
	cxx_target_objs="aarch64-c.o"
	d_target_objs="aarch64-d.o"
	extra_objs="aarch64-builtins.o aarch-common.o aarch64-sve-builtins.o aarch64-sve-builtins-shapes.o aarch64-sve-builtins-base.o aarch64-sve-builtins-sve2.o cortex-a57-fma-steering.o aarch64-speculation.o falkor-tag-collision-avoidance.o aarch64-bti-insert.o"
	target_gtfiles="\$(srcdir)/config/aarch64/aarch64-builtins.c \$(srcdir)/config/aarch64/aarch64-sve-builtins.h \$(srcdir)/config/aarch64/aarch64-sve-builtins.cc"
	target_has_targetm_common=yes
	;;
alpha*-*-*)
	cpu_type=alpha
	extra_options="${extra_options} g.opt"
	;;
amdgcn*)
	cpu_type=gcn
	use_gcc_stdint=wrap
	;;
am33_2.0-*-linux*)
	cpu_type=mn10300
	;;
arc*-*-*)
	cpu_type=arc
	c_target_objs="arc-c.o"
	cxx_target_objs="arc-c.o"
	extra_options="${extra_options} arc/arc-tables.opt g.opt"
	extra_headers="arc-simd.h"
	;;
arm*-*-*)
	cpu_type=arm
	extra_objs="arm-builtins.o aarch-common.o"
	extra_headers="mmintrin.h arm_neon.h arm_acle.h arm_fp16.h arm_cmse.h arm_bf16.h arm_mve_types.h arm_mve.h arm_cde.h"
	target_type_format_char='%'
	c_target_objs="arm-c.o"
	cxx_target_objs="arm-c.o"
	d_target_objs="arm-d.o"
	extra_options="${extra_options} arm/arm-tables.opt"
	target_gtfiles="\$(srcdir)/config/arm/arm-builtins.c"
	;;
avr-*-*)
	cpu_type=avr
	c_target_objs="avr-c.o"
	cxx_target_objs="avr-c.o"
	;;
bfin*-*)
	cpu_type=bfin
	;;
bpf-*-*)
	cpu_type=bpf
	;;
crisv32-*)
	cpu_type=cris
	;;
frv*)	cpu_type=frv
	extra_options="${extra_options} g.opt"
	;;
ft32*)	cpu_type=ft32
	target_has_targetm_common=no
	;;
moxie*)	cpu_type=moxie
	target_has_targetm_common=no
	;;
fido-*-*)
	cpu_type=m68k
	extra_headers=math-68881.h
	extra_options="${extra_options} m68k/m68k-tables.opt"
        ;;
i[34567]86-*-*)
	cpu_type=i386
	c_target_objs="i386-c.o"
	cxx_target_objs="i386-c.o"
	d_target_objs="i386-d.o"
	extra_objs="x86-tune-sched.o x86-tune-sched-bd.o x86-tune-sched-atom.o x86-tune-sched-core.o i386-options.o i386-builtins.o i386-expand.o i386-features.o"
	target_gtfiles="\$(srcdir)/config/i386/i386-builtins.c \$(srcdir)/config/i386/i386-expand.c \$(srcdir)/config/i386/i386-options.c"
	extra_options="${extra_options} fused-madd.opt"
	extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h
		       pmmintrin.h tmmintrin.h ammintrin.h smmintrin.h
		       nmmintrin.h bmmintrin.h fma4intrin.h wmmintrin.h
		       immintrin.h x86intrin.h avxintrin.h xopintrin.h
		       ia32intrin.h cross-stdarg.h lwpintrin.h popcntintrin.h
		       lzcntintrin.h bmiintrin.h bmi2intrin.h tbmintrin.h
		       avx2intrin.h avx512fintrin.h fmaintrin.h f16cintrin.h
		       rtmintrin.h xtestintrin.h rdseedintrin.h prfchwintrin.h
		       adxintrin.h fxsrintrin.h xsaveintrin.h xsaveoptintrin.h
		       avx512cdintrin.h avx512erintrin.h avx512pfintrin.h
		       shaintrin.h clflushoptintrin.h xsavecintrin.h
		       xsavesintrin.h avx512dqintrin.h avx512bwintrin.h
		       avx512vlintrin.h avx512vlbwintrin.h avx512vldqintrin.h
		       avx512ifmaintrin.h avx512ifmavlintrin.h avx512vbmiintrin.h
		       avx512vbmivlintrin.h avx5124fmapsintrin.h avx5124vnniwintrin.h
		       avx512vpopcntdqintrin.h clwbintrin.h mwaitxintrin.h
		       clzerointrin.h pkuintrin.h sgxintrin.h cetintrin.h
		       gfniintrin.h cet.h avx512vbmi2intrin.h
		       avx512vbmi2vlintrin.h avx512vnniintrin.h
		       avx512vnnivlintrin.h vaesintrin.h vpclmulqdqintrin.h
		       avx512vpopcntdqvlintrin.h avx512bitalgintrin.h
		       pconfigintrin.h wbnoinvdintrin.h movdirintrin.h
		       waitpkgintrin.h cldemoteintrin.h avx512bf16vlintrin.h avx512bf16intrin.h
		       enqcmdintrin.h avx512vp2intersectintrin.h avx512vp2intersectvlintrin.h"
	;;
x86_64-*-*)
	cpu_type=i386
	c_target_objs="i386-c.o"
	cxx_target_objs="i386-c.o"
	d_target_objs="i386-d.o"
	extra_options="${extra_options} fused-madd.opt"
	extra_objs="x86-tune-sched.o x86-tune-sched-bd.o x86-tune-sched-atom.o x86-tune-sched-core.o i386-options.o i386-builtins.o i386-expand.o i386-features.o"
	target_gtfiles="\$(srcdir)/config/i386/i386-builtins.c \$(srcdir)/config/i386/i386-expand.c \$(srcdir)/config/i386/i386-options.c"
	extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h
		       pmmintrin.h tmmintrin.h ammintrin.h smmintrin.h
		       nmmintrin.h bmmintrin.h fma4intrin.h wmmintrin.h
		       immintrin.h x86intrin.h avxintrin.h xopintrin.h
		       ia32intrin.h cross-stdarg.h lwpintrin.h popcntintrin.h
		       lzcntintrin.h bmiintrin.h bmi2intrin.h tbmintrin.h
		       avx2intrin.h avx512fintrin.h fmaintrin.h f16cintrin.h
		       rtmintrin.h xtestintrin.h rdseedintrin.h prfchwintrin.h
		       adxintrin.h fxsrintrin.h xsaveintrin.h xsaveoptintrin.h
		       avx512cdintrin.h avx512erintrin.h avx512pfintrin.h
		       shaintrin.h clflushoptintrin.h xsavecintrin.h
		       xsavesintrin.h avx512dqintrin.h avx512bwintrin.h
		       avx512vlintrin.h avx512vlbwintrin.h avx512vldqintrin.h
		       avx512ifmaintrin.h avx512ifmavlintrin.h avx512vbmiintrin.h
		       avx512vbmivlintrin.h avx5124fmapsintrin.h avx5124vnniwintrin.h
		       avx512vpopcntdqintrin.h clwbintrin.h mwaitxintrin.h
		       clzerointrin.h pkuintrin.h sgxintrin.h cetintrin.h
		       gfniintrin.h cet.h avx512vbmi2intrin.h
		       avx512vbmi2vlintrin.h avx512vnniintrin.h
		       avx512vnnivlintrin.h vaesintrin.h vpclmulqdqintrin.h
		       avx512vpopcntdqvlintrin.h avx512bitalgintrin.h
		       pconfigintrin.h wbnoinvdintrin.h movdirintrin.h
		       waitpkgintrin.h cldemoteintrin.h avx512bf16vlintrin.h avx512bf16intrin.h
		       enqcmdintrin.h avx512vp2intersectintrin.h avx512vp2intersectvlintrin.h"
	;;
ia64-*-*)
	extra_headers=ia64intrin.h
	extra_options="${extra_options} g.opt fused-madd.opt"
	;;
hppa*-*-*)
	cpu_type=pa
	;;
lm32*)
	extra_options="${extra_options} g.opt"
	;;
m32r*-*-*)
        cpu_type=m32r
	extra_options="${extra_options} g.opt"
        ;;
m68k-*-*)
	extra_headers=math-68881.h
	extra_options="${extra_options} m68k/m68k-tables.opt"
	;;
microblaze*-*-*)
        cpu_type=microblaze
	extra_options="${extra_options} g.opt"
        ;;
mips*-*-*)
	cpu_type=mips
	d_target_objs="mips-d.o"
	extra_headers="loongson.h loongson-mmiintrin.h msa.h"
	extra_objs="frame-header-opt.o"
	extra_options="${extra_options} g.opt fused-madd.opt mips/mips-tables.opt"
	;;
nds32*)
	cpu_type=nds32
	extra_headers="nds32_intrinsic.h nds32_isr.h nds32_init.inc"
	case ${target} in
	  nds32*-*-linux*)
	    extra_options="${extra_options} nds32/nds32-linux.opt"
	    ;;
	  nds32*-*-elf*)
	    extra_options="${extra_options} nds32/nds32-elf.opt"
	    ;;
	  *)
	    ;;
	esac
	extra_objs="nds32-cost.o nds32-intrinsic.o nds32-isr.o nds32-md-auxiliary.o nds32-pipelines-auxiliary.o nds32-predicates.o nds32-memory-manipulation.o nds32-fp-as-gp.o nds32-relax-opt.o nds32-utils.o"
	;;
nios2-*-*)
	cpu_type=nios2
	extra_options="${extra_options} g.opt"
	;;
nvptx-*-*)
	cpu_type=nvptx
	;;
or1k*-*-*)
	cpu_type=or1k
	;;
powerpc*-*-*)
	cpu_type=rs6000
	extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o rs6000-call.o"
	extra_headers="ppc-asm.h altivec.h htmintrin.h htmxlintrin.h"
	extra_headers="${extra_headers} bmi2intrin.h bmiintrin.h"
	extra_headers="${extra_headers} xmmintrin.h mm_malloc.h emmintrin.h"
	extra_headers="${extra_headers} mmintrin.h x86intrin.h"
	extra_headers="${extra_headers} pmmintrin.h tmmintrin.h smmintrin.h"
	extra_headers="${extra_headers} ppu_intrinsics.h spu2vmx.h vec_types.h si2vmx.h"
	extra_headers="${extra_headers} amo.h"
	case x$with_cpu in
	    xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[3456789]|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|xe6500|xfuture)
		cpu_is_64bit=yes
		;;
	esac
	extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
	target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.c \$(srcdir)/config/rs6000/rs6000-call.c"
	;;
pru-*-*)
	cpu_type=pru
	;;
riscv*)
	cpu_type=riscv
	extra_objs="riscv-builtins.o riscv-c.o riscv-sr.o"
	d_target_objs="riscv-d.o"
	;;
rs6000*-*-*)
	extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
	extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o rs6000-call.o"
	target_gtfiles="$target_gtfiles \$(srcdir)/config/rs6000/rs6000-logue.c \$(srcdir)/config/rs6000/rs6000-call.c"
	;;
sparc*-*-*)
	cpu_type=sparc
	c_target_objs="sparc-c.o"
	cxx_target_objs="sparc-c.o"
	d_target_objs="sparc-d.o"
	extra_headers="visintrin.h"
	;;
s390*-*-*)
	cpu_type=s390
	d_target_objs="s390-d.o"
	extra_options="${extra_options} fused-madd.opt"
	extra_headers="s390intrin.h htmintrin.h htmxlintrin.h vecintrin.h"
	;;
# Note the 'l'; we need to be able to match e.g. "shle" or "shl".
sh[123456789lbe]*-*-* | sh-*-*)
	cpu_type=sh
	extra_options="${extra_options} fused-madd.opt"
	extra_objs="${extra_objs} sh_treg_combine.o sh-mem.o sh_optimize_sett_clrt.o"
	;;
v850*-*-*)
	cpu_type=v850
	;;
tic6x-*-*)
	cpu_type=c6x
	extra_headers="c6x_intrinsics.h"
	extra_options="${extra_options} c6x/c6x-tables.opt"
	;;
xtensa*-*-*)
	extra_options="${extra_options} fused-madd.opt"
	;;
tilegx*-*-*)
	cpu_type=tilegx
	;;
tilepro*-*-*)
	cpu_type=tilepro
	;;
esac

tm_file=${cpu_type}/${cpu_type}.h
tm_d_file=${cpu_type}/${cpu_type}.h
if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-protos.h
then
	tm_p_file=${cpu_type}/${cpu_type}-protos.h
	tm_d_file="${tm_d_file} ${cpu_type}/${cpu_type}-protos.h"
fi

extra_modes=
if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-modes.def
then
	extra_modes=${cpu_type}/${cpu_type}-modes.def
fi
if test -f ${srcdir}/config/${cpu_type}/${cpu_type}.opt
then
	extra_options="${extra_options} ${cpu_type}/${cpu_type}.opt"
fi

case ${target} in
aarch64*-*-*)
	tm_p_file="${tm_p_file} arm/aarch-common-protos.h"
	case ${with_abi} in
	"")
		if test "x$with_multilib_list" = xilp32; then
			tm_file="aarch64/biarchilp32.h ${tm_file}"
		else
			tm_file="aarch64/biarchlp64.h ${tm_file}"
		fi
		;;
	ilp32)
		tm_file="aarch64/biarchilp32.h ${tm_file}"
		;;
	lp64)
		tm_file="aarch64/biarchlp64.h ${tm_file}"
		;;
	*)
		echo "Unknown ABI used in --with-abi=$with_abi"
		exit 1
	esac
	;;
i[34567]86-*-*)
	if test "x$with_abi" != x; then
		echo "This target does not support --with-abi."
		exit 1
	fi
	;;
x86_64-*-*)
	case ${with_abi} in
	"")
		if test "x$with_multilib_list" = xmx32; then
			tm_file="i386/biarchx32.h ${tm_file}"
		else
			tm_file="i386/biarch64.h ${tm_file}"
		fi
		;;
	64 | m64)
		tm_file="i386/biarch64.h ${tm_file}"
		;;
	x32 | mx32)
		tm_file="i386/biarchx32.h ${tm_file}"
		;;
	*)
		echo "Unknown ABI used in --with-abi=$with_abi"
		exit 1
	esac
	;;
arm*-*-*)
	tm_p_file="arm/arm-flags.h ${tm_p_file} arm/aarch-common-protos.h"
	;;
esac

# On a.out targets, we need to use collect2.
case ${target} in
*-*-*aout*)
	use_collect2=yes
	;;
esac

# Common C libraries.
tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"

# 32-bit x86 processors supported by --with-arch=.  Each processor
# MUST be separated by exactly one space.
x86_archs="athlon athlon-4 athlon-fx athlon-mp athlon-tbird \
athlon-xp k6 k6-2 k6-3 geode c3 c3-2 winchip-c6 winchip2 i386 i486 \
i586 i686 pentium pentium-m pentium-mmx pentium2 pentium3 pentium3m \
pentium4 pentium4m pentiumpro prescott lakemont"

# 64-bit x86 processors supported by --with-arch=.  Each processor
# MUST be separated by exactly one space.
x86_64_archs="amdfam10 athlon64 athlon64-sse3 barcelona bdver1 bdver2 \
bdver3 bdver4 znver1 znver2 btver1 btver2 k8 k8-sse3 opteron \
opteron-sse3 nocona core2 corei7 corei7-avx core-avx-i core-avx2 atom \
slm nehalem westmere sandybridge ivybridge haswell broadwell bonnell \
silvermont knl knm skylake-avx512 cannonlake icelake-client icelake-server \
skylake goldmont goldmont-plus tremont cascadelake tigerlake cooperlake x86-64 \
native"

# Additional x86 processors supported by --with-cpu=.  Each processor
# MUST be separated by exactly one space.
x86_cpus="generic intel"

# Common parts for widely ported systems.
case ${target} in
*-*-darwin*)
  tmake_file="t-darwin "
  tm_file="${tm_file} darwin.h"
  case ${target} in
  *-*-darwin9*)
    tm_file="${tm_file} darwin9.h"
    ;;
  *-*-darwin[1][01]*)
    tm_file="${tm_file} darwin9.h darwin10.h"
    ;;
  *-*-darwin[1][2-9]* | *-*-darwin[2][0-9]*)
    tm_file="${tm_file} darwin9.h darwin10.h darwin12.h"
    ;;
  esac
  tm_file="${tm_file} ${cpu_type}/darwin.h"
  tm_p_file="${tm_p_file} darwin-protos.h"
  target_gtfiles="$target_gtfiles \$(srcdir)/config/darwin.c"
  extra_options="${extra_options} darwin.opt"
  c_target_objs="${c_target_objs} darwin-c.o"
  cxx_target_objs="${cxx_target_objs} darwin-c.o"
  fortran_target_objs="darwin-f.o"
  target_has_targetcm=yes
  extra_objs="${extra_objs} darwin.o"
  extra_gcc_objs="darwin-driver.o"
  default_use_cxa_atexit=yes
  use_gcc_stdint=wrap
  case ${enable_threads} in
    "" | yes | posix) thread_file='posix' ;;
  esac
  ;;
*-*-dragonfly*)
  gas=yes
  gnu_ld=yes
  tmake_file="t-slibgcc"
  case ${enable_threads} in
    "" | yes | posix)
      thread_file='posix'
      ;;
    no | single)
      # Let these non-posix thread selections fall through if requested
      ;;
    *)
      echo 'Unknown thread configuration for DragonFly BSD'
      exit 1
      ;;
  esac
  extra_options="$extra_options rpath.opt dragonfly.opt"
  default_use_cxa_atexit=yes
  use_gcc_stdint=wrap
  ;;
*-*-freebsd*)
  # This is the generic ELF configuration of FreeBSD.  Later
  # machine-specific sections may refine and add to this
  # configuration.
  #
  # Due to tm_file entry ordering issues that vary between cpu
  # architectures, we only define fbsd_tm_file to allow the
  # machine-specific section to dictate the final order of all
  # entries of tm_file with the minor exception that components
  # of the tm_file set here will always be of the form:
  #
  # freebsd<version_number>.h [freebsd-<conf_option>.h ...] freebsd-spec.h freebsd.h
  #
  # The machine-specific section should not tamper with this
  # ordering but may order all other entries of tm_file as it
  # pleases around the provided core setting.
  gas=yes
  gnu_ld=yes
  fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
  if test "$fbsd_major" = ""; then
    echo "Specify the major version number of the targeted FreeBSD release"
    echo "like this: --target=amd64-unknown-freebsd10.1"
    exit 1
  fi
  tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
  tmake_file="t-slibgcc"
  case ${enable_threads} in
    no)
      fbsd_tm_file="${fbsd_tm_file} freebsd-nthr.h"
      ;;
    "" | yes | posix)
      thread_file='posix'
      ;;
    *)
      echo 'Unknown thread configuration for FreeBSD'
      exit 1
      ;;
  esac
  fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h freebsd-stdint.h"
  extra_options="$extra_options rpath.opt freebsd.opt"
  case ${target} in
    *-*-freebsd[345].*)
      :;;
    *)
      default_use_cxa_atexit=yes;;
  esac
  use_gcc_stdint=wrap
  ;;
*-*-fuchsia*)
  native_system_header_dir=/include
  ;;
*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)
  extra_options="$extra_options gnu-user.opt"
  gas=yes
  gnu_ld=yes
  case ${enable_threads} in
    "" | yes | posix) thread_file='posix' ;;
  esac
  tmake_file="t-slibgcc"
  case $target in
    *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
      :;;
    *-*-gnu*)
      native_system_header_dir=/include
      ;;
  esac
  # Linux C libraries selection switch: glibc / uclibc / bionic.
  # uclibc and bionic aren't usable for GNU/Hurd and neither for GNU/k*BSD.
  case $target in
    *linux*)
      tm_p_file="${tm_p_file} linux-protos.h"
      tmake_file="${tmake_file} t-linux"
      extra_objs="${extra_objs} linux.o"
      extra_options="${extra_options} linux.opt"
      ;;
  esac
  case $target in
    *-*-*android*)
      tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC"
      ;;
    *-*-*uclibc* | *-*-uclinuxfdpiceabi)
      tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
      ;;
    *-*-*musl*)
      tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
      ;;
    *)
      tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
      ;;
  esac
  # Assume that glibc or uClibc or Bionic are being used and so __cxa_atexit
  # is provided.
  default_use_cxa_atexit=yes
  use_gcc_tgmath=no
  use_gcc_stdint=wrap
  # Enable compilation for Android by default for *android* targets.
  case $target in
    *-*-*android*)
      tm_defines="$tm_defines ANDROID_DEFAULT=1"
      ;;
    *)
      tm_defines="$tm_defines ANDROID_DEFAULT=0"
      ;;
  esac
  c_target_objs="${c_target_objs} glibc-c.o"
  cxx_target_objs="${cxx_target_objs} glibc-c.o"
  d_target_objs="${d_target_objs} glibc-d.o"
  tmake_file="${tmake_file} t-glibc"
  target_has_targetcm=yes
  target_has_targetdm=yes
  ;;
*-*-netbsd*)
  tm_p_file="${tm_p_file} netbsd-protos.h"
  tmake_file="t-netbsd t-slibgcc"
  extra_objs="${extra_objs} netbsd.o"
  d_target_objs="${d_target_objs} netbsd-d.o"
  gas=yes
  gnu_ld=yes
  use_gcc_stdint=wrap
  case ${enable_threads} in
    "" | yes | posix) thread_file='posix' ;;
  esac
  nbsd_tm_file="netbsd.h netbsd-stdint.h netbsd-elf.h"
  default_use_cxa_atexit=yes
  target_has_targetdm=yes
  case ${target} in
    arm*-* | i[34567]86-* | powerpc*-* | sparc*-* | x86_64-*)
      default_gnu_indirect_function=yes
      ;;
  esac
  ;;
*-*-openbsd*)
  tmake_file="t-openbsd"
  case ${enable_threads} in
    yes)
      thread_file='posix'
      ;;
  esac
  case ${target} in
    *-*-openbsd4.[3-9]|*-*-openbsd[5-9]*)
      default_use_cxa_atexit=yes
      ;;
  esac
  ;;
*-*-phoenix*)
  gas=yes
  gnu_ld=yes
  default_use_cxa_atexit=yes
  ;;
*-*-rtems*)
  case ${enable_threads} in
    "" | yes | rtems) thread_file='rtems' ;;
    posix) thread_file='posix' ;;
    no) ;;
    *)
      echo 'Unknown thread configuration for RTEMS'
      exit 1
      ;;
  esac
  tmake_file="${tmake_file} t-rtems"
  extra_options="${extra_options} rtems.opt"
  default_use_cxa_atexit=yes
  use_gcc_stdint=wrap
  ;;
*-*-uclinux*)
  extra_options="$extra_options gnu-user.opt"
  use_gcc_stdint=wrap
  case ${enable_threads} in
    "" | yes | posix) thread_file='posix' ;;
  esac
  tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC"
  ;;
*-*-rdos*)
  use_gcc_stdint=wrap
  ;;
*-*-solaris2*)
  # i?86-*-solaris2* needs to insert headers between cpu default and
  # Solaris 2 specific ones.
  sol2_tm_file_head="dbxelf.h elfos.h ${cpu_type}/sysv4.h"
  sol2_tm_file_tail="${cpu_type}/sol2.h sol2.h"
  sol2_tm_file="${sol2_tm_file_head} ${sol2_tm_file_tail}"
  case ${target} in
    *-*-solaris2.1[1-9]*)
      # __cxa_atexit was introduced in Solaris 11.4.
      default_use_cxa_atexit=yes
      ;;
  esac
  use_gcc_stdint=wrap
  if test x$gnu_ld = xyes; then
    tm_file="usegld.h ${tm_file}"
  fi
  if test x$gas = xyes; then
    tm_file="usegas.h ${tm_file}"
  fi
  tm_p_file="${tm_p_file} sol2-protos.h"
  tmake_file="${tmake_file} t-sol2 t-slibgcc"
  c_target_objs="${c_target_objs} sol2-c.o"
  cxx_target_objs="${cxx_target_objs} sol2-c.o sol2-cxx.o"
  d_target_objs="${d_target_objs} sol2-d.o"
  extra_objs="${extra_objs} sol2.o sol2-stubs.o"
  extra_options="${extra_options} sol2.opt"
  case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
    "":yes:* | yes:yes:* )
      thread_file=posix
      ;;
  esac
  target_has_targetdm=yes
  ;;
*-*-*vms*)
  extra_options="${extra_options} vms/vms.opt"
  xmake_file=vms/x-vms
  tmake_file="vms/t-vms t-slibgcc"
  extra_objs="vms.o"
  target_gtfiles="$target_gtfiles \$(srcdir)/config/vms/vms.c"
  tm_p_file="${tm_p_file} vms/vms-protos.h"
  xm_file="vms/xm-vms.h"
  c_target_objs="vms-c.o"
  cxx_target_objs="vms-c.o"
  fortran_target_objs="vms-f.o"
  use_gcc_stdint=provide
  tm_file="${tm_file} vms/vms-stdint.h"
  if test x$gnu_ld != xyes; then
    # Build wrappers for native case.
    extra_programs="ld\$(exeext) ar\$(exeext)"
    tmake_file="$tmake_file vms/t-vmsnative"
  fi
  ;;
*-*-vxworks*)
  tmake_file=t-vxworks
  xm_defines=POSIX

  extra_options="${extra_options} vxworks.opt"
  extra_objs="$extra_objs vxworks.o"

  c_target_objs="${c_target_objs} vxworks-c.o"
  cxx_target_objs="${cxx_target_objs} vxworks-c.o"
  extra_headers="${extra_headers} ../vxworks/vxworks-predef.h"
  target_has_targetcm="yes"

  # This private header exposes a consistent interface for checks on
  # the VxWorks version our runtime header files need to perform, based on
  # what the system headers adverstise:

  extra_headers="${extra_headers} ../vxworks/_vxworks-versions.h"

  # Starting from VxWorks 7, the system comes with a Dinkumware
  # environment which requires the inclusion of "yvals.h" before other
  # system headers.  We provide wrapped versions of a few headers to
  # accomodate such constraints:

  extra_headers="${extra_headers} ../vxworks/_yvals.h"
  extra_headers="${extra_headers} ../vxworks/_yvals-wrapper.h"

  extra_headers="${extra_headers} ../vxworks/math.h ../vxworks/complex.h"
  extra_headers="${extra_headers} ../vxworks/inttypes.h ../vxworks/setjmp.h"

  # We provide stdint.h ...

  tm_file="${tm_file} vxworks-stdint.h"

  # .. only through the yvals conditional wrapping mentioned above
  # to abide by the VxWorks 7 expectations.  The final copy is performed
  # explicitly by a t-vxworks Makefile rule.

  use_gcc_stdint=none
  extra_headers="${extra_headers} ../../ginclude/stdint-gcc.h"

  case ${enable_threads} in
    no) ;;
    "" | yes | vxworks) thread_file='vxworks' ;;
    *) echo 'Unknown thread configuration for VxWorks'; exit 1 ;;
  esac

  # A few common macro definitions conveying general characteristics
  # of the configuration at hand. Note that by VxWorks 7, we mean the
  # the SR6xx major update or beyond in vendor parlance:

  case $target in
    *-*-vxworks7*)
      tm_defines="$tm_defines TARGET_VXWORKS7=1"
      ;;
  esac
  case $target in
    *64-*-vxworks*)
      tm_defines="$tm_defines TARGET_VXWORKS64=1"
      ;;
  esac

  # Then a few build configuration controls for VxWorks 7, which
  # has specificities on top of which we aim to provide more complete
  # C++ support:

  case $target in
    *-*-vxworks7*)
      # VxWorks 7 always has init/fini_array support and it is simpler to
      # just leverage this, sticking to what the system toolchain does:
      gcc_cv_initfini_array=yes
      ;;
  esac
  ;;
*-*-elf|arc*-*-elf*)
  # Assume that newlib is being used and so __cxa_atexit is provided.
  default_use_cxa_atexit=yes
  use_gcc_stdint=wrap
  ;;
esac

case ${target} in
aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
	tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h"
	tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-elf-raw.h"
	tmake_file="${tmake_file} aarch64/t-aarch64"
	case $target in
	aarch64-*-elf*)
		use_gcc_stdint=wrap
		;;
        aarch64-*-fuchsia*)
                tm_file="${tm_file} fuchsia.h"
                ;;
	aarch64-*-rtems*)
	  	tm_file="${tm_file} rtems.h aarch64/rtems.h"
		;;
	esac
	case $target in
	aarch64_be-*)
		tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
		;;
	esac
	aarch64_multilibs="${with_multilib_list}"
	if test "$aarch64_multilibs" = "default"; then
		aarch64_multilibs="lp64,ilp32"
	fi
	aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
	for aarch64_multilib in ${aarch64_multilibs}; do
		case ${aarch64_multilib} in
		ilp32 | lp64 )
			TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
			;;
		*)
			echo "--with-multilib-list=${aarch64_multilib} not supported."
			exit 1
		esac
	done
	TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
	;;
aarch64*-*-freebsd*)
	tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file}"
	tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-freebsd.h"
	tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
	tm_defines="${tm_defines}  TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
	;;
aarch64*-*-netbsd*)
	tm_file="${tm_file} dbxelf.h elfos.h ${nbsd_tm_file}"
	tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-netbsd.h"
	tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-netbsd"
	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
	;;
aarch64*-*-linux*)
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h"
	tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-linux.h"
	tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-linux"
	tm_defines="${tm_defines}  TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
	case $target in
	aarch64_be-*)
		tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
		;;
	esac
	aarch64_multilibs="${with_multilib_list}"
	if test "$aarch64_multilibs" = "default"; then
		# TODO: turn on ILP32 multilib build after its support is mature.
		# aarch64_multilibs="lp64,ilp32"
		aarch64_multilibs="lp64"
	fi
	aarch64_multilibs=`echo $aarch64_multilibs | sed -e 's/,/ /g'`
	for aarch64_multilib in ${aarch64_multilibs}; do
		case ${aarch64_multilib} in
		ilp32 | lp64 )
			TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${aarch64_multilib}"
			;;
		*)
			echo "--with-multilib-list=${aarch64_multilib} not supported."
			exit 1
		esac
	done
	TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
	;;
aarch64*-wrs-vxworks*)
        tm_file="${tm_file} elfos.h aarch64/aarch64-elf.h"
        tm_file="${tm_file} vx-common.h vxworks.h aarch64/aarch64-vxworks.h"
        tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-vxworks"
        ;;
alpha*-*-linux*)
	tm_file="elfos.h ${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h glibc-stdint.h"
	tmake_file="${tmake_file} alpha/t-linux alpha/t-alpha"
	extra_options="${extra_options} alpha/elf.opt"
	;;
alpha*-*-netbsd*)
	tm_file="elfos.h ${tm_file} ${nbsd_tm_file} alpha/elf.h alpha/netbsd.h"
	tmake_file="${tmake_file} alpha/t-alpha"
	extra_options="${extra_options} netbsd.opt netbsd-elf.opt \
		       alpha/elf.opt"
	;;
alpha*-*-openbsd*)
	tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_FUNCTION_SIZE OBSD_HAS_DECLARE_OBJECT"
	tm_file="elfos.h alpha/alpha.h alpha/elf.h openbsd.h openbsd-stdint.h alpha/openbsd.h openbsd-libpthread.h"
	tmake_file="${tmake_file} alpha/t-alpha"
	extra_options="${extra_options} openbsd.opt alpha/elf.opt"
	# default x-alpha is only appropriate for dec-osf.
	;;
alpha*-dec-*vms*)
	tm_file="${tm_file} vms/vms.h alpha/vms.h"
	tmake_file="${tmake_file} alpha/t-vms alpha/t-alpha"
	;;
arc*-*-elf*)
	tm_file="arc/arc-arch.h dbxelf.h elfos.h newlib-stdint.h arc/elf.h ${tm_file}"
	tmake_file="arc/t-multilib arc/t-arc"
	extra_gcc_objs="driver-arc.o"
	if test "x$with_cpu" != x; then
		tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
	fi
	if test x${with_endian} = x; then
		case ${target} in
		arc*be-*-* | arc*eb-*-*)	with_endian=big ;;
		*)				with_endian=little ;;
		esac
	fi
	case ${with_endian} in
	big|little)		;;
	*)	echo "with_endian=${with_endian} not supported."; exit 1 ;;
	esac
	case ${with_endian} in
	big*)	tm_file="arc/big.h ${tm_file}"
	esac
	;;
arc*-*-linux*)
	tm_file="arc/arc-arch.h dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arc/linux.h ${tm_file}"
	tmake_file="${tmake_file} arc/t-multilib-linux arc/t-arc"
	extra_gcc_objs="driver-arc.o"
	if test "x$with_cpu" != x; then
		tm_defines="${tm_defines} TARGET_CPU_BUILD=PROCESSOR_$with_cpu"
	fi
	if test x${with_endian} = x; then
		case ${target} in
		arc*be-*-* | arc*eb-*-*)	with_endian=big ;;
		*)				with_endian=little ;;
		esac
	fi
	case ${with_endian} in
	big|little)		;;
	*)	echo "with_endian=${with_endian} not supported."; exit 1 ;;
	esac
	case ${with_endian} in
	big*)	tm_file="arc/big.h ${tm_file}"
	esac
	# Force .init_array support.  The configure script cannot always
	# automatically detect that GAS supports it, yet we require it.
	gcc_cv_initfini_array=yes
	;;
arm-wrs-vxworks7*)
	# We only support VxWorks 7 now on ARM, post SR600.  Pre SR600
	# VxWorks 7 was transitory and major versions prior to 7 were based
	# on long deprecated ABI, not supported at all any more regardless
	# of VxWorks.
	extra_options="${extra_options} arm/vxworks.opt"
	tmake_file="${tmake_file} arm/t-arm arm/t-vxworks arm/t-bpabi"
	tm_file="elfos.h arm/elf.h arm/bpabi.h arm/aout.h ${tm_file}"
	tm_file="${tm_file} vx-common.h vxworks.h arm/vxworks.h"
	target_cpu_cname="armv7-a"
	need_64bit_hwint=yes
	;;
arm*-*-freebsd*)                # ARM FreeBSD EABI
	tm_file="dbxelf.h elfos.h ${fbsd_tm_file} arm/elf.h"
	case $target in
	arm*b-*-freebsd*)
	    tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
	    ;;
	esac
	tmake_file="${tmake_file} arm/t-arm arm/t-bpabi"
	tm_file="${tm_file} arm/bpabi.h arm/freebsd.h arm/aout.h arm/arm.h"
	case $target in
	armv6*-*-freebsd*)
	    target_cpu_cname="arm1176jzf-s"
            if test $fbsd_major -ge 11; then
               tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
            fi
	    ;;
	armv7*-*-freebsd*)
	    target_cpu_cname="generic-armv7-a"
	    tm_defines="${tm_defines} TARGET_FREEBSD_ARM_HARD_FLOAT=1"
	    ;;
	*)
	    target_cpu_cname="arm9"
	    ;;
	esac
	with_tls=${with_tls:-gnu}
	;;
arm*-*-netbsdelf*)
	target_cpu_cname="strongarm"
	tmake_file="${tmake_file} arm/t-arm"
	tm_file="dbxelf.h elfos.h ${nbsd_tm_file} arm/elf.h"
	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
	case ${target} in
	arm*eb-*) tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" ;;
	esac
	case ${target} in
	arm*-*-netbsdelf-*eabi*)
	    tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
	    tmake_file="$tmake_file arm/t-bpabi arm/t-netbsdeabi"
	    ;;
	*)
	    tm_file="$tm_file arm/netbsd-elf.h"
	    tmake_file="$tmake_file arm/t-netbsd"
	    ;;
	esac
	tm_file="${tm_file} arm/aout.h arm/arm.h"
	case ${target} in
	arm*-*-netbsdelf-*eabihf*)
	    # Hard-float requires at least Arm v5te
	    target_cpu_cname="arm10e"
	    tm_defines="${tm_defines} TARGET_DEFAULT_FLOAT_ABI=ARM_FLOAT_ABI_HARD"
	    ;;
	esac
	case ${target} in
	armv6*) target_cpu_cname="arm1176jzf-s";;
	armv7*) target_cpu_cname="generic-armv7-a";;
	esac
	;;
arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)
	tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
	extra_options="${extra_options} linux-android.opt"
	case $target in
	arm*b-*-linux*)
	    tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
	    ;;
	esac
	tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
	tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h arm/aout.h arm/arm.h"
	case $target in
	arm*-*-uclinuxfdpiceabi)
	    tm_file="$tm_file arm/uclinuxfdpiceabi.h"
	    ;;
	esac
	# Generation of floating-point instructions requires at least ARMv5te.
	if [ "$with_float" = "hard" -o "$with_float" = "softfp" ] ; then
	    target_cpu_cname="arm10e"
	else
	    target_cpu_cname="arm10tdmi"
	fi
	# Define multilib configuration for arm-linux-androideabi.
	case ${target} in
	*-androideabi)
	    tmake_file="$tmake_file arm/t-linux-androideabi"
	    ;;
	esac
	# The EABI requires the use of __cxa_atexit.
	default_use_cxa_atexit=yes
	with_tls=${with_tls:-gnu}
	;;
arm*-*-uclinux*eabi*)		# ARM ucLinux
	tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h glibc-stdint.h"
	tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf arm/t-bpabi"
	tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h arm/aout.h arm/arm.h"
	target_cpu_cname="arm7tdmi"
	# The EABI requires the use of __cxa_atexit.
	default_use_cxa_atexit=yes
	;;
arm*-*-phoenix*)
	tm_file="elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
	tm_file="${tm_file} newlib-stdint.h phoenix.h"
	tm_file="${tm_file} arm/aout.h arm/arm.h"
	tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix"
	target_cpu_cname="arm7tdmi"
	;;
arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
	case ${target} in
	arm*eb-*-eabi*)
	  tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
	esac
	default_use_cxa_atexit=yes
	tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
	tmake_file="${tmake_file} arm/t-arm arm/t-arm-elf"
	target_cpu_cname="arm7tdmi"
	case ${target} in
	arm*-*-eabi*)
	  tm_file="$tm_file newlib-stdint.h"
	  tmake_file="${tmake_file} arm/t-bpabi"
	  use_gcc_stdint=wrap
	  ;;
	arm*-*-fuchsia*)
	  tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
	  tmake_file="${tmake_file} arm/t-bpabi arm/t-fuchsia"
	  target_cpu_cname="generic-armv7-a"
	  ;;
	arm*-*-rtems*)
	  tm_file="${tm_file} rtems.h arm/rtems.h newlib-stdint.h"
	  tmake_file="${tmake_file} arm/t-bpabi arm/t-rtems"
	  ;;
	arm*-*-symbianelf*)
	  tm_file="${tm_file} arm/symbian.h"
	  # We do not include t-bpabi for Symbian OS because the system
	  # provides its own implementation of the BPABI functions.
	  tmake_file="${tmake_file} arm/t-symbian"
	  target_cpu_cname="arm10tdmi"
	  ;;
	esac
	tm_file="${tm_file} arm/aout.h arm/arm.h"
	;;
avr-*-*)
	tm_file="elfos.h avr/elf.h avr/avr-arch.h avr/avr.h avr/specs.h dbxelf.h avr/avr-stdint.h"
	if test x${with_avrlibc} != xno; then
	    tm_file="${tm_file} ${cpu_type}/avrlibc.h"
	    tm_defines="${tm_defines} WITH_AVRLIBC"
	fi
	# Work out avr_double_comparison which is 2 or 3 and is used in
	# target hook FLOAT_LIB_COMPARE_RETURNS_BOOL to determine whether
	# DFmode comparisons return 3-state or 2-state results.
	case y${with_double_comparison} in
	    y | ytristate)
		avr_double_comparison=3
		;;
	    ybool | ylibf7)
		avr_double_comparison=2
		;;
	    *)
		echo "Error: --with-double-comparison= can only be used with: 'tristate', 'bool', 'libf7'" 1>&2
		exit 1
		;;
	esac
	case "y${with_libf7}" in
	    yno)
		# avr_double_comparison as set above.
		;;
	    ylibgcc)
		avr_double_comparison=2
		tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
		;;
	    y | yyes | ymath-symbols)
		avr_double_comparison=2
		tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
		tm_defines="${tm_defines} WITH_LIBF7_MATH"
		tm_defines="${tm_defines} WITH_LIBF7_MATH_SYMBOLS"
		;;
	    ymath)
		avr_double_comparison=2
		tm_defines="${tm_defines} WITH_LIBF7_LIBGCC"
		tm_defines="${tm_defines} WITH_LIBF7_MATH"
		;;
	    *)
		echo "Error: --with-libf7=${with_libf7} but can only be used with: 'libgcc', 'math', 'math-symbols', 'yes', 'no'" 1>&2
		exit 1
		;;
	esac
	tm_defines="${tm_defines} WITH_DOUBLE_COMPARISON=${avr_double_comparison}"
	case y${with_double} in
	    y32)
		avr_double=32
		tm_defines="${tm_defines} HAVE_DOUBLE32"
		;;
	    y64)
		avr_double=64
		tm_defines="${tm_defines} HAVE_DOUBLE64"
		;;
	    y64,32)
		avr_double=64
		avr_double_multilib=1
		tm_defines="${tm_defines} HAVE_DOUBLE32"
		tm_defines="${tm_defines} HAVE_DOUBLE64"
		tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
		;;
	    y | y32,64)
		avr_double=32
		avr_double_multilib=1
		tm_defines="${tm_defines} HAVE_DOUBLE32"
		tm_defines="${tm_defines} HAVE_DOUBLE64"
		tm_defines="${tm_defines} HAVE_DOUBLE_MULTILIB"
		;;
	    *)
		echo "Error: --with-double= can only be used with: '32', '32,64', '64,32', '64'" 1>&2
		exit 1
		;;
	esac
	case y${with_long_double} in
	    y32)
		avr_long_double=32
		tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
		;;
	    y64)
		avr_long_double=64
		tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
		;;
	    y | y64,32)
		avr_long_double=64
		avr_long_double_multilib=1
		tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
		tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
		tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
		;;
	    y32,64)
		avr_long_double=32
		avr_long_double_multilib=1
		tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
		tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
		tm_defines="${tm_defines} HAVE_LONG_DOUBLE_MULTILIB"
		;;
	    ydouble)
		avr_long_double=${avr_double}
		tm_defines="${tm_defines} HAVE_LONG_DOUBLE_IS_DOUBLE"
		if test y${avr_double_multilib} = y1; then
		    tm_defines="${tm_defines} HAVE_LONG_DOUBLE32"
		    tm_defines="${tm_defines} HAVE_LONG_DOUBLE64"
		else
		    tm_defines="${tm_defines} HAVE_LONG_DOUBLE${avr_long_double}"
		fi
		;;
	    *)
		echo "Error: --with-long_double= can only be used with: '32', '32,64', '64,32', '64', 'double'" 1>&2
		exit 1
		;;
	esac
	if test ${avr_long_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 32xy1z; then
	    if test y${with_long_double} != ydouble; then
		echo "Error: --with-double=${with_double} requests a multilib for double, but long double is always 32 bits wide due to --with-long-double=${with_long_double}" 1>&2
		exit 1
	    fi
	fi
	if test ${avr_double}x${avr_long_double_multilib}y${avr_double_multilib}z = 64x1yz; then
	    echo "Error: --with-long-double=${with_long_double} requests a multilib for long double, but double is always 64 bits wide due to --with-double=64" 1>&2
	    exit 1
	fi
	if test y${avr_double}${avr_long_double} = y6432; then
	    echo "Error: double default of 64 bits from --with-double=${with_double} conflicts with default of 32 bits for long double from --with-long-double=${with_long_double}" 1>&2
	    exit 1
	fi
	tm_defines="${tm_defines} WITH_DOUBLE${avr_double}"
	tm_defines="${tm_defines} WITH_LONG_DOUBLE${avr_long_double}"
	tmake_file="${tmake_file} avr/t-avr avr/t-multilib"
	use_gcc_stdint=wrap
	extra_gcc_objs="driver-avr.o avr-devices.o"
	extra_objs="avr-devices.o avr-log.o"
	;;
bfin*-elf*)
	tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h bfin/elf.h"
	tmake_file=bfin/t-bfin-elf
	use_collect2=no
	;;
bfin*-uclinux*)
	tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/uclinux.h"
	tmake_file=bfin/t-bfin-uclinux
	use_collect2=no
	;;
bfin*-linux-uclibc*)
	tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h gnu-user.h linux.h glibc-stdint.h bfin/linux.h ./linux-sysroot-suffix.h"
	tmake_file="${tmake_file} bfin/t-bfin-linux"
	use_collect2=no
	;;
bfin*-rtems*)
	tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h bfin/rtems.h rtems.h newlib-stdint.h"
	tmake_file="${tmake_file} bfin/t-rtems"
	;;
bfin*-*)
	tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h bfin/elf.h"
	use_collect2=no
	use_gcc_stdint=wrap
	;;
bpf-*-*)
        tmake_file="${tmake_file} bpf/t-bpf"
        use_collect2=no
        extra_headers="bpf-helpers.h"
        use_gcc_stdint=provide
        ;;
cr16-*-elf)
        tm_file="elfos.h ${tm_file} newlib-stdint.h"
        tmake_file="${tmake_file} cr16/t-cr16 "
        use_collect2=no
        ;;
crisv32-*-elf | crisv32-*-none)
	tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
	tmake_file="cris/t-cris"
	target_cpu_default=32
	gas=yes
	extra_options="${extra_options} cris/elf.opt"
	use_gcc_stdint=wrap
	;;
cris-*-elf | cris-*-none)
	tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
	tmake_file="cris/t-cris cris/t-elfmulti"
	gas=yes
	extra_options="${extra_options} cris/elf.opt"
	use_gcc_stdint=wrap
	;;
crisv32-*-linux* | cris-*-linux*)
	tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h cris/linux.h"
	tmake_file="${tmake_file} cris/t-cris cris/t-linux"
	extra_options="${extra_options} cris/linux.opt"
	case $target in
	  cris-*-*)
		target_cpu_default=10
		;;
	  crisv32-*-*)
		target_cpu_default=32
		;;
	esac
	;;
csky-*-*)
	if test x${with_endian} != x; then
	    case ${with_endian} in
		big|little)		;;
		*)
		    echo "with_endian=${with_endian} not supported."
		    exit 1
		    ;;
	    esac
	fi
	if test x${with_float} != x; then
	    case ${with_float} in
		soft | hard) ;;
		*) echo
		    "Unknown floating point type used in --with-float=$with_float"
		    exit 1
		    ;;
	    esac
	fi
	tm_file="csky/csky.h"
	md_file="csky/csky.md"
	out_file="csky/csky.c"
	tm_p_file="${tm_p_file} csky/csky-protos.h"
	extra_options="${extra_options} csky/csky_tables.opt"

	if test x${enable_tpf_debug} = xyes; then
	    tm_defines="${tm_defines} ENABLE_TPF_DEBUG"
	fi

	case ${target} in
	    csky-*-elf*)
		tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file} csky/csky-elf.h"
		tmake_file="csky/t-csky csky/t-csky-elf"
		default_use_cxa_atexit=no
		;;
	    csky-*-linux*)
		tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} csky/csky-linux-elf.h"
		tmake_file="${tmake_file} csky/t-csky csky/t-csky-linux"

		if test "x${enable_multilib}" = xyes ; then
		    tm_file="$tm_file ./sysroot-suffix.h"
		    tmake_file="${tmake_file} csky/t-sysroot-suffix"
		fi

		case ${target} in
		    csky-*-linux-gnu*)
			tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
			# Force .init_array support.  The configure script cannot always
			# automatically detect that GAS supports it, yet we require it.
			gcc_cv_initfini_array=yes
			;;
		    csky-*-linux-uclibc*)
			tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
			default_use_cxa_atexit=no
			;;
		    *)
			echo "Unknown target $target"
			exit 1
			;;
		esac
		;;
	    *)
		echo "Unknown target $target"
		exit 1
		;;
	esac
	;;
epiphany-*-elf | epiphany-*-rtems*)
	tm_file="${tm_file} dbxelf.h elfos.h"
	tmake_file="${tmake_file} epiphany/t-epiphany"
	case ${target} in
	epiphany-*-rtems*)
	  tm_file="${tm_file} rtems.h epiphany/rtems.h newlib-stdint.h"
	  ;;
	*)
	  tm_file="${tm_file} newlib-stdint.h"
	  ;;
	esac
	extra_options="${extra_options} fused-madd.opt"
	extra_objs="${extra_objs} mode-switch-use.o resolve-sw-modes.o"
	tm_defines="${tm_defines} EPIPHANY_STACK_OFFSET=${with_stack_offset:-8}"
	extra_headers="epiphany_intrinsics.h"
	;;
fr30-*-elf)
	tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
	;;
frv-*-elf)
	tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
	tmake_file=frv/t-frv
	;;
frv-*-*linux*)
	tm_file="dbxelf.h elfos.h ${tm_file} \
	         gnu-user.h linux.h glibc-stdint.h frv/linux.h"
	tmake_file="${tmake_file} frv/t-frv frv/t-linux"
	;;
ft32-*-elf)
	gas=yes
	gnu_ld=yes
	tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
	tmake_file="${tmake_file} ft32/t-ft32"
	;;
amdgcn-*-amdhsa)
	tm_file="elfos.h gcn/gcn-hsa.h gcn/gcn.h newlib-stdint.h"
	tmake_file="gcn/t-gcn-hsa"
	native_system_header_dir=/include
	extra_modes=gcn/gcn-modes.def
	extra_objs="${extra_objs} gcn-tree.o"
	extra_gcc_objs="driver-gcn.o"
	case "$host" in
	x86_64*-*-linux-gnu )
		if test "$ac_cv_search_dlopen" != no; then
			extra_programs="${extra_programs} gcn-run\$(exeext)"
		fi
		;;
	esac
	if test x$enable_as_accelerator = xyes; then
		extra_programs="${extra_programs} mkoffload\$(exeext)"
		tm_file="${tm_file} gcn/offload.h"
	fi
	# Force .init_array support.
	gcc_cv_initfini_array=yes
	thread_file=gcn
	;;
moxie-*-elf)
	gas=yes
	gnu_ld=yes
	tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
	tmake_file="${tmake_file} moxie/t-moxie"
	;;
moxie-*-uclinux*)
	gas=yes
	gnu_ld=yes
	tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h moxie/uclinux.h"
	tmake_file="${tmake_file} moxie/t-moxie"
	;;
moxie-*-rtems*)
	tmake_file="${tmake_file} moxie/t-moxie"
	tm_file="moxie/moxie.h dbxelf.h elfos.h moxie/rtems.h rtems.h newlib-stdint.h"
	;;
moxie-*-moxiebox*)
	gas=yes
	gnu_ld=yes
	tm_file="${tm_file} dbxelf.h elfos.h moxie/moxiebox.h newlib-stdint.h"
	tmake_file="${tmake_file} moxie/t-moxiebox"
	;;
h8300-*-elf*)
	tmake_file="h8300/t-h8300"
	tm_file="h8300/h8300.h dbxelf.h elfos.h newlib-stdint.h h8300/elf.h"
	;;
h8300-*-linux*)
	tmake_file="${tmake_file} h8300/t-h8300 h8300/t-linux"
	tm_file="h8300/h8300.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h h8300/linux.h"
	;;
hppa*64*-*-linux*)
	target_cpu_default="MASK_PA_11|MASK_PA_20"
	tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h gnu-user.h linux.h \
		 glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \
		 pa/pa64-linux.h"
	tmake_file="${tmake_file} pa/t-pa pa/t-linux"
	d_target_objs="${d_target_objs} pa-d.o"
	gas=yes gnu_ld=yes
	;;
hppa*-*-linux*)
	target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS|MASK_CALLER_COPIES"
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h pa/pa-linux.h \
		 pa/pa32-regs.h pa/pa32-linux.h"
	tmake_file="${tmake_file} pa/t-pa pa/t-linux"
	d_target_objs="${d_target_objs} pa-d.o"
	;;
hppa*-*-openbsd*)
	target_cpu_default="MASK_PA_11"
	tm_file="${tm_file} dbxelf.h elfos.h openbsd.h openbsd-stdint.h openbsd-libpthread.h \
		 pa/pa-openbsd.h pa/pa32-regs.h pa/pa32-openbsd.h"
	extra_options="${extra_options} openbsd.opt"
	tmake_file="pa/t-pa"
	d_target_objs="${d_target_objs} pa-d.o"
	gas=yes
	gnu_ld=yes
	;;
hppa*-*-netbsd*)
	target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
	tm_file="${tm_file} dbxelf.h elfos.h ${nbsd_tm_file} \
		 pa/pa-netbsd.h pa/pa32-regs.h pa/pa32-netbsd.h"
	tmake_file="${tmake_file}"
	tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
	;;
hppa[12]*-*-hpux10*)
	case ${target} in
	hppa1.1-*-* | hppa2*-*-*)
		target_cpu_default="MASK_PA_11"
		;;
	esac
	tm_file="${tm_file} pa/pa32-regs.h dbxelf.h pa/som.h \
		 pa/pa-hpux.h pa/pa-hpux10.h"
	extra_options="${extra_options} pa/pa-hpux.opt pa/pa-hpux10.opt"
	case ${target} in
	*-*-hpux10.[1-9]*)
		tm_file="${tm_file} pa/pa-hpux1010.h"
		extra_options="${extra_options} pa/pa-hpux1010.opt"
		;;
	esac
	use_gcc_stdint=provide
	tm_file="${tm_file} hpux-stdint.h"
	tmake_file="pa/t-pa t-slibgcc"
	d_target_objs="${d_target_objs} pa-d.o"
	case ${enable_threads} in
	  "")
	    if test x$have_pthread_h = xyes ; then
	      tmake_file="${tmake_file} pa/t-dce-thr"
	    fi
	    ;;
	  yes | dce)
	    tmake_file="${tmake_file} pa/t-dce-thr"
	    ;;
	esac
	use_collect2=yes
	gas=yes
	if test "x$with_dwarf2" != x; then
		echo "Warning: dwarf2 debug format is not supported for this target, --with-dwarf2 ignored" 1>&2
		dwarf2=no
	fi
	;;
hppa*64*-*-hpux11*)
	target_cpu_default="MASK_PA_11|MASK_PA_20"
	if test x$gnu_ld = xyes
	then
		target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
	fi
	tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h \
		 pa/pa64-regs.h pa/pa-hpux.h pa/pa-hpux1010.h \
		 pa/pa-hpux11.h"
	case ${target} in
	*-*-hpux11.[12]*)
		tm_file="${tm_file} pa/pa-hpux1111.h pa/pa-64.h pa/pa64-hpux.h"
		extra_options="${extra_options} pa/pa-hpux1111.opt"
		;;
	*-*-hpux11.[3-9]*)
		tm_file="${tm_file} pa/pa-hpux1131.h pa/pa-64.h pa/pa64-hpux.h"
		extra_options="${extra_options} pa/pa-hpux1131.opt"
		;;
	*)
		tm_file="${tm_file} pa/pa-64.h pa/pa64-hpux.h"
		;;
	esac
	extra_options="${extra_options} pa/pa-hpux.opt \
		       pa/pa-hpux1010.opt pa/pa64-hpux.opt hpux11.opt"
	tmake_file="pa/t-pa t-slibgcc"
	d_target_objs="${d_target_objs} pa-d.o"
	case x${enable_threads} in
	x | xyes | xposix )
		thread_file=posix
		;;
	esac
	gas=yes
	case ${target} in
	  *-*-hpux11.[01]*)
		use_gcc_stdint=provide
		tm_file="${tm_file} hpux-stdint.h"
		;;
	  *-*-hpux11.[23]*)
		use_gcc_stdint=wrap
		tm_file="${tm_file} hpux-stdint.h"
		;;
	esac
	;;
hppa[12]*-*-hpux11*)
	case ${target} in
	hppa1.1-*-* | hppa2*-*-*)
		target_cpu_default="MASK_PA_11"
		;;
	esac
	tm_file="${tm_file} pa/pa32-regs.h dbxelf.h pa/som.h \
		 pa/pa-hpux.h pa/pa-hpux1010.h pa/pa-hpux11.h"
	extra_options="${extra_options} pa/pa-hpux.opt pa/pa-hpux1010.opt \
		       hpux11.opt"
	case ${target} in
	*-*-hpux11.[12]*)
		tm_file="${tm_file} pa/pa-hpux1111.h"
		extra_options="${extra_options} pa/pa-hpux1111.opt"
		;;
	*-*-hpux11.[3-9]*)
		tm_file="${tm_file} pa/pa-hpux1131.h"
		extra_options="${extra_options} pa/pa-hpux1131.opt"
		;;
	esac
	tmake_file="pa/t-pa t-slibgcc"
	d_target_objs="${d_target_objs} pa-d.o"
	case x${enable_threads} in
	x | xyes | xposix )
		thread_file=posix
		;;
	esac
	use_collect2=yes
	gas=yes
	case ${target} in
	  *-*-hpux11.[01]*)
		use_gcc_stdint=provide
		tm_file="${tm_file} hpux-stdint.h"
		;;
	  *-*-hpux11.[23]*)
		use_gcc_stdint=wrap
		tm_file="${tm_file} hpux-stdint.h"
		;;
	esac
	if test "x$with_dwarf2" != x; then
		echo "Warning: dwarf2 debug format is not supported for this target, --with-dwarf2 ignored" 1>&2
		dwarf2=no
	fi
	;;
i[34567]86-*-darwin1[89]*)
	echo "Error: 32bit target is not supported after Darwin17" 1>&2
	;;
i[34567]86-*-darwin*)
	need_64bit_isa=yes
	# Baseline choice for a machine that allows m64 support.
	with_cpu=${with_cpu:-core2}
	tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch t-slibgcc"
	tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
	;;
x86_64-*-darwin1[89]* | x86_64-*-darwin2[01]*)
	# Only 64b from now
	with_cpu=${with_cpu:-core2}
	tmake_file="${tmake_file} t-slibgcc"
	;;
x86_64-*-darwin*)
	with_cpu=${with_cpu:-core2}
	tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
	tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h"
	;;
i[34567]86-*-elfiamcu)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/iamcu.h"
	;;
i[34567]86-*-elf*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h"
	;;
x86_64-*-elf*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h"
	;;
x86_64-*-rtems*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h i386/rtemself.h rtems.h"
	;;
i[34567]86-*-rdos*)
    tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/rdos.h"
    ;;
x86_64-*-rdos*)
    tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h i386/rdos.h i386/rdos64.h"
    tmake_file="i386/t-i386elf t-svr4"
    ;;
i[34567]86-*-dragonfly*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h dragonfly.h dragonfly-stdint.h i386/dragonfly.h"
	tmake_file="${tmake_file} i386/t-crtstuff"
	;;
x86_64-*-dragonfly*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h dragonfly.h dragonfly-stdint.h i386/x86-64.h i386/dragonfly.h"
	tmake_file="${tmake_file} i386/t-crtstuff"
	;;
i[34567]86-*-freebsd*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
	;;
x86_64-*-freebsd*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h"
	;;
i[34567]86-*-netbsdelf*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${nbsd_tm_file} i386/netbsd-elf.h"
	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
	;;
x86_64-*-netbsd*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${nbsd_tm_file} i386/x86-64.h i386/netbsd64.h"
	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
	;;
i[34567]86-*-openbsd*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h"
	tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/openbsdelf.h"
	extra_options="${extra_options} openbsd.opt"
	gas=yes
	gnu_ld=yes
	;;
x86_64-*-openbsd*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h"
	tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h i386/x86-64.h i386/openbsdelf.h"
	extra_options="${extra_options} openbsd.opt"
	gas=yes
	gnu_ld=yes
	;;
i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
			# Intel 80386's running GNU/*
			# with ELF format using glibc 2
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h gnu-user.h glibc-stdint.h"
	case ${target} in
	i[34567]86-*-linux*)
		tm_file="${tm_file} linux.h linux-android.h"
		extra_options="${extra_options} linux-android.opt"
		if test x$enable_targets = xall; then
			tm_file="${tm_file} i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h i386/linux-common.h i386/linux64.h"
			tm_defines="${tm_defines} TARGET_BI_ARCH=1"
			tmake_file="${tmake_file} i386/t-linux64"
			x86_multilibs="${with_multilib_list}"
			if test "$x86_multilibs" = "default"; then
				x86_multilibs="m64,m32"
			fi
			x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
			for x86_multilib in ${x86_multilibs}; do
				case ${x86_multilib} in
				m32 | m64 | mx32)
					TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
					;;
				*)
					echo "--with-multilib-list=${x86_with_multilib} not supported."
					exit 1
				esac
			done
			TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
			need_64bit_isa=yes
			if test x$with_cpu = x; then
				if test x$with_cpu_64 = x; then
					with_cpu_64=generic
				fi
			else
				case " $x86_cpus $x86_archs $x86_64_archs " in
				*" $with_cpu "*)
					;;
				*)
					echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
					echo "$x86_cpus $x86_archs $x86_64_archs " 1>&2
					exit 1
					;;
				esac
			fi
		else
			tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h i386/linux-common.h i386/linux.h"
		fi
		;;
	i[34567]86-*-kfreebsd*-gnu)
		tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kfreebsd-gnu.h i386/kfreebsd-gnu.h"
		;;
	i[34567]86-*-kopensolaris*-gnu)
		tm_file="${tm_file} i386/gnu-user-common.h i386/gnu-user.h kopensolaris-gnu.h i386/kopensolaris-gnu.h"
		;;
	i[34567]86-*-gnu*)
		tm_file="$tm_file i386/gnu-user-common.h i386/gnu-user.h gnu.h i386/gnu.h"
		;;
	esac
	;;
x86_64-*-linux* | x86_64-*-kfreebsd*-gnu)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h gnu-user.h glibc-stdint.h \
		 i386/x86-64.h i386/gnu-user-common.h i386/gnu-user64.h"
	case ${target} in
	x86_64-*-linux*)
		tm_file="${tm_file} linux.h linux-android.h i386/linux-common.h i386/linux64.h"
		extra_options="${extra_options} linux-android.opt"
	  	;;
	x86_64-*-kfreebsd*-gnu)
		tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu64.h"
		;;
	esac
	tmake_file="${tmake_file} i386/t-linux64"
	x86_multilibs="${with_multilib_list}"
	if test "$x86_multilibs" = "default"; then
		case ${with_abi} in
		x32 | mx32)
			x86_multilibs="mx32"
			;;
		*)
			x86_multilibs="m64,m32"
			;;
		esac
	fi
	x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
	for x86_multilib in ${x86_multilibs}; do
		case ${x86_multilib} in
		m32 | m64 | mx32)
			TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${x86_multilib}"
			;;
		*)
			echo "--with-multilib-list=${x86_with_multilib} not supported."
			exit 1
		esac
	done
	TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
	;;
i[34567]86-pc-msdosdjgpp*)
	xm_file=i386/xm-djgpp.h
	tm_file="dbxcoff.h ${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/djgpp.h i386/djgpp-stdint.h"
	native_system_header_dir=/dev/env/DJDIR/include
	extra_options="${extra_options} i386/djgpp.opt"
	gnu_ld=yes
	gas=yes
	use_gcc_stdint=wrap
	;;
i[34567]86-*-lynxos*)
	xm_defines=POSIX
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/lynx.h lynx.h"
	tmake_file="${tmake_file} t-lynx"
	extra_options="${extra_options} lynx.opt"
	thread_file=lynx
	gnu_ld=yes
	gas=yes
	;;
i[34567]86-*-nto-qnx*)
	tm_file="${tm_file} i386/att.h dbxelf.h tm-dwarf2.h elfos.h i386/unix.h i386/nto.h"
	extra_options="${extra_options} i386/nto.opt"
	gnu_ld=yes
	gas=yes
	;;
i[34567]86-*-rtems*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/i386elf.h i386/rtemself.h rtems.h newlib-stdint.h"
	tmake_file="${tmake_file} i386/t-rtems"
	;;
i[34567]86-*-solaris2* | x86_64-*-solaris2*)
	# Set default arch_32 to pentium4, tune_32 to generic like the other
	# i386 targets, although config.guess defaults to i386-pc-solaris2*.
	with_arch_32=${with_arch_32:-pentium4}
	with_tune_32=${with_tune_32:-generic}
	tm_file="${tm_file} i386/unix.h i386/att.h ${sol2_tm_file_head} i386/x86-64.h ${sol2_tm_file_tail}"
	tm_defines="${tm_defines} TARGET_BI_ARCH=1"
	tmake_file="$tmake_file i386/t-sol2"
	need_64bit_isa=yes
	if test x$with_cpu = x; then
		if test x$with_cpu_64 = x; then
			with_cpu_64=generic
		fi
	else
		case " $x86_cpus $x86_archs $x86_64_archs " in
		*" $with_cpu "*)
			;;
		*)
			echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
			echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
			exit 1
			;;
		esac
	fi
	;;
i[4567]86-wrs-vxworks|i[4567]86-wrs-vxworksae|i[4567]86-wrs-vxworks7|x86_64-wrs-vxworks7)
	tm_file="${tm_file} i386/unix.h i386/att.h elfos.h"
	case ${target} in
	  x86_64-*)
	    need_64bit_isa=yes
	    tm_file="${tm_file} i386/x86-64.h"
	    ;;
	esac
	tm_file="${tm_file} vx-common.h"
	case ${target} in
	  *-vxworksae*)
	    tm_file="${tm_file} vxworksae.h i386/vxworks.h i386/vxworksae.h"
	    tmake_file="${tmake_file} i386/t-vxworks i386/t-vxworksae"
	    ;;
	  *)
	    tm_file="${tm_file} vxworks.h i386/vxworks.h"
	    tmake_file="${tmake_file} i386/t-vxworks"
	    ;;
	esac
	;;
i[34567]86-*-cygwin*)
	tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/cygming.h i386/cygwin.h i386/cygwin-stdint.h"
	xm_file=i386/xm-cygwin.h
	tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
	target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.c"
	extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
	extra_objs="${extra_objs} winnt.o winnt-stubs.o"
	c_target_objs="${c_target_objs} msformat-c.o"
	cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
	if test x$enable_threads = xyes; then
		thread_file='posix'
	fi
	default_use_cxa_atexit=yes
	use_gcc_stdint=wrap
	;;
x86_64-*-cygwin*)
	need_64bit_isa=yes
	tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/cygming.h i386/cygwin.h i386/cygwin-w64.h i386/cygwin-stdint.h"
	xm_file=i386/xm-cygwin.h
	tmake_file="${tmake_file} i386/t-cygming t-slibgcc i386/t-cygwin-w64"
	target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.c"
	extra_options="${extra_options} i386/cygming.opt i386/cygwin.opt"
	extra_objs="${extra_objs} winnt.o winnt-stubs.o"
	c_target_objs="${c_target_objs} msformat-c.o"
	cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
	if test x$enable_threads = xyes; then
		thread_file='posix'
	fi
	default_use_cxa_atexit=yes
	use_gcc_stdint=wrap
	tm_defines="${tm_defines} TARGET_CYGWIN64=1"
	;;
i[34567]86-*-mingw* | x86_64-*-mingw*)
	tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/cygming.h"
	xm_file=i386/xm-mingw32.h
	c_target_objs="${c_target_objs} winnt-c.o"
	cxx_target_objs="${cxx_target_objs} winnt-c.o"
	target_has_targetcm="yes"
	case ${target} in
		x86_64-*-* | *-w64-*)
			need_64bit_isa=yes
			;;
		*)
			;;
	esac
	if test x$enable_threads = xposix ; then
		tm_file="${tm_file} i386/mingw-pthread.h"
	fi
	tm_file="${tm_file} i386/mingw32.h"
	# This makes the logic if mingw's or the w64 feature set has to be used
	case ${target} in
		*-w64-*)
			user_headers_inc_next_post="${user_headers_inc_next_post} float.h"
			user_headers_inc_next_pre="${user_headers_inc_next_pre} stddef.h stdarg.h"
			tm_file="${tm_file} i386/mingw-w64.h"
			if test x$enable_targets = xall; then
				tm_defines="${tm_defines} TARGET_BI_ARCH=1"
				if test x$with_cpu = x; then
					if test x$with_cpu_64 = x; then
						with_cpu_64=generic
					fi
				else
					case " $x86_cpus $x86_archs $x86_64_archs " in
					*" $with_cpu "*)
						;;
					*)
						echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
						echo "$x86_cpus $x86_archs $x86_64_archs" 1>&2
						exit 1
						;;
					esac
				fi
			fi
			;;
		*)
			;;
	esac
	tm_file="${tm_file} i386/mingw-stdint.h"
	tmake_file="${tmake_file} t-winnt i386/t-cygming t-slibgcc"
        case ${target} in
               x86_64-w64-*)
               		tmake_file="${tmake_file} i386/t-mingw-w64"
			;;
	       i[34567]86-w64-*)
			tmake_file="${tmake_file} i386/t-mingw-w32"
			;;
	esac
        native_system_header_dir=/mingw/include
	target_gtfiles="$target_gtfiles \$(srcdir)/config/i386/winnt.c"
	extra_options="${extra_options} i386/cygming.opt i386/mingw.opt"
	case ${target} in
		*-w64-*)
			extra_options="${extra_options} i386/mingw-w64.opt"
			;;
		*)
			;;
	esac
	extra_objs="${extra_objs} winnt.o winnt-stubs.o"
	c_target_objs="${c_target_objs} msformat-c.o"
	cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
	gas=yes
	gnu_ld=yes
	default_use_cxa_atexit=yes
	use_gcc_stdint=wrap
	case ${enable_threads} in
	  "" | yes | win32)
	    thread_file='win32'
	    ;;
	  posix)
	    thread_file='posix'
	    ;;
	esac
	case ${target} in
 		*mingw32crt*)
 			tm_file="${tm_file} i386/crtdll.h"
 			;;
		*mingw32msv* | *mingw*)
			;;
	esac
	;;
x86_64-*-fuchsia*)
	tmake_file="${tmake_file} i386/t-x86_64-elf"
	tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h fuchsia.h"
	;;
ia64*-*-elf*)
	tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h ia64/sysv4.h ia64/elf.h"
	tmake_file="ia64/t-ia64"
	target_cpu_default="0"
	if test x$gas = xyes
	then
		target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
	fi
	if test x$gnu_ld = xyes
	then
		target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
	fi
	;;
ia64*-*-freebsd*)
	tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
	target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
	tmake_file="${tmake_file} ia64/t-ia64"
	;;
ia64*-*-linux*)
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ia64/sysv4.h ia64/linux.h"
	tmake_file="${tmake_file} ia64/t-ia64 ia64/t-linux t-libunwind"
	target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
	;;
ia64*-*-hpux*)
	tm_file="${tm_file} dbxelf.h elfos.h ia64/sysv4.h ia64/hpux.h"
	tmake_file="ia64/t-ia64 ia64/t-hpux t-slibgcc"
	target_cpu_default="MASK_GNU_AS"
	case x$enable_threads in
	x | xyes | xposix )
		thread_file=posix
		;;
	esac
	use_collect2=no
	c_target_objs="ia64-c.o"
	cxx_target_objs="ia64-c.o"
	extra_options="${extra_options} ia64/ilp32.opt hpux11.opt"
	use_gcc_stdint=wrap
	tm_file="${tm_file} hpux-stdint.h"
	case ${target} in
	*-*-hpux11.3*)
		tm_file="${tm_file} ia64/hpux-unix2003.h"
		;;
	esac
	;;
ia64-hp-*vms*)
	tm_file="${tm_file} elfos.h ia64/sysv4.h vms/vms.h ia64/vms.h"
	tmake_file="${tmake_file} ia64/t-ia64"
	target_cpu_default="0"
	if test x$gas = xyes
	then
		target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
	fi
	extra_options="${extra_options} ia64/vms.opt"
	;;
iq2000*-*-elf*)
        tm_file="elfos.h newlib-stdint.h iq2000/iq2000.h"
        out_file=iq2000/iq2000.c
        md_file=iq2000/iq2000.md
        ;;
lm32-*-elf*)
        tm_file="dbxelf.h elfos.h ${tm_file} newlib-stdint.h"
	tmake_file="${tmake_file} lm32/t-lm32"
        ;;
lm32-*-rtems*)
	tm_file="dbxelf.h elfos.h ${tm_file} lm32/rtems.h rtems.h newlib-stdint.h"
	tmake_file="${tmake_file} lm32/t-lm32"
	tmake_file="${tmake_file} lm32/t-rtems"
         ;;
lm32-*-uclinux*)
        tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h lm32/uclinux-elf.h"
	tmake_file="${tmake_file} lm32/t-lm32"
        ;;
m32r-*-elf*)
	tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
 	;;
m32rle-*-elf*)
	tm_file="dbxelf.h elfos.h newlib-stdint.h m32r/little.h ${tm_file}"
	;;
m32r-*-linux*)
	tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} m32r/linux.h"
	tmake_file="${tmake_file} m32r/t-linux t-slibgcc"
	gnu_ld=yes
	if test x$enable_threads = xyes; then
		thread_file='posix'
	fi
 	;;
m32rle-*-linux*)
	tm_file="dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h m32r/little.h ${tm_file} m32r/linux.h"
	tmake_file="${tmake_file} m32r/t-linux t-slibgcc"
	gnu_ld=yes
	if test x$enable_threads = xyes; then
		thread_file='posix'
	fi
	;;
m68k-*-elf* | fido-*-elf*)
	case ${target} in
	fido-*-elf*)
		# Check that $with_cpu makes sense.
		case $with_cpu in
		"" | "fidoa")
			;;
		*)
			echo "Cannot accept --with-cpu=$with_cpu"
			exit 1
			;;
		esac
		with_cpu=fidoa
		;;
	*)
		default_m68k_cpu=68020
		default_cf_cpu=5206
		;;
	esac
	tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h newlib-stdint.h m68k/m68kemb.h m68k/m68020-elf.h"
	tm_defines="${tm_defines} MOTOROLA=1"
	tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-m68kelf"
	# Add multilibs for targets other than fido.
	case ${target} in
	fido-*-elf*)
		;;
	*)
		tmake_file="$tmake_file m68k/t-mlibs"
		;;
	esac
	;;
m68k*-*-netbsdelf*)
	default_m68k_cpu=68020
	default_cf_cpu=5475
	tm_file="${tm_file} dbxelf.h elfos.h ${nbsd_tm_file} m68k/netbsd-elf.h"
	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
	tm_defines="${tm_defines} MOTOROLA=1 CHAR_FAST8=1 SHORT_FAST16=1"
	;;
m68k*-*-openbsd*)
	default_m68k_cpu=68020
	default_cf_cpu=5475
	# needed to unconfuse gdb
	tm_defines="${tm_defines} OBSD_OLD_GAS"
	tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h m68k/openbsd.h"
	extra_options="${extra_options} openbsd.opt"
	tmake_file="t-openbsd m68k/t-openbsd"
	# we need collect2 until our bug is fixed...
	use_collect2=yes
	;;
m68k-*-uclinux*)		# Motorola m68k/ColdFire running uClinux
				# with uClibc, using the new GNU/Linux-style
				# ABI.
	default_m68k_cpu=68020
	default_cf_cpu=5206
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h flat.h m68k/linux.h m68k/uclinux.h ./sysroot-suffix.h"
	extra_options="${extra_options} m68k/uclinux.opt"
 	tm_defines="${tm_defines} MOTOROLA=1"
	tmake_file="m68k/t-floatlib m68k/t-uclinux m68k/t-mlibs"
	;;
m68k-*-linux*)			# Motorola m68k's running GNU/Linux
				# with ELF format using glibc 2
				# aka the GNU/Linux C library 6.
	default_m68k_cpu=68020
	default_cf_cpu=5475
	with_arch=${with_arch:-m68k}
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h m68k/linux.h ./sysroot-suffix.h"
	extra_options="${extra_options} m68k/ieee.opt"
	tm_defines="${tm_defines} MOTOROLA=1"
	tmake_file="${tmake_file} m68k/t-floatlib m68k/t-linux m68k/t-mlibs"
	;;
m68k-*-rtems*)
	default_m68k_cpu=68020
	default_cf_cpu=5206
	tmake_file="${tmake_file} m68k/t-floatlib m68k/t-m68kbare m68k/t-crtstuff m68k/t-rtems m68k/t-mlibs"
	tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h m68k/m68kemb.h m68k/m68020-elf.h m68k/rtemself.h rtems.h newlib-stdint.h"
	tm_defines="${tm_defines} MOTOROLA=1"
	;;
mcore-*-elf)
	tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file} mcore/mcore-elf.h"
	tmake_file=mcore/t-mcore
	inhibit_libc=true
	;;
microblaze*-linux*)
	case $target in
		microblazeel-*)
			tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
			;;
		microblaze-*)
			tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
			;;
	esac
	tm_file="${tm_file} dbxelf.h gnu-user.h linux.h microblaze/linux.h"
	tm_file="${tm_file} glibc-stdint.h"
	c_target_objs="${c_target_objs} microblaze-c.o"
	cxx_target_objs="${cxx_target_objs} microblaze-c.o"
	tmake_file="${tmake_file} microblaze/t-microblaze"
	tmake_file="${tmake_file} microblaze/t-microblaze-linux"
	;;
microblaze*-*-rtems*)
	case $target in
		microblazeel-*)
			tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
			;;
		microblaze-*)
			tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
			;;
	esac
	tm_file="${tm_file} dbxelf.h"
	tm_file="${tm_file} microblaze/rtems.h rtems.h newlib-stdint.h"
	c_target_objs="${c_target_objs} microblaze-c.o"
	cxx_target_objs="${cxx_target_objs} microblaze-c.o"
	tmake_file="${tmake_file} microblaze/t-microblaze"
	tmake_file="${tmake_file} microblaze/t-rtems"
        ;;
microblaze*-*-elf)
	case $target in
		microblazeel-*)
			tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=0"
			;;
		microblaze-*)
			tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=4321"
			;;
	esac
	tm_file="${tm_file} dbxelf.h newlib-stdint.h"
	c_target_objs="${c_target_objs} microblaze-c.o"
	cxx_target_objs="${cxx_target_objs} microblaze-c.o"
	tmake_file="${tmake_file} microblaze/t-microblaze"
        ;;
riscv*-*-linux*)
	tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h ${tm_file} riscv/linux.h"
	case "x${enable_multilib}" in
	xno) ;;
	xyes) tmake_file="${tmake_file} riscv/t-linux-multilib" ;;
	*) echo "Unknown value for enable_multilib"; exit 1
	esac
	tmake_file="${tmake_file} riscv/t-riscv riscv/t-linux"
	gnu_ld=yes
	gas=yes
	# Force .init_array support.  The configure script cannot always
	# automatically detect that GAS supports it, yet we require it.
	gcc_cv_initfini_array=yes
	;;
riscv*-*-elf* | riscv*-*-rtems*)
	tm_file="elfos.h newlib-stdint.h ${tm_file} riscv/elf.h"
	case ${target} in
	*-*-rtems*)
	  tm_file="${tm_file} rtems.h riscv/rtems.h"
	  tmake_file="${tmake_file} riscv/t-rtems"
	  ;;
	*)
	  case "x${enable_multilib}" in
	  xno) ;;
	  xyes) tmake_file="${tmake_file} riscv/t-elf-multilib" ;;
	  *) echo "Unknown value for enable_multilib"; exit 1
	  esac
	esac
	tmake_file="${tmake_file} riscv/t-riscv"
	gnu_ld=yes
	gas=yes
	# Force .init_array support.  The configure script cannot always
	# automatically detect that GAS supports it, yet we require it.
	gcc_cv_initfini_array=yes
	;;
riscv*-*-freebsd*)
	tm_file="${tm_file} elfos.h ${fbsd_tm_file} riscv/freebsd.h"
	tmake_file="${tmake_file} riscv/t-riscv"
	gnu_ld=yes
	gas=yes
	# Force .init_array support.  The configure script cannot always
	# automatically detect that GAS supports it, yet we require it.
	gcc_cv_initfini_array=yes
	;;
mips*-*-netbsd*)			# NetBSD/mips, either endian.
	target_cpu_default="MASK_ABICALLS"
	tm_file="elfos.h ${tm_file} mips/elf.h ${nbsd_tm_file} mips/netbsd.h"
	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
	;;
mips*-img-linux*)
	tm_file="dbxelf.h 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"
	tm_defines="${tm_defines} MIPS_ISA_DEFAULT=37 MIPS_ABI_DEFAULT=ABI_32"
	with_arch_32="mips32r6"
	with_arch_64="mips64r6"
	gnu_ld=yes
	gas=yes
	;;
mips*-mti-linux*)
	tm_file="dbxelf.h 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"
	tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33 MIPS_ABI_DEFAULT=ABI_32"
	with_arch_32="mips32r2"
	with_arch_64="mips64r2"
	gnu_ld=yes
	gas=yes
	;;
mips*-*-linux*)				# Linux MIPS, either endian.
	tm_file="dbxelf.h 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"
	extra_options="${extra_options} linux-android.opt"
	case ${target} in
		mipsisa32r6*)
			default_mips_arch=mips32r6
			;;
		mipsisa32r2*)
			default_mips_arch=mips32r2
			;;
		mipsisa32*)
			default_mips_arch=mips32
			;;
		mips64el-st-linux-gnu)
			default_mips_abi=n32
			tm_file="${tm_file} mips/st.h"
			tmake_file="${tmake_file} mips/t-st"
			enable_mips_multilibs="yes"
			;;
		mips64octeon*-*-linux*)
			default_mips_abi=n32
			tm_defines="${tm_defines} MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
			target_cpu_default=MASK_SOFT_FLOAT_ABI
			enable_mips_multilibs="yes"
			;;
		mipsisa64r6*-*-linux*)
			default_mips_abi=n32
			default_mips_arch=mips64r6
			enable_mips_multilibs="yes"
			;;
		mipsisa64r2*-*-linux*)
			default_mips_abi=n32
			default_mips_arch=mips64r2
			enable_mips_multilibs="yes"
			;;
		mips64*-*-linux* | mipsisa64*-*-linux*)
			default_mips_abi=n32
			enable_mips_multilibs="yes"
			;;
	esac
	if test x$enable_targets = xall; then
		enable_mips_multilibs="yes"
	fi
	if test x$enable_mips_multilibs = xyes; then
		tmake_file="${tmake_file} mips/t-linux64"
	fi
	;;
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"
	tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33 MIPS_ABI_DEFAULT=ABI_32"
	with_arch_32="mips32r2"
	with_arch_64="mips64r2"
	;;
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"
	tm_defines="${tm_defines} MIPS_ISA_DEFAULT=37 MIPS_ABI_DEFAULT=ABI_32"
	with_arch_32="mips32r6"
	with_arch_64="mips64r6"
	;;
mips*-sde-elf*)
	tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h"
	tmake_file="mips/t-sde"
	extra_options="${extra_options} mips/sde.opt"
	case "${with_newlib}" in
	  yes)
	    # newlib / libgloss.
	    ;;
	  *)
	    # MIPS toolkit libraries.
	    tm_file="$tm_file mips/sdemtk.h"
	    tmake_file="$tmake_file mips/t-sdemtk"
	    case ${enable_threads} in
	      "" | yes | mipssde)
		thread_file='mipssde'
		;;
	    esac
	    ;;
	esac
	case ${target} in
	  mipsisa32r6*)
	    tm_defines="MIPS_ISA_DEFAULT=37 MIPS_ABI_DEFAULT=ABI_32"
	    ;;
	  mipsisa32r2*)
	    tm_defines="MIPS_ISA_DEFAULT=33 MIPS_ABI_DEFAULT=ABI_32"
	    ;;
	  mipsisa32*)
	    tm_defines="MIPS_ISA_DEFAULT=32 MIPS_ABI_DEFAULT=ABI_32"
	    ;;
	  mipsisa64r6*)
	    tm_defines="MIPS_ISA_DEFAULT=69 MIPS_ABI_DEFAULT=ABI_N32"
	    ;;
	  mipsisa64r2*)
	    tm_defines="MIPS_ISA_DEFAULT=65 MIPS_ABI_DEFAULT=ABI_N32"
	    ;;
	  mipsisa64*)
	    tm_defines="MIPS_ISA_DEFAULT=64 MIPS_ABI_DEFAULT=ABI_N32"
	    ;;
	esac
	;;
mipsisa32-*-elf* | mipsisa32el-*-elf* | \
mipsisa32r2-*-elf* | mipsisa32r2el-*-elf* | \
mipsisa32r6-*-elf* | mipsisa32r6el-*-elf* | \
mipsisa64-*-elf* | mipsisa64el-*-elf* | \
mipsisa64r2-*-elf* | mipsisa64r2el-*-elf* | \
mipsisa64r6-*-elf* | mipsisa64r6el-*-elf*)
	tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
	tmake_file="mips/t-isa3264"
	case ${target} in
	  mipsisa32r6*)
	    tm_defines="${tm_defines} MIPS_ISA_DEFAULT=37"
	    ;;
	  mipsisa32r2*)
	    tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33"
	    ;;
	  mipsisa32*)
	    tm_defines="${tm_defines} MIPS_ISA_DEFAULT=32"
	    ;;
	  mipsisa64r6*)
	    tm_defines="${tm_defines} MIPS_ISA_DEFAULT=69"
	    ;;
	  mipsisa64r2*)
	    tm_defines="${tm_defines} MIPS_ISA_DEFAULT=65"
	    ;;
	  mipsisa64*)
	    tm_defines="${tm_defines} MIPS_ISA_DEFAULT=64"
	    ;;
	esac
	case ${target} in
	  mipsisa32*-*-elfoabi*)
	    tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_32"
	    tm_file="${tm_file} mips/elfoabi.h"
	    ;;
	  mipsisa64*-*-elfoabi*)
	    tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_O64"
	    tm_file="${tm_file} mips/elfoabi.h"
	    ;;
	  *-*-elf*)
	    tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
	    ;;
	esac
	;;
mipsisa64sr71k-*-elf*)
        tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
        tmake_file=mips/t-sr71k
	tm_defines="${tm_defines} MIPS_ISA_DEFAULT=64 MIPS_CPU_STRING_DEFAULT=\\\"sr71000\\\" MIPS_ABI_DEFAULT=ABI_EABI"
        ;;
mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*)
	tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
	tmake_file="mips/t-elf mips/t-sb1"
	tm_defines="${tm_defines} MIPS_ISA_DEFAULT=64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64"
	;;
mips-*-elf* | mipsel-*-elf* | mipsr5900-*-elf* | mipsr5900el-*-elf*)
	tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
	tmake_file="mips/t-elf"
	;;
mips64r5900-*-elf* | mips64r5900el-*-elf*)
	tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h"
	tmake_file="mips/t-elf"
	tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_N32"
	;;
mips64-*-elf* | mips64el-*-elf*)
	tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h"
	tmake_file="mips/t-elf"
	tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64"
	;;
mips64vr-*-elf* | mips64vrel-*-elf*)
        tm_file="elfos.h newlib-stdint.h ${tm_file} mips/vr.h mips/elf.h"
        tmake_file=mips/t-vr
	tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_EABI"
        ;;
mips64orion-*-elf* | mips64orionel-*-elf*)
	tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elforion.h mips/elf.h"
	tmake_file="mips/t-elf"
	tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64"
	;;
mips*-*-rtems*)
	tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/rtems.h rtems.h"
	tmake_file="${tmake_file} mips/t-elf mips/t-rtems"
	;;
mips-wrs-vxworks)
	tm_file="elfos.h ${tm_file} mips/elf.h vx-common.h vxworks.h mips/vxworks.h"
	tmake_file="${tmake_file} mips/t-vxworks"
	;;
mipstx39-*-elf* | mipstx39el-*-elf*)
	tm_file="elfos.h newlib-stdint.h ${tm_file} mips/r3900.h mips/elf.h"
	tmake_file="mips/t-r3900"
	;;
mmix-knuth-mmixware)
	tm_file="${tm_file} newlib-stdint.h"
	use_gcc_stdint=wrap
	;;
mn10300-*-*)
	tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
	if test x$stabs = xyes
	then
		tm_file="${tm_file} dbx.h"
	fi
	use_collect2=no
	use_gcc_stdint=wrap
	;;
msp430-*-*)
	tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
	c_target_objs="msp430-c.o"
	cxx_target_objs="msp430-c.o"
	tmake_file="${tmake_file} msp430/t-msp430"
	extra_objs="${extra_objs} msp430-devices.o"
	extra_gcc_objs="driver-msp430.o msp430-devices.o"
	# Enable .init_array unless it has been explicitly disabled.
	# The MSP430 EABI mandates the use of .init_array, and the Newlib CRT
	# code since mid-2019 expects it.
	if test x${disable_initfini_array} != xyes; then
		gcc_cv_initfini_array=yes
	fi
	case ${target} in
	  msp430-*-elfbare)
	    # __cxa_atexit increases code size, and we don't need to support
	    # dynamic shared objects on MSP430, so regular Newlib atexit is a
	    # fine replacement as it also supports registration of more than 32
	    # functions.
	    default_use_cxa_atexit=no
	    # This target does not match the generic *-*-elf case above which
	    # sets use_gcc_stdint=wrap, so explicitly set it here.
	    use_gcc_stdint=wrap
	    ;;
	esac
	;;
nds32*-*-*)
	target_cpu_default="0"
	tm_defines="${tm_defines}"
	case ${target} in
	  nds32le*-*-*)
	    ;;
	  nds32be-*-*)
	    target_cpu_default="${target_cpu_default}|MASK_BIG_ENDIAN"
	    tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
	    ;;
	esac
	case ${target} in
	  nds32*-*-elf*)
	    tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file} nds32/elf.h nds32/nds32_intrinsic.h"
	    tmake_file="nds32/t-nds32 nds32/t-elf"
	    ;;
	  nds32*-*-linux*)
	    tm_file="dbxelf.h elfos.h ${tm_file} gnu-user.h linux.h glibc-stdint.h nds32/linux.h nds32/nds32_intrinsic.h"
	    tmake_file="${tmake_file} nds32/t-nds32 nds32/t-linux"
	    gcc_cv_initfini_array=yes
	    ;;
	esac

	# Handle --enable-default-relax setting.
	if test x${enable_default_relax} = xyes; then
		tm_defines="${tm_defines} TARGET_DEFAULT_RELAX=1"
	fi
	# Handle --with-ext-dsp
	if test x${with_ext_dsp} = xyes; then
		tm_defines="${tm_defines} TARGET_DEFAULT_EXT_DSP=1"
	fi
	;;
nios2-*-*)
	tm_file="elfos.h ${tm_file}"
        tmake_file="${tmake_file} nios2/t-nios2"
        case ${target} in
        nios2-*-linux*)
                tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h nios2/linux.h "
                ;;
	nios2-*-elf*)
		tm_file="${tm_file} newlib-stdint.h nios2/elf.h"
		extra_options="${extra_options} nios2/elf.opt"
		;;
	nios2-*-rtems*)
		tm_file="${tm_file} newlib-stdint.h nios2/rtems.h rtems.h"
		tmake_file="${tmake_file} t-rtems nios2/t-rtems"
		;;
        esac
	;;
nvptx-*)
	tm_file="${tm_file} newlib-stdint.h"
	use_gcc_stdint=wrap
	tmake_file="nvptx/t-nvptx"
	if test x$enable_as_accelerator = xyes; then
		extra_programs="${extra_programs} mkoffload\$(exeext)"
		tm_file="${tm_file} nvptx/offload.h"
	fi
	;;
or1k*-*-*)
	tm_file="elfos.h ${tm_file}"
	tmake_file="${tmake_file} or1k/t-or1k"
	# Force .init_array support.  The configure script cannot always
	# automatically detect that GAS supports it, yet we require it.
	gcc_cv_initfini_array=yes

	# Handle --with-multilib-list=...
	or1k_multilibs="${with_multilib_list}"
	if test "$or1k_multilibs" = "default"; then
		or1k_multilibs="mcmov,msoft-mul,msoft-div"
	fi
	or1k_multilibs=`echo $or1k_multilibs | sed -e 's/,/ /g'`
	for or1k_multilib in ${or1k_multilibs}; do
		case ${or1k_multilib} in
		mcmov | msext | msfimm | \
		mror | mrori | \
		mhard-float | mdouble-float | munordered-float | msoft-float | \
		mhard-div | mhard-mul | \
		msoft-div | msoft-mul )
			TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG},${or1k_multilib}"
			;;
		*)
			echo "--with-multilib-list=${with_multilib_list} not supported."
			exit 1
		esac
	done
	TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`

	case ${target} in
	or1k*-*-linux*)
		tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h"
		tm_file="${tm_file} or1k/linux.h"
		;;
	or1k*-*-elf*)
		tm_file="${tm_file} newlib-stdint.h or1k/elf.h"
		extra_options="${extra_options} or1k/elf.opt"
		;;
	or1k*-*-rtems*)
		tm_file="${tm_file} newlib-stdint.h or1k/rtems.h rtems.h"
		tmake_file="${tmake_file} or1k/t-rtems"
		;;
	esac
	;;
pdp11-*-*)
	tm_file="${tm_file} newlib-stdint.h"
	use_gcc_stdint=wrap
	;;
# port not yet contributed
#powerpc-*-openbsd*)
#	tmake_file="${tmake_file} rs6000/t-fprules"
#	extra_headers=
#	;;
powerpc-*-darwin*)
	extra_options="${extra_options} ${cpu_type}/darwin.opt"
	case ${target} in
	  *-darwin1[0-9]* | *-darwin9*)
	    tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
	    tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
	    ;;
	  *-darwin8*)
	    tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch"
	    tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
	    tm_file="${tm_file} ${cpu_type}/darwin8.h"
	    ;;
	  *-darwin7*)
	    tm_file="${tm_file} ${cpu_type}/darwin7.h"
	    ;;
	  *-darwin[456]*)
	    # Earlier - ingle arch, with 32b only
	    # OS X 10.0, the first edition is Darwin4
	    ;;
	esac
	tmake_file="${tmake_file} t-slibgcc"
	;;
powerpc64-*-darwin*)
	extra_options="${extra_options} ${cpu_type}/darwin.opt"
	tmake_file="${tmake_file} ${cpu_type}/t-darwin64-biarch t-slibgcc"
	tm_file="${tm_file} ${cpu_type}/darwin64-biarch.h"
	;;
powerpc*-*-freebsd*)
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h ${fbsd_tm_file} rs6000/sysv4.h"
	extra_options="${extra_options} rs6000/sysv4.opt"
	tmake_file="rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
	case ${target} in
	     powerpc64*)
	    	tm_file="${tm_file} rs6000/default64.h rs6000/freebsd64.h"
		tmake_file="${tmake_file} rs6000/t-freebsd64"
		extra_options="${extra_options} rs6000/linux64.opt"
		if test $fbsd_major -ge 13; then
		    tm_defines="${tm_defines} TARGET_FREEBSD32_SECURE_PLT=1"
		fi
		;;
	     *)
		if test $fbsd_major -ge 13; then
		    tm_file="rs6000/secureplt.h ${tm_file}"
		fi
	        tm_file="${tm_file} rs6000/freebsd.h"
		;;
	esac
	;;
powerpc-*-netbsd*)
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h ${nbsd_tm_file} freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
	tmake_file="${tmake_file} rs6000/t-netbsd"
	extra_options="${extra_options} rs6000/sysv4.opt"
	;;
powerpc-*-eabisimaltivec*)
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabisim.h rs6000/eabialtivec.h"
	extra_options="${extra_options} rs6000/sysv4.opt"
	tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
	use_gcc_stdint=wrap
	;;
powerpc-*-eabisim*)
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabisim.h"
	extra_options="${extra_options} rs6000/sysv4.opt"
	tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
	use_gcc_stdint=wrap
	;;
powerpc-*-elf*)
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h"
	extra_options="${extra_options} rs6000/sysv4.opt"
	tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
	;;
powerpc-*-eabialtivec*)
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabialtivec.h"
	extra_options="${extra_options} rs6000/sysv4.opt"
	tmake_file="rs6000/t-fprules rs6000/t-ppcendian rs6000/t-ppccomm"
	use_gcc_stdint=wrap
	;;
powerpc-*-eabi*)
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h"
	extra_options="${extra_options} rs6000/sysv4.opt"
	tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
	use_gcc_stdint=wrap
	;;
powerpc-*-rtems*)
	tm_file="rs6000/biarch64.h ${tm_file} dbxelf.h elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/rtems.h rtems.h"
	extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
	tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-rtems rs6000/t-ppccomm"
	;;
powerpc*-*-linux*)
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h freebsd-spec.h rs6000/sysv4.h"
	extra_options="${extra_options} rs6000/sysv4.opt"
	tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm"
	extra_objs="$extra_objs rs6000-linux.o"
	case ${target} in
	    powerpc*le-*-*)
		tm_file="${tm_file} rs6000/sysv4le.h" ;;
	esac
	case ${target}:${with_cpu} in
	    powerpc64*: | powerpc64*:native) cpu_is_64bit=yes ;;
	esac
	maybe_biarch=${cpu_is_64bit}
	case ${enable_targets} in
	    *powerpc64*) maybe_biarch=yes ;;
	    all) maybe_biarch=yes ;;
	esac
	case ${target}:${enable_targets}:${maybe_biarch} in
	    powerpc64-* | powerpc-*:*:yes | *:*powerpc64-*:yes | *:all:yes \
	    | powerpc64le*:*powerpcle* | powerpc64le*:*powerpc-* \
	    | powerpcle-*:*powerpc64le*:yes)
		if test x$cpu_is_64bit = xyes; then
		    tm_file="${tm_file} rs6000/default64.h"
		fi
		tm_file="rs6000/biarch64.h ${tm_file} rs6000/linux64.h glibc-stdint.h"
		tmake_file="$tmake_file rs6000/t-linux64"
		case ${target} in
		    powerpc*le-*-*)
			tmake_file="$tmake_file rs6000/t-linux64le"
			case ${enable_targets} in
			    all | *powerpc64-* | *powerpc-*)
				tmake_file="$tmake_file rs6000/t-linux64lebe" ;;
			esac ;;
		    *)
			case ${enable_targets} in
			    all | *powerpc64le-* | *powerpcle-*)
				tmake_file="$tmake_file rs6000/t-linux64bele" ;;
			esac ;;
		esac
		extra_options="${extra_options} rs6000/linux64.opt"
		;;
	    powerpc64*)
		tm_file="${tm_file} rs6000/default64.h rs6000/linux64.h glibc-stdint.h"
		extra_options="${extra_options} rs6000/linux64.opt"
		tmake_file="${tmake_file} rs6000/t-linux"
		;;
	    *)
		tm_file="${tm_file} rs6000/linux.h glibc-stdint.h"
		tmake_file="${tmake_file} rs6000/t-ppcos rs6000/t-linux"
		;;
	esac
	case ${target} in
	    powerpc*-*-linux*ppc476*)
		tm_file="${tm_file} rs6000/476.h"
		extra_options="${extra_options} rs6000/476.opt" ;;
	    powerpc*-*-linux*altivec*)
		tm_file="${tm_file} rs6000/linuxaltivec.h" ;;
	esac
	case ${target} in
	    *-linux*-musl*)
		enable_secureplt=yes ;;
	esac
	if test x${enable_secureplt} = xyes; then
		tm_file="rs6000/secureplt.h ${tm_file}"
	fi
	;;
powerpc-wrs-vxworks*)
	tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h rs6000/sysv4.h"
	tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-ppccomm rs6000/t-vxworks"
	extra_options="${extra_options} rs6000/sysv4.opt"
	extra_headers="${extra_headers} ppc-asm.h"
	case ${target} in
          *-vxworksmils*)
            tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksmils.h"
            tmake_file="${tmake_file} rs6000/t-vxworksmils"
            ;;
	  *-vxworksae*)
	    tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/vxworksae.h"
	    tmake_file="${tmake_file} rs6000/t-vxworksae"
	    ;;
	  *-vxworks*)
	    tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
	    ;;
	esac
	;;
powerpc-*-lynxos*)
	xm_defines=POSIX
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h rs6000/sysv4.h rs6000/lynx.h lynx.h"
	tmake_file="t-lynx rs6000/t-lynx"
	extra_options="${extra_options} rs6000/sysv4.opt lynx.opt"
	thread_file=lynx
	gnu_ld=yes
	gas=yes
	;;
powerpcle-*-elf*)
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h"
	tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
	extra_options="${extra_options} rs6000/sysv4.opt"
	;;
powerpcle-*-eabisim*)
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h rs6000/eabisim.h"
	tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
	extra_options="${extra_options} rs6000/sysv4.opt"
	use_gcc_stdint=wrap
	;;
powerpcle-*-eabi*)
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h"
	tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
	extra_options="${extra_options} rs6000/sysv4.opt"
	use_gcc_stdint=wrap
	;;
pru*-*-*)
	tm_file="elfos.h newlib-stdint.h ${tm_file}"
	tmake_file="${tmake_file} pru/t-pru"
	extra_objs="pru-pragma.o pru-passes.o"
	use_gcc_stdint=wrap
	;;
rs6000-ibm-aix6.* | powerpc-ibm-aix6.*)
	tm_file="${tm_file} rs6000/aix.h rs6000/aix61.h rs6000/xcoff.h rs6000/aix-stdint.h"
	tmake_file="rs6000/t-aix52 t-slibgcc"
	extra_options="${extra_options} rs6000/aix64.opt"
	use_collect2=yes
	thread_file='aix'
	use_gcc_stdint=wrap
	default_use_cxa_atexit=yes
	;;
rs6000-ibm-aix7.1.* | powerpc-ibm-aix7.1.*)
	tm_file="${tm_file} rs6000/aix.h rs6000/aix71.h rs6000/xcoff.h rs6000/aix-stdint.h"
	tmake_file="rs6000/t-aix52 t-slibgcc"
	extra_options="${extra_options} rs6000/aix64.opt"
	use_collect2=yes
	thread_file='aix'
	use_gcc_stdint=wrap
	default_use_cxa_atexit=yes
	;;
rs6000-ibm-aix[789].* | powerpc-ibm-aix[789].*)
	tm_file="${tm_file} rs6000/aix.h rs6000/aix72.h rs6000/xcoff.h rs6000/aix-stdint.h"
	tmake_file="rs6000/t-aix52 t-slibgcc"
	extra_options="${extra_options} rs6000/aix64.opt"
	use_collect2=yes
	thread_file='aix'
	use_gcc_stdint=wrap
	default_use_cxa_atexit=yes
	;;
rl78-*-elf*)
	tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
	target_has_targetm_common=no
	c_target_objs="rl78-c.o"
	cxx_target_objs="rl78-c.o"
	tmake_file="${tmake_file} rl78/t-rl78"
	;;
rx-*-elf*)
	tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
	tmake_file="${tmake_file} rx/t-rx"
	extra_options="${extra_options} rx/elf.opt"
	;;
rx-*-linux*)
	tm_file="elfos.h linux.h glibc-stdint.h rx/linux.h ../../libgcc/config/rx/rx-abi.h"
	tmake_file="${tmake_file} rx/t-linux"
	;;
s390-*-linux*)
	tm_file="s390/s390.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
	c_target_objs="${c_target_objs} s390-c.o"
	cxx_target_objs="${cxx_target_objs} s390-c.o"
	if test x$enable_targets = xall; then
		tmake_file="${tmake_file} s390/t-linux64"
	fi
	tmake_file="${tmake_file} s390/t-s390"
	;;
s390x-*-linux*)
	tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h s390/linux.h"
	tm_p_file="linux-protos.h s390/s390-protos.h"
	c_target_objs="${c_target_objs} s390-c.o"
	cxx_target_objs="${cxx_target_objs} s390-c.o"
	md_file=s390/s390.md
	extra_modes=s390/s390-modes.def
	out_file=s390/s390.c
	tmake_file="${tmake_file} s390/t-linux64 s390/t-s390"
	;;
s390x-ibm-tpf*)
	tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h glibc-stdint.h s390/tpf.h"
	tm_p_file=s390/s390-protos.h
	c_target_objs="${c_target_objs} s390-c.o"
	cxx_target_objs="${cxx_target_objs} s390-c.o"
	md_file=s390/s390.md
	extra_modes=s390/s390-modes.def
	out_file=s390/s390.c
	thread_file='tpf'
	extra_options="${extra_options} s390/tpf.opt"
	tmake_file="${tmake_file} s390/t-s390"
	;;
sh-*-elf* | sh[12346l]*-*-elf* | \
  sh-*-linux* | sh[2346lbe]*-*-linux* | \
  sh-*-netbsdelf* | shl*-*-netbsdelf*)
	tmake_file="${tmake_file} sh/t-sh sh/t-elf"
	if test x${with_endian} = x; then
		case ${target} in
		sh[1234]*be-*-* | sh[1234]*eb-*-*) with_endian=big ;;
		shbe-*-* | sheb-*-*)		   with_endian=big,little ;;
		sh[1234]l* | sh[34]*-*-linux*)	   with_endian=little ;;
		shl* | sh*-*-linux* | \
		  sh-superh-elf)		   with_endian=little,big ;;
		sh[1234]*-*-*)			   with_endian=big ;;
		*)				   with_endian=big,little ;;
		esac
	fi
	# TM_ENDIAN_CONFIG is used by t-sh to determine multilibs.
	#  First word : the default endian.
	#  Second word: the secondary endian (optional).
	case ${with_endian} in
	big)		TM_ENDIAN_CONFIG=mb ;;
	little)		TM_ENDIAN_CONFIG=ml ;;
	big,little)	TM_ENDIAN_CONFIG="mb ml" ;;
	little,big)	TM_ENDIAN_CONFIG="ml mb" ;;
	*)	echo "with_endian=${with_endian} not supported."; exit 1 ;;
	esac
	case ${with_endian} in
	little*)	tm_file="sh/little.h ${tm_file}" ;;
	esac
	tm_file="${tm_file} dbxelf.h elfos.h sh/elf.h"
	case ${target} in
	sh*-*-linux*)	tmake_file="${tmake_file} sh/t-linux"
			if test x$enable_fdpic = xyes; then
				tm_defines="$tm_defines FDPIC_DEFAULT=1"
			fi
			tm_file="${tm_file} gnu-user.h linux.h glibc-stdint.h sh/linux.h" ;;
	sh*-*-netbsd*)
			tm_file="${tm_file} ${nbsd_tm_file} sh/netbsd-elf.h"
			extra_options="${extra_options} netbsd.opt netbsd-elf.opt"

			;;
	sh*-superh-elf)	if test x$with_libgloss != xno; then
                                with_libgloss=yes
                                tm_file="${tm_file} sh/newlib.h"
                        fi
			tm_file="${tm_file} sh/embed-elf.h"
			tm_file="${tm_file} sh/superh.h"
			extra_options="${extra_options} sh/superh.opt" ;;
	*)		if test x$with_newlib = xyes \
			   && test x$with_libgloss = xyes; then
				tm_file="${tm_file} sh/newlib.h"
			fi
			tm_file="${tm_file} sh/embed-elf.h" ;;
	esac
	case ${target} in
	*-*-netbsd)
		;;
	*-*-elf*)
		tm_file="${tm_file} newlib-stdint.h"
		;;
	esac
	# sed el/eb endian suffixes away to avoid confusion with sh[23]e
	case `echo ${target} | sed 's/e[lb]-/-/'` in
	sh4a_single_only*)	sh_cpu_target=sh4a-single-only ;;
	sh4a_single*)		sh_cpu_target=sh4a-single ;;
	sh4a_nofpu*)		sh_cpu_target=sh4a-nofpu ;;
	sh4al)			sh_cpu_target=sh4al ;;
	sh4a*)			sh_cpu_target=sh4a ;;
	sh4_single_only*)	sh_cpu_target=sh4-single-only ;;
	sh4_single*)		sh_cpu_target=sh4-single ;;
	sh4_nofpu*)		sh_cpu_target=sh4-nofpu ;;
	sh4* | sh-superh-*)	sh_cpu_target=sh4 ;;
	sh3e*)			sh_cpu_target=sh3e ;;
	sh*-*-netbsd* | sh3*)	sh_cpu_target=sh3 ;;
	sh2a_single_only*)	sh_cpu_target=sh2a-single-only ;;
	sh2a_single*)		sh_cpu_target=sh2a-single ;;
	sh2a_nofpu*)		sh_cpu_target=sh2a-nofpu ;;
	sh2a*)			sh_cpu_target=sh2a ;;
	sh2e*)			sh_cpu_target=sh2e ;;
	sh2*)			sh_cpu_target=sh2 ;;
	*)			sh_cpu_target=sh1 ;;
	esac
	# did the user say --without-fp ?
	if test x$with_fp = xno; then
		case ${sh_cpu_target} in
		sh4al | sh1)	;;
		sh4a* )		sh_cpu_target=sh4a-nofpu ;;
		sh4*)		sh_cpu_target=sh4-nofpu ;;
		sh3*)		sh_cpu_target=sh3 ;;
		sh2a*)		sh_cpu_target=sh2a-nofpu ;;
		sh2*)		sh_cpu_target=sh2 ;;
		*)	echo --without-fp not available for $target: ignored
		esac
		tm_defines="$tm_defines STRICT_NOFPU=1"
	fi
	sh_cpu_default="`echo $with_cpu|sed s/^m/sh/|tr A-Z_ a-z-`"
	case $sh_cpu_default in
	  sh2a-single-only | sh2a-single | sh2a-nofpu | sh2a | \
	  sh4a-single-only | sh4a-single | sh4a-nofpu | sh4a | sh4al | \
	  sh4-single-only | sh4-single | sh4-nofpu | sh4 | sh4-300 | \
	  sh3e | sh3 | sh2e | sh2 | sh1) ;;
	"")	sh_cpu_default=${sh_cpu_target} ;;
	*)	echo "with_cpu=$with_cpu not supported"; exit 1 ;;
	esac
	sh_multilibs=${with_multilib_list}
	if test "$sh_multilibs" = "default" ; then
		case ${target} in
		sh[1234]*)	sh_multilibs=${sh_cpu_target} ;;
		sh-superh-*)	sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
		sh*-*-linux*)	sh_multilibs=m1,m2,m2a,m3e,m4 ;;
		sh*-*-netbsd*)	sh_multilibs=m3,m3e,m4 ;;
		*) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;;
		esac
		if test x$with_fp = xno; then
			sh_multilibs="`echo $sh_multilibs|sed -e s/m4/sh4-nofpu/ -e s/,m4-[^,]*//g -e s/,m[23]e// -e s/m2a,m2a-single/m2a-nofpu/ -e s/m5-..m....,//g`"
		fi
	fi
	target_cpu_default=SELECT_`echo ${sh_cpu_default}|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`
	tm_defines=${tm_defines}' SH_MULTILIB_CPU_DEFAULT=\"'`echo $sh_cpu_default|sed s/sh/m/`'\"'
	tm_defines="$tm_defines SUPPORT_`echo $sh_cpu_default | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
	sh_multilibs=`echo $sh_multilibs | sed -e 's/,/ /g' -e 's/^[Ss][Hh]/m/' -e 's/ [Ss][Hh]/ m/g' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
	for sh_multilib in ${sh_multilibs}; do
		case ${sh_multilib} in
		m1 | m2 | m2e | m3 | m3e | \
		m4 | m4-single | m4-single-only | m4-nofpu | m4-300 |\
		m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al | \
		m2a | m2a-single | m2a-single-only | m2a-nofpu)
			# TM_MULTILIB_CONFIG is used by t-sh for the non-endian multilib definition
			# It is passed to MULTIILIB_OPTIONS verbatim.
			TM_MULTILIB_CONFIG="${TM_MULTILIB_CONFIG}/${sh_multilib}"
			tm_defines="$tm_defines SUPPORT_`echo $sh_multilib | sed 's/^m/sh/' | tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
			;;
		\!*)	# TM_MULTILIB_EXCEPTIONS_CONFIG is used by t-sh
			# It is passed the MULTILIB_EXCEPTIONS verbatim.
			TM_MULTILIB_EXCEPTIONS_CONFIG="${TM_MULTILIB_EXCEPTIONS_CONFIG} `echo $sh_multilib | sed 's/^!//'`" ;;
		*)
			echo "with_multilib_list=${sh_multilib} not supported."
			exit 1
			;;
		esac
	done
	TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's:^/::'`
	if test x${enable_incomplete_targets} = xyes ; then
		tm_defines="$tm_defines SUPPORT_SH1=1 SUPPORT_SH2E=1 SUPPORT_SH4=1 SUPPORT_SH4_SINGLE=1 SUPPORT_SH2A=1 SUPPORT_SH2A_SINGLE=1"
	fi
	tm_file="$tm_file ./sysroot-suffix.h"
	tmake_file="$tmake_file t-sysroot-suffix"
	;;
sh-*-rtems*)
	tmake_file="${tmake_file} sh/t-sh sh/t-rtems"
	tm_file="${tm_file} dbxelf.h elfos.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h newlib-stdint.h"
	;;
sh-wrs-vxworks)
	tmake_file="$tmake_file sh/t-sh sh/t-vxworks"
	tm_file="${tm_file} elfos.h sh/elf.h sh/embed-elf.h vx-common.h vxworks.h sh/vxworks.h"
	;;
sparc-*-elf*)
	tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp-elf.h"
	case ${target} in
	    *-leon-*)
		tmake_file="sparc/t-sparc sparc/t-leon"
		;;
	    *-leon[3-9]*)
		tmake_file="sparc/t-sparc sparc/t-leon3"
		;;
	    *)
		tmake_file="sparc/t-sparc sparc/t-elf"
		;;
	esac
	;;
sparc-*-rtems*)
	tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
	tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems"
	;;
sparc-*-linux*)
	tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
	extra_options="${extra_options} sparc/long-double-switch.opt"
	case ${target} in
	    *-leon-*)
		tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon"
		;;
	    *-leon[3-9]*)
		tmake_file="${tmake_file} sparc/t-sparc sparc/t-leon3"
		;;
	    *)
		tmake_file="${tmake_file} sparc/t-sparc"
		;;
	esac
	if test x$enable_targets = xall; then
		tm_file="sparc/biarch64.h ${tm_file} sparc/linux64.h"
		tmake_file="${tmake_file} sparc/t-linux64"
	else
		tm_file="${tm_file} sparc/linux.h"
		tmake_file="${tmake_file} sparc/t-linux"
	fi
	;;
sparc-*-netbsdelf*)
	tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
	extra_options="${extra_options} sparc/long-double-switch.opt"
	tmake_file="${tmake_file} sparc/t-sparc"
	;;
sparc*-*-solaris2*)
	tm_file="sparc/biarch64.h ${tm_file} ${sol2_tm_file} sparc/tso.h"
	case ${target} in
	    sparc64-*-* | sparcv9-*-*)
		tm_file="sparc/default64.h ${tm_file}"
		;;
	    *)
		test x$with_cpu != x || with_cpu=v9
		;;
	esac
	tmake_file="${tmake_file} sparc/t-sparc sparc/t-sol2"
	;;
sparc-wrs-vxworks)
	tm_file="${tm_file} elfos.h sparc/sysv4.h vx-common.h vxworks.h sparc/vxworks.h"
	tmake_file="${tmake_file} sparc/t-sparc sparc/t-vxworks"
	;;
sparc64-*-elf*)
	tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h"
	extra_options="${extra_options}"
	tmake_file="${tmake_file} sparc/t-sparc"
	;;
sparc64-*-rtems*)
	tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h sparc/sysv4.h sparc/sp64-elf.h sparc/rtemself.h rtems.h"
	extra_options="${extra_options}"
	tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
	;;
sparc64-*-linux*)
	tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default64.h sparc/linux64.h sparc/tso.h"
	extra_options="${extra_options} sparc/long-double-switch.opt"
	tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
	;;
sparc64-*-freebsd*|ultrasparc-*-freebsd*)
	tm_file="${tm_file} ${fbsd_tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/freebsd.h"
	extra_options="${extra_options} sparc/long-double-switch.opt"
	case "x$with_cpu" in
		xultrasparc) ;;
		x) with_cpu=ultrasparc ;;
		*) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
	esac
	tmake_file="${tmake_file} sparc/t-sparc"
	;;
sparc64-*-netbsd*)
	tm_file="sparc/biarch64.h ${tm_file}"
	tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
	extra_options="${extra_options} sparc/long-double-switch.opt"
	tmake_file="${tmake_file} sparc/t-sparc sparc/t-netbsd64"
	;;
sparc64-*-openbsd*)
	tm_file="sparc/openbsd1-64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp64-elf.h"
	tm_file="${tm_file} openbsd.h openbsd-stdint.h openbsd-libpthread.h sparc/openbsd64.h"
	extra_options="${extra_options} openbsd.opt"
	extra_options="${extra_options}"
	gas=yes gnu_ld=yes
	with_cpu=ultrasparc
	tmake_file="${tmake_file} sparc/t-sparc"
	;;
tic6x-*-elf)
	tm_file="elfos.h ${tm_file} c6x/elf-common.h c6x/elf.h"
	tm_file="${tm_file} dbxelf.h tm-dwarf2.h newlib-stdint.h"
	tmake_file="c6x/t-c6x c6x/t-c6x-elf"
	use_collect2=no
	;;
tic6x-*-uclinux)
	tm_file="elfos.h ${tm_file} gnu-user.h linux.h c6x/elf-common.h c6x/uclinux-elf.h"
	tm_file="${tm_file} dbxelf.h tm-dwarf2.h glibc-stdint.h"
	tm_file="${tm_file} ./sysroot-suffix.h"
	tmake_file="t-sysroot-suffix t-slibgcc"
	tmake_file="${tmake_file} c6x/t-c6x c6x/t-c6x-elf c6x/t-c6x-uclinux"
	use_collect2=no
	;;
tilegx*-*-linux*)
	tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h tilegx/linux.h ${tm_file}"
        tmake_file="${tmake_file} tilegx/t-tilegx"
	extra_objs="${extra_objs} mul-tables.o"
	c_target_objs="${c_target_objs} tilegx-c.o"
	cxx_target_objs="${cxx_target_objs} tilegx-c.o"
	extra_headers="feedback.h"
	case $target in
	tilegxbe-*)
		tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
 		;;
	esac
	;;
tilepro*-*-linux*)
	tm_file="elfos.h gnu-user.h linux.h glibc-stdint.h tilepro/linux.h ${tm_file}"
        tmake_file="${tmake_file} tilepro/t-tilepro"
	extra_objs="${extra_objs} mul-tables.o"
	c_target_objs="${c_target_objs} tilepro-c.o"
	cxx_target_objs="${cxx_target_objs} tilepro-c.o"
	extra_headers="feedback.h"
	;;
v850-*-rtems*)
	target_cpu_default="TARGET_CPU_generic"
	tm_file="dbxelf.h elfos.h v850/v850.h"
	tm_file="${tm_file} rtems.h v850/rtems.h newlib-stdint.h"
	tmake_file="${tmake_file} v850/t-v850"
	tmake_file="${tmake_file} v850/t-rtems"
	use_collect2=no
	c_target_objs="v850-c.o"
	cxx_target_objs="v850-c.o"
	;;
v850*-*-*)
	case ${target} in
	v850e3v5-*-*)
		target_cpu_default="TARGET_CPU_v850e3v5"
		;;
	v850e2v3-*-*)
		target_cpu_default="TARGET_CPU_v850e2v3"
		;;
	v850e2-*-*)
		target_cpu_default="TARGET_CPU_v850e2"
		;;
	v850e1-*-* | v850es-*-*)
		target_cpu_default="TARGET_CPU_v850e1"
		;;
	v850e-*-*)
		target_cpu_default="TARGET_CPU_v850e"
		;;
	v850-*-*)
		target_cpu_default="TARGET_CPU_generic"
		;;
	esac
	tm_file="dbxelf.h elfos.h newlib-stdint.h v850/v850.h"
	if test x$stabs = xyes
	then
		tm_file="${tm_file} dbx.h"
	fi
	use_collect2=no
	c_target_objs="v850-c.o"
	cxx_target_objs="v850-c.o"
	use_gcc_stdint=wrap
	;;
vax-*-linux*)
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h vax/elf.h vax/linux.h"
	extra_options="${extra_options} vax/elf.opt"
	;;
vax-*-netbsdelf*)
	tm_file="${tm_file} elfos.h ${nbsd_tm_file} vax/elf.h vax/netbsd-elf.h"
	extra_options="${extra_options} netbsd.opt netbsd-elf.opt vax/elf.opt"
	tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
	;;
vax-*-openbsd*)
	tm_file="vax/vax.h vax/openbsd1.h openbsd.h openbsd-stdint.h openbsd-libpthread.h vax/openbsd.h"
	extra_options="${extra_options} openbsd.opt"
	use_collect2=yes
	;;
visium-*-elf*)
	tm_file="dbxelf.h elfos.h ${tm_file} visium/elf.h newlib-stdint.h"
	tmake_file="visium/t-visium visium/t-crtstuff"
	;;
xstormy16-*-elf)
	# For historical reasons, the target files omit the 'x'.
	tm_file="dbxelf.h elfos.h newlib-stdint.h stormy16/stormy16.h"
	tm_p_file=stormy16/stormy16-protos.h
	tm_d_file="elfos.h stormy16/stormy16.h"
	md_file=stormy16/stormy16.md
	out_file=stormy16/stormy16.c
	extra_options=stormy16/stormy16.opt
	tmake_file="stormy16/t-stormy16"
	;;
xtensa*-*-elf*)
	tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h xtensa/elf.h"
	extra_options="${extra_options} xtensa/elf.opt"
	;;
xtensa*-*-linux*)
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h"
	tmake_file="${tmake_file} xtensa/t-xtensa"
	;;
xtensa*-*-uclinux*)
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h"
	tmake_file="${tmake_file} xtensa/t-xtensa"
	extra_options="${extra_options} xtensa/uclinux.opt"
	;;
am33_2.0-*-linux*)
	tm_file="mn10300/mn10300.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h"
	gas=yes gnu_ld=yes
	use_collect2=no
	;;
m32c-*-rtems*)
	tm_file="dbxelf.h elfos.h ${tm_file} m32c/rtems.h rtems.h newlib-stdint.h"
	c_target_objs="m32c-pragma.o"
	cxx_target_objs="m32c-pragma.o"
 	;;
m32c-*-elf*)
	tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
	c_target_objs="m32c-pragma.o"
	cxx_target_objs="m32c-pragma.o"
 	;;
*)
	echo "*** Configuration ${target} not supported" 1>&2
	exit 1
	;;
esac

case ${target} in
i[34567]86-*-linux* | x86_64-*-linux*)
	tmake_file="${tmake_file} i386/t-pmm_malloc i386/t-i386"
	;;
i[34567]86-*-* | x86_64-*-*)
	tmake_file="${tmake_file} i386/t-gmm_malloc i386/t-i386"
	;;
powerpc*-*-* | rs6000-*-*)
	tm_file="${tm_file} ${cpu_type}/option-defaults.h"
esac

# non-glibc systems
case ${target} in
*-linux-musl*)
	tmake_file="${tmake_file} t-musl"
	;;
*-linux-uclibc*)
	tmake_file="${tmake_file} t-uclibc"
	;;
esac

# Assume the existence of indirect function support and allow the use of the
# resolver attribute.
case ${target} in
*-*-linux*android*|*-*-linux*uclibc*|*-*-linux*musl*)
        ;;
*-*-linux*)
	case ${target} in
	aarch64*-* | arm*-* | i[34567]86-* | powerpc*-* | s390*-* | sparc*-* | x86_64-*)
		default_gnu_indirect_function=yes
		;;
	esac
	;;
esac

# Build mkoffload tool
case ${target} in
*-intelmic-* | *-intelmicemul-*)
	tmake_file="${tmake_file} i386/t-intelmic"
	tm_file="${tm_file} i386/intelmic-offload.h"
	;;
esac

if [ "$target_has_targetcm" = "no" ]; then
  c_target_objs="$c_target_objs default-c.o"
  cxx_target_objs="$cxx_target_objs default-c.o"
fi

if [ "$common_out_file" = "" ]; then
  if [ "$target_has_targetm_common" = "yes" ]; then
    common_out_file="$cpu_type/$cpu_type-common.c"
  else
    common_out_file="default-common.c"
  fi
fi

if [ "$target_has_targetdm" = "no" ]; then
  d_target_objs="$d_target_objs default-d.o"
fi

# Support for --with-cpu and related options (and a few unrelated options,
# too).
case ${with_cpu} in
  yes | no)
    echo "--with-cpu must be passed a value" 1>&2
    exit 1
    ;;
esac

# Set arch and cpu from ${target} and ${target_noncanonical}.  Set cpu
# to generic if there is no processor scheduler model for the target.
arch=
cpu=
arch_without_sse2=no
arch_without_64bit=no
case ${target} in
  i386-*-freebsd*)
    if test $fbsd_major -ge 6; then
      arch=i486
    else
      arch=i386
    fi
    cpu=generic
    arch_without_sse2=yes
    arch_without_64bit=yes
    ;;
  i386-*-netbsd*)
    arch=i486
    cpu=generic
    arch_without_sse2=yes
    arch_without_64bit=yes
    ;;
  i386-*-*)
    arch=i386
    cpu=i386
    arch_without_sse2=yes
    arch_without_64bit=yes
    ;;
  i486-*-*)
    arch=i486
    cpu=i486
    arch_without_sse2=yes
    arch_without_64bit=yes
    ;;
  i586-*-*)
    arch_without_sse2=yes
    arch_without_64bit=yes
    case ${target_noncanonical} in
      k6_2-*)
	arch=k6-2
	cpu=k6-2
	;;
      k6_3-*)
	arch=k6-3
	cpu=k6-3
	;;
      k6-*)
	arch=k6
	cpu=k6
	;;
      pentium_mmx-*|winchip_c6-*|winchip2-*|c3-*)
	arch=pentium-mmx
	cpu=pentium-mmx
	;;
      *)
	arch=pentium
	cpu=pentium
	;;
    esac
    ;;
  i686-*-* | i786-*-*)
    case ${target_noncanonical} in
      znver1-*)
	arch=znver1
	cpu=znver1
	;;
      znver2-*)
	arch=znver2
	cpu=znver2
	;;
      bdver4-*)
        arch=bdver4
        cpu=bdver4
        ;;
      bdver3-*)
        arch=bdver3
        cpu=bdver3
        ;;
      bdver2-*)
        arch=bdver2
        cpu=bdver2
        ;;
      bdver1-*)
	arch=bdver1
	cpu=bdver1
	;;
      btver1-*)
	arch=btver1
	cpu=btver1
	;;
      btver2-*)
	arch=btver2
	cpu=btver2
	;;
      amdfam10-*|barcelona-*)
	arch=amdfam10
	cpu=amdfam10
	;;
      k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
	arch=k8-sse3
	cpu=k8-sse3
	;;
      k8-*|opteron-*|athlon64-*|athlon_fx-*)
	arch=k8
	cpu=k8
	;;
      athlon_xp-*|athlon_mp-*|athlon_4-*)
	arch=athlon-4
	cpu=athlon-4
	arch_without_sse2=yes
	arch_without_64bit=yes
	;;
      athlon_tbird-*|athlon-*)
	arch=athlon
	cpu=athlon
	arch_without_sse2=yes
	;;
      geode-*)
	arch=geode
	cpu=geode
	arch_without_sse2=yes
	;;
      pentium2-*)
	arch=pentium2
	cpu=pentium2
	arch_without_sse2=yes
	;;
      pentium3-*|pentium3m-*)
	arch=pentium3
	cpu=pentium3
	arch_without_sse2=yes
	;;
      pentium4-*|pentium4m-*)
	arch=pentium4
	cpu=pentium4
	;;
      prescott-*)
	arch=prescott
	cpu=prescott
	;;
      nocona-*)
	arch=nocona
	cpu=nocona
	;;
      atom-*)
	arch=atom
	cpu=atom
	;;
      slm-*)
	arch=slm
	cpu=slm
	;;
      core2-*)
	arch=core2
	cpu=core2
	;;
      corei7-*)
	arch=corei7
	cpu=corei7
	;;
      corei7_avx-*)
	arch=corei7-avx
	cpu=corei7-avx
	;;
      pentium_m-*)
	arch=pentium-m
	cpu=pentium-m
	;;
      pentiumpro-*)
	arch=pentiumpro
	cpu=pentiumpro
	arch_without_sse2=yes
	;;
      *)
	arch=pentiumpro
	cpu=generic
	arch_without_sse2=yes
	arch_without_64bit=yes
	;;
    esac
    ;;
  x86_64-*-*)
    case ${target_noncanonical} in
      znver1-*)
	arch=znver1
	cpu=znver1
	;;
      znver2-*)
	arch=znver2
	cpu=znver2
	;;
      bdver4-*)
        arch=bdver4
        cpu=bdver4
        ;;
      bdver3-*)
        arch=bdver3
        cpu=bdver3
        ;;
      bdver2-*)
        arch=bdver2
        cpu=bdver2
        ;;
      bdver1-*)
	arch=bdver1
	cpu=bdver1
	;;
      btver1-*)
	arch=btver1
	cpu=btver1
	;;
      btver2-*)
	arch=btver2
	cpu=btver2
	;;
      amdfam10-*|barcelona-*)
	arch=amdfam10
	cpu=amdfam10
	;;
      k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
	arch=k8-sse3
	cpu=k8-sse3
	;;
      k8-*|opteron-*|athlon_64-*)
	arch=k8
	cpu=k8
	;;
      nocona-*)
	arch=nocona
	cpu=nocona
	;;
      atom-*)
	arch=atom
	cpu=atom
	;;
      slm-*)
	arch=slm
	cpu=slm
	;;
      core2-*)
	arch=core2
	cpu=core2
	;;
      corei7-*)
	arch=corei7
	cpu=corei7
	;;
      *)
	arch=x86-64
	cpu=generic
	;;
    esac
    ;;
esac

# If there is no $with_cpu option, try to infer one from ${target}.
# This block sets nothing except for with_cpu.
if test x$with_cpu = x ; then
  case ${target} in
    i[34567]86-*-elfiamcu)
      with_cpu=lakemont
      ;;
    i[34567]86-*-*|x86_64-*-*)
      with_cpu=$cpu
      ;;
    alphaev6[78]*-*-*)
      with_cpu=ev67
      ;;
    alphaev6*-*-*)
      with_cpu=ev6
      ;;
    alphapca56*-*-*)
      with_cpu=pca56
      ;;
    alphaev56*-*-*)
      with_cpu=ev56
      ;;
    alphaev5*-*-*)
      with_cpu=ev5
      ;;
    frv-*-*linux* | frv400-*-*linux*)
      with_cpu=fr400
      ;;
    frv550-*-*linux*)
      with_cpu=fr550
      ;;
    m68k*-*-*)
      case "$with_arch" in
	"cf")
	  with_cpu=${default_cf_cpu}
	  ;;
	"" | "m68k")
	  with_cpu=m${default_m68k_cpu}
	  ;;
      esac
      ;;
    sparc*-*-*)
      case ${target} in
	*-leon-*)
	  with_cpu=leon
	  ;;
	*-leon[3-9]*)
	  with_cpu=leon3
	  ;;
	*-leon[3-9]v7*)
	  with_cpu=leon3v7
	  ;;
	*)
	  with_cpu="`echo ${target} | sed 's/-.*$//'`"
	  ;;
      esac
      ;;
    visium-*-*)
      with_cpu=gr5
      ;;
  esac

  # Avoid overriding --with-cpu-32 and --with-cpu-64 values.
  case ${target} in
    i[34567]86-*-*|x86_64-*-*)
      if test x$with_cpu_32 != x || test x$with_cpu_64 != x; then
	if test x$with_cpu_32 = x; then
	  with_cpu_32=$with_cpu
	fi
	if test x$with_cpu_64 = x; then
	  with_cpu_64=$with_cpu
	fi
        with_cpu=
      fi
      ;;
  esac
fi

# Support for --with-arch and related options (and a few unrelated options,
# too).
case ${with_arch} in
  yes | no)
    echo "--with-arch must be passed a value" 1>&2
    exit 1
    ;;
esac

# If there is no $with_arch option, try to infer one from ${target}.
# This block sets nothing except for with_arch.
if test x$with_arch = x ; then
  case ${target} in
    i[34567]86-*-darwin*|x86_64-*-darwin*)
      # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
      # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
      ;;
    i[34567]86-*-elfiamcu)
      with_arch=lakemont
      ;;
    i[34567]86-*-*)
      # --with-fpmath sets the default ISA to SSE2, which is the same
      # ISA supported by Pentium 4.
      if test x$with_fpmath = x || test $arch_without_sse2 = no; then
	with_arch=$arch
      else
	with_arch=pentium4
      fi
      ;;
    x86_64-*-*)
      with_arch=$arch
      ;;
    mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
      with_arch=r5900
      ;;
    mips*-*-vxworks)
      with_arch=mips2
      ;;
  esac

  # Avoid overriding --with-arch-32 and --with-arch-64 values.
  case ${target} in
    i[34567]86-*-darwin*|x86_64-*-darwin*)
      # Default arch is set via TARGET_SUBTARGET32_ISA_DEFAULT
      # and TARGET_SUBTARGET64_ISA_DEFAULT in config/i386/darwin.h.
      ;;
    i[34567]86-*-*|x86_64-*-*)
      if test x$with_arch_32 != x || test x$with_arch_64 != x; then
	if test x$with_arch_32 = x; then
	  with_arch_32=$with_arch
	fi
	if test x$with_arch_64 = x; then
	  if test $arch_without_64bit = yes; then
	    # Set the default 64bit arch to x86-64 if the default arch
	    # doesn't support 64bit.
	    with_arch_64=x86-64
	  else
	    with_arch_64=$with_arch
	  fi
	fi
	with_arch=
      elif test $arch_without_64bit$need_64bit_isa = yesyes; then
	# Set the default 64bit arch to x86-64 if the default arch
	# doesn't support 64bit and we need 64bit ISA.
	with_arch_32=$with_arch
	with_arch_64=x86-64
	with_arch=
      fi
      ;;
  esac
fi

# Infer a default setting for --with-float.
if test x$with_float = x; then
  case ${target} in
    mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
      # The R5900 doesn't support 64-bit float.  32-bit float doesn't
      # comply with IEEE 754.
      with_float=soft
      ;;
  esac
fi

# Infer a default setting for --with-fpu.
if test x$with_fpu = x; then
  case ${target} in
    mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
      # The R5900 FPU only supports single precision.
      with_fpu=single
      ;;
  esac
fi

# Support --with-fpmath.
if test x$with_fpmath != x; then
  case ${target} in
    i[34567]86-*-* | x86_64-*-*)
      case ${with_fpmath} in
      avx)
	tm_file="${tm_file} i386/avxmath.h"
	;;
      sse)
	tm_file="${tm_file} i386/ssemath.h"
	;;
      *)
	echo "Invalid --with-fpmath=$with_fpmath" 1>&2
	exit 1
	;;
      esac
      ;;
    *)
      echo "--with-fpmath isn't supported for $target." 1>&2
      exit 1
      ;;
  esac
fi

# Similarly for --with-schedule.
if test x$with_schedule = x; then
	case ${target} in
	hppa1*)
		# Override default PA8000 scheduling model.
		with_schedule=7100LC
		;;
	esac
fi

# Infer a default setting for --with-llsc.
if test x$with_llsc = x; then
  case ${target} in
    mips*-*-linux*)
      # The kernel emulates LL and SC where necessary.
      with_llsc=yes
      ;;
    mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
      # The R5900 doesn't support LL(D) and SC(D).
      with_llsc=no
      ;;
  esac
fi

# Validate and mark as valid any --with options supported
# by this target.  In order to use a particular --with option
# you must list it in supported_defaults; validating the value
# is optional.  This case statement should set nothing besides
# supported_defaults.

supported_defaults=
case "${target}" in
	aarch64*-*-*)
		supported_defaults="abi cpu arch"
		for which in cpu arch; do

			eval "val=\$with_$which"
			base_val=`echo $val | sed -e 's/\+.*//'`
			ext_val=`echo $val | sed -e 's/[a-z0-9.-]\+//'`

			if [ $which = arch ]; then
			  def=aarch64-arches.def
			  pattern=AARCH64_ARCH
			else
			  def=aarch64-cores.def
			  pattern=AARCH64_CORE
			fi

			ext_mask=AARCH64_CPU_DEFAULT_FLAGS

			# Find the base CPU or ARCH id in aarch64-cores.def or
			# aarch64-arches.def
			if [ x"$base_val" = x ] \
			    || grep "^$pattern(\"$base_val\"," \
				    ${srcdir}/config/aarch64/$def \
				    > /dev/null; then

			  if [ $which = arch ]; then
				base_id=`grep "^$pattern(\"$base_val\"," \
				  ${srcdir}/config/aarch64/$def | \
				  sed -e 's/^[^,]*,[ 	]*//' | \
				  sed -e 's/,.*$//'`
				# Extract the architecture flags from aarch64-arches.def
				ext_mask=`grep "^$pattern(\"$base_val\"," \
				   ${srcdir}/config/aarch64/$def | \
				   sed -e 's/)$//' | \
				   sed -e 's/^.*,//'`
			  else
				base_id=`grep "^$pattern(\"$base_val\"," \
				  ${srcdir}/config/aarch64/$def | \
				  sed -e 's/^[^,]*,[ 	]*//' | \
				  sed -e 's/,.*$//'`
			  fi

			  # Use the pre-processor to strip flatten the options.
			  # This makes the format less rigid than if we use
			  # grep and sed directly here.
			  opt_macro="AARCH64_OPT_EXTENSION(A, B, C, D, E, F)=A, B, C, D, E, F"
			  options_parsed="`$ac_cv_prog_CPP -D"$opt_macro" -x c \
				${srcdir}/config/aarch64/aarch64-option-extensions.def`"

			  # Match one element inside AARCH64_OPT_EXTENSION, we
			  # consume anything that's not a ,.
			  elem="[ 	]*\([^,]\+\)[ 	]*"

			  # Repeat the pattern for the number of entries in the
			  # AARCH64_OPT_EXTENSION, currently 6 times.
			  sed_patt="^$elem,$elem,$elem,$elem,$elem,$elem"

			  while [ x"$ext_val" != x ]
			  do
				ext_val=`echo $ext_val | sed -e 's/\+//'`
				ext=`echo $ext_val | sed -e 's/\+.*//'`
				base_ext=`echo $ext | sed -e 's/^no//'`
				opt_line=`echo -e "$options_parsed" | \
					grep "^\"$base_ext\""`

				if [ x"$base_ext" = x ] \
				    || [[ -n $opt_line ]]; then

				  # These regexp extract the elements based on
				  # their group match index in the regexp.
				  ext_canon=`echo -e "$opt_line" | \
					sed -e "s/$sed_patt/\2/"`
				  ext_on=`echo -e "$opt_line" | \
					sed -e "s/$sed_patt/\3/"`
				  ext_off=`echo -e "$opt_line" | \
					sed -e "s/$sed_patt/\4/"`

				  if [ $ext = $base_ext ]; then
					# Adding extension
					ext_mask="("$ext_mask") | ("$ext_on" | "$ext_canon")"
				  else
					# Removing extension
					ext_mask="("$ext_mask") & ~("$ext_off" | "$ext_canon")"
				  fi

				  true
				else
				  echo "Unknown extension used in --with-$which=$val" 1>&2
				  exit 1
				fi
				ext_val=`echo $ext_val | sed -e 's/[a-z0-9]\+//'`
			  done

			  ext_mask="(("$ext_mask") << 6)"
			  if [ x"$base_id" != x ]; then
				target_cpu_cname="TARGET_CPU_$base_id | $ext_mask"
			  fi
			  true
			else
			  echo "Unknown $which used in --with-$which=$val" 1>&2
			  exit 1
			fi
		done
		;;

	alpha*-*-*)
		supported_defaults="cpu tune"
		for which in cpu tune; do
			eval "val=\$with_$which"
			case "$val" in
			"" \
			| ev4 | ev45 | 21064 | ev5 | 21164 | ev56 | 21164a \
			| pca56 | 21164PC | 21164pc | ev6 | 21264 | ev67 \
			| 21264a)
				;;
			*)
				echo "Unknown CPU used in --with-$which=$val" 1>&2
				exit 1
				;;
			esac
		done
		;;

	arc*-*-*)
		supported_defaults="cpu"

		if [ x"$with_cpu" = x ] \
		    || grep "^ARC_CPU ($with_cpu," \
		       ${srcdir}/config/arc/arc-cpus.def \
		       > /dev/null; then
		 # Ok
		 true
		else
		 echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
		 exit 1
		fi
		;;

    csky-*-*)
	supported_defaults="cpu endian float"
	;;

	arm*-*-*)
		supported_defaults="arch cpu float tune fpu abi mode tls"
		for which in cpu tune arch; do
			# See if it matches a supported value
			eval "val=\$with_$which"
			if [ x"$val" != x ]; then
			  cpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
				-v cmd="chk$which $val" \
				${srcdir}/config/arm/arm-cpus.in`
			  if [ "$cpu" = "error" ]; then
			    echo "Unknown target in --with-$which=$val" 1>&2
			    exit 1
			  else
			    new_val=$cpu
			    eval "target_${which}_cname=$new_val"
			    echo "For $val real value is $new_val"
			  fi
			fi
		done

		case "$with_float" in
		"" \
		| soft | hard | softfp)
			# OK
			;;
		*)
			echo "Unknown floating point type used in --with-float=$with_float" 1>&2
			exit 1
			;;
		esac

		# see if --with-fpu matches any of the supported FPUs
		if [ x"$with_fpu" != x ] ; then
		  val=$with_fpu
		  fpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
			-v cmd="chkfpu $val" \
			${srcdir}/config/arm/arm-cpus.in`
		  if [ "$fpu" = "error" ]
		  then
		    echo "Unknown target in --with-fpu=$val" 1>&2
		    exit 1
		  fi
		fi

		case "$with_abi" in
		"" \
		| apcs-gnu | atpcs | aapcs | iwmmxt | aapcs-linux )
			#OK
			;;
		*)
			echo "Unknown ABI used in --with-abi=$with_abi"
			exit 1
			;;
		esac

		case "$with_mode" in
		"" \
		| arm | thumb )
			#OK
			;;
		*)
			echo "Unknown mode used in --with-mode=$with_mode"
			exit 1
			;;
		esac

		case "$with_tls" in
		"" \
		| gnu | gnu2)
			# OK
			;;
		*)
			echo "Unknown TLS method used in --with-tls=$with_tls" 1>&2
			exit 1
			;;
		esac

		if test "x$with_arch" != x && test "x$with_cpu" != x; then
			echo "Switch \"--with-arch\" may not be used with switch \"--with-cpu\""  1>&2
			exit 1
		fi

		if test "x$with_cpu" != x && test "x$with_tune" != x; then
			echo "Switch \"--with-tune\" may not be used with switch \"--with-cpu\""  1>&2
			exit 1
		fi

		# Add extra multilibs
		if test "x$with_multilib_list" != x; then
			ml=
			arm_multilibs=`echo $with_multilib_list | sed -e 's/,/ /g'`
			if test "x${arm_multilibs}" != xdefault ; then
				for arm_multilib in ${arm_multilibs}; do
					case ${arm_multilib} in
					aprofile|rmprofile)
						tmake_profile_file="arm/t-multilib"
						;;
					@*)
						ml=`echo "X$arm_multilib" | sed '1s,^X@,,'`
						if test -f "${srcdir}/config/arm/${ml}"; then
							tmake_file="${tmake_file} arm/${ml}"
						else
							echo "Error: ${ml} does not exist in ${srcdir}/config/arm" >&2
							exit 1
						fi
						;;
					*)
						echo "Error: --with-multilib-list=${with_multilib_list} not supported." 1>&2
						exit 1
						;;
					esac
				done
			fi

			if test "x${tmake_profile_file}" != x ; then
				# arm/t-aprofile and arm/t-rmprofile are only
				# designed to work without any with-cpu,
				# with-arch, with-mode, with-fpu or with-float
				# options.
				if test "x$with_arch" != x \
				    || test "x$with_cpu" != x \
				    || test "x$with_float" != x \
				    || test "x$with_fpu" != x \
				    || test "x$with_mode" != x ; then
				    echo "Error: You cannot use any of --with-arch/cpu/fpu/float/mode with --with-multilib-list=${with_multilib_list}" 1>&2
				    exit 1
				elif test "x$ml" != x ; then
				    echo "Error: You cannot use builtin multilib profiles along with custom ones" 1>&2
				    exit 1
				fi
				# But pass the default value for float-abi
				# through to the multilib selector
				with_float="soft"
				tmake_file="${tmake_file} ${tmake_profile_file}"
				TM_MULTILIB_CONFIG="$with_multilib_list"
			fi
		fi
		target_cpu_cname=${target_cpu_cname:-arm7tdmi}
		with_cpu=${with_cpu:-$target_cpu_cname}
		;;

	fr*-*-*linux*)
		supported_defaults=cpu
		case "$with_cpu" in
		fr400) ;;
		fr550) ;;
		*)
			echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
			exit 1
			;;
		esac
		;;

	fido-*-* | m68k*-*-*)
		supported_defaults="arch cpu"
		case "$with_arch" in
		"" | "m68k"| "cf")
			m68k_arch_family="$with_arch"
			;;
		*)
			echo "Invalid --with-arch=$with_arch" 1>&2
			exit 1
			;;
		esac

		# We always have a $with_cpu setting here.
		case "$with_cpu" in
		"m68000" | "m68010" | "m68020" | "m68030" | "m68040" | "m68060")
			m68k_cpu_ident=$with_cpu
			;;
		"m68020-40")
			m68k_cpu_ident=m68020
			tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_40"
			;;
		"m68020-60")
			m68k_cpu_ident=m68020
			tm_defines="$tm_defines M68K_DEFAULT_TUNE=u68020_60"
			;;
		*)
			# We need the C identifier rather than the string.
			m68k_cpu_ident=`awk -v arg="\"$with_cpu\"" \
			   'BEGIN { FS="[ \t]*[,()][ \t]*" }; \
			    $1 == "M68K_DEVICE" && $2 == arg { print $3 }' \
				 ${srcdir}/config/m68k/m68k-devices.def`
			if [ x"$m68k_cpu_ident" = x ] ; then
				echo "Unknown CPU used in --with-cpu=$with_cpu" 1>&2
				exit 1
			fi
			with_cpu="mcpu=$with_cpu"
			;;
		esac
		;;

	amdgcn-*-*)
		supported_defaults="arch tune"

		for which in arch tune; do
			eval "val=\$with_$which"
			case ${val} in
			"" | fiji | gfx900 | gfx906 )
				# OK
				;;
			*)
				echo "Unknown cpu used in --with-$which=$val." 1>&2
				exit 1
				;;
			esac
		done
		[ "x$with_arch" = x ] && with_arch=fiji
		;;

	hppa*-*-*)
		supported_defaults="arch schedule"

		case "$with_arch" in
		"" | 1.0 | 1.1 | 2.0)
			# OK
			;;
		*)
			echo "Unknown architecture used in --with-arch=$with_arch" 1>&2
			exit 1
			;;
		esac

		case "$with_schedule" in
		"" | 700 | 7100 | 7100LC | 7200 | 7300 | 8000)
			# OK
			;;
		*)
			echo "Unknown processor used in --with-schedule=$with_schedule." 1>&2
			exit 1
			;;
		esac
		;;

	i[34567]86-*-* | x86_64-*-*)
		supported_defaults="abi arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64"
		for which in arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64; do
			eval "val=\$with_$which"
			case " $x86_archs " in
			*" ${val} "*)
				case "${target}" in
				  x86_64-*-*)
				      case "x$which" in
					*_32)
						;;
					*)
						echo "CPU given in --with-$which=$val doesn't support 64bit mode." 1>&2
						exit 1
						;;
				      esac
				      ;;
				esac
				# OK
				;;
			*)
				if test x${val} != x; then
					case " $x86_64_archs " in
					*" ${val} "*)
						# OK
						;;
					*)
						# Allow $x86_cpus --with-cpu=/--with-tune=
						case "x$which" in
						xcpu*|xtune*)
							case " $x86_cpus " in
							*" ${val} "*)
								# OK
								;;
							*)
								echo "Unknown CPU given in --with-$which=$val." 1>&2
								exit 1
								;;
							esac
							;;
						*)
							echo "Unknown CPU given in --with-$which=$val." 1>&2
							exit 1
							;;
						esac
					;;
					esac
				fi
				;;
			esac
		done
		;;

	riscv*-*-*)
		supported_defaults="abi arch tune riscv_attribute"

		case "${target}" in
		riscv-* | riscv32*) xlen=32 ;;
		riscv64*) xlen=64 ;;
		*) echo "Unsupported RISC-V target ${target}" 1>&2; exit 1 ;;
		esac

		case "${with_riscv_attribute}" in
		yes)
			tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
			;;
		no)
			tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=0"
			;;
		""|default)
			case "${target}" in
			riscv*-*-elf*)
				tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
				;;
			*)
				tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=0"
				;;
			esac
			;;
		*)
			echo "--with-riscv-attribute=${with_riscv_attribute} is not supported.  The argument must begin with yes, no or default." 1>&2
			exit 1
			;;
		esac


		# Infer arch from --with-arch, --target, and --with-abi.
		case "${with_arch}" in
		rv32e* | rv32i* | rv32g* | rv64i* | rv64g*)
			# OK.
			;;
		"")
			# Infer XLEN, but otherwise assume GC.
			case "${with_abi}" in
			ilp32e) with_arch="rv32e" ;;
			ilp32 | ilp32f | ilp32d) with_arch="rv32gc" ;;
			lp64 | lp64f | lp64d) with_arch="rv64gc" ;;
			*) with_arch="rv${xlen}gc" ;;
			esac
			;;
		*)
			echo "--with-arch=${with_arch} is not supported.  The argument must begin with rv32e, rv32i, rv32g, rv64i, or rv64g." 1>&2
			exit 1
			;;
		esac

		# Make sure --with-abi is valid.  If it was not specified,
		# pick a default based on the ISA, preferring soft-float
		# unless the D extension is present.
		case "${with_abi}" in
		ilp32 | ilp32e | ilp32f | ilp32d | lp64 | lp64f | lp64d)
			;;
		"")
			case "${with_arch}" in
			rv32*d* | rv32g*) with_abi=ilp32d ;;
			rv32e*) with_abi=ilp32e ;;
			rv32*) with_abi=ilp32 ;;
			rv64*d* | rv64g*) with_abi=lp64d ;;
			rv64*) with_abi=lp64 ;;
			esac
			;;
		*)
			echo "--with-abi=${with_abi} is not supported" 1>&2
			exit 1
			;;
		esac

		# Make sure ABI and ISA are compatible.
		case "${with_abi},${with_arch}" in
		ilp32,rv32* | ilp32e,rv32e* \
		| ilp32f,rv32*f* | ilp32f,rv32g* \
		| ilp32d,rv32*d* | ilp32d,rv32g* \
		| lp64,rv64* \
		| lp64f,rv64*f* | lp64f,rv64g* \
		| lp64d,rv64*d* | lp64d,rv64g*)
			;;
		*)
			echo "--with-abi=${with_abi} is not supported for ISA ${with_arch}" 1>&2
			exit 1
			;;
		esac

		# Handle --with-multilib-list.
		if test "x${with_multilib_list}" != xdefault; then
			tm_file="${tm_file} riscv/withmultilib.h"
			tmake_file="${tmake_file} riscv/t-withmultilib"

			case ${with_multilib_list} in
			ilp32 | ilp32f | ilp32d \
			| lp64 | lp64f | lp64d )
				TM_MULTILIB_CONFIG="${with_arch},${with_multilib_list}"
				;;
			*)
				echo "--with-multilib-list=${with_multilib_list} not supported."
				exit 1
			esac

			# Define macros to select the default multilib.
			case ${with_arch} in
			rv32gc)
				tm_defines="${tm_defines} TARGET_MLIB_ARCH=1"
				;;
			rv64gc)
				tm_defines="${tm_defines} TARGET_MLIB_ARCH=2"
				;;
			*)
				echo "unsupported --with-arch for --with-multilib-list"
				exit 1
			esac
			case ${with_abi} in
			ilp32)
				tm_defines="${tm_defines} TARGET_MLIB_ABI=1"
				;;
			ilp32f)
				tm_defines="${tm_defines} TARGET_MLIB_ABI=2"
				;;
			ilp32d)
				tm_defines="${tm_defines} TARGET_MLIB_ABI=3"
				;;
			lp64)
				tm_defines="${tm_defines} TARGET_MLIB_ABI=4"
				;;
			lp64f)
				tm_defines="${tm_defines} TARGET_MLIB_ABI=5"
				;;
			lp64d)
				tm_defines="${tm_defines} TARGET_MLIB_ABI=6"
				;;
			*)
				echo "unsupported --with-abi for --with-multilib"
				exit 1
			esac
		fi
		;;

	mips*-*-*)
		supported_defaults="abi arch arch_32 arch_64 float fpu nan fp_32 odd_spreg_32 tune tune_32 tune_64 divide llsc mips-plt synci lxc1-sxc1 madd4"

		case ${with_float} in
		"" | soft | hard)
			# OK
			;;
		*)
			echo "Unknown floating point type used in --with-float=$with_float" 1>&2
			exit 1
			;;
		esac

		case ${with_fpu} in
		"" | single | double)
			# OK
			;;
		*)
			echo "Unknown fpu type used in --with-fpu=$with_fpu" 1>&2
			exit 1
			;;
		esac

		case ${with_nan} in
		"" | 2008 | legacy)
			# OK
			;;
		*)
			echo "Unknown NaN encoding used in --with-nan=$with_nan" 1>&2
			exit 1
			;;
		esac

		case ${with_fp_32} in
		"" | 32 | xx | 64)
			# OK
			;;
		*)
			echo "Unknown FP mode used in --with-fp-32=$with_fp_32" 1>&2
			exit 1
			;;
		esac

		case ${with_odd_spreg_32} in
		yes)
			with_odd_spreg_32="odd-spreg"
			;;
		no)
			with_odd_spreg_32="no-odd-spreg"
			;;
		"")
			# OK
			;;
		*)
			echo "Unknown odd-spreg-32 type used in --with-odd-spreg-32=$with_odd_spreg_32" 1>&2
			exit 1
			;;
		esac

		case ${with_abi} in
		"" | 32 | o64 | n32 | 64 | eabi)
			# OK
			;;
		*)
			echo "Unknown ABI used in --with-abi=$with_abi" 1>&2
			exit 1
			;;
		esac

		case ${with_divide} in
		"" | breaks | traps)
			# OK
			;;
		*)
			echo "Unknown division check type use in --with-divide=$with_divide" 1>&2
			exit 1
			;;
		esac

		case ${with_llsc} in
		yes)
			with_llsc=llsc
			;;
		no)
			with_llsc="no-llsc"
			;;
		"")
			# OK
			;;
		*)
			echo "Unknown llsc type used in --with-llsc" 1>&2
			exit 1
			;;
		esac

		case ${with_mips_plt} in
		yes)
			with_mips_plt=plt
			;;
		no)
			with_mips_plt=no-plt
			;;
		"")
			;;
		*)
			echo "Unknown --with-mips-plt argument: $with_mips_plt" 1>&2
			exit 1
			;;
		esac

		case ${with_synci} in
		yes)
			with_synci=synci
			;;
		no)
			with_synci=no-synci
			;;
		"")
			;;
		*)
			echo "Unknown synci type used in --with-synci" 1>&2
			exit 1
			;;
		esac

		case ${with_lxc1_sxc1} in
		yes)
			with_lxc1_sxc1=lxc1-sxc1
			;;
		no)
			with_lxc1_sxc1=no-lxc1-sxc1
			;;
		"")
			;;
		*)
			echo "Unknown lxc1-sxc1 type used in --with-lxc1-sxc1" 1>&2
			exit 1
			;;
		esac

		case ${with_madd4} in
		yes)
			with_madd4=madd4
			;;
		no)
			with_madd4=no-madd4
			;;
		"")
			;;
		*)
			echo "Unknown madd4 type used in --with-madd4" 1>&2
			exit 1
			;;
		esac
		;;

	nds32*-*-*)
		supported_defaults="arch cpu nds32_lib float fpu_config"

		# process --with-arch
		case "${with_arch}" in
		"" | v3 )
			tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
			;;
		v2 | v2j | v3m)
			# OK
			tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=0"
			;;
		v3f)
			tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=1"
			;;
		v3s)
			tm_defines="${tm_defines} TARGET_ARCH_DEFAULT=2"

			;;
		*)
			echo "Cannot accept --with-arch=$with_arch, available values are: v2 v2j v3 v3m v3f v3s" 1>&2
			exit 1
			;;
		esac

		case "${with_cpu}" in
		"")
			with_cpu=n9
			;;
		n6 | n7 |n8 | e8 | s8 | n9 | n10 | d10 | n12 | n13 | n15)
			# OK
			;;
		*)
			echo "Cannot accept --with-cpu=$with_cpu, available values are: n6 n7 n8 e8 s8 n9 n10 d10 n12 n13 n15" 1>&2
			exit 1
			;;
		esac

		# process --with-nds32-lib
		case "${with_nds32_lib}" in
		"")
			case ${target} in
			*-*-*uclibc*)
				with_nds32_lib=ulibc
				;;
			*-*-linux*)
				with_nds32_lib=glibc
				;;
			*)
				with_nds32_lib=newlib
				tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
				;;
			esac
			;;
		newlib)
			# OK
			tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
			;;
		mculib)
			# OK
			# for the arch=v3f or arch=v3s under mculib toolchain,
			# we would like to set -fno-math-errno as default
			case "${with_arch}" in
			v3f | v3s)
				tm_defines="${tm_defines} TARGET_DEFAULT_NO_MATH_ERRNO=1"
				;;
			esac
			;;
		glibc | uclibc)
			# OK
			;;
		*)
			echo "Cannot accept --with-nds32-lib=$with_nds32_lib, available values are: newlib mculib glibc uclibc" 1>&2
			exit 1
			;;
		esac

		# process --with-float
		case "${with_float}" in
		"" | soft | hard)
			# OK
			;;
		*)
			echo "Cannot accept --with-float=$with_float, available values are: soft hard" 1>&2
			exit 1
			;;
		esac

		# process --with-config-fpu
		case "${with_config_fpu}" in
		"" | 0 | 1 | 2 | 3)
			# OK
			;;
		*)
			echo "Cannot accept --with-config-fpu=$with_config_fpu, available values from 0 to 7" 1>&2
			exit 1
			;;
		esac


		;;
	nios2*-*-*)
		supported_defaults="arch"
			case "$with_arch" in
			"" | r1 | r2)
				# OK
				;;
			*)
				echo "Unknown arch used in --with-arch=$with_arch" 1>&2
				exit 1
				;;
			esac
		;;

	powerpc*-*-* | rs6000-*-*)
		supported_defaults="abi cpu cpu_32 cpu_64 float tune tune_32 tune_64 advance_toolchain"

		for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
			eval "val=\$with_$which"
			case ${val} in
			default32 | default64)
				case $which in
				cpu | tune)
					;;
				*)
					echo "$val only valid for --with-cpu and --with-tune." 1>&2
					exit 1
					;;
				esac
				with_which="with_$which"
				eval $with_which=
				;;
			405cr)
				tm_defines="${tm_defines} CONFIG_PPC405CR"
				eval "with_$which=405"
				;;
			"" | common | native \
			| power[3456789] | power5+ | power6x \
			| powerpc | powerpc64 | powerpc64le \
			| rs64 \
			| 401 | 403 | 405 | 405fp | 440 | 440fp | 464 | 464fp \
			| 476 | 476fp | 505 | 601 | 602 | 603 | 603e | ec603e \
			| 604 | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
			| a2 | e300c[23] | 854[08] | e500mc | e500mc64 | e5500 | e6500 \
			| titan | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5 | cell)
				# OK
				;;
			*)
				echo "Unknown cpu used in --with-$which=$val." 1>&2
				exit 1
				;;
			esac
		done

		case "$with_abi" in
		"" | elfv1 | elfv2 )
			#OK
			;;
		*)
			echo "Unknown ABI used in --with-abi=$with_abi"
			exit 1
			;;
		esac

		if test "x$with_advance_toolchain" != x; then
		    if test -d "/opt/$with_advance_toolchain/." -a \
			-d "/opt/$with_advance_toolchain/bin/." -a \
			-d "/opt/$with_advance_toolchain/include/."; then

			tm_file="$tm_file ./advance-toolchain.h"
			(at="/opt/$with_advance_toolchain"
			 echo "/* Use Advance Toolchain $at */"
			 echo
			 echo "#undef  LINK_OS_EXTRA_SPEC32"
			 echo "#define LINK_OS_EXTRA_SPEC32" \
			      "\"%(link_os_new_dtags)" \
			      "-rpath $prefix/lib -rpath $at/lib\""
			 echo
			 echo "#undef  LINK_OS_EXTRA_SPEC64"
			 echo "#define LINK_OS_EXTRA_SPEC64" \
			      "\"%(link_os_new_dtags)" \
			      "-rpath $prefix/lib64 -rpath $at/lib64\""
			 echo
			 echo "#undef  LINK_OS_NEW_DTAGS_SPEC"
			 echo "#define LINK_OS_NEW_DTAGS_SPEC" \
			      "\"--enable-new-dtags\""
			 echo
			 echo "#undef  DYNAMIC_LINKER_PREFIX"
			 echo "#define DYNAMIC_LINKER_PREFIX \"$at\""
			 echo
			 echo "#undef  MD_EXEC_PREFIX"
			 echo "#define MD_EXEC_PREFIX \"$at/bin/\""
			 echo
			 echo "#undef  MD_STARTFILE_PREFIX"
			 echo "#define MD_STARTFILE_PREFIX \"$prefix/lib/\""
			 echo
			 echo "#undef  MD_STARTFILE_PREFIX_1"
			 echo "#define MD_STARTFILE_PREFIX_1 \"$at/lib/\"") \
			    > advance-toolchain.h
		    else
			echo "Unknown advance-toolchain $with_advance_toolchain"
			exit 1
		    fi
		fi

		# Set up the default long double format if the user changed it.
		if test x$with_long_double_format = xieee; then
		    tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=1"

		elif test x$with_long_double_format = xibm; then
		    tm_defines="${tm_defines} TARGET_IEEEQUAD_DEFAULT=0"
		fi
		;;

	s390*-*-*)
		supported_defaults="arch mode tune"

		for which in arch tune; do
			eval "val=\$with_$which"
			case ${val} in
			"" | native | z900 | z990 | z9-109 | z9-ec | z10 | z196 | zEC12 | z13 | z14 | z15 | arch5 | arch6 | arch7 | arch8 | arch9 | arch10 | arch11 | arch12 | arch13 )
				# OK
				;;
			*)
				echo "Unknown cpu used in --with-$which=$val." 1>&2
				exit 1
				;;
			esac
		done

		case ${with_mode} in
		"" | esa | zarch)
			# OK
			;;
		*)
			echo "Unknown architecture mode used in --with-mode=$with_mode." 1>&2
			exit 1
			;;
		esac
		;;

	sh[123456ble]*-*-* | sh-*-*)
		supported_defaults="cpu"
		case "`echo $with_cpu | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz- | sed s/sh/m/`" in
		"" | m1 | m2 | m2e | m3 | m3e | m4 | m4-single | m4-single-only | m4-nofpu )
			# OK
			;;
		m2a | m2a-single | m2a-single-only | m2a-nofpu)
			;;
		m4a | m4a-single | m4a-single-only | m4a-nofpu | m4al)
		        ;;
		*)
			echo "Unknown CPU used in --with-cpu=$with_cpu, known values:"  1>&2
			echo "m1 m2 m2e m3 m3e m4 m4-single m4-single-only m4-nofpu" 1>&2
			echo "m4a m4a-single m4a-single-only m4a-nofpu m4al" 1>&2
			echo "m2a m2a-single m2a-single-only m2a-nofpu" 1>&2
			exit 1
			;;
		esac
		;;
	sparc*-*-*)
		supported_defaults="cpu cpu_32 cpu_64 float tune tune_32 tune_64"

		for which in cpu cpu_32 cpu_64 tune tune_32 tune_64; do
			eval "val=\$with_$which"
			case ${val} in
			"" | sparc | sparcv9 | sparc64 \
			| v7 | cypress \
			| v8 | supersparc | hypersparc | leon | leon3 | leon3v7 \
			| sparclite | f930 | f934 | sparclite86x \
			| sparclet | tsc701 \
			| v9 | ultrasparc | ultrasparc3 | niagara | niagara2 \
			| niagara3 | niagara4 | niagara7 | m8)
				# OK
				;;
			*)
				echo "Unknown cpu used in --with-$which=$val" 1>&2
				exit 1
				;;
			esac
		done

		case ${with_float} in
		"" | soft | hard)
			# OK
			;;
		*)
			echo "Unknown floating point type used in --with-float=$with_float" 1>&2
			exit 1
			;;
		esac
		;;

	tic6x-*-*)
		supported_defaults="arch"

		case ${with_arch} in
		"" | c62x | c64x | c64x+ | c67x | c67x+ | c674x)
			# OK
			;;
		*)
			echo "Unknown arch used in --with-arch=$with_arch." 1>&2
			exit 1
			;;
		esac
		;;

	v850*-*-*)
		supported_defaults=cpu
		case ${with_cpu} in
		"" | v850e | v850e1 | v850e2 | v850es | v850e2v3 | v850e3v5)
			# OK
			;;
		*)
			echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
			exit 1
			;;
		esac
		;;
	visium-*-*)
		supported_defaults="cpu"
		case $with_cpu in
		  "" | gr5 | gr6)
			;;
		  *)    echo "Unknown cpu used in --with-cpu=$with_cpu" 1>&2
			exit 1
			;;
		esac
		;;
esac

# Targets for which there is at least one VxWorks port should include
# vxworks-dummy.h to allow safe references to various TARGET_VXWORKS kinds
# of markers from other files in the port, including the vxworks*.h files to
# distinguish VxWorks variants such as VxWorks 7 or 64).

case ${target} in
arm*-*-* | i[34567]86-*-* | mips*-*-* | powerpc*-*-* | sh*-*-* \
| sparc*-*-* | x86_64-*-*)
	tm_file="vxworks-dummy.h ${tm_file}"
	;;
esac

# Set some miscellaneous flags for particular targets.
target_cpu_default2=
case ${target} in
	aarch64*-*-*)
		if test x"$target_cpu_cname" != x
		then
			target_cpu_default2=$target_cpu_cname
		fi
		;;

	arm*-*-*)
		if test x$with_cpu = x
		then
			echo "Don't know the target cpu" 1>&2
			exit 1
		else
			target_cpu_default2="\\\"$with_cpu\\\""
		fi
		;;

	hppa*-*-*)
		if test x$gas = xyes
		then
			target_cpu_default2="MASK_GAS"
		fi
		;;

	fido*-*-* | m68k*-*-*)
		target_cpu_default2=$m68k_cpu_ident
		tmake_file="m68k/t-opts $tmake_file"
		if [ x"$m68k_arch_family" != x ]; then
		        tmake_file="m68k/t-$m68k_arch_family $tmake_file"
		fi
		;;

	i[34567]86-*-darwin* | x86_64-*-darwin*)
		;;
	i[34567]86-*-linux* | x86_64-*-linux*)
		extra_objs="${extra_objs} cet.o"
		tmake_file="$tmake_file i386/t-linux i386/t-cet"
		;;
	i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
		tmake_file="$tmake_file i386/t-kfreebsd"
		;;
	i[34567]86-*-gnu*)
		tmake_file="$tmake_file i386/t-gnu"
		;;
	i[34567]86-*-msdosdjgpp*)
		tmake_file="${tmake_file} i386/t-djgpp"
		;;
	i[34567]86-*-solaris2* | x86_64-*-solaris2*)
		;;
	i[34567]86-*-cygwin* | x86_64-*-cygwin*)
		;;
	i[34567]86-*-mingw* | x86_64-*-mingw*)
		;;
	i[34567]86-*-dragonfly* | x86_64-*-dragonfly*)
		;;
	i[34567]86-*-freebsd*)
		;;
	x86_64-*-freebsd*)
		tmake_file="${tmake_file} i386/t-freebsd64"
		;;
	ia64*-*-linux*)
		;;

	mips*-*-*)
		if test x$gnu_ld = xyes
		then
			target_cpu_default2="MASK_SPLIT_ADDRESSES"
		fi
		case ${target} in
			mips*el-*-*)
				tm_defines="TARGET_ENDIAN_DEFAULT=0 $tm_defines"
				;;
		esac
		if test x$with_arch != x; then
			default_mips_arch=$with_arch
		fi
		if test x$with_abi != x; then
			default_mips_abi=$with_abi
		fi
		case ${default_mips_arch} in
		    mips1)    tm_defines="$tm_defines MIPS_ISA_DEFAULT=1" ;;
		    mips2)    tm_defines="$tm_defines MIPS_ISA_DEFAULT=2" ;;
		    mips3)    tm_defines="$tm_defines MIPS_ISA_DEFAULT=3" ;;
		    mips4)    tm_defines="$tm_defines MIPS_ISA_DEFAULT=4" ;;
		    mips32)   tm_defines="$tm_defines MIPS_ISA_DEFAULT=32" ;;
		    mips32r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=33" ;;
		    mips32r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=37" ;;
		    mips64)   tm_defines="$tm_defines MIPS_ISA_DEFAULT=64" ;;
		    mips64r2) tm_defines="$tm_defines MIPS_ISA_DEFAULT=65" ;;
		    mips64r6) tm_defines="$tm_defines MIPS_ISA_DEFAULT=69" ;;
		esac
		case ${default_mips_abi} in
		    32)   tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_32" ;;
		    o64)  tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_O64" ;;
		    n32)  tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_N32" ;;
		    64)   tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_64" ;;
		    eabi) tm_defines="$tm_defines MIPS_ABI_DEFAULT=ABI_EABI" ;;
		esac
		tmake_file="mips/t-mips $tmake_file"
		;;

	powerpc*-*-* | rs6000-*-*)
		# FIXME: The PowerPC port uses the value set at compile time,
		# although it's only cosmetic.
		if test "x$with_cpu" != x
		then
			target_cpu_default2="\\\"$with_cpu\\\""
		fi
		out_file="${cpu_type}/${cpu_type}.c"
		c_target_objs="${c_target_objs} ${cpu_type}-c.o"
		cxx_target_objs="${cxx_target_objs} ${cpu_type}-c.o"
		d_target_objs="${d_target_objs} ${cpu_type}-d.o"
		tmake_file="${cpu_type}/t-${cpu_type} ${tmake_file}"
		;;

	sh[123456ble]*-*-* | sh-*-*)
		c_target_objs="${c_target_objs} sh-c.o"
		cxx_target_objs="${cxx_target_objs} sh-c.o"
		;;

	sparc*-*-*)
		# Some standard aliases.
		case x$with_cpu in
		xsparc)
			with_cpu=v7
			;;
		xsparcv9 | xsparc64)
			with_cpu=v9
			;;
		esac

		if test x$with_tune = x ; then
		      case ${target} in
		      *-leon-*)
			  with_tune=leon
			  ;;
		      *-leon[3-9]*)
			  with_tune=leon3
			  ;;
		      esac
		fi

		# The SPARC port checks this value at compile-time.
		target_cpu_default2="TARGET_CPU_$with_cpu"
		;;

	v850*-*-*)
		case "x$with_cpu" in
		x)
			;;
		xv850e | xv850e1 | xv850e2 | xv850e2v3 | xv850e3v5)
			target_cpu_default2="TARGET_CPU_$with_cpu"
			;;
		xv850es)
			target_cpu_default2="TARGET_CPU_v850e1"
			;;
		esac
		;;
	visium-*-*)
		target_cpu_default2="TARGET_CPU_$with_cpu"
		;;
esac

t=
all_defaults="abi cpu cpu_32 cpu_64 arch arch_32 arch_64 tune tune_32 tune_64 schedule float mode fpu nan fp_32 odd_spreg_32 divide llsc mips-plt synci tls lxc1-sxc1 madd4"
for option in $all_defaults
do
	eval "val=\$with_"`echo $option | sed s/-/_/g`
	if test -n "$val"; then
		case " $supported_defaults " in
		*" $option "*)
			;;
		*)
			echo "This target does not support --with-$option." 2>&1
			echo "Valid --with options are: $supported_defaults" 2>&1
			exit 1
			;;
		esac

		if test "x$t" = x
		then
			t="{ \"$option\", \"$val\" }"
		else
			t="${t}, { \"$option\", \"$val\" }"
		fi
	fi
done

if test "x$t" = x
then
	configure_default_options="{ { NULL, NULL} }"
else
	configure_default_options="{ ${t} }"
fi

if test "$target_cpu_default2" != ""
then
	if test "$target_cpu_default" != ""
	then
		target_cpu_default="(${target_cpu_default}|${target_cpu_default2})"
	else
		target_cpu_default=$target_cpu_default2
	fi
fi

case ${target} in
i[34567]86-*-* | x86_64-*-*)
	if test x$enable_as_accelerator = xyes; then
		extra_programs="mkoffload\$(exeext)"
	fi
	;;
esac
