# GCC target-specific configuration file.
# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
# 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 2, 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 COPYING.  If not, write to the Free
#Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
#02110-1301, USA.

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

# 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}.
#
#  tm_p_file		Location of file with declarations for functions
# LLVM LOCAL
#			in $out_file & $out_cxx_file
#
#  out_file		The name of the machine description C support
#			file, if different from "$cpu_type/$cpu_type.c".
# LLVM LOCAL
#  out_cxx_file		The name of the machine description C++ support file.
#
#  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}.
#
#  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.
#
#  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 iff this target
#			supports "long" or "wchar_t" wider than 32 bits.
#
#  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=
# LLVM LOCAL
out_cxx_file=
tmake_file=
extra_headers=
extra_passes=
extra_parts=
extra_programs=
extra_objs=
extra_gcc_objs=
extra_options=
c_target_objs=
cxx_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
   c4x-*		\
 | tic4x-*		\
 )
    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
   alpha*-*-linux*libc1*		\
 | i[34567]86-sequent-sysv		\
 | i[34567]86-sequent-sysv[123]*	\
 | i[34567]86-go32-*			\
 | i[34567]86-*-go32*			\
 | m68k-*-linux*aout*			\
 | m68k-*-linux*libc1*			\
 | mips64orion*-*-rtems*		\
 | powerpc-*-linux*libc1*		\
 | sparc-*-linux*aout*			\
 | sparc-*-linux*libc1*			\
 | sparc-hal-solaris2*			\
 | thumb-*-*				\
 | *-*-linux*coff*			\
 | *-*-linux*oldld*			\
 | *-*-rtemsaout*			\
 | *-*-rtemscoff*			\
 | 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
	;;
strongarm*-*-*)
	cpu_type=arm
	;;
arm*-*-*)
	cpu_type=arm
	extra_headers="mmintrin.h"
	;;
bfin*-*)
	cpu_type=bfin
	;;
ep9312*-*-*)
	cpu_type=arm
	;;
frv*)	cpu_type=frv
	;;
xscale-*-*)
	cpu_type=arm
	extra_headers="mmintrin.h"
	;;
# APPLE LOCAL begin mainline
i[34567]86-*-*)
	cpu_type=i386
# LLVM LOCAL begin
	out_cxx_file=i386/llvm-i386.cpp
# LLVM LOCAL end                               
	extra_headers="mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h
		       pmmintrin.h tmmintrin.h"
	;;
x86_64-*-*)
	cpu_type=i386
# LLVM LOCAL begin
	out_cxx_file=i386/llvm-i386.cpp
# LLVM LOCAL end                               
	extra_headers="mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h
		       pmmintrin.h tmmintrin.h"
	need_64bit_hwint=yes
	;;
# APPLE LOCAL end mainline
ia64-*-*)
	extra_headers=ia64intrin.h
	need_64bit_hwint=yes
	;;
hppa*-*-* | parisc*-*-*)
	cpu_type=pa
	;;
m32r*-*-*)
        cpu_type=m32r
        ;;
m680[012]0-*-*)
	cpu_type=m68k
	extra_headers=math-68881.h
	;;
m68k-*-*)
	extra_headers=math-68881.h
	;;
mips*-*-*)
	cpu_type=mips
	need_64bit_hwint=yes
	;;
powerpc*-*-*)
	cpu_type=rs6000
	extra_headers="ppc-asm.h altivec.h spe.h"
	need_64bit_hwint=yes
	case x$with_cpu in
	    xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[3456]|xrs64a)
		cpu_is_64bit=yes
		;;
	esac
	;;
rs6000*-*-*)
	need_64bit_hwint=yes
	;;
score*-*-*)
	cpu_type=score
	;;
sparc64*-*-*)
	cpu_type=sparc
	need_64bit_hwint=yes
	;;
sparc*-*-*)
	cpu_type=sparc
	;;
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]*-*-*)
	cpu_type=sh
	need_64bit_hwint=yes
	;;
tic4x-*-*)
        cpu_type=c4x
        ;;
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
x86_64-*-*)
	tm_file="i386/biarch64.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
  *-*-darwin9*)
    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="darwin-c.o"
  cxx_target_objs="darwin-c.o"
  extra_objs="darwin.o"
 # APPLE LOCAL mainline 2007-06-14 5235474
  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"
  case ${target} in
    *-*-freebsd3 | *-*-freebsd[3].*)
      tm_defines="${tm_defines} FBSD_MAJOR=3" ;;
    *-*-freebsd4 | *-*-freebsd[4].*)
      tm_defines="${tm_defines} FBSD_MAJOR=4" ;;
    *-*-freebsd5 | *-*-freebsd[5].*)
      tm_defines="${tm_defines} FBSD_MAJOR=5" ;;
    *-*-freebsd6 | *-*-freebsd[6].*)
      tm_defines="${tm_defines} FBSD_MAJOR=6" ;;
    *-*-freebsd7 | *-*-freebsd[7].*)
      tm_defines="${tm_defines} FBSD_MAJOR=7" ;;
    *-*-freebsd8 | *-*-freebsd[8].*)
      tm_defines="${tm_defines} FBSD_MAJOR=8" ;;
    *-*-freebsd9 | *-*-freebsd[9].*)
      tm_defines="${tm_defines} FBSD_MAJOR=9" ;;
    *)
      echo 'Please update *-*-freebsd* in gcc/config.gcc'
      exit 1
      ;;
  esac
  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*libc1* | *-*-linux*aout*)
  # Avoid the generic linux case.
  ;;
*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
  # Must come before *-*-gnu* (because of *-*-linux-gnu* systems).
  extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
  extra_options="${extra_options} linux.opt"
  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
    *-*-*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
  ;;
*-*-gnu*)
  # On the Hurd, the setup is just about the same on
  # each different CPU.  The specific machines that we
  # support are matched above and just set $cpu_type.
  tm_file="${cpu_type}/gnu.h"
  extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
  # GNU tools are the only tools.
  gas=yes
  gnu_ld=yes
  # These details are the same as for Linux.
  # But here we need a little extra magic.
  tmake_file="t-slibgcc-elf-ver t-linux t-gnu"
  case ${target} in
    alpha*)
      tm_file="${cpu_type}/${cpu_type}.h alpha/elf.h alpha/linux.h alpha/linux-elf.h gnu.h ${tm_file}"
      ;;
    i[34567]86-*-*)
      tm_file="${cpu_type}/${cpu_type}.h i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h gnu.h ${tm_file}"
      ;;
  esac
  # Assume that glibc is being used and so __cxa_atexit is provided.
  default_use_cxa_atexit=yes
  ;;
*-*-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
  tm_file="${tm_file} elfos.h svr4.h"
  xm_defines=POSIX
  extra_options="${extra_options} vxworks.opt"
  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*-*-unicosmk*)
	use_collect2=yes
	tm_file="${tm_file} alpha/unicosmk.h"

	# Don't include t-ieee for now because we don't support that yet
	# tmake_file="alpha/t-ieee"
	tmake_file="alpha/t-unicosmk"
	use_fixproto=yes
	;;
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*)
	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"
	use_fixproto=yes
	;;
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-semi-aof | armel-semi-aof)
	tm_file="arm/semiaof.h arm/aof.h arm/arm.h"
	tmake_file="arm/t-arm arm/t-semi"
	;;
arm-wrs-vxworks)
	tm_file="dbxelf.h elfos.h svr4.h vxworks.h arm/elf.h arm/aout.h arm/arm.h arm/vxworks.h"
	tmake_file="${tmake_file} arm/t-arm arm/t-vxworks"
	;;
arm*-*-freebsd*|strongarm*-*-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"
	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"
	;;
arm*-*-uclinux*)		# ARM ucLinux
	tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/linux-gas.h arm/linux-elf.h arm/uclinux-elf.h"
	tmake_file="arm/t-arm arm/t-arm-elf"
	;;
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"
	;;
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*)
	  tmake_file="${tmake_file} arm/t-bpabi"
	  ;;
	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"
	;;
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"
	;;
arm*-*-elf | ep9312-*-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"
	;;
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"
	;;
arm*-*-kaos*)
	tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h kaos.h arm/kaos-arm.h"
	tmake_file="arm/t-arm arm/t-arm-elf"
	;;
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"
	use_fixproto=yes
	;;
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 bfin/uclinux.h"
        tmake_file=bfin/t-bfin-elf
        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
        ;;
c4x-*-rtems* | tic4x-*-rtems*)
	tmake_file="c4x/t-c4x t-rtems c4x/t-rtems"
	tm_file="c4x/c4x.h c4x/rtems.h rtems.h"
	c_target_objs="c4x-c.o"
	cxx_target_objs="c4x-c.o"
	;;
c4x-* | tic4x-*)
	tmake_file=c4x/t-c4x
	c_target_objs="c4x-c.o"
	cxx_target_objs="c4x-c.o"
	;;
cris-*-aout)
	tm_file="dbxelf.h ${tm_file} cris/aout.h"
	gas=yes
	tmake_file="cris/t-cris cris/t-aout"
	extra_options="${extra_options} cris/aout.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"
	;;
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"
	;;
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"
	use_fixproto=yes
	;;
frv-*-elf)
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file} frv/frv-abi.h"
	tmake_file=frv/t-frv
	use_fixproto=yes
	;;
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-*-rtemscoff*)
	tmake_file="h8300/t-h8300 t-rtems h8300/t-rtems"
	tm_file="h8300/h8300.h dbxcoff.h h8300/coff.h h8300/rtems.h rtems.h"
	;;
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"
	use_fixproto=yes
	;;
h8300-*-*)
	tm_file="h8300/h8300.h dbxcoff.h h8300/coff.h"
	use_fixproto=yes
	;;
hppa*64*-*-linux* | parisc*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* | parisc*-*-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"
#	;;
hppa1.1-*-pro*)
	target_cpu_default="MASK_PORTABLE_RUNTIME|MASK_NO_SPACE_REGS|MASK_SOFT_FLOAT"
	tm_file="${tm_file} pa/pa32-regs.h dbxelf.h elfos.h pa/elf.h \
		 pa/pa-pro-end.h libgloss.h"
	tmake_file="pa/t-pro"
	;;
hppa1.1-*-osf*)
	target_cpu_default="MASK_PA_11"
	tm_file="${tm_file} pa/pa32-regs.h dbxelf.h pa/som.h pa/pa-osf.h"
	tmake_file="pa/t-pa"
	use_collect2=yes
	;;
hppa1.1-*-bsd*)
	target_cpu_default="MASK_PA_11"
	tm_file="${tm_file} pa/pa32-regs.h dbxelf.h pa/som.h"
	tmake_file="pa/t-pa"
	use_collect2=yes
	;;
hppa[12]*-*-hpux10*)
	case ${target} in
	hppa1.1-*-* | hppa2*-*-*)
		target_cpu_default="MASK_PA_11"
		;;
	esac
	tm_file="${tm_file} pa/pa32-regs.h dbxelf.h pa/som.h \
		 pa/pa-hpux.h pa/pa-hpux10.h"
	extra_options="${extra_options} pa/pa-hpux.opt"
	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
	use_fixproto=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
	# APPLE LOCAL mainline
	# Deleted a comment here.
	# APPLE LOCAL mainline
	with_cpu=${with_cpu:-core2}
	/* APPLE LOCAL Macintosh alignment 2002-2-19 --ff */
	extra_options="${extra_options} i386/darwin.opt"
	# APPLE LOCAL 4099000
	tmake_file="${tmake_file} i386/t-darwin"
	# APPLE LOCAL mainline
	need_64bit_hwint=yes
	;;
x86_64-*-darwin*)
	# APPLE LOCAL mainline
	# Deleted with_arch
	# APPLE LOCAL mainline
	with_cpu=${with_cpu:-core2}
	tmake_file="t-darwin ${cpu_type}/t-darwin64 t-slibgcc-darwin"
	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="i386/t-i386elf t-svr4"
	use_fixproto=yes
	;;
i[34567]86-sequent-ptx4* | i[34567]86-sequent-sysv4*)
	if test x$gas = xyes
	then
		tm_file="${tm_file} usegas.h"
	fi
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ptx4.h i386/ptx4-i.h"
	tmake_file=t-svr4
	extra_parts="crtbegin.o crtend.o"
	use_fixproto=yes
	;;
i[34567]86-*-aout*)
	tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h i386/i386-aout.h"
	use_fixproto=yes
	;;
i[34567]86-*-beoself* | i[34567]86-*-beos*)
	tmake_file='i386/t-beos i386/t-crtpic'
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h i386/beos-elf.h"
	extra_parts='crtbegin.o crtend.o'
	;;
i[34567]86-*-freebsd*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
	;;
x86_64-*-freebsd*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h"
	;;
i[34567]86-*-netbsdelf*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h 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=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"
	;;
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="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"
	use_fixproto=yes
	;;
i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-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 i386/linux.h"
	case ${target} in
	i[34567]86-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h i386/knetbsd-gnu.h" ;;
	i[34567]86-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu.h" ;;
	esac
	tmake_file="${tmake_file} i386/t-crtstuff 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-crtfm t-dfprules"
	;;
i[34567]86-*-gnu*)
	;;
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=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="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=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=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="i386/t-rtems-i386 i386/t-crtstuff t-rtems"
	;;
i[34567]86-*-sco3.2v5*)	# 80386 running SCO Open Server 5
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/sco5.h"
	if test x$gas = xyes
	then
		tm_file="usegas.h ${tm_file}"
	fi
	tmake_file=i386/t-sco5
	extra_parts="crtbegin.o crtend.o"
	extra_options="${extra_options} i386/sco5.opt"
	use_fixproto=yes
	;;
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.[0-6] | *-*-solaris2.[0-6].*)
		tm_file="${tm_file} sol2-6.h"
		;;
	*-*-solaris2.1[0-9]*)
		tm_file="${tm_file} sol2-10.h"
		;;
	esac
	tm_file="${tm_file} i386/sol2.h"
	tmake_file="t-sol2 i386/t-sol2 t-svr4"
	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"
	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
	case ${target} in
	*-*-solaris2.[789] | *-*-solaris2.1[0-9]*)
		tm_file="$tm_file tm-dwarf2.h"
		;;
	esac
	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"
		need_64bit_hwint=yes
		# FIXME: -m64 for i[34567]86-*-* should be allowed just
		# like -m32 for x86_64-*-*.
		case X"${with_cpu}" in
		# APPLE LOCAL mainline
		Xgeneric|Xcore2|Xnocona|Xx86-64|Xk8|Xopteron|Xathlon64|Xathlon-fx)
			;;
		X)
			with_cpu=generic
			;;
		*)
			echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
			# APPLE LOCAL mainline
			echo "generic core2 nocona x86-64 k8 opteron athlon64 athlon-fx" 1>&2
			exit 1
			;;
		esac
		# Solaris 2.10 provides crt1.o, crti.o, crtn.o, and gcrt1.o as
		# part of the base system.
		extra_parts="gmon.o crtbegin.o crtend.o"
		;;
	*)
		extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o"
		;;
	esac
	case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
	  "":yes:* | yes:yes:* )
		case ${target} in
		  *-*-solaris2.[0-6] | *-*-solaris2.[0-6].*)
			thread_file=posix95
			;;
		  *)
			thread_file=posix
			;;
		esac
		;;
	  "":*:yes | yes:*:yes )
		thread_file=solaris
		;;
	esac
	;;
i[34567]86-*-sysv5*)           # Intel x86 on System V Release 5
       tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h i386/sysv4.h i386/sysv5.h"
       if test x$stabs = xyes
       then
               tm_file="${tm_file} dbx.h"
       fi
       tmake_file="i386/t-crtpic t-svr4"
       extra_parts="crtbegin.o crtend.o"
       if test x$enable_threads = xyes; then
	       thread_file='posix'
       fi
	use_fixproto=yes
       ;;
i[34567]86-*-sysv4*)		# Intel 80386's running system V.4
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h i386/sysv4.h i386/sysv4-cpp.h"
	if test x$stabs = xyes
	then
		tm_file="${tm_file} dbx.h"
	fi
	tmake_file="i386/t-crtpic t-svr4"
	extra_parts="crtbegin.o crtend.o"
	use_fixproto=yes
	;;
i[4567]86-wrs-vxworks|i[4567]86-wrs-vxworksae)
	tm_file="${tm_file} i386/sysv4.h i386/unix.h i386/att.h vx-common.h"
	case ${target} in
	  *-vxworksae*)
	    tm_file="${tm_file} vxworksae.h i386/vxworksae.h"
	    tmake_file="${tmake_file} i386/t-vxworks i386/t-vxworksae"
	    ;;
	  *)
	    tm_file="${tm_file} vxworks.h i386/vxworks.h"
	    tmake_file="${tmake_file} i386/t-vxworks"
	    ;;
	esac
	;;
i[34567]86-*-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
	tmake_file="i386/t-cygwin i386/t-cygming"
	target_gtfiles="\$(srcdir)/config/i386/winnt.c"
	extra_options="${extra_options} i386/cygming.opt"
	extra_objs="winnt.o winnt-stubs.o"
	c_target_objs=cygwin2.o
	cxx_target_objs="cygwin2.o winnt-cxx.o"
	extra_gcc_objs=cygwin1.o
	if test x$enable_threads = xyes; then
		thread_file='posix'
	fi
	;;
i[34567]86-*-mingw32*)
	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
	tmake_file="i386/t-cygming i386/t-mingw32"
	target_gtfiles="\$(srcdir)/config/i386/winnt.c"
	extra_options="${extra_options} i386/cygming.opt"
	extra_objs="winnt.o winnt-stubs.o"
	cxx_target_objs=winnt-cxx.o
	case ${enable_threads} in
	  "" | yes | win32)
	  thread_file='win32'
	  tmake_file="${tmake_file} i386/t-gthr-win32"
	  ;;
	esac
	case ${target} in
		*mingw32crt*)
			tm_file="${tm_file} i386/crtdll.h"
			;;
		*mingw32msv* | *mingw32*)
			;;
	esac
	;;
i[34567]86-*-uwin*)
	tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/cygwin.h i386/uwin.h"
	tmake_file="i386/t-cygwin i386/t-uwin"
	extra_objs=winnt.o
	extra_options="${extra_options} i386/cygming.opt"
	target_gtfiles="\$(srcdir)/config/i386/winnt.c"
	if test x$enable_threads = xyes; then
		thread_file='win32'
	fi
	use_fixproto=yes
	;;
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="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
	;;
i[34567]86-*-kaos*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/i386elf.h kaos.h i386/kaos-i386.h"
	tmake_file="i386/t-i386elf t-svr4"
	;;
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"
	use_fixproto=yes
	;;
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
	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"
	# If we decide to run fixproto we should define FIXPROTO_DEFINES
	# in ia64/t-hpux, and also fix the definition of putenv in
	# sys-protos.h (const char not char).
	;;
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
	use_fixproto=yes
        ;;
m32r-*-elf*)
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
	extra_parts="crtinit.o crtfini.o"
	use_fixproto=yes
 	;;
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"
	use_fixproto=yes
	;;
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
	use_fixproto=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
	use_fixproto=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 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-gas"
	use_fixproto=yes
        ;;
m68hc12-*-*|m6812-*-*)
	tm_file="m68hc11/m68hc12.h dbxelf.h elfos.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-gas"
	extra_options="${extra_options} m68hc11/m68hc11.opt"
	use_fixproto=yes
        ;;
m68k-*-aout*)
	tmake_file=m68k/t-m68kbare
	tm_file="m68k/m68k.h m68k/m68k-none.h m68k/m68kemb.h m68k/m68k-aout.h libgloss.h"
	;;
m68k-*-coff*)
	tmake_file=m68k/t-m68kbare
	tm_defines="${tm_defines} MOTOROLA USE_GAS"
	tm_file="m68k/m68k.h m68k/m68k-none.h m68k/m68kemb.h dbxcoff.h m68k/coff.h dbx.h"
	use_fixproto=yes
	;;
m68020-*-elf* | m68k-*-elf*)
	tm_file="m68k/m68k.h m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h m68k/m68kemb.h m68k/m68020-elf.h"
	tm_defines="${tm_defines} MOTOROLA USE_GAS"
	tmake_file=m68k/t-m68kelf
	extra_parts="crtbegin.o crtend.o"
	;;
m68010-*-netbsdelf* | m68k*-*-netbsdelf*)
	tm_file="${tm_file} dbxelf.h elfos.h netbsd.h netbsd-elf.h m68k/netbsd-elf.h"
	tm_defines="${tm_defines} MOTOROLA USE_GAS"
	case ${target} in
	m68010*)
		target_cpu_default="0"
		;;
	*)
		target_cpu_default="MASK_68020|MASK_68881|MASK_BITFIELD"
		;;
	esac
	;;
m68k*-*-openbsd*)
	# needed to unconfuse gdb
	tm_defines="${tm_defines} OBSD_OLD_GAS TARGET_DEFAULT=(MASK_68020|MASK_68881|MASK_BITFIELD)"
	tm_file="m68k/m68k.h 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-*-uclinux*)		# Motorola m68k/ColdFire running uClinux with uClibc
	tm_file="m68k/m68k.h m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h m68k/uclinux.h"
 	tm_defines="${tm_defines} MOTOROLA USE_GAS"
	tmake_file=m68k/t-uclinux
	use_fixproto=no
	;;
m68k-*-linux*)		# Motorola m68k's running GNU/Linux
				# with ELF format using glibc 2
				# aka the GNU/Linux C library 6.
	tm_file="m68k/m68k.h dbxelf.h elfos.h svr4.h linux.h m68k/linux.h"
	extra_options="${extra_options} m68k/ieee.opt"
	tm_defines="${tm_defines} MOTOROLA USE_GAS"
	# 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*)
	tmake_file="m68k/t-m68kbare m68k/t-crtstuff t-rtems m68k/t-rtems"
	tm_file="m68k/m68k.h 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 USE_GAS"
	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
	use_fixproto=yes
	;;
mcore-*-pe*)
	tm_file="svr3.h dbxcoff.h ${tm_file} mcore/mcore-pe.h"
	tmake_file=mcore/t-mcore-pe
	use_fixproto=yes
	;;
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
#	if test x$enable_threads = xyes; then
#		thread_file='irix'
#	fi
	use_fixproto=yes
	;;
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*)
	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"
	tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32"
	gnu_ld=yes
	gas=yes
	;;
mips*-*-linux*)				# Linux MIPS, either endian.
        tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h"
	case ${target} in
        mipsisa32*-*)
                target_cpu_default="MASK_SOFT_FLOAT"
		tm_defines="${tm_defines} MIPS_ISA_DEFAULT=32"
                ;;
        esac
	;;
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
	;;
mipsisa32-*-elf* | mipsisa32el-*-elf*)
	tm_file="elfos.h ${tm_file} mips/elf.h"
	tmake_file=mips/t-isa3264
	tm_defines="${tm_defines} MIPS_ISA_DEFAULT=32 MIPS_ABI_DEFAULT=ABI_EABI"
	use_fixproto=yes
	;;
mipsisa32r2-*-elf* | mipsisa32r2el-*-elf*)
	tm_file="elfos.h ${tm_file} mips/elf.h"
	tmake_file=mips/t-isa3264
	tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33 MIPS_ABI_DEFAULT=ABI_EABI"
	use_fixproto=yes
	;;
mipsisa64-*-elf* | mipsisa64el-*-elf*)
	tm_file="elfos.h ${tm_file} mips/elf.h"
	tmake_file=mips/t-isa3264
	target_cpu_default="MASK_64BIT|MASK_FLOAT64"
	tm_defines="${tm_defines} MIPS_ISA_DEFAULT=64 MIPS_ABI_DEFAULT=ABI_EABI"
	use_fixproto=yes
	;;
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"
	use_fixproto=yes
        ;;
mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*)
	tm_file="elfos.h ${tm_file} mips/elf.h"
	tmake_file="mips/t-elf 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"
	use_fixproto=yes
	;;
mips-*-elf* | mipsel-*-elf*)
	tm_file="elfos.h ${tm_file} mips/elf.h"
	tmake_file=mips/t-elf
	use_fixproto=yes
	;;
mips64-*-elf* | mips64el-*-elf*)
	tm_file="elfos.h ${tm_file} mips/elf.h"
	tmake_file=mips/t-elf
	target_cpu_default="MASK_64BIT|MASK_FLOAT64"
	tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64"
	use_fixproto=yes
	;;
mips64vr-*-elf* | mips64vrel-*-elf*)
        tm_file="mips/vr.h elfos.h ${tm_file} mips/elf.h"
        tmake_file=mips/t-vr
	use_fixproto=yes
        ;;
mips64orion-*-elf* | mips64orionel-*-elf*)
	tm_file="elfos.h ${tm_file} mips/elforion.h mips/elf.h"
	tmake_file=mips/t-elf
	target_cpu_default="MASK_64BIT|MASK_FLOAT64"
	tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64"
	use_fixproto=yes
	;;
mips*-*-rtems*)
	tm_file="elfos.h ${tm_file} mips/elf.h mips/rtems.h rtems.h"
	tmake_file="mips/t-elf t-rtems mips/t-rtems"
	;;
mips-wrs-vxworks)
	# We want vxworks.h after mips/elf.h, which unfortunately means we
	# have to redo the tm_file list from scratch.
	tm_file="elfos.h mips/mips.h svr4.h mips/elf.h vxworks.h mips/vxworks.h"
	tmake_file="${tmake_file} mips/t-vxworks"
	;;
mips-wrs-windiss)	# Instruction-level simulator for VxWorks.
	xm_defines=POSIX
	tm_file="elfos.h mips/mips.h svr4.h mips/elf.h windiss.h mips/windiss.h"
	tmake_file="${tmake_file} mips/t-elf"
	thread_file=
	;;
mipstx39-*-elf* | mipstx39el-*-elf*)
	tm_file="elfos.h ${tm_file} mips/r3900.h mips/elf.h"
	tmake_file=mips/t-r3900
	use_fixproto=yes
	;;
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
	use_fixproto=yes
	;;
mt-*-elf)
        tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
        tmake_file="${tmake_file} mt/t-mt"
        ;;
ns32k-*-netbsdelf*)
	echo "GCC does not yet support the ${target} target"; exit 1
	;;
ns32k-*-netbsd*)
	tm_file="${tm_file} netbsd.h netbsd-aout.h ns32k/netbsd.h"
	# On NetBSD, the headers are already okay, except for math.h.
	tmake_file="t-netbsd ns32k/t-ns32k"
	extra_parts=""
	use_collect2=yes
	;;
pdp11-*-bsd)
	tm_file="${tm_file} pdp11/2bsd.h"
	use_fixproto=yes
        ;;
pdp11-*-*)
	use_fixproto=yes
	;;
# 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-*-beos*)
	tm_file="${tm_file} rs6000/aix.h rs6000/beos.h rs6000/xcoff.h"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-beos"
	extra_headers=
	use_fixproto=yes
	;;
powerpc-*-darwin*)
	extra_options="${extra_options} rs6000/darwin.opt"
	# APPLE LOCAL mainline candidate 2006-06-22 4512244
	extra_parts="${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-*-chorusos*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h chorus.h"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos rs6000/t-ppccomm"
	extra_options="${extra_options} rs6000/sysv4.opt"
	case ${enable_threads} in
	  yes | posix)
	    thread_file='posix'
	    ;;
	esac
	use_fixproto=yes
	;;
powerpc-*-eabispe*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.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/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 svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.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 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"
	use_fixproto=yes
	;;
powerpc-*-eabialtivec*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.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-*-eabi*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.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/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"
	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-fprules-softfp soft-fp/t-softfp 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
	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)
	# We want vxworks.h after rs6000/sysv4.h, which unfortunately
	# means we have to redo the tm_file list from scratch.
	tm_file="rs6000/rs6000.h 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/vxworksae.h"
	    tmake_file="${tmake_file} rs6000/t-vxworksae"
	    ;;
	  *-vxworks*)
	    tm_file="${tm_file} vx-common.h vxworks.h rs6000/vxworks.h"
	    ;;
	esac
	;;
powerpc-wrs-windiss*)  # Instruction-level simulator for VxWorks.
	tm_file="${tm_file} elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/windiss.h"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
	extra_options="${extra_options} rs6000/sysv4.opt"
	thread_file=""
	use_fixproto=yes
	;;
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-*-sysv*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos rs6000/t-ppccomm"
	extra_options="${extra_options} rs6000/sysv4.opt"
	use_fixproto=yes
	;;
powerpcle-*-elf*)
	tm_file="${tm_file} dbxelf.h elfos.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"
	use_fixproto=yes
	;;
powerpcle-*-eabisim*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.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 svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
	extra_options="${extra_options} rs6000/sysv4.opt"
	;;
powerpc-*-kaos*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h kaos.h rs6000/kaos-ppc.h"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
	extra_options="${extra_options} rs6000/sysv4.opt"
	;;
powerpcle-*-kaos*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h kaos.h rs6000/kaos-ppc.h"
	tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
	extra_options="${extra_options} rs6000/sysv4.opt"
	;;
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-aix[56789].* | powerpc-ibm-aix[56789].*)
	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=
	;;
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="score-mdaux.o"
        ;;
sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \
sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
  sh-*-linux* | sh[346lbe]*-*-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*-*-kaos*)	tm_file="${tm_file} sh/embed-elf.h kaos.h sh/kaos-sh.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"
			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 | \
	  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 | \
		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
	use_fixproto=yes
	;;
sh-*-rtemscoff*)
	tmake_file="sh/t-sh t-rtems sh/t-rtems"
	tm_file="${tm_file} dbxcoff.h sh/coff.h sh/rtems.h rtems.h"
	;;
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} dbxelf.h elfos.h svr4.h sh/embed-elf.h sh/vxworks.h"
	;;
sh-*-*)
	tm_file="${tm_file} dbxcoff.h sh/coff.h"
	use_fixproto=yes
	;;
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"
	use_fixproto=yes
	;;
sparc-*-linux*)		# SPARC's running GNU/Linux, libc6
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux.h"
	extra_options="${extra_options} sparc/long-double-switch.opt"
	tmake_file="${tmake_file} sparc/t-linux 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
	need_64bit_hwint=yes
	;;
sparc-*-solaris2*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h"
	case ${target} in
	*-*-solaris2.[0-6] | *-*-solaris2.[0-6].*)
		tm_file="${tm_file} sol2-6.h"
		;;
	*-*-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
	case ${target} in
	*-*-solaris2.[0-6] | *-*-solaris2.[0-6].*)
		if test x$gnu_ld = xno; then
			tm_file="${tm_file} sparc/sol26-sld.h"
		fi
		;;
	*-*-solaris2.[789] | *-*-solaris2.1[0-9]*)
		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"
		need_64bit_hwint=yes
		test x$with_cpu != x || with_cpu=v9
		;;
	esac
	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:* )
		case ${target} in
		  *-*-solaris2.[0-6] | *-*-solaris2.[0-6].*)
			thread_file=posix95
			;;
		  *)
			thread_file=posix
			;;
		esac
		;;
	  "":*:yes | yes:*:yes )
		thread_file=solaris
		;;
	esac
	;;
sparc-*-sysv4*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sysv4-only.h"
	tmake_file=t-svr4
	extra_parts="crtbegin.o crtend.o"
	use_fixproto=yes
	;;
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"
	use_fixproto=yes
	;;
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
	need_64bit_hwint=yes
	;;
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 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"
	;;
strongarm-*-elf*)
	tm_file="arm/strongarm-elf.h dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h"
	tmake_file="arm/t-arm arm/t-strongarm-elf"
	out_file=arm/arm.c
	md_file=arm/arm.md
	extra_modes=arm/arm-modes.def
	use_fixproto=yes
	;;
strongarm-*-pe)
	tm_file="arm/semi.h arm/aout.h arm/coff.h dbxcoff.h arm/strongarm-coff.h arm/arm.h arm/pe.h arm/strongarm-pe.h"
	tmake_file="arm/t-arm arm/t-strongarm-pe"
	out_file=arm/arm.c
	md_file=arm/arm.md
	extra_modes=arm/arm-modes.def
	extra_options="${extra_options} arm/pe.opt"
	extra_objs=pe.o
	use_fixproto=yes
	;;
strongarm-*-kaos*)
	tm_file="arm/strongarm-elf.h dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h kaos.h arm/kaos-strongarm.h"
	tmake_file="arm/t-arm arm/t-strongarm-elf"
	out_file=arm/arm.c
	md_file=arm/arm.md
	extra_modes=arm/arm-modes.def
	;;
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"
	use_fixproto=yes
	;;
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"
	use_fixproto=yes
	;;
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"
	use_fixproto=yes
	;;
vax-*-bsd*)			# VAXen running BSD
	tm_file="${tm_file} vax/bsd.h"
	tmake_file=vax/t-memfuncs
	use_collect2=yes
	use_fixproto=yes
	;;
vax-*-sysv*)			# VAXen running system V
	tm_file="${tm_file} vax/vaxv.h"
	tmake_file=vax/t-memfuncs
	use_fixproto=yes
	;;
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
	;;
vax-*-ultrix*)			# VAXen running ultrix
	tm_file="${tm_file} vax/ultrix.h"
	tmake_file=vax/t-memfuncs
	use_fixproto=yes
	;;
xscale-*-elf)
	tm_file="arm/xscale-elf.h dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h"
	tmake_file="arm/t-arm arm/t-xscale-elf"
	out_file=arm/arm.c
	md_file=arm/arm.md
	extra_modes=arm/arm-modes.def
	use_fixproto=yes
	;;
xscale-*-coff)
	tm_file="arm/semi.h arm/aout.h arm/coff.h dbxcoff.h arm/xscale-coff.h arm/arm.h"
	tmake_file="arm/t-arm arm/t-xscale-coff"
	out_file=arm/arm.c
	md_file=arm/arm.md
	extra_modes=arm/arm-modes.def
	use_fixproto=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"
	use_fixproto=yes
	;;
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-*-elf*)
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
	c_target_objs="m32c-pragma.o"
	cxx_target_objs="m32c-pragma.o"
	use_fixproto=yes
 	;;
*)
	echo "*** Configuration ${target} not supported" 1>&2
	exit 1
	;;
esac

case ${target} in
i[34567]86-*-linux*aout* | i[34567]86-*-linux*libc1)
	tmake_file="${tmake_file} i386/t-gmm_malloc"
	;;
i[34567]86-*-linux* | x86_64-*-linux*)
	tmake_file="${tmake_file} i386/t-pmm_malloc"
	;;
i[34567]86-*-* | x86_64-*-*)
	tmake_file="${tmake_file} i386/t-gmm_malloc"
	;;
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
    ep9312-*-*)
      # A Cirrus ARM variant.
      with_cpu="ep9312"
      ;;
# APPLE LOCAL begin mainline 2006-04-19 4434601
    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
        k8-*|opteron-*|athlon_64-*)
          with_cpu=k8
          ;;
        athlon_xp-*|athlon_mp-*|athlon_4-*)
          with_cpu=athlon-4
          ;;
        athlon_tbird-*|athlon-*)
          with_cpu=athlon
          ;;
        pentium2-*)
          with_cpu=pentium2
          ;;
        pentium3-*|pentium3m-*)
          with_cpu=pentium3
          ;;
        pentium4-*|pentium4m-*)
          with_cpu=pentium4
          ;;
        prescott-*)
          with_cpu=prescott
          ;;
        nocona-*)
          with_cpu=nocona
          ;;
	# APPLE LOCAL begin mainline
	core2-*)
	  with_cpu=core2
	  ;;
	# APPLE LOCAL end mainline
        pentium_m-*)
          with_cpu=pentium-m
          ;;
        pentiumpro-*)
          with_cpu=pentiumpro
          ;;
        *)
          with_cpu=generic
          ;;
      esac
      ;;
    x86_64-*-*)
      case ${target_noncanonical} in
        k8-*|opteron-*|athlon_64-*)
          with_cpu=k8
          ;;
        nocona-*)
          with_cpu=nocona
          ;;
	# APPLE LOCAL begin mainline
	core2-*)
	  with_cpu=core2
	  ;;
	# APPLE LOCAL end mainline
        *)
          with_cpu=generic
          ;;
      esac
      ;;
# APPLE LOCAL end mainline 2006-04-19 4434601
    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
      ;;
    sparc*-*-*)
      with_cpu="`echo ${target} | sed 's/-.*$//'`"
      ;;
  esac
fi

# Similarly for --with-float
if test x$with_float = x; then
	case ${target} in
	ep9312-*-*)
		with_float=hard
		;;
	esac
fi

# Similarly for --with-schedule.
if test x$with_schedule = x; then
	case ${target} in
	hppa1* | parisc1*)
		# 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 \
		| 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 )
			# OK
			;;
		*)
			echo "Unknown fpu used in --with-fpu=$with_fpu" 2>&1
			exit 1
			;;
		esac

		case "$with_abi" in
		"" \
		| apcs-gnu | atpcs | aapcs | iwmmxt )
			#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
		;;

	m68k*-linux*)
		supported_defaults="cpu"
		case "$with_cpu" in
		"" | "m68020" | "m68030" | "m68040" | "m68060" | "m68020-40" | "m68020-60")
			# OK
			;;
		*)
			echo "Unknown CPU used in --with-cpu=$with_cpu, known values:"  1>&2
			echo "m68020 m68030 m68040 m68060 m68020-40 m68020-60" 1>&2
			exit 1
			;;
		esac
		;;

	hppa*-*-* | parisc*-*-*)
		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
		;;

# APPLE LOCAL begin mainline 2006-04-19 4434601
	i[34567]86-*-* | x86_64-*-*)
		supported_defaults="arch cpu tune"
		for which in arch cpu tune; 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 \
			| prescott | pentium-m | pentium4m | pentium3m)
				case "${target}" in
				  x86_64-*-*)
				      echo "CPU given in --with-$which=$val doesn't support 64bit mode." 1>&2
				      exit 1
				      ;;
				esac
				# OK
				;;
# APPLE LOCAL mainline
			"" | k8 | opteron | athlon64 | athlon-fx | nocona | core2 \
			   | generic)
				# OK
				;;
# APPLE LOCAL end mainline 2006-04-19 4434601
			*)
				echo "Unknown CPU given in --with-$which=$val." 1>&2
				exit 1
				;;
			esac
		done
		;;

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

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

	mt-*-*)
		supported_defaults="arch"

		case "$with_arch" in
		"" \
		| ms1-64-001 \
		| ms1-16-002 \
		| ms1-16-003 \
		| ms2 \
		| "")
			# OK
			;;
		*)
			echo "Unknown arch used in --with-arch=$with_arch" 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[23456] | powerpc | powerpc64 \
			| rios | rios1 | rios2 | rsc | rsc1 | rs64a \
			| 401 | 403 | 405 | 405fp | 440 | 440fp | 505 \
			| 601 | 602 | 603 | 603e | ec603e | 604 \
			| 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
			| 854[08] | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5)
				# 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)
				# 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)
				# 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
		;;

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

	m68k*-linux*)
		case "x$with_cpu" in
		x)
			# The most generic
			target_cpu_default2="(MASK_68020|MASK_68881|MASK_BITFIELD)"
			;;
		xm68020)
			target_cpu_default2="(MASK_68020|MASK_68881|MASK_BITFIELD)"
			;;
		xm68030)
			target_cpu_default2="(MASK_68030|MASK_68020|MASK_68881|MASK_BITFIELD)"
			;;
		xm68040)
			target_cpu_default2="(MASK_68040|MASK_68040_ONLY|MASK_68020|MASK_68881|MASK_BITFIELD)"
			;;
		xm68060)
			target_cpu_default2="(MASK_68060|MASK_68040_ONLY|MASK_68020|MASK_68881|MASK_BITFIELD)"
			;;
		xm68020-40)
			target_cpu_default2="(MASK_BITFIELD|MASK_68881|MASK_68020|MASK_68040)"
			;;
		xm68020-60)
			target_cpu_default2="(MASK_BITFIELD|MASK_68881|MASK_68020|MASK_68040|MASK_68060)"
			;;
		*)
			echo "Unknown CPU used in --with-cpu=$with_cpu"  1>&2
			exit 1
			;;
		esac
		;;

	hppa*-*-* | parisc*-*-*)
		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
		;;

	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
                # LLVM LOCAL begin
                out_cxx_file=rs6000/llvm-rs6000.cpp
		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 arch tune schedule float mode fpu divide"
for option in $all_defaults
do
	eval "val=\$with_$option"
	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
