# 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
	tm_file="vxworks-dummy.h ${tm_file}"
	;;
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
	tm_file="vxworks-dummy.h ${tm_file}"
	;;
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
