# GCC target-specific configuration file.
# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
# 2008, 2009 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.
#
#  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 svr4.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".
#
#  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}.
#
#  use_gcc_tgmath	If set, add tgmath.h to the list of used header
#			files.
#
#  extra_passes		List of extra executables compiled for this target
#			machine, used for compiling from source to object.
#
#  extra_parts		List of extra object files that should be compiled
#			for this target machine.
#
#  extra_programs	Like extra_passes, but these are 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.
#
#  need_64bit_hwint	Set to yes if HOST_WIDE_INT must be 64 bits wide
#			for this target.  This is true if this target
#			supports "long" or "wchar_t" wider than 32 bits,
#			or BITS_PER_WORD is wider than 32 bits.
#			The setting made here must match the one made in
#			other locations such as libcpp/configure.ac
#
#  configure_default_options
#			Set to an initializer for configure_default_options
#			in configargs.h, based on --with-cpu et cetera.
#
#  use_fixproto		Set to "yes" if fixproto should be run normally,
#			"no" if fixproto should never be run.

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

out_file=
tmake_file=
extra_headers=
use_gcc_tgmath=yes
extra_passes=
extra_parts=
extra_programs=
extra_objs=
extra_gcc_objs=
extra_options=
c_target_objs=
cxx_target_objs=
fortran_target_objs=
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
target_gtfiles=
need_64bit_hwint=

# Default to not using fixproto.  Targets which need fixproto should
# specifically set this to 'yes'.
use_fixproto=no

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

# Obsolete configurations.
case ${target} in
# Avoid generic cases below matching.
   h8300-*-rtems* | h8300-*-elf* \
 | sh-*-elf* | sh-*-symbianelf* | sh-*-linux* | sh-*-netbsdelf* \
 | sh-*-rtems* | sh-wrs-vxworks) ;;
   arm-*-coff*		\
 | armel-*-coff*	\
 | h8300-*-*		\
 | i[34567]86-*-aout*	\
 | i[34567]86-*-coff*	\
 | m68k-*-aout*		\
 | m68k-*-coff*		\
 | sh-*-*		\
 | pdp11-*-bsd		\
 | rs6000-ibm-aix4.[12]* \
 | powerpc-ibm-aix4.[12]* \
 )
    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
   i[34567]86-go32-*			\
 | i[34567]86-*-go32*			\
 | mips64orion*-*-rtems*		\
 | sparc-hal-solaris2*			\
 | thumb-*-*				\
 | *-*-linux*aout*			\
 | *-*-linux*coff*			\
 | *-*-linux*libc1*			\
 | *-*-linux*oldld*			\
 | *-*-rtemsaout*			\
 | *-*-rtemscoff*			\
 | *-*-solaris2.[0-6]			\
 | *-*-solaris2.[0-6].*			\
 | *-*-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
        ;;
alpha*-*-*)
	cpu_type=alpha
	need_64bit_hwint=yes
	;;
am33_2.0-*-linux*)
	cpu_type=mn10300
	;;
arm*-*-*)
	cpu_type=arm
	extra_headers="mmintrin.h arm_neon.h"
	c_target_objs="arm-c.o"
	cxx_target_objs="arm-c.o"
	;;
bfin*-*)
	cpu_type=bfin
	;;
crisv32-*)
	cpu_type=cris
	;;
frv*)	cpu_type=frv
	;;
fido-*-*)
	cpu_type=m68k
	extra_headers=math-68881.h
        ;;
i[34567]86-*-*)
	cpu_type=i386
	c_target_objs="i386-c.o"
	cxx_target_objs="i386-c.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 mmintrin-common.h
		       wmmintrin.h immintrin.h x86intrin.h avxintrin.h 
		       cross-stdarg.h"
	;;
x86_64-*-*)
	cpu_type=i386
	c_target_objs="i386-c.o"
	cxx_target_objs="i386-c.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 mmintrin-common.h
		       wmmintrin.h immintrin.h x86intrin.h avxintrin.h 
		       cross-stdarg.h"
	need_64bit_hwint=yes
	;;
ia64-*-*)
	extra_headers=ia64intrin.h
	need_64bit_hwint=yes
	;;
hppa*-*-*)
	cpu_type=pa
	;;
m32r*-*-*)
        cpu_type=m32r
        ;;
m68k-*-*)
	extra_headers=math-68881.h
	;;
mips*-*-*)
	cpu_type=mips
	need_64bit_hwint=yes
	extra_headers="loongson.h"
	;;
picochip-*-*)
        cpu_type=picochip
        ;;
powerpc*-*-*)
	cpu_type=rs6000
	extra_headers="ppc-asm.h altivec.h spe.h ppu_intrinsics.h paired.h spu2vmx.h vec_types.h si2vmx.h"
	need_64bit_hwint=yes
	case x$with_cpu in
	    xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[34567]|xpower6x|xrs64a|xcell)
		cpu_is_64bit=yes
		;;
	esac
	;;
rs6000*-*-*)
	need_64bit_hwint=yes
	;;
score*-*-*)
	cpu_type=score
	;;
sparc*-*-*)
	cpu_type=sparc
	need_64bit_hwint=yes
	;;
spu*-*-*)
	cpu_type=spu
	need_64bit_hwint=yes
	;;
s390*-*-*)
	cpu_type=s390
	need_64bit_hwint=yes
	;;
# Note the 'l'; we need to be able to match e.g. "shle" or "shl".
sh[123456789lbe]*-*-* | sh-*-*)
	cpu_type=sh
	need_64bit_hwint=yes
	;;
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
i[34567]86-*-*)
	if test "x$enable_cld" = xyes; then
		tm_defines="${tm_defines} USE_IX86_CLD=1"
	fi
	;;
x86_64-*-*)
	tm_file="i386/biarch64.h ${tm_file}"
	if test "x$enable_cld" = xyes; then
		tm_defines="${tm_defines} USE_IX86_CLD=1"
	fi
	;;
esac

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

# Common parts for widely ported systems.
case ${target} in
*-*-darwin*)
  tm_file="${tm_file} darwin.h"
  case ${target} in
  *-*-darwin[912]*)
    tm_file="${tm_file} darwin9.h"
    ;;
  esac
  tm_file="${tm_file} ${cpu_type}/darwin.h"
  tm_p_file="${tm_p_file} darwin-protos.h"
  tmake_file="t-darwin ${cpu_type}/t-darwin t-slibgcc-darwin"
  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"
  extra_objs="darwin.o"
  extra_gcc_objs="darwin-driver.o"
  default_use_cxa_atexit=yes
  case ${enable_threads} in
    "" | yes | posix) thread_file='posix' ;;
  esac
  ;;
*-*-freebsd[12] | *-*-freebsd[12].* | *-*-freebsd*aout*)
  # This is the place-holder for the generic a.out configuration
  # of FreeBSD.  No actual configuration resides here since
  # there was only ever a bare-bones ix86 configuration for
  # a.out and it exists solely in the machine-specific section.
  # This place-holder must exist to avoid dropping into
  # the generic ELF configuration of FreeBSD (i.e. it must be
  # ordered before that section).
  ;;
*-*-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
  extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
  fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
  tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
  tmake_file="t-slibgcc-elf-ver t-freebsd"
  case ${enable_threads} in
    no)
      fbsd_tm_file="${fbsd_tm_file} freebsd-nthr.h"
      ;;
    "" | yes | posix)
      thread_file='posix'
      tmake_file="${tmake_file} t-freebsd-thread"
      # Before 5.0, FreeBSD can't bind shared libraries to -lc
      # when "optionally" threaded via weak pthread_* checks.
      case ${target} in
        *-*-freebsd[34] | *-*-freebsd[34].*)
          tmake_file="${tmake_file} t-slibgcc-nolc-override"
          ;;
      esac
      ;;
    *)
      echo 'Unknown thread configuration for FreeBSD'
      exit 1
      ;;
  esac
  fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h"
  ;;
*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)
  extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
  gas=yes
  gnu_ld=yes
  case ${enable_threads} in
    "" | yes | posix) thread_file='posix' ;;
  esac
  tmake_file="t-slibgcc-elf-ver t-linux"
  case $target in
    *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-kopensolaris*-gnu)
      :;;
    *-*-gnu*)
      tmake_file="$tmake_file t-gnu";;
  esac
  # glibc / uclibc switch.  uclibc isn't usable for GNU/Hurd and neither for
  # GNU/k*BSD.
  case $target in
    *linux*)
      extra_options="$extra_options linux.opt";;
    *)
      tm_defines="$tm_defines OPTION_GLIBC=1";;
  esac
  case ${target} in
    *-*-*uclibc*)
      tm_defines="${tm_defines} UCLIBC_DEFAULT=1"
      ;;
    *)
      tm_defines="${tm_defines} UCLIBC_DEFAULT=0"
      ;;
  esac
  # Assume that glibc or uClibc are being used and so __cxa_atexit is provided.
  default_use_cxa_atexit=yes
  use_gcc_tgmath=no
  ;;
*-*-netbsd*)
  tmake_file="t-slibgcc-elf-ver t-libc-ok t-netbsd t-libgcc-pic"
  gas=yes
  gnu_ld=yes

  # NetBSD 2.0 and later get POSIX threads enabled by default.
  # Allow them to be explicitly enabled on any other version.
  case ${enable_threads} in
    "")
      case ${target} in
        *-*-netbsd[2-9]* | *-*-netbsdelf[2-9]*)
          thread_file='posix'
          tm_defines="${tm_defines} NETBSD_ENABLE_PTHREADS"
          ;;
      esac
      ;;
    yes | posix)
      thread_file='posix'
      tm_defines="${tm_defines} NETBSD_ENABLE_PTHREADS"
      ;;
  esac

  # NetBSD 1.7 and later are set up to use GCC's crtstuff for
  # ELF configurations.  We will clear extra_parts in the
  # a.out configurations.
  case ${target} in
    *-*-netbsd*1.[7-9]* | *-*-netbsd[2-9]* | *-*-netbsdelf[2-9]*)
      extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
      ;;
  esac

  # NetBSD 2.0 and later provide __cxa_atexit(), which we use by
  # default (unless overridden by --disable-__cxa_atexit).
  case ${target} in
    *-*-netbsd[2-9]* | *-*-netbsdelf[2-9]*)
      default_use_cxa_atexit=yes
      ;;
  esac
  ;;
*-*-openbsd*)
  tmake_file="t-libc-ok t-openbsd t-libgcc-pic"
  case ${enable_threads} in
    yes)
      thread_file='posix'
      tmake_file="${tmake_file} t-openbsd-thread"
      ;;
  esac
  case ${target} in
    *-*-openbsd2.*|*-*-openbsd3.[012])
      tm_defines="${tm_defines} HAS_LIBC_R=1" ;;
  esac
  ;;
*-*-rtems*)
  case ${enable_threads} in
    yes) thread_file='rtems' ;;
  esac
  ;;
*-*-vxworks*)
  tmake_file=t-vxworks
  xm_defines=POSIX
  extra_options="${extra_options} vxworks.opt"
  extra_objs=vxworks.o
  case ${enable_threads} in
    no) ;;
    "" | yes | vxworks) thread_file='vxworks' ;;
    *) echo 'Unknown thread configuration for VxWorks'; exit 1 ;;
  esac
  ;;
*-*-elf)
  # Assume that newlib is being used and so __cxa_atexit is provided.
  default_use_cxa_atexit=yes
  ;;
esac

case ${target} in
# Support site-specific machine types.
*local*)
	rest=`echo ${target} | sed -e "s/$cpu_type-//"`
	tm_file=${cpu_type}/$rest.h
	if test -f $srcdir/config/${cpu_type}/xm-$rest.h
	then xm_file=${cpu_type}/xm-$rest.h
	fi
	if test -f $srcdir/config/${cpu_type}/t-$rest
	then tmake_file=${cpu_type}/t-$rest
	fi
	;;
alpha*-*-linux*)
	tm_file="${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h"
	target_cpu_default="MASK_GAS"
	tmake_file="${tmake_file} alpha/t-crtfm alpha/t-alpha alpha/t-ieee alpha/t-linux"
	;;
alpha*-*-gnu*)
	tm_file="$tm_file alpha/elf.h alpha/linux.h alpha/linux-elf.h gnu.h alpha/gnu.h"
	target_cpu_default="MASK_GAS"
	tmake_file="${tmake_file} alpha/t-crtfm alpha/t-alpha alpha/t-ieee"
	;;
alpha*-*-freebsd*)
	tm_file="${tm_file} ${fbsd_tm_file} alpha/elf.h alpha/freebsd.h"
	target_cpu_default="MASK_GAS"
	tmake_file="${tmake_file} alpha/t-crtfm alpha/t-alpha alpha/t-ieee"
	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
	;;
alpha*-*-netbsd*)
	tm_file="${tm_file} netbsd.h alpha/elf.h netbsd-elf.h alpha/netbsd.h"
	target_cpu_default="MASK_GAS"
	tmake_file="${tmake_file} alpha/t-alpha alpha/t-ieee"
	;;
alpha*-*-openbsd*)
	tm_defines="${tm_defines} OBSD_NO_DYNAMIC_LIBRARIES OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_FUNCTION_SIZE OBSD_HAS_DECLARE_OBJECT"
	tm_file="alpha/alpha.h openbsd.h alpha/openbsd.h"
	# default x-alpha is only appropriate for dec-osf.
	target_cpu_default="MASK_GAS"
	tmake_file="alpha/t-alpha alpha/t-ieee"
	;;
alpha*-dec-osf[45]*)
	if test x$stabs = xyes
	then
		tm_file="${tm_file} dbx.h"
	fi
	if test x$gas != xyes
	then
		extra_passes="mips-tfile mips-tdump"
	fi
	use_collect2=yes
	tmake_file="alpha/t-alpha alpha/t-ieee alpha/t-crtfm alpha/t-osf4"
	tm_file="${tm_file} alpha/osf.h"
	extra_headers=va_list.h
	case ${target} in
	  *-*-osf4*)
	    # Define TARGET_SUPPORT_ARCH except on 4.0a.
	    case ${target} in
		*-*-osf4.0a) ;;
		*) tm_defines="${tm_defines} TARGET_SUPPORT_ARCH=1"
	    esac
	    ;;
	  *-*-osf5*)
	    tm_file="${tm_file} alpha/osf5.h"
	    tm_defines="${tm_defines} TARGET_SUPPORT_ARCH=1"
	    ;;
	esac
	case ${enable_threads} in
	  "" | yes | posix)
	    thread_file='posix'
	    tmake_file="${tmake_file} alpha/t-osf-pthread"
	    ;;
	esac
	;;
alpha64-dec-*vms*)
	tm_file="${tm_file} alpha/vms.h alpha/vms64.h"
	xm_file="alpha/xm-vms.h"
	tmake_file="alpha/t-alpha alpha/t-vms alpha/t-vms64 alpha/t-ieee"
	prefix=/gnu
	local_prefix=/gnu
	;;
alpha*-dec-*vms*)
	tm_file="${tm_file} alpha/vms.h"
	xm_file=alpha/xm-vms.h
	tmake_file="alpha/t-alpha alpha/t-vms alpha/t-ieee"
	prefix=/gnu
	local_prefix=/gnu
	;;
arc-*-elf*)
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
	extra_parts="crtinit.o crtfini.o"
	;;
arm-*-coff* | armel-*-coff*)
	tm_file="arm/semi.h arm/aout.h arm/arm.h arm/coff.h dbxcoff.h"
	tmake_file="arm/t-arm arm/t-arm-coff"
	;;
arm-wrs-vxworks)
	tm_file="elfos.h arm/elf.h arm/aout.h ${tm_file} vx-common.h vxworks.h arm/vxworks.h"
	tmake_file="${tmake_file} arm/t-arm arm/t-vxworks"
	;;
arm*-*-freebsd*)
	tm_file="dbxelf.h elfos.h ${fbsd_tm_file} arm/elf.h arm/aout.h arm/freebsd.h arm/arm.h"
	tmake_file="${tmake_file} arm/t-arm arm/t-strongarm-elf"
	;;
arm*-*-netbsdelf*)
	tm_file="dbxelf.h elfos.h netbsd.h netbsd-elf.h arm/elf.h arm/aout.h arm/arm.h arm/netbsd-elf.h"
	tmake_file="${tmake_file} arm/t-arm arm/t-netbsd"
	;;
arm*-*-netbsd*)
	tm_file="arm/aout.h arm/arm.h netbsd.h netbsd-aout.h arm/netbsd.h"
	tmake_file="t-netbsd arm/t-arm arm/t-netbsd"
	extra_parts=""
	use_collect2=yes
	;;
arm*-*-linux*)			# ARM GNU/Linux with ELF
	tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
	case $target in
	arm*b-*)
		tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
		;;
	esac
	tmake_file="${tmake_file} t-linux arm/t-arm"
	case ${target} in
	arm*-*-linux-*eabi)
	    tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
	    tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
  	    # The BPABI long long divmod functions return a 128-bit value in
	    # registers r0-r3.  Correctly modeling that requires the use of
	    # TImode.
	    need_64bit_hwint=yes
	    # The EABI requires the use of __cxa_atexit.
	    default_use_cxa_atexit=yes
	    ;;
	*)
	    tmake_file="$tmake_file arm/t-linux"
	    ;;
	esac
	tm_file="$tm_file arm/aout.h arm/arm.h"
	tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
	;;
arm*-*-uclinux*)		# ARM ucLinux
	tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/linux-gas.h arm/uclinux-elf.h"
	tmake_file="arm/t-arm arm/t-arm-elf"
	case ${target} in
	arm*-*-uclinux*eabi)
	    tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h"
	    tmake_file="$tmake_file arm/t-bpabi"
  	    # The BPABI long long divmod functions return a 128-bit value in
	    # registers r0-r3.  Correctly modeling that requires the use of
	    # TImode.
	    need_64bit_hwint=yes
	    # The EABI requires the use of __cxa_atexit.
	    default_use_cxa_atexit=yes
	esac
	tm_file="$tm_file arm/aout.h arm/arm.h"
	tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
	;;
arm*-*-ecos-elf)
	tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/ecos-elf.h"
	tmake_file="arm/t-arm arm/t-arm-elf"
	tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
	;;
arm*-*-eabi* | arm*-*-symbianelf* )
	# The BPABI long long divmod functions return a 128-bit value in
	# registers r0-r3.  Correctly modeling that requires the use of
	# TImode.
	need_64bit_hwint=yes
	default_use_cxa_atexit=yes
	tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
	tmake_file="arm/t-arm arm/t-arm-elf"
	case ${target} in
	arm*-*-eabi*)
	  tm_file="$tm_file arm/eabi.h"
	  tmake_file="${tmake_file} arm/t-bpabi"
	  extra_options="${extra_options} arm/eabi.opt"
	  ;;
	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"
	  ;;
	esac
	tm_file="${tm_file} arm/aout.h arm/arm.h"
	tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
	;;
arm*-*-rtems*)
	tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/rtems-elf.h rtems.h"
	tmake_file="arm/t-arm arm/t-arm-elf t-rtems arm/t-rtems"
	tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
	;;
arm*-*-elf)
	tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h"
	tmake_file="arm/t-arm arm/t-arm-elf"
	tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
	;;
arm*-wince-pe*)
	tm_file="arm/semi.h arm/aout.h arm/arm.h arm/coff.h dbxcoff.h arm/pe.h arm/wince-pe.h"
	tmake_file="arm/t-arm arm/t-wince-pe"
	extra_options="${extra_options} arm/pe.opt"
	extra_objs="pe.o"
	;;
arm-*-pe*)
	tm_file="arm/semi.h arm/aout.h arm/arm.h arm/coff.h dbxcoff.h arm/pe.h"
	tmake_file="arm/t-arm arm/t-pe"
	extra_options="${extra_options} arm/pe.opt"
	extra_objs="pe.o"
	;;
avr-*-rtems*)
	tm_file="avr/avr.h dbxelf.h avr/rtems.h rtems.h"
	tmake_file="avr/t-avr t-rtems avr/t-rtems"
	;;
avr-*-*)
	tm_file="avr/avr.h dbxelf.h"
	;;
bfin*-elf*)
	tm_file="${tm_file} dbxelf.h elfos.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 linux.h bfin/uclinux.h"
	tmake_file=bfin/t-bfin-uclinux
	tm_defines="${tm_defines} UCLIBC_DEFAULT=1"
	extra_options="${extra_options} linux.opt"
	use_collect2=no
	;;
bfin*-linux-uclibc*)
	tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h linux.h bfin/linux.h ./linux-sysroot-suffix.h"
	tmake_file="t-slibgcc-elf-ver bfin/t-bfin-linux"
	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
	use_collect2=no
	;;
bfin*-rtems*)
	tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h bfin/rtems.h rtems.h"
	tmake_file="bfin/t-bfin t-rtems bfin/t-rtems"
	;;
bfin*-*)
	tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h"
	tmake_file=bfin/t-bfin
	use_collect2=no
	;;
crisv32-*-elf | crisv32-*-none)
	tm_file="dbxelf.h elfos.h ${tm_file}"
	tmake_file="cris/t-cris"
	target_cpu_default=32
	gas=yes
	extra_options="${extra_options} cris/elf.opt"
	;;
cris-*-elf | cris-*-none)
	tm_file="dbxelf.h elfos.h ${tm_file}"
	tmake_file="cris/t-cris cris/t-elfmulti"
	gas=yes
	extra_options="${extra_options} cris/elf.opt"
	;;
crisv32-*-linux* | cris-*-linux*)
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h cris/linux.h"
	# We need to avoid using t-linux, so override default tmake_file
	tmake_file="cris/t-cris t-slibgcc-elf-ver cris/t-linux"
	extra_options="${extra_options} cris/linux.opt"
	case $target in
	  cris-*-*)
		target_cpu_default=10
		;;
	  crisv32-*-*)
		target_cpu_default=32
		;;
	esac
	;;
crx-*-elf)
	tm_file="elfos.h ${tm_file}"
	extra_parts="crtbegin.o crtend.o"
	use_collect2=no
	;;
fr30-*-elf)
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
	tmake_file=fr30/t-fr30
	extra_parts="crti.o crtn.o crtbegin.o crtend.o"
	;;
frv-*-elf)
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file} frv/frv-abi.h"
	tmake_file=frv/t-frv
	;;
frv-*-*linux*)
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file} \
	         linux.h frv/linux.h frv/frv-abi.h"
	tmake_file="${tmake_file} frv/t-frv frv/t-linux"
	;;
h8300-*-rtems*)
	tmake_file="h8300/t-h8300 h8300/t-elf t-rtems h8300/t-rtems"
	tm_file="h8300/h8300.h dbxelf.h elfos.h h8300/elf.h h8300/rtems.h rtems.h"
	;;
h8300-*-elf*)
	tmake_file="h8300/t-h8300 h8300/t-elf"
	tm_file="h8300/h8300.h dbxelf.h elfos.h h8300/elf.h"
	;;
h8300-*-*)
	tm_file="h8300/h8300.h dbxcoff.h h8300/coff.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 svr4.h linux.h \
		 pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h pa/pa64-linux.h"
	tmake_file="${tmake_file} pa/t-linux64"
	gas=yes gnu_ld=yes
	need_64bit_hwint=yes
	;;
hppa*-*-linux*)
	target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h pa/pa-linux.h \
		 pa/pa32-regs.h pa/pa32-linux.h"
	tmake_file="${tmake_file} pa/t-linux"
	# Set the libgcc version number
	if test x$sjlj = x1; then
	    tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver"
	else
	    tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
	fi
	;;
# port not yet contributed.
#hppa*-*-openbsd*)
#	target_cpu_default="MASK_PA_11"
#	;;
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"
	case ${target} in
	*-*-hpux10.[1-9]*)
		tm_file="${tm_file} pa/pa-hpux1010.h"
		extra_options="${extra_options} pa/pa-hpux1010.opt"
		;;
	esac
	tmake_file="pa/t-pa-hpux10 pa/t-pa-hpux pa/t-hpux-shlib"
	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
	# Set the libgcc version number
	if test x$sjlj = x1; then
	    tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver"
	else
	    tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
	fi
	use_collect2=yes
	gas=yes
	;;
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.[1-9]*)
		tm_file="${tm_file} pa/pa-hpux1111.h pa/pa-64.h pa/pa64-hpux.h"
		extra_options="${extra_options} pa/pa-hpux1111.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"
	need_64bit_hwint=yes
	tmake_file="pa/t-pa64 pa/t-pa-hpux pa/t-hpux-shlib"
	# Set the libgcc version number
	if test x$sjlj = x1; then
	    tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver"
	else
	    tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
	fi
	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o \
		     libgcc_stub.a"
	case x${enable_threads} in
	x | xyes | xposix )
		thread_file=posix
		;;
	esac
	gas=yes
	;;
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"
	case ${target} in
	*-*-hpux11.[1-9]*)
		tm_file="${tm_file} pa/pa-hpux1111.h"
		extra_options="${extra_options} pa/pa-hpux1111.opt"
		;;
	esac
	tmake_file="pa/t-pa-hpux11 pa/t-pa-hpux pa/t-hpux-shlib"
	# Set the libgcc version number
	if test x$sjlj = x1; then
	    tmake_file="$tmake_file pa/t-slibgcc-sjlj-ver"
	else
	    tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver"
	fi
	case x${enable_threads} in
	x | xyes | xposix )
		thread_file=posix
		;;
	esac
	use_collect2=yes
	gas=yes
	;;
i[34567]86-*-darwin*)
	need_64bit_hwint=yes

	# This is so that '.../configure && make' doesn't fail due to
	# config.guess deciding that the configuration is i386-*-darwin* and
	# then this file using that to set --with-cpu=i386 which has no -m64
	# support.
	with_cpu=${with_cpu:-generic}
	tmake_file="${tmake_file} i386/t-crtpc i386/t-crtfm"
	;;
x86_64-*-darwin*)
	with_cpu=${with_cpu:-generic}
	tmake_file="${tmake_file} t-darwin ${cpu_type}/t-darwin64 t-slibgcc-darwin i386/t-crtpc i386/t-crtfm"
	tm_file="${tm_file} ${cpu_type}/darwin64.h"
	;;
i[34567]86-*-elf*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/i386elf.h"
	tmake_file="${tmake_file} i386/t-i386elf t-svr4"
	;;
x86_64-*-elf*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/i386elf.h i386/x86-64.h"
	tmake_file="${tmake_file} i386/t-i386elf t-svr4"
	;;
i[34567]86-*-aout*)
	tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h i386/i386-aout.h"
	;;
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"
	tmake_file="${tmake_file} i386/t-crtstuff"
	;;
i[34567]86-*-netbsdelf*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/netbsd-elf.h"
	;;
i[34567]86-*-netbsd*)
	tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h netbsd.h netbsd-aout.h i386/netbsd.h"
	tmake_file="${tmake_file} t-netbsd"
	extra_parts=""
	use_collect2=yes
	;;
x86_64-*-netbsd*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/x86-64.h i386/netbsd64.h"
	tmake_file="${tmake_file} i386/t-crtstuff"
	;;
i[34567]86-*-openbsd2.*|i[34567]86-*openbsd3.[0123])
	tm_file="i386/i386.h i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h openbsd-oldgas.h openbsd.h i386/openbsd.h"
	# needed to unconfuse gdb
	tmake_file="${tmake_file} t-libc-ok t-openbsd i386/t-openbsd"
	# we need collect2 until our bug is fixed...
	use_collect2=yes
	;;
i[34567]86-*-openbsd*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h"
	tm_file="${tm_file} openbsd.h i386/openbsdelf.h"
	gas=yes
	gnu_ld=yes
	;;
i[34567]86-*-coff*)
	tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/i386-coff.h"
	;;
i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-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 svr4.h linux.h"
	case ${target} in
	i[34567]86-*-linux*)
		if test x$enable_targets = xall; then
			tm_file="${tm_file} i386/x86-64.h i386/linux64.h"
			tm_defines="${tm_defines} TARGET_BI_ARCH=1"
			tmake_file="${tmake_file} i386/t-linux64"
			need_64bit_hwint=yes
			case X"${with_cpu}" in
			Xgeneric|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx)
				;;
			X)
				if test x$with_cpu_64 = x; then
					with_cpu_64=generic
				fi
				;;
			*)
				echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
				echo "generic core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2
				exit 1
				;;
			esac
		else
			tm_file="${tm_file} i386/linux.h"
		fi
		;;
	i[34567]86-*-knetbsd*-gnu) tm_file="${tm_file} i386/linux.h knetbsd-gnu.h i386/knetbsd-gnu.h" ;;
	i[34567]86-*-kfreebsd*-gnu) tm_file="${tm_file} i386/linux.h kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;;
	i[34567]86-*-kopensolaris*-gnu) tm_file="${tm_file} i386/linux.h kopensolaris-gnu.h i386/kopensolaris-gnu.h" ;;
	i[34567]86-*-gnu*) tm_file="$tm_file i386/linux.h gnu.h i386/gnu.h";;
	esac
	tmake_file="${tmake_file} i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules"
	;;
x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h \
		 i386/x86-64.h i386/linux64.h"
	case ${target} in
	x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h" ;;
	x86_64-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h" ;;
	esac
	tmake_file="${tmake_file} i386/t-linux64 i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules"
	;;
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"
	tmake_file="${tmake_file} i386/t-djgpp"
	extra_options="${extra_options} i386/djgpp.opt"
	gnu_ld=yes
	gas=yes
	;;
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} i386/t-crtstuff t-lynx"
	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
	extra_options="${extra_options} lynx.opt"
	thread_file=lynx
	gnu_ld=yes
	gas=yes
	;;
i[3456x]86-*-netware*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h tm-dwarf2.h i386/netware.h"
 	tmake_file="${tmake_file} i386/t-netware"
	extra_objs=netware.o
	case /${with_ld} in
	*/nwld)
		extra_objs="$extra_objs nwld.o"
		tm_file="${tm_file} i386/nwld.h"
	 	tmake_file="${tmake_file} i386/t-nwld"
		extra_parts="crt0.o libgcc.def libc.def libcpre.def posixpre.def"
		;;
	esac
	case x${enable_threads} in
	x | xyes | xposix) thread_file='posix';;
	xnks) thread_file='nks';;
	xno) ;;
	*) echo 'Unknown thread configuration for NetWare' >&2; exit 1;;
	esac
	;;
i[34567]86-*-nto-qnx*)
	tm_file="${tm_file} i386/att.h dbxelf.h tm-dwarf2.h elfos.h svr4.h i386/unix.h i386/nto.h"
	tmake_file="${tmake_file} i386/t-nto"
	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"
	extra_parts="crtbegin.o crtend.o crti.o crtn.o"
	tmake_file="${tmake_file} i386/t-rtems-i386 i386/t-crtstuff t-rtems"
	;;
i[34567]86-*-solaris2*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h i386/sysv4.h sol2.h"
	case ${target} in
	*-*-solaris2.1[0-9]*)
		tm_file="${tm_file} sol2-10.h"
		;;
	esac
	tm_file="${tm_file} i386/sol2.h"
	tmake_file="${tmake_file} t-sol2 t-svr4"
	c_target_objs="${c_target_objs} sol2-c.o"
	cxx_target_objs="${cxx_target_objs} sol2-c.o"
	extra_objs="sol2.o"
	tm_p_file="${tm_p_file} sol2-protos.h"
	if test x$gnu_ld = xyes; then
		tmake_file="$tmake_file t-slibgcc-elf-ver"
		tm_defines="${tm_defines} TARGET_GNU_LD=1"
	else
		tmake_file="$tmake_file t-slibgcc-sld"
	fi
	if test x$gas = xyes; then
		tm_file="usegas.h ${tm_file}"
	fi
	tm_file="$tm_file tm-dwarf2.h"
	case ${target} in
	*-*-solaris2.1[0-9]*)
		tm_file="${tm_file} i386/x86-64.h i386/sol2-10.h"
		tm_defines="${tm_defines} TARGET_BI_ARCH=1"
		tmake_file="$tmake_file i386/t-sol2-10"
		# i386/t-crtstuff only affects libgcc.  Its inclusion
		# depends on a runtime test and is thus performed in
		# libgcc/configure.ac instead.
		need_64bit_hwint=yes
		case X"${with_cpu}" in
		Xgeneric|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx)
			;;
		X)
			if test x$with_cpu_64 = x; then
				with_cpu_64=generic
			fi
			;;
		*)
			echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
			echo "generic core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2
			exit 1
			;;
		esac
		;;
	esac
	case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
	  "":yes:* | yes:yes:* )
		thread_file=posix
		;;
	  "":*:yes | yes:*:yes )
		thread_file=solaris
		;;
	esac
	;;
i[4567]86-wrs-vxworks|i[4567]86-wrs-vxworksae)
	tm_file="${tm_file} i386/unix.h i386/att.h elfos.h svr4.h vx-common.h"
	case ${target} in
	  *-vxworksae*)
	    tm_file="${tm_file} vxworksae.h i386/vx-common.h i386/vxworksae.h"
	    tmake_file="${tmake_file} i386/t-vxworks i386/t-vxworksae"
	    ;;
	  *)
	    tm_file="${tm_file} vxworks.h i386/vx-common.h i386/vxworks.h"
	    tmake_file="${tmake_file} i386/t-vxworks"
	    ;;
	esac
	;;
i[34567]86-*-pe | 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"
	xm_file=i386/xm-cygwin.h
	# This has to match the logic for DWARF2_UNWIND_INFO in gcc/config/i386/cygming.h
	if test x$sjlj = x0; then
		tmake_eh_file="i386/t-dw2-eh"
	else
		tmake_eh_file="i386/t-sjlj-eh"
	fi
	tmake_file="${tmake_file} ${tmake_eh_file} i386/t-cygming i386/t-cygwin"
	target_gtfiles="\$(srcdir)/config/i386/winnt.c"
	extra_options="${extra_options} i386/cygming.opt"
	extra_objs="winnt.o winnt-stubs.o"
	c_target_objs="${c_target_objs} cygwin2.o msformat-c.o"
	cxx_target_objs="${cxx_target_objs} cygwin2.o winnt-cxx.o msformat-c.o"
	extra_gcc_objs=cygwin1.o
	if test x$enable_threads = xyes; then
		thread_file='posix'
	fi
	;;
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 i386/mingw32.h"
	xm_file=i386/xm-mingw32.h
	# This has to match the logic for DWARF2_UNWIND_INFO in gcc/config/i386/cygming.h
	if test x$sjlj = x0; then
		tmake_eh_file="i386/t-dw2-eh"
	else
		tmake_eh_file="i386/t-sjlj-eh"
	fi
	tmake_file="${tmake_file} ${tmake_eh_file} i386/t-cygming i386/t-mingw32"
	target_gtfiles="\$(srcdir)/config/i386/winnt.c"
	extra_options="${extra_options} i386/cygming.opt i386/mingw.opt"
	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"
	default_use_cxa_atexit=yes
	case ${enable_threads} in
	  "" | yes | win32)
	  thread_file='win32'
	  tmake_file="${tmake_file} i386/t-gthr-win32"
	  ;;
	esac
	case ${target} in
		x86_64-*-mingw*)
			tmake_file="${tmake_file} i386/t-crtfm"
			;;
		*)
			;;
	esac
	case ${target} in
 		*mingw32crt*)
 			tm_file="${tm_file} i386/crtdll.h"
 			;;
		*mingw32msv* | *mingw*)
			;;
	esac
	;;
i[34567]86-*-interix3*)
	tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/i386-interix.h i386/i386-interix3.h interix.h interix3.h"
	tmake_file="${tmake_file} i386/t-interix"
	extra_objs=winnt.o
	target_gtfiles="\$(srcdir)/config/i386/winnt.c"
	if test x$enable_threads = xyes ; then
		thread_file='posix'
	fi
	if test x$stabs = xyes ; then
		tm_file="${tm_file} dbxcoff.h"
	fi
	;;
ia64*-*-elf*)
	tm_file="${tm_file} dbxelf.h elfos.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
	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
	;;
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"
	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
	;;
ia64*-*-linux*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h ia64/sysv4.h ia64/linux.h"
	tmake_file="${tmake_file} ia64/t-ia64 t-libunwind ia64/t-glibc"
	if test x$with_system_libunwind != xyes ; then
		tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
	fi
	target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
	;;
ia64*-*-hpux*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h ia64/sysv4.h ia64/hpux.h"
	tmake_file="ia64/t-ia64 ia64/t-hpux"
	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"
	;;
iq2000*-*-elf*)
        tm_file="svr4.h elfos.h iq2000/iq2000.h"
        tmake_file=iq2000/t-iq2000
        out_file=iq2000/iq2000.c
        md_file=iq2000/iq2000.md
        ;;
m32r-*-elf*)
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
	extra_parts="crtinit.o crtfini.o"
 	;;
m32rle-*-elf*)
	tm_file="dbxelf.h elfos.h svr4.h m32r/little.h ${tm_file}"
	extra_parts="crtinit.o crtfini.o m32rx/crtinit.o m32rx/crtfini.o"
	;;
m32r-*-rtems*)
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file} m32r/rtems.h rtems.h"
	tmake_file="m32r/t-m32r t-rtems"
	extra_parts="crtinit.o crtfini.o"
 	;;
m32r-*-linux*)
	tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} m32r/linux.h"
	# We override the tmake_file for linux -- why?
	tmake_file="t-slibgcc-elf-ver m32r/t-linux"
	gnu_ld=yes
	if test x$enable_threads = xyes; then
		thread_file='posix'
	fi
 	;;
m32rle-*-linux*)
	tm_file="dbxelf.h elfos.h svr4.h linux.h m32r/little.h ${tm_file} m32r/linux.h"
	# We override the tmake_file for linux -- why?
	tmake_file="t-slibgcc-elf-ver m32r/t-linux"
	gnu_ld=yes
	if test x$enable_threads = xyes; then
		thread_file='posix'
	fi
	;;
# m68hc11 and m68hc12 share the same machine description.
m68hc11-*-*|m6811-*-*)
	tm_file="dbxelf.h elfos.h usegas.h m68hc11/m68hc11.h"
	tm_p_file="m68hc11/m68hc11-protos.h"
	md_file="m68hc11/m68hc11.md"
	out_file="m68hc11/m68hc11.c"
	tmake_file="m68hc11/t-m68hc11"
        ;;
m68hc12-*-*|m6812-*-*)
	tm_file="m68hc11/m68hc12.h dbxelf.h elfos.h usegas.h m68hc11/m68hc11.h"
	tm_p_file="m68hc11/m68hc11-protos.h"
	md_file="m68hc11/m68hc11.md"
	out_file="m68hc11/m68hc11.c"
	tmake_file="m68hc11/t-m68hc11"
	extra_options="${extra_options} m68hc11/m68hc11.opt"
        ;;
m68k-*-aout*)
	default_m68k_cpu=68020
	default_cf_cpu=5206
	tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-mlibs"
	tm_file="${tm_file} m68k/m68k-none.h m68k/m68kemb.h m68k/m68k-aout.h libgloss.h"
	;;
m68k-*-coff*)
	default_m68k_cpu=68020
	default_cf_cpu=5206
	tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-mlibs"
	tm_defines="${tm_defines} MOTOROLA=1"
	tm_file="${tm_file} m68k/m68k-none.h m68k/m68kemb.h dbxcoff.h m68k/coff.h dbx.h"
	;;
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 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
	extra_parts="crtbegin.o crtend.o"
	;;
m68k*-*-netbsdelf*)
	default_m68k_cpu=68020
	default_cf_cpu=5475
	tm_file="${tm_file} dbxelf.h elfos.h netbsd.h netbsd-elf.h m68k/netbsd-elf.h"
	tm_defines="${tm_defines} MOTOROLA=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 m68k/openbsd.h"
	tmake_file="t-libc-ok t-openbsd m68k/t-openbsd"
	# we need collect2 until our bug is fixed...
	use_collect2=yes
	;;
m68k-*-uclinuxoldabi*)		# Motorola m68k/ColdFire running uClinux
				# with uClibc, using the original
				# m68k-elf-based ABI
	default_m68k_cpu=68020
	default_cf_cpu=5206
	tm_file="${tm_file} m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h m68k/uclinux-oldabi.h"
 	tm_defines="${tm_defines} MOTOROLA=1"
	tmake_file="m68k/t-floatlib m68k/t-uclinux"
	;;
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 svr4.h linux.h flat.h m68k/linux.h m68k/uclinux.h ./sysroot-suffix.h"
 	tm_defines="${tm_defines} MOTOROLA=1 UCLIBC_DEFAULT=1"
	extra_options="${extra_options} linux.opt"
	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 svr4.h linux.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"
	# if not configured with --enable-sjlj-exceptions, bump the
	# libgcc version number
	if test x$sjlj != x1; then
	    tmake_file="$tmake_file m68k/t-slibgcc-elf-ver"
	fi
	;;
m68k-*-rtems*)
	default_m68k_cpu=68020
	default_cf_cpu=5206
	tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-crtstuff t-rtems 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"
	tm_defines="${tm_defines} MOTOROLA=1"
	extra_parts="crtbegin.o crtend.o"
	;;
mcore-*-elf)
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file} mcore/mcore-elf.h"
	tmake_file=mcore/t-mcore
	inhibit_libc=true
	;;
mcore-*-pe*)
	tm_file="svr3.h dbxcoff.h ${tm_file} mcore/mcore-pe.h"
	tmake_file=mcore/t-mcore-pe
	inhibit_libc=true
	;;
mips-sgi-irix[56]*)
	tm_file="elfos.h ${tm_file} mips/iris.h"
	tmake_file="mips/t-iris mips/t-slibgcc-irix"
	target_cpu_default="MASK_ABICALLS"
	case ${target} in
	*-*-irix5*)
		tm_file="${tm_file} mips/iris5.h"
		;;

	*-*-irix6*)
		tm_file="${tm_file} mips/iris6.h"
		tmake_file="${tmake_file} mips/t-iris6"
		tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_N32"
		;;
	esac
	if test "x$stabs" = xyes
	then
		tm_file="${tm_file} dbx.h mips/dbxmdebug.h"
	fi
	if test "x$gnu_ld" = xyes
	then
		tm_defines="${tm_defines} IRIX_USING_GNU_LD"
	fi
	case ${enable_threads}:${have_pthread_h} in
	  "":yes | yes:yes ) thread_file=posix ;;
	esac
	;;
mips*-*-netbsd*)			# NetBSD/mips, either endian.
	target_cpu_default="MASK_ABICALLS"
	tm_file="elfos.h ${tm_file} mips/elf.h netbsd.h netbsd-elf.h mips/netbsd.h"
	;;
mips64*-*-linux* | mipsisa64*-*-linux*)
	tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h mips/linux64.h"
	tmake_file="${tmake_file} mips/t-linux64 mips/t-libgcc-mips16"
	tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32"
	case ${target} in
		mips64el-st-linux-gnu)
			tm_file="${tm_file} mips/st.h"
			tmake_file="${tmake_file} mips/t-st"
			;;
		mips64octeon*-*-linux*)
			tm_defines="${tm_defines} MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
			target_cpu_default=MASK_SOFT_FLOAT_ABI
			;;
		mipsisa64r2*-*-linux*)
			tm_defines="${tm_defines} MIPS_ISA_DEFAULT=65"
			;;
	esac
	gnu_ld=yes
	gas=yes
	test x$with_llsc != x || with_llsc=yes
	;;
mips*-*-linux*)				# Linux MIPS, either endian.
        tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h"
	tmake_file="${tmake_file} mips/t-libgcc-mips16"
	case ${target} in
        mipsisa32r2*)
		tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33"
                ;;
        mipsisa32*)
		tm_defines="${tm_defines} MIPS_ISA_DEFAULT=32"
        esac
	test x$with_llsc != x || with_llsc=yes
	;;
mips*-*-openbsd*)
	tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_OBJECT OBSD_HAS_CORRECT_SPECS"
	target_cpu_default="MASK_ABICALLS"
	tm_file="mips/mips.h openbsd.h mips/openbsd.h mips/sdb.h"
	case ${target} in
	mips*el-*-openbsd*)
	    tm_defines="${tm_defines} TARGET_ENDIAN_DEFAULT=0";;
	*)  tm_defines="${tm_defines} TARGET_ENDIAN_DEFAULT=MASK_BIG_ENDIAN";;
        esac
	;;
mips*-sde-elf*)
	tm_file="elfos.h ${tm_file} mips/elf.h mips/sde.h"
	tmake_file="mips/t-sde mips/t-libgcc-mips16"
	case "${with_newlib}" in
	  yes)
	    # newlib / libgloss.
	    ;;
	  *)
	    # MIPS toolkit libraries.
	    tm_file="$tm_file mips/sdemtk.h"
	    tmake_file="$tmake_file mips/t-sdemtk"
	    extra_options="$extra_options mips/sdemtk.opt"
	    case ${enable_threads} in
	      "" | yes | mipssde)
		thread_file='mipssde'
		;;
	    esac
	    ;;
	esac
	case ${target} in
	  mipsisa32r2*)
	    tm_defines="MIPS_ISA_DEFAULT=33 MIPS_ABI_DEFAULT=ABI_32"
	    ;;
	  mipsisa32*)
	    tm_defines="MIPS_ISA_DEFAULT=32 MIPS_ABI_DEFAULT=ABI_32"
	    ;;
	  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* | \
mipsisa64-*-elf* | mipsisa64el-*-elf* | \
mipsisa64r2-*-elf* | mipsisa64r2el-*-elf*)
	tm_file="elfos.h ${tm_file} mips/elf.h"
	tmake_file="mips/t-isa3264 mips/t-libgcc-mips16"
	case ${target} in
	  mipsisa32r2*)
	    tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33"
	    ;;
	  mipsisa32*)
	    tm_defines="${tm_defines} MIPS_ISA_DEFAULT=32"
	    ;;
	  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 ${tm_file} mips/elf.h"
        tmake_file=mips/t-sr71k
	target_cpu_default="MASK_64BIT|MASK_FLOAT64"
	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 ${tm_file} mips/elf.h"
	tmake_file="mips/t-elf mips/t-libgcc-mips16 mips/t-sb1"
	target_cpu_default="MASK_64BIT|MASK_FLOAT64"
	tm_defines="${tm_defines} MIPS_ISA_DEFAULT=64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64"
	;;
mips-*-elf* | mipsel-*-elf*)
	tm_file="elfos.h ${tm_file} mips/elf.h"
	tmake_file="mips/t-elf mips/t-libgcc-mips16"
	;;
mips64-*-elf* | mips64el-*-elf*)
	tm_file="elfos.h ${tm_file} mips/elf.h"
	tmake_file="mips/t-elf mips/t-libgcc-mips16"
	target_cpu_default="MASK_64BIT|MASK_FLOAT64"
	tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64"
	;;
mips64vr-*-elf* | mips64vrel-*-elf*)
        tm_file="elfos.h ${tm_file} mips/vr.h mips/elf.h"
        tmake_file=mips/t-vr
        ;;
mips64orion-*-elf* | mips64orionel-*-elf*)
	tm_file="elfos.h ${tm_file} mips/elforion.h mips/elf.h"
	tmake_file="mips/t-elf mips/t-libgcc-mips16"
	target_cpu_default="MASK_64BIT|MASK_FLOAT64"
	tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64"
	;;
mips*-*-rtems*)
	tm_file="elfos.h ${tm_file} mips/elf.h mips/rtems.h rtems.h"
	tmake_file="mips/t-elf mips/t-libgcc-mips16 t-rtems mips/t-rtems"
	;;
mips-wrs-vxworks)
	tm_file="elfos.h ${tm_file} svr4.h 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 ${tm_file} mips/r3900.h mips/elf.h"
	tmake_file="mips/t-r3900 mips/t-libgcc-mips16"
	;;
mmix-knuth-mmixware)
	need_64bit_hwint=yes
	;;
mn10300-*-*)
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
	if test x$stabs = xyes
	then
		tm_file="${tm_file} dbx.h"
	fi
	use_collect2=no
	;;
pdp11-*-bsd)
	tm_file="${tm_file} pdp11/2bsd.h"
	use_fixproto=yes
        ;;
pdp11-*-*)
	;;
picochip-*)
        # Nothing special
        ;;
# port not yet contributed
#powerpc-*-openbsd*)
#	tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-fprules-fpbit "
#	extra_headers=
#	;;
powerpc64-*-linux*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h"
	test x$with_cpu != x || cpu_is_64bit=yes
	test x$cpu_is_64bit != xyes || tm_file="${tm_file} rs6000/default64.h"
	tm_file="rs6000/biarch64.h ${tm_file} rs6000/linux64.h"
	if test x${enable_secureplt} = xyes; then
		tm_file="rs6000/secureplt.h ${tm_file}"
	fi
	extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
	tmake_file="t-dfprules rs6000/t-fprules ${tmake_file} rs6000/t-ppccomm rs6000/t-linux64 rs6000/t-fprules-softfp soft-fp/t-softfp"
	;;
powerpc64-*-gnu*)
	tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux64.h rs6000/gnu.h"
	extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
	tmake_file="rs6000/t-fprules t-slibgcc-elf-ver t-gnu rs6000/t-linux64 rs6000/t-fprules-softfp soft-fp/t-softfp"
	;;
powerpc-*-darwin*)
	extra_options="${extra_options} rs6000/darwin.opt"
	extra_parts="crt2.o"
	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
	extra_headers=altivec.h
	;;
powerpc64-*-darwin*)
	tm_file="${tm_file} ${cpu_type}/darwin8.h ${cpu_type}/darwin64.h"
	extra_options="${extra_options} ${cpu_type}/darwin.opt"
	# We're omitting t-darwin8 to avoid building any multilibs
	extra_headers=altivec.h
	;;
powerpc*-*-freebsd*)
	tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} rs6000/sysv4.h rs6000/freebsd.h"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
	extra_options="${extra_options} rs6000/sysv4.opt"
	;;
powerpc-*-netbsd*)
	tm_file="${tm_file} dbxelf.h elfos.h netbsd.h netbsd-elf.h freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
	tmake_file="${tmake_file} rs6000/t-netbsd"
	extra_options="${extra_options} rs6000/sysv4.opt"
	;;
powerpc-*-eabispe*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/eabispe.h"
	extra_options="${extra_options} rs6000/sysv4.opt"
	tmake_file="rs6000/t-spe rs6000/t-ppccomm"
	;;
powerpc-*-eabisimaltivec*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/eabisim.h rs6000/eabialtivec.h"
	extra_options="${extra_options} rs6000/sysv4.opt"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcendian rs6000/t-ppccomm"
	;;
powerpc-*-eabisim*)
	tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/eabisim.h"
	extra_options="${extra_options} rs6000/sysv4.opt"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
	;;
powerpc-*-elf*)
	tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h"
	extra_options="${extra_options} rs6000/sysv4.opt"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
	;;
powerpc-*-eabialtivec*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/eabialtivec.h"
	extra_options="${extra_options} rs6000/sysv4.opt"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcendian rs6000/t-ppccomm"
	;;
powerpc-xilinx-eabi*)
	tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/singlefp.h"
	extra_options="${extra_options} rs6000/sysv4.opt"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
	;;
powerpc-*-eabi*)
	tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h"
	extra_options="${extra_options} rs6000/sysv4.opt"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
	;;
powerpc-*-rtems*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/rtems.h rtems.h"
	extra_options="${extra_options} rs6000/sysv4.opt"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-rtems t-rtems rs6000/t-ppccomm"
	;;
powerpc-*-linux*altivec*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxaltivec.h"
	extra_options="${extra_options} rs6000/sysv4.opt"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-softfp soft-fp/t-softfp rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
	;;
powerpc-*-linux*spe*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxspe.h rs6000/e500.h"
	extra_options="${extra_options} rs6000/sysv4.opt"
	tmake_file="t-dfprules rs6000/t-fprules rs6000/t-fprules-softfp soft-fp/t-softfp rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
	;;
powerpc-*-linux*paired*)
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/750cl.h"
        extra_options="${extra_options} rs6000/sysv4.opt"
        tmake_file="rs6000/t-fprules rs6000/t-fprules-softfp soft-fp/t-softfp rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
        ;;
powerpc-*-linux*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h"
	extra_options="${extra_options} rs6000/sysv4.opt"
	tmake_file="t-dfprules rs6000/t-fprules rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
	case ${enable_targets}:${cpu_is_64bit} in
	    *powerpc64* | all:* | *: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"
		tmake_file="$tmake_file rs6000/t-linux64"
		extra_options="${extra_options} rs6000/linux64.opt"
		;;
	    *)
		tm_file="${tm_file} rs6000/linux.h"
		;;
	esac
	tmake_file="${tmake_file} rs6000/t-fprules-softfp soft-fp/t-softfp"
	if test x${enable_secureplt} = xyes; then
		tm_file="rs6000/secureplt.h ${tm_file}"
	fi
	;;
powerpc-*-gnu-gnualtivec*)
	tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxaltivec.h rs6000/gnu.h"
	extra_options="${extra_options} rs6000/sysv4.opt"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos t-slibgcc-elf-ver t-gnu rs6000/t-ppccomm"
	if test x$enable_threads = xyes; then
		thread_file='posix'
	fi
	;;
powerpc-*-gnu*)
	tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux.h rs6000/gnu.h"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos t-slibgcc-elf-ver t-gnu rs6000/t-ppccomm"
	extra_options="${extra_options} rs6000/sysv4.opt"
	if test x$enable_threads = xyes; then
		thread_file='posix'
	fi
	;;
powerpc-wrs-vxworks|powerpc-wrs-vxworksae)
	tm_file="${tm_file} elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h"
	tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppccomm rs6000/t-vxworks"
	extra_options="${extra_options} rs6000/sysv4.opt"
	extra_headers=ppc-asm.h
	case ${target} in
	  *-vxworksae*)
	    tm_file="${tm_file} vx-common.h vxworksae.h rs6000/vxworks.h rs6000/e500.h rs6000/vxworksae.h"
	    tmake_file="${tmake_file} rs6000/t-vxworksae"
	    ;;
	  *-vxworks*)
	    tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h rs6000/e500.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"
	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
	extra_options="${extra_options} lynx.opt"
	thread_file=lynx
	gnu_ld=yes
	gas=yes
	;;
powerpcle-*-elf*)
	tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit 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 svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h rs6000/e500.h rs6000/eabisim.h"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
	extra_options="${extra_options} rs6000/sysv4.opt"
	;;
powerpcle-*-eabi*)
	tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h rs6000/e500.h"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
	extra_options="${extra_options} rs6000/sysv4.opt"
	;;
powerpc-xilinx-eabi*)
 	tm_file="${tm_file} dbxelf.h elfos.h usegas.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/singlefp.h rs6000/xfpu.h"
  	extra_options="${extra_options} rs6000/sysv4.opt"
  	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
  	;;
rs6000-ibm-aix4.[12]* | powerpc-ibm-aix4.[12]*)
	tm_file="${tm_file} rs6000/aix.h rs6000/aix41.h rs6000/xcoff.h"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-newas"
	extra_options="${extra_options} rs6000/aix41.opt"
	use_collect2=yes
	extra_headers=
	use_fixproto=yes
	;;
rs6000-ibm-aix4.[3456789]* | powerpc-ibm-aix4.[3456789]*)
	tm_file="rs6000/biarch64.h ${tm_file} rs6000/aix.h rs6000/aix43.h rs6000/xcoff.h"
	tmake_file=rs6000/t-aix43
	extra_options="${extra_options} rs6000/aix64.opt"
	use_collect2=yes
	thread_file='aix'
	extra_headers=
	;;
rs6000-ibm-aix5.1.* | powerpc-ibm-aix5.1.*)
	tm_file="rs6000/biarch64.h ${tm_file} rs6000/aix.h rs6000/aix51.h rs6000/xcoff.h"
	extra_options="${extra_options} rs6000/aix64.opt"
	tmake_file=rs6000/t-aix43
	use_collect2=yes
	thread_file='aix'
	extra_headers=
	;;
rs6000-ibm-aix5.2.* | powerpc-ibm-aix5.2.*)
	tm_file="${tm_file} rs6000/aix.h rs6000/aix52.h rs6000/xcoff.h"
	tmake_file=rs6000/t-aix52
	extra_options="${extra_options} rs6000/aix64.opt"
	use_collect2=yes
	thread_file='aix'
	extra_headers=
	;;
rs6000-ibm-aix5.3.* | powerpc-ibm-aix5.3.*)
	tm_file="${tm_file} rs6000/aix.h rs6000/aix53.h rs6000/xcoff.h"
	tmake_file=rs6000/t-aix52
	extra_options="${extra_options} rs6000/aix64.opt"
	use_collect2=yes
	thread_file='aix'
	extra_headers=altivec.h
	;;
rs6000-ibm-aix[6789].* | powerpc-ibm-aix[6789].*)
	tm_file="${tm_file} rs6000/aix.h rs6000/aix61.h rs6000/xcoff.h"
	tmake_file=rs6000/t-aix52
	extra_options="${extra_options} rs6000/aix64.opt"
	use_collect2=yes
	thread_file='aix'
	extra_headers=altivec.h
	;;
s390-*-linux*)
	tm_file="s390/s390.h dbxelf.h elfos.h svr4.h linux.h s390/linux.h"
	tmake_file="${tmake_file} t-dfprules s390/t-crtstuff s390/t-linux"
	;;
s390x-*-linux*)
	tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h svr4.h linux.h s390/linux.h"
	tm_p_file=s390/s390-protos.h
	md_file=s390/s390.md
	extra_modes=s390/s390-modes.def
	out_file=s390/s390.c
	tmake_file="${tmake_file} t-dfprules s390/t-crtstuff s390/t-linux s390/t-linux64"
	;;
s390x-ibm-tpf*)
        tm_file="s390/s390x.h s390/s390.h dbxelf.h elfos.h svr4.h s390/tpf.h"
        tm_p_file=s390/s390-protos.h
        md_file=s390/s390.md
        extra_modes=s390/s390-modes.def
        out_file=s390/s390.c
        extra_parts="crtbeginS.o crtendS.o"
        tmake_file="s390/t-crtstuff s390/t-tpf"
        thread_file='tpf'
	extra_options="${extra_options} s390/tpf.opt"
	;;
score-*-elf)
        tm_file="dbxelf.h elfos.h score/elf.h score/score.h"
        tmake_file=score/t-score-elf
        extra_objs="score7.o score3.o"
        ;;
sh-*-elf* | sh[12346l]*-*-elf* | \
sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
  sh-*-linux* | sh[2346lbe]*-*-linux* | \
  sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
   sh64-*-netbsd* | sh64l*-*-netbsd*)
	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* | sh64l* | sh*-*-linux* | \
		  sh5l* | sh-superh-elf)	   with_endian=little,big ;;
		sh[1234]*-*-*)			   with_endian=big ;;
		*)				   with_endian=big,little ;;
		esac
	fi
	case ${with_endian} in
	big|little)	tmake_file="${tmake_file} sh/t-1e" ;;
	big,little|little,big) ;;
	*)	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"
	case ${target} in
	sh*-*-netbsd*)	;;
	*)		tm_file="${tm_file} svr4.h" ;;
	esac
	tm_file="${tm_file} sh/elf.h"
	case ${target} in
	sh*-*-linux*)	tmake_file="${tmake_file} sh/t-linux"
			tm_file="${tm_file} linux.h sh/linux.h" ;;
	sh*-*-netbsd*)	tm_file="${tm_file} netbsd.h netbsd-elf.h sh/netbsd-elf.h" ;;
	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 sh/superh.h"
			tmake_file="${tmake_file} sh/t-superh"
			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
	sh5*-*-netbsd*)
		# SHmedia, 32-bit ABI
		tmake_file="${tmake_file} sh/t-sh64 sh/t-netbsd"
		;;
	sh64*-netbsd*)
		# SHmedia, 64-bit ABI
		tmake_file="${tmake_file} sh/t-sh64 sh/t-netbsd sh/t-netbsd-sh5-64"
		;;
	*-*-netbsd)
                tmake_file="${tmake_file} sh/t-netbsd"
		;;
	sh64*-*-linux*)
		tmake_file="${tmake_file} sh/t-sh64 sh/t-linux64"
		tm_file="${tm_file} sh/sh64.h"
		extra_headers="shmedia.h ushmedia.h sshmedia.h"
		;;
	sh64*)
		tmake_file="${tmake_file} sh/t-sh64"
		tm_file="${tm_file} sh/sh64.h"
		extra_headers="shmedia.h ushmedia.h sshmedia.h"
		;;
	*-*-symbianelf*)
		tmake_file="sh/t-symbian"
		tm_file="sh/symbian-pre.h sh/little.h ${tm_file} sh/symbian-post.h"
		extra_objs="symbian.o"
		extra_parts="crt1.o crti.o crtn.o crtbegin.o crtend.o crtbeginS.o crtendS.o"
		;;
	esac
	# sed el/eb endian suffixes away to avoid confusion with sh[23]e
	case `echo ${target} | sed 's/e[lb]-/-/'` in
	sh64*-*-netbsd*)	sh_cpu_target=sh5-64media ;;
	sh64* | sh5*-*-netbsd*)	sh_cpu_target=sh5-32media ;;
	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
		sh5-*media)	sh_cpu_target=${sh_cpu_target}-nofpu ;;
		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
	sh5-64media-nofpu | sh5-64media | \
	  sh5-32media-nofpu | sh5-32media | sh5-compact-nofpu | sh5-compact | \
	  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 x${sh_multilibs} = x ; then
		case ${target} in
		sh64-superh-linux* | \
		sh[1234]*)	sh_multilibs=${sh_cpu_target} ;;
		sh64* | sh5*)	sh_multilibs=m5-32media,m5-32media-nofpu,m5-compact,m5-compact-nofpu,m5-64media,m5-64media-nofpu ;;
		sh-superh-*)	sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
		sh*-*-linux*)	sh_multilibs=m1,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/`'\"'
	sh_multilibs=`echo $sh_multilibs,$sh_cpu_default | sed -e 's/[ 	,/][ 	,]*/ /g' -e 's/ $//' -e 's/^m/sh/' -e 's/ m/ sh/g' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ_ abcdefghijklmnopqrstuvwxyz-`
	for sh_multilib in ${sh_multilibs}; do
		case ${sh_multilib} in
		sh1 | sh2 | sh2e | sh3 | sh3e | \
		sh4 | sh4-single | sh4-single-only | sh4-nofpu | sh4-300 |\
		sh4a | sh4a-single | sh4a-single-only | sh4a-nofpu | sh4al | \
		sh2a | sh2a-single | sh2a-single-only | sh2a-nofpu | \
		sh5-64media | sh5-64media-nofpu | \
		sh5-32media | sh5-32media-nofpu | \
		sh5-compact | sh5-compact-nofpu)
			tmake_file="${tmake_file} sh/t-mlib-${sh_multilib}"
			tm_defines="$tm_defines SUPPORT_`echo $sh_multilib|tr abcdefghijklmnopqrstuvwxyz- ABCDEFGHIJKLMNOPQRSTUVWXYZ_`=1"
			;;
		*)
			echo "with_multilib_list=${sh_multilib} not supported."
			exit 1
			;;
		esac
	done
	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 SUPPORT_SH5_32MEDIA=1 SUPPORT_SH5_32MEDIA_NOFPU=1 SUPPORT_SH5_64MEDIA=1 SUPPORT_SH5_64MEDIA_NOFPU=1"
	fi
	;;
sh-*-rtems*)
	tmake_file="sh/t-sh sh/t-elf t-rtems sh/t-rtems"
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h"
	;;
sh-wrs-vxworks)
	tmake_file="$tmake_file sh/t-sh sh/t-elf sh/t-vxworks"
	tm_file="${tm_file} elfos.h svr4.h sh/elf.h sh/embed-elf.h vx-common.h vxworks.h sh/vxworks.h"
	;;
sh-*-*)
	tm_file="${tm_file} dbxcoff.h sh/coff.h"
	;;
sparc-*-netbsdelf*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h netbsd.h netbsd-elf.h sparc/netbsd-elf.h"
	extra_options="${extra_options} sparc/long-double-switch.opt"
	;;
sparc64-*-openbsd*)
	tm_file="sparc/openbsd1-64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp64-elf.h openbsd.h sparc/openbsd64.h"
	extra_options="${extra_options} sparc/little-endian.opt"
	gas=yes gnu_ld=yes
	with_cpu=ultrasparc
	;;
sparc-*-elf*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp-elf.h"
	tmake_file="sparc/t-elf sparc/t-crtfm"
	extra_parts="crti.o crtn.o crtbegin.o crtend.o"
	;;
sparc-*-linux*)		# SPARC's running GNU/Linux, libc6
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h linux.h"
	extra_options="${extra_options} sparc/long-double-switch.opt"
	tmake_file="${tmake_file} sparc/t-linux"
	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"
	fi
	tmake_file="${tmake_file} sparc/t-crtfm"
	;;
sparc-*-rtems*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h"
	tmake_file="sparc/t-elf sparc/t-crtfm t-rtems"
	extra_parts="crti.o crtn.o crtbegin.o crtend.o"
	;;
sparc64-*-solaris2* | sparcv9-*-solaris2*)
	tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h"
	case ${target} in
	*-*-solaris2.1[0-9]*)
		tm_file="${tm_file} sol2-10.h"
		;;
	esac
	tm_file="${tm_file} sparc/sol2.h sparc/sol2-64.h sparc/sol2-bi.h"
	if test x$gnu_ld = xyes; then
		tm_file="${tm_file} sparc/sol2-gld.h sparc/sol2-gld-bi.h"
	fi
	if test x$gas = xyes; then
		tm_file="${tm_file} sparc/sol2-gas.h sparc/sol2-gas-bi.h"
	fi
	tm_file="${tm_file} tm-dwarf2.h"
	tmake_file="t-sol2 sparc/t-sol2 sparc/t-sol2-64 sparc/t-crtfm"
	if test x$gnu_ld = xyes; then
		tmake_file="$tmake_file t-slibgcc-elf-ver"
	else
		tmake_file="$tmake_file t-slibgcc-sld"
	fi
	c_target_objs="sol2-c.o"
	cxx_target_objs="sol2-c.o"
	extra_objs="sol2.o"
	tm_p_file="${tm_p_file} sol2-protos.h"
	extra_parts="crt1.o crti.o crtn.o gcrt1.o crtbegin.o crtend.o"
	case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
	  "":yes:* | yes:yes:* ) thread_file=posix ;;
	  "":*:yes | yes:*:yes ) thread_file=solaris ;;
	esac
	;;
sparc-*-solaris2*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h"
	case ${target} in
	*-*-solaris2.1[0-9]*)
		tm_file="${tm_file} sol2-10.h"
		;;
	esac
	tm_file="${tm_file} sparc/sol2.h"
	if test x$gnu_ld = xyes; then
		tm_file="${tm_file} sparc/sol2-gld.h"
	fi
	if test x$gas = xyes; then
		tm_file="${tm_file} sparc/sol2-gas.h"
	fi
	tmake_file="t-sol2 sparc/t-sol2 sparc/t-crtfm"
	if test x$gnu_ld = xyes; then
		tmake_file="$tmake_file t-slibgcc-elf-ver"
	else
		tmake_file="$tmake_file t-slibgcc-sld"
	fi
	tm_file="sparc/biarch64.h ${tm_file} sparc/sol2-bi.h"
	if test x$gnu_ld = xyes; then
		tm_file="${tm_file} sparc/sol2-gld-bi.h"
	fi
	if test x$gas = xyes; then
		tm_file="${tm_file} sparc/sol2-gas-bi.h"
	fi
	tm_file="${tm_file} tm-dwarf2.h"
	tmake_file="$tmake_file sparc/t-sol2-64"
	test x$with_cpu != x || with_cpu=v9
	c_target_objs="sol2-c.o"
	cxx_target_objs="sol2-c.o"
	extra_objs="sol2.o"
	tm_p_file="${tm_p_file} sol2-protos.h"
	extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o"
	case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
	  "":yes:* | yes:yes:* )
		thread_file=posix
		;;
	  "":*:yes | yes:*:yes )
		thread_file=solaris
		;;
	esac
	;;
sparc-wrs-vxworks)
	tm_file="${tm_file} elfos.h svr4.h sparc/sysv4.h vx-common.h vxworks.h sparc/vxworks.h"
	tmake_file="${tmake_file} sparc/t-vxworks"
	;;
sparc64-*-elf*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp64-elf.h"
	extra_options="${extra_options} sparc/little-endian.opt"
	tmake_file="${tmake_file} sparc/t-crtfm"
	extra_parts="crtbegin.o crtend.o"
	;;
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"
	tmake_file="${tmake_file} sparc/t-crtfm"
	case "x$with_cpu" in
		xultrasparc) ;;
		x) with_cpu=ultrasparc ;;
		*) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
	esac
	;;
sparc64-*-linux*)		# 64-bit SPARC's running GNU/Linux
	tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h linux.h sparc/linux64.h"
	extra_options="${extra_options} sparc/long-double-switch.opt"
	tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64 sparc/t-crtfm"
	;;
sparc64-*-netbsd*)
	tm_file="sparc/biarch64.h ${tm_file}"
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h netbsd.h netbsd-elf.h sparc/netbsd-elf.h"
	extra_options="${extra_options} sparc/long-double-switch.opt"
	tmake_file="${tmake_file} sparc/t-netbsd64"
	;;
spu-*-elf*)
	tm_file="dbxelf.h elfos.h spu/spu-elf.h spu/spu.h"
	tmake_file="spu/t-spu-elf"
	extra_headers="spu_intrinsics.h spu_internals.h vmx2spu.h spu_mfcio.h vec_types.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"
	;;
v850e1-*-*)
	target_cpu_default="TARGET_CPU_v850e1"
	tm_file="dbxelf.h elfos.h svr4.h v850/v850.h"
	tm_p_file=v850/v850-protos.h
	tmake_file=v850/t-v850e
	md_file=v850/v850.md
	out_file=v850/v850.c
	extra_options="${extra_options} v850/v850.opt"
	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"
	;;
v850e-*-*)
	target_cpu_default="TARGET_CPU_v850e"
	tm_file="dbxelf.h elfos.h svr4.h v850/v850.h"
	tm_p_file=v850/v850-protos.h
	tmake_file=v850/t-v850e
	md_file=v850/v850.md
	out_file=v850/v850.c
	extra_options="${extra_options} v850/v850.opt"
	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"
	;;
v850-*-*)
	target_cpu_default="TARGET_CPU_generic"
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
	tmake_file=v850/t-v850
	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"
	;;
vax-*-netbsdelf*)
	tm_file="${tm_file} elfos.h netbsd.h netbsd-elf.h vax/elf.h vax/netbsd-elf.h"
	;;
vax-*-netbsd*)
	tm_file="${tm_file} netbsd.h netbsd-aout.h vax/netbsd.h"
	tmake_file=t-netbsd
	extra_parts=""
	use_collect2=yes
	;;
vax-*-openbsd*)
	tm_file="vax/vax.h vax/openbsd1.h openbsd.h vax/openbsd.h"
	use_collect2=yes
	;;
xstormy16-*-elf)
	# For historical reasons, the target files omit the 'x'.
	tm_file="dbxelf.h elfos.h svr4.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"
	extra_parts="crtbegin.o crtend.o"
	;;
xtensa*-*-elf*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h xtensa/elf.h"
	tmake_file="xtensa/t-xtensa xtensa/t-elf"
	;;
xtensa*-*-linux*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h xtensa/linux.h"
	tmake_file="${tmake_file} xtensa/t-xtensa xtensa/t-linux"
	;;
am33_2.0-*-linux*)
	tm_file="mn10300/mn10300.h dbxelf.h elfos.h linux.h mn10300/linux.h"
	tmake_file="${tmake_file} mn10300/t-linux"
	gas=yes gnu_ld=yes
	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
	use_collect2=no
	;;
m32c-*-rtems*)
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file} m32c/rtems.h rtems.h"
	tmake_file="${tmake_file} t-rtems"
	c_target_objs="m32c-pragma.o"
	cxx_target_objs="m32c-pragma.o"
 	;;
m32c-*-elf*)
	tm_file="dbxelf.h elfos.h svr4.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"
	;;
esac

# 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

# 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
    i386-*-*)
      with_cpu=i386
      ;;
    i486-*-*)
      with_cpu=i486
      ;;
    i586-*-*)
      case ${target_noncanonical} in
        k6_2-*)
          with_cpu=k6-2
          ;;
        k6_3-*)
          with_cpu=k6-3
          ;;
        k6-*)
          with_cpu=k6
          ;;
        pentium_mmx-*|winchip_c6-*|winchip2-*|c3-*)
          with_cpu=pentium-mmx
          ;;
        *)
          with_cpu=pentium
          ;;
      esac
      ;;
    i686-*-* | i786-*-*)
      case ${target_noncanonical} in
        amdfam10-*|barcelona-*)
          with_cpu=amdfam10
          ;;
        k8-*|opteron-*|athlon_64-*)
          with_cpu=k8
          ;;
        athlon_xp-*|athlon_mp-*|athlon_4-*)
          with_cpu=athlon-4
          ;;
        athlon_tbird-*|athlon-*)
          with_cpu=athlon
          ;;
	geode-*)
	  with_cpu=geode
	  ;;
        pentium2-*)
          with_cpu=pentium2
          ;;
        pentium3-*|pentium3m-*)
          with_cpu=pentium3
          ;;
        pentium4-*|pentium4m-*)
          with_cpu=pentium4
          ;;
        prescott-*)
          with_cpu=prescott
          ;;
        nocona-*)
          with_cpu=nocona
          ;;
	core2-*)
	  with_cpu=core2
	  ;;
        pentium_m-*)
          with_cpu=pentium-m
          ;;
        pentiumpro-*)
          with_cpu=pentiumpro
          ;;
        *)
          with_cpu=generic
          ;;
      esac
      ;;
    x86_64-*-*)
      case ${target_noncanonical} in
        amdfam10-*|barcelona-*)
          with_cpu=amdfam10
          ;;
        k8-*|opteron-*|athlon_64-*)
          with_cpu=k8
          ;;
        nocona-*)
          with_cpu=nocona
          ;;
	core2-*)
	  with_cpu=core2
	  ;;
        *)
          with_cpu=generic
          ;;
      esac
      ;;
    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
      ;;
    mips*-*-vxworks)
      with_arch=mips2
      ;;
    sparc*-*-*)
      with_cpu="`echo ${target} | sed 's/-.*$//'`"
      ;;
  esac

  # Avoid overriding --with-cpu-32 and --with-cpu-64 values.
  case ${target} in
    i[34567]86-*-*|x86_64-*-*)
      if test x$with_cpu != x; then
        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
      fi
      ;;
  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

# 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
	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
		;;

	arm*-*-*)
		supported_defaults="arch cpu float tune fpu abi mode"
		for which in cpu tune; do
			# See if it matches any of the entries in arm-cores.def
			eval "val=\$with_$which"
			if [ x"$val" = x ] \
			    || grep "^ARM_CORE(\"$val\"," \
				    ${srcdir}/config/arm/arm-cores.def \
				    > /dev/null; then
			  # Ok
			  new_val=`grep "^ARM_CORE(\"$val\"," \
				${srcdir}/config/arm/arm-cores.def | \
				sed -e 's/^[^,]*,[ 	]*//' | \
				sed -e 's/,.*$//'`
			  eval "target_${which}_cname=$new_val"
			echo "For $val real value is $new_val"
			  true
			else
			  echo "Unknown CPU used in --with-$which=$val" 1>&2
			  exit 1
			fi
		done

		case "$with_arch" in
		"" \
		| armv[23456] | armv2a | armv3m | armv4t | armv5t \
		| armv5te | armv6j |armv6k | armv6z | armv6zk | armv6-m \
		| armv7 | armv7-a | armv7-r | armv7-m \
		| iwmmxt | ep9312)
			# OK
			;;
		*)
			echo "Unknown arch used in --with-arch=$with_arch" 1>&2
			exit 1
			;;
		esac

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

		case "$with_fpu" in
		"" \
		| fpa | fpe2 | fpe3 | maverick | vfp | vfp3 | neon )
			# OK
			;;
		*)
			echo "Unknown fpu used in --with-fpu=$with_fpu" 2>&1
			exit 1
			;;
		esac

		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

		if test "x$with_arch" != x && test "x$with_cpu" != x; then
			echo "Warning: --with-arch overrides --with-cpu=$with_cpu" 1>&2
		fi
		;;

	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="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 ${val} in
			i386 | i486 \
			| i586 | pentium | pentium-mmx | winchip-c6 | winchip2 \
			| c3 | c3-2 | i686 | pentiumpro | pentium2 | pentium3 \
			| pentium4 | k6 | k6-2 | k6-3 | athlon | athlon-tbird \
			| athlon-4 | athlon-xp | athlon-mp | geode \
			| prescott | pentium-m | pentium4m | pentium3m)
				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
				;;
			"" | amdfam10 | barcelona | k8 | opteron | athlon64 | athlon-fx | nocona | core2 | generic)
				# OK
				;;
			*)
				echo "Unknown CPU given in --with-$which=$val." 1>&2
				exit 1
				;;
			esac
		done
		;;

	mips*-*-*)
		supported_defaults="abi arch float tune divide llsc mips-plt"

		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_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
		;;

	powerpc*-*-* | rs6000-*-*)
		supported_defaults="cpu float tune"

		for which in cpu tune; do
			eval "val=\$with_$which"
			case ${val} in
			default32 | default64)
				with_which="with_$which"
				eval $with_which=
				;;
			405cr)
				tm_defines="${tm_defines} CONFIG_PPC405CR"
				eval "with_$which=405"
				;;
			"" | common \
			| power | power[234567] | power6x | powerpc | powerpc64 \
			| rios | rios1 | rios2 | rsc | rsc1 | rs64a \
			| 401 | 403 | 405 | 405fp | 440 | 440fp | 464 | 464fp \
			| 505 | 601 | 602 | 603 | 603e | ec603e | 604 \
			| 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
			| e300c[23] | 854[08] | e500mc \
			| 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5 | cell)
				# OK
				;;
			*)
				echo "Unknown cpu used in --with-$which=$val." 1>&2
				exit 1
				;;
			esac
		done
		;;

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

		for which in arch tune; do
			eval "val=\$with_$which"
			case ${val} in
			"" | g5 | g6 | z900 | z990 | z9-109 | z9-ec | z10)
				# 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 float tune"

		for which in cpu tune; do
			eval "val=\$with_$which"
			case ${val} in
			"" | sparc | sparcv9 | sparc64 | sparc86x \
			| v7 | cypress | v8 | supersparc | sparclite | f930 \
			| f934 | hypersparc | sparclite86x | sparclet | tsc701 \
			| v9 | ultrasparc | ultrasparc3 | niagara | niagara2)
				# 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
		;;

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

# Set some miscellaneous flags for particular targets.
target_cpu_default2=
case ${target} in
	alpha*-*-*)
		if test x$gas = xyes
		then
			target_cpu_default2="MASK_GAS"
		fi
		;;

	arm*-*-*)
		if test x$target_cpu_cname = x
		then
			target_cpu_default2=TARGET_CPU_generic
		else
			target_cpu_default2=TARGET_CPU_$target_cpu_cname
		fi
		;;

	hppa*-*-*)
		target_cpu_default2="MASK_BIG_SWITCH"
		if test x$gas = xyes
		then
			target_cpu_default2="${target_cpu_default2}|MASK_GAS|MASK_JUMP_IN_DELAY"
		fi
		;;

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

	i[34567]86-*-darwin* | x86_64-*-darwin*)
		tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp"
		;;
	i[34567]86-*-linux* | x86_64-*-linux* | i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
		tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp i386/t-linux"
		;;
	ia64*-*-linux*)
		tmake_file="${tmake_file} ia64/t-fprules-softfp soft-fp/t-softfp"
		;;

	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$enable_gofast" = xyes
		then
			tm_defines="US_SOFTWARE_GOFAST $tm_defines"
			tmake_file="mips/t-gofast $tmake_file"
		else
			tmake_file="mips/t-mips $tmake_file"
		fi
		;;

	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=rs6000/rs6000.c
		c_target_objs="${c_target_objs} rs6000-c.o"
		cxx_target_objs="${cxx_target_objs} rs6000-c.o"
		tmake_file="rs6000/t-rs6000 ${tmake_file}"

                if test x$enable_e500_double = xyes
                then
                        tm_file="$tm_file rs6000/e500-double.h"
                fi
		;;

	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

		# The SPARC port checks this value at compile-time.
		target_cpu_default2="TARGET_CPU_$with_cpu"
		;;
	v850*-*-*)
		# FIXME: The v850 is "special" in that it does not support
		# runtime CPU selection, only --with-cpu.
		case "x$with_cpu" in
		x)
			;;
		xv850e)
			target_cpu_default2="TARGET_CPU_$with_cpu"
			;;
		esac
		;;
esac

t=
all_defaults="abi cpu cpu_32 cpu_64 arch arch_32 arch_64 tune tune_32 tune_64 schedule float mode fpu divide llsc mips-plt"
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
