# 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*-*-*				\
 )
    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"
	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 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
			"" | carrizo | 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
