view gcc/config.gcc @ 143:76e1cf5455ef

add cbc_gc test
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 23 Dec 2018 19:24:05 +0900
parents 84e7813d76e9
children 1830386684a0
line wrap: on
line source

# GCC target-specific configuration file.
# Copyright (C) 1997-2018 Free Software Foundation, Inc.

#This file is part of GCC.

#GCC is free software; you can redistribute it and/or modify it under
#the terms of the GNU General Public License as published by the Free
#Software Foundation; either version 3, or (at your option) any later
#version.

#GCC is distributed in the hope that it will be useful, but WITHOUT
#ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
#FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
#for more details.

#You should have received a copy of the GNU General Public License
#along with GCC; see the file COPYING3.  If not see
#<http://www.gnu.org/licenses/>.

# This is 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.
#
#  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.
#
#  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.

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=
fortran_target_objs=
target_has_targetcm=no
target_has_targetm_common=yes
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
  *-*-solaris2.10*			\
  | powerpc*-*-*spe*			\
  | 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				\
 | 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].*			\
 | *-*-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"
	extra_objs="aarch64-builtins.o aarch-common.o cortex-a57-fma-steering.o aarch64-speculation.o falkor-tag-collision-avoidance.o"
	target_gtfiles="\$(srcdir)/config/aarch64/aarch64-builtins.c"
	target_has_targetm_common=yes
	;;
alpha*-*-*)
	cpu_type=alpha
	extra_options="${extra_options} g.opt"
	;;
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"
	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"
	extra_objs="x86-tune-sched.o x86-tune-sched-bd.o x86-tune-sched-atom.o x86-tune-sched-core.o"
	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"
	;;
x86_64-*-*)
	cpu_type=i386
	c_target_objs="i386-c.o"
	cxx_target_objs="i386-c.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"
	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"
	;;
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
	extra_headers="loongson.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
	;;
powerpc*-*-*spe*)
	cpu_type=powerpcspe
	extra_headers="ppc-asm.h altivec.h spe.h ppu_intrinsics.h paired.h spu2vmx.h vec_types.h si2vmx.h htmintrin.h htmxlintrin.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 powerpcspe/powerpcspe-tables.opt"
	;;
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"
	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"
	;;
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"
	extra_headers="visintrin.h"
	;;
spu*-*-*)
	cpu_type=spu
	;;
s390*-*-*)
	cpu_type=s390
	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
if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-protos.h
then
	tm_p_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
	if test "x$enable_cld" = xyes; then
		tm_defines="${tm_defines} USE_IX86_CLD=1"
	fi
	if test "x$enable_frame_pointer" = xyes; then
		tm_defines="${tm_defines} USE_IX86_FRAME_POINTER=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
	if test "x$enable_cld" = xyes; then
		tm_defines="${tm_defines} USE_IX86_CLD=1"
	fi
	if test "x$enable_frame_pointer" = xyes; then
		tm_defines="${tm_defines} USE_IX86_FRAME_POINTER=1"
	fi
	;;
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 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 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="\$(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"
  tmake_file="${tmake_file} t-glibc"
  target_has_targetcm=yes
  ;;
*-*-netbsd*)
  tm_p_file="${tm_p_file} netbsd-protos.h"
  tmake_file="t-netbsd t-slibgcc"
  extra_objs="${extra_objs} netbsd.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
  ;;
*-*-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"
  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
  ;;
*-*-*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"
	;;
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
        ;;
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"
			;;
		    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"
	;;
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"
	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-linux"
	;;
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"
	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="t-slibgcc"
	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="t-slibgcc"
	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="t-slibgcc"
	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.1[0-9]*)
	# 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="\$(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="\$(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="\$(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"
	    ;;
	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
	;;
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 ${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 ${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-*-eabispe*)
	tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h newlib-stdint.h ${cpu_type}/sysv4.h ${cpu_type}/eabi.h ${cpu_type}/e500.h ${cpu_type}/eabispe.h"
	extra_options="${extra_options} ${cpu_type}/sysv4.opt"
	tmake_file="${cpu_type}/t-spe ${cpu_type}/t-ppccomm"
	use_gcc_stdint=wrap
	;;
powerpc-*-eabisimaltivec*)
	tm_file="${tm_file} dbxelf.h elfos.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 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 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 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 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*spe*)
	tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h newlib-stdint.h powerpcspe/sysv4.h powerpcspe/eabi.h powerpcspe/e500.h powerpcspe/rtems.h rtems.h"
	extra_options="${extra_options} powerpcspe/sysv4.opt"
	tmake_file="${tmake_file} powerpcspe/t-fprules powerpcspe/t-rtems powerpcspe/t-ppccomm"
	;;
powerpc-*-rtems*)
	tm_file="rs6000/biarch64.h ${tm_file} dbxelf.h elfos.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*spe*)
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h freebsd-spec.h powerpcspe/sysv4.h"
	extra_options="${extra_options} powerpcspe/sysv4.opt"
	tmake_file="${tmake_file} powerpcspe/t-fprules powerpcspe/t-ppccomm"
	extra_objs="$extra_objs powerpcspe-linux.o"
	maybe_biarch=
	tm_file="${tm_file} powerpcspe/linux.h glibc-stdint.h"
	tmake_file="${tmake_file} powerpcspe/t-ppcos powerpcspe/t-linux"
	tm_file="${tm_file} powerpcspe/linuxspe.h powerpcspe/e500.h"
	;;
powerpc*-*-linux*)
	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.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} in
	    powerpc64*-*-linux*spe* | powerpc*-*-linux*paired*)
		echo "*** Configuration ${target} not supported" 1>&2
		exit 1
		;;
	    powerpc*-*-linux*spe*)
		maybe_biarch=
		;;
	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" ;;
	    powerpc*-*-linux*spe*)
		tm_file="${tm_file} ${cpu_type}/linuxspe.h ${cpu_type}/e500.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*spe)
	tm_file="${tm_file} elfos.h freebsd-spec.h powerpcspe/sysv4.h"
	tmake_file="${tmake_file} powerpcspe/t-fprules powerpcspe/t-ppccomm powerpcspe/t-vxworks"
	extra_options="${extra_options} powerpcspe/sysv4.opt"
	extra_headers=ppc-asm.h
	tm_file="${tm_file} vx-common.h vxworks.h powerpcspe/vxworks.h powerpcspe/e500.h"
	;;
powerpc-wrs-vxworks*)
	tm_file="${tm_file} elfos.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 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 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 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 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
	extra_headers=altivec.h
	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
	extra_headers="altivec.h amo.h"
	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
	extra_headers="altivec.h amo.h"
	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
	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

# 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
	;;
      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
	;;
      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
      ;;
    powerpc*-*-*spe*)
      # For SPE, start with 8540, then upgrade to 8548 if
      # --enable-e500-double was requested explicitly or if we were
      # configured for e500v2.
      with_cpu=8540
      if test x$enable_e500_double = xyes; then
        with_cpu=8548
      fi
      case ${target_noncanonical} in
        e500v2*)
          with_cpu=8548
          ;;
      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
    mips64r5900-*-* | mips64r5900el-*-* | mipsr5900-*-* | mipsr5900el-*-*)
      # The R5900 doesn't support LL(D) and SC(D).
      with_llsc=no
      ;;
    mips*-*-linux*)
      # The kernel emulates LL and SC where necessary.
      with_llsc=yes
      ;;
  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
			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"
						;;
					*)
						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
				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
		;;

	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"

		case "${target}" in
		riscv-* | riscv32*) xlen=32 ;;
		riscv64*) xlen=64 ;;
		*) echo "Unsupported RISC-V target ${target}" 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
		"")
			# the default library is newlib
			with_nds32_lib=newlib
			tm_defines="${tm_defines} TARGET_DEFAULT_CTOR_DTOR=1"
			;;
		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)
			# OK
			tm_defines="${tm_defines} TARGET_DEFAULT_TLSDESC_TRAMPOLINE=0"
			;;
		uclibc)
			;;
		*)
			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)
				# 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.1[0-9]*)
		;;
	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*)
		;;
	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"
		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