# GCC target-specific configuration file.
# Copyright (C) 1997-2019 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
  spu*-*-*				\
  | 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*			\
 | 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_acle.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 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"
	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
	;;
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"
	;;
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"
	;;
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"
	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)
		cpu_is_64bit=yes
		;;
	esac
	extra_options="${extra_options} g.opt fused-madd.opt rs6000/rs6000-tables.opt"
	;;
riscv*)
	cpu_type=riscv
	extra_objs="riscv-builtins.o riscv-c.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"
	;;
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"
	;;
spu*-*-*)
	cpu_type=spu
	;;
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 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 ${cpu_type}/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)
  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*)
      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"
  use_gcc_stdint=provide
  tm_file="${tm_file} vxworks-stdint.h"
  case ${enable_threads} in
    no) ;;
    "" | yes | vxworks) thread_file='vxworks' ;;
    *) echo 'Unknown thread configuration for VxWorks'; exit 1 ;;
  esac
  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
  ;;
*-*-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-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-freebsd.h"
	tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
	tm_defines="${tm_defines}  TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
	;;
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-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/^,//'`
	;;
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-vxworks|arm-wrs-vxworks7)
	extra_options="${extra_options} arm/vxworks.opt"
	tmake_file="${tmake_file} arm/t-arm arm/t-vxworks"
        case $target in
	*-vxworks7)
            # VxWorks7 on ARM adheres to the ARM Base Platform ABI
	    tmake_file="${tmake_file} arm/t-bpabi"
	    tm_file="arm/bpabi.h ${tm_file}"
	    # The BPABI long long divmod functions return a 128-bit value in
	    # registers r0-r3.
	    need_64bit_hwint=yes
	    default_use_cxa_atexit=yes
	    ;;
        *)  ;;
        esac
        tm_file="elfos.h arm/elf.h arm/aout.h ${tm_file} vx-common.h vxworks.h arm/vxworks.h"
	target_cpu_cname="arm8"
	;;
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*)
	tm_file="dbxelf.h elfos.h ${nbsd_tm_file} arm/elf.h arm/aout.h ${tm_file} arm/netbsd-elf.h"
	extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
	tmake_file="${tmake_file} arm/t-arm"
	target_cpu_cname="strongarm"
	;;
arm*-*-linux-*)			# ARM GNU/Linux with ELF
	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"
	# 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
	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
	;;
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
	;;
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[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-*-darwin*)
	need_64bit_isa=yes
	# Baseline choice for a machine that allows m64 support.
	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 t-slibgcc"
	tm_file="${tm_file} ${cpu_type}/darwin64.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_gcc_objs="driver-msp430.o"
	;;
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 | \
		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} rs6000/darwin.opt"
	case ${target} in
	  *-darwin1[0-9]* | *-darwin[8-9]*)
	    tmake_file="${tmake_file} rs6000/t-darwin8"
	    tm_file="${tm_file} rs6000/darwin8.h"
	    ;;
	  *-darwin7*)
	    tm_file="${tm_file} rs6000/darwin7.h"
	    ;;
	  *-darwin[0-6]*)
	    ;;
	esac
	tmake_file="${tmake_file} t-slibgcc"
	extra_headers=altivec.h
	;;
powerpc64-*-darwin*)
	extra_options="${extra_options} ${cpu_type}/darwin.opt"
	tmake_file="${tmake_file} ${cpu_type}/t-darwin64 t-slibgcc"
	tm_file="${tm_file} ${cpu_type}/darwin8.h ${cpu_type}/darwin64.h"
	extra_headers=altivec.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"
		;;
	     *)
	        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=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
	;;
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"
	;;
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"
	;;
spu-*-elf*)
	tm_file="dbxelf.h elfos.h spu/spu-elf.h spu/spu.h newlib-stdint.h"
	tmake_file="spu/t-spu-elf"
        native_system_header_dir=/include
	extra_headers="spu_intrinsics.h spu_internals.h vmx2spu.h spu_mfcio.h vec_types.h spu_cache.h"
	extra_modes=spu/spu-modes.def
	c_target_objs="${c_target_objs} spu-c.o"
	cxx_target_objs="${cxx_target_objs} spu-c.o"
	;;
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

			  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//'`

				if [ x"$base_ext" = x ] \
				    || grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \
				    ${srcdir}/config/aarch64/aarch64-option-extensions.def \
				    > /dev/null; then

				  ext_canon=`grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \
					${srcdir}/config/aarch64/aarch64-option-extensions.def | \
					sed -e 's/^[^,]*,[ 	]*//' | \
					sed -e 's/,.*$//'`
				  ext_on=`grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \
					${srcdir}/config/aarch64/aarch64-option-extensions.def | \
					sed -e 's/^[^,]*,[ 	]*[^,]*,[ 	]*//' | \
					sed -e 's/,.*$//' | \
					sed -e 's/).*$//'`
				  ext_off=`grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \
					${srcdir}/config/aarch64/aarch64-option-extensions.def | \
					sed -e 's/^[^,]*,[ 	]*[^,]*,[ 	]*[^,]*,[ 	]*//' | \
					sed -e 's/,.*$//' | \
					sed -e 's/).*$//'`


				  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
		  fpu=`awk -f ${srcdir}/config/arm/parsecpu.awk \
			-v cmd="chkfpu $with_fpu" \
			${srcdir}/config/arm/arm-cpus.in`
		  if [ "$fpu" = "error"]
		  then
		    echo "Unknown target in --with-$which=$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 )
				# 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" \
			      "-L $prefix/lib -L $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" \
			      "-L $prefix/lib64 -L $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 \"$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 | 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
		;;

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

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

	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
