# GCC build-, host- and target-specific configuration file.
# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 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, 59 Temple Place - Suite 330, Boston, MA
#02111-1307, USA.

# This is the GCC build-, host- and target-specific configuration file
# where a configuration type, as recognized and generated by config.bfd,
# is mapped to different system-specific definitions and files.  This is
# invoked by the autoconf-generated configure script, called for build,
# host and target in that order, setting ${machine} to each.  Putting it
# in a separate shell file lets us skip running autoconf when modifying
# build-, host- and target-specific information.

# This file switches on the shell variable ${machine}, and also uses the
# following shell variables:
#
#  with_*		Various variables as set by configure.
#
#  enable_threads_flag	Either the name, yes or no depending on whether
#			threads support was requested.
#
#  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 machine.
#
#  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, netware.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
#			in $out_file.
#
#  out_file		The name of the machine description C support
#			file, if different from "$cpu_type/$cpu_type.c".
#
#  md_file		The name of the machine-description file, if
#			different from "$cpu_type/$cpu_type.md".
#
#  tmake_file		A list of machine-description-specific
#			makefile-fragments, if different from
#			"$cpu_type/t-$cpu_type".
#
#  extra_modes          The name of the file containing a list of extra
#                       machine modes, if necessary and different from
#                       "$cpu_type/$cpu_type-modes.def".
#
#  extra_objs		List of extra objects that should be linked into
#			the compiler proper (cc1, cc1obj, cc1plus)
#			depending on target.
#
#  extra_headers	List of used header files from the directory
#			config/${cpu_type}.
#
#  host_xmake_file	List of host-specific makefile-fragments.
#
#  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.
#
#  host_extra_objs	List of extra host-dependent objects that should
#			be linked into the compiler proper.
#
#  host_extra_gcc_objs	List of extra host-dependent objects that should
#			be linked into the gcc driver.
#
#  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.
#
#  build_xm_defines	List of macros to define when compiling for the
#			build machine.
#
#  build_xm_file	List of files to include when compiling for the
#			build machine.
#
#  host_xm_defines	List of macros to define when compiling for the
#			host machine.
#
#  host_xm_file		List of files to include when compiling for the
#			host machine.
#
#  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.
#
#  build_install_headers_dir
#			Target to use when installing header files.
#
#  host_truncate_target
#			Non-empty if the target name should be truncated
#			on this host, due to filename length issues.
#
#  gdb_needs_out_file_path
#			Set to yes if gdb needs a dir command with
#			`dirname $out_file`.
#
#  build_exeext		Set to the suffix, if the build machine requires
#			executables to have a file name suffix.
#
#  host_exeext		Set to the suffix, if the host machine requires
#			executables to have a file name suffix.
#
#  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.

# The following variables are used in each case-construct to build up the
# outgoing variables:
#
#  xmake_file		Makefile-fragment when this system is as a host,
#			for host_xmake_file.
#
#  extra_host_objs	List of extra objects that should be linked into
#			the compiler proper when this system is a host,
#			for host_extra_objs.
#
#  install_headers_dir	Makefile-target for how the header file directory
#			is installed, when this system is a build system,
#			for build_install_headers_dir.
#
#  truncate_target	Non-empty if the target name should be truncated
#			when this system is a host, due to filename length
#			issues.  For host_truncate_target.
#
#  exeext		The suffix for executables on this system.
#
#  gnu_ld		Set to yes or no depending on whether the target
#			system normally uses GNU ld.

out_file=
xmake_file=
tmake_file=
extra_headers=
extra_passes=
extra_parts=
extra_programs=
extra_objs=
extra_host_objs=
extra_gcc_objs=
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 to control how the header file directory is installed.
install_headers_dir=install-headers-tar
# Set this if directory names should be truncated to 14 characters.
truncate_target=
# Set this if gdb needs a dir command with `dirname $out_file`
gdb_needs_out_file_path=
# Set this if the build machine requires executables to have a
# file name suffix.
exeext=
# 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"
enable_threads=$enable_threads_flag
target_gtfiles=

# Obsolete configurations.
case $machine in
   m88k-*-*			\
 | mn10200-*-*			\
 | romp-*-*			\
 | alpha*-*-interix*		\
 | alpha*-*-linux*libc1*	\
 | alpha*-*-linux*ecoff*	\
 | arm*-*-aout*			\
 | arm*-*-conix*		\
 | arm*-*-oabi			\
 | strongarm-*-coff*		\
 | hppa1.0-*-osf*		\
 | hppa1.0-*-bsd*		\
 | hppa1.[01]-*-hpux[789]*	\
 | hppa*-*-hiux*		\
 | hppa*-*-lites*		\
 | i?86-*-win32			\
 | m68000-hp-bsd*		\
 | m68000-sun-sunos*		\
 | m68000-att-sysv*		\
 | m68k-atari-sysv*		\
 | m68k-motorola-sysv*		\
 | m68k-ncr-sysv*		\
 | m68k-plexus-sysv*		\
 | m68k-tti-*			\
 | m68k-crds-unos*		\
 | m68k-cbm-sysv*		\
 | m68k-ccur-rtu*		\
 | m68k-hp-bsd*			\
 | m68k-sun-mach*		\
 | m68k-sun-sunos*		\
 | m68k-*-linux*aout*		\
 | m68k-*-linux*libc1*		\
 | m68k-*-psos*			\
 | mips*-*-ecoff*		\
 | mips-sni-sysv4		\
 | mips64orion-*-rtems*		\
 | ns32k-*-openbsd*		\
 | powerpc*-*-sysv*		\
 | powerpc*-*-linux*libc1*	\
 | rs6000-ibm-aix[123]*		\
 | rs6000-bull-bosx		\
 | rs6000-*-mach*		\
 | sparc-*-aout*		\
 | sparc-*-netbsd*aout*		\
 | sparc-*-bsd*			\
 | sparc-*-chorusos*		\
 | sparc-*-linux*aout*		\
 | sparc-*-linux*libc1*		\
 | sparc-*-lynxos*		\
 | sparc-hal-solaris2*		\
 | sparc-*-sunos[34]*		\
 | sparclet-*-aout*		\
 | sparclite-*-aout*		\
 | sparc86x-*-aout*		\
 | v850-*-rtems*		\
 | vax-*-vms*			\
 )
    if test "x$enable_obsolete" != xyes; then
      echo "*** Configuration $machine 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

# 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 $machine | sed 's/-.*$//'`
case $machine in
alpha*-*-*)
	cpu_type=alpha
	;;
strongarm*-*-*)
	cpu_type=arm
	;;
arm*-*-*)
	cpu_type=arm
	;;
xscale-*-*)
	cpu_type=arm
	;;
i[34567]86-*-*)
	cpu_type=i386
	extra_headers="mmintrin.h xmmintrin.h emmintrin.h pmmintrin.h"
	;;
x86_64-*-*)
	cpu_type=i386
	extra_headers="mmintrin.h xmmintrin.h emmintrin.h pmmintrin.h"
	;;
ia64-*-*)
	extra_headers=ia64intrin.h
	;;
hppa*-*-* | parisc*-*-*)
	cpu_type=pa
	;;
m680[012]0-*-*)
	cpu_type=m68k
	extra_headers=math-68881.h
	;;
m68k-*-*)
	extra_headers=math-68881.h
	;;
mips*-*-*)
	cpu_type=mips
	;;
powerpc*-*-*)
	cpu_type=rs6000
	extra_headers="ppc-asm.h altivec.h spe.h"
	;;
sparc*-*-*)
	cpu_type=sparc
	;;
# Note the 'l'; we need to be able to match e.g. "shle" or "shl".
sh[123456789l]*-*-*)
	cpu_type=sh
	;;
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

case $machine in
x86_64-*-*)
	tm_file="i386/biarch64.h ${tm_file}"
	;;
esac

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

# Common parts for GNU/Linux, GNU/Hurd, OpenBSD, NetBSD, and FreeBSD systems.
case $machine in
*-*-linux*)
	xm_defines=POSIX
	case $machine in
	*-*-linux*ecoff* | *-*-linux*libc1* | *-*-linux*oldld* | *-*-linux*aout*)
		;;
	*)
		extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
		gas=yes gnu_ld=yes
		case x${enable_threads} in
			x | xyes | xposix) thread_file='posix'
			;;
		esac
		;;
	esac
	;;
*-*-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.
	xm_defines=POSIX
	tm_file="${cpu_type}/gnu.h"
	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
	# GNU always uses ELF.
	elf=yes
	# GNU tools are the only tools.
	gnu_ld=yes
	gas=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 $machine 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
	;;
*-*-openbsd*)
	tm_file=${cpu_type}/openbsd.h
	tmake_file="t-libc-ok t-openbsd t-libgcc-pic"
	xm_defines=POSIX
	if test x$enable_threads = xyes; then
		thread_file='posix'
		tmake_file="${tmake_file} t-openbsd-thread"
	fi
	;;
*-*-netbsd*)
	tmake_file="t-slibgcc-elf-ver t-libc-ok t-netbsd"
	xm_defines=POSIX
	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 x${enable_threads} in
	x)
		case $machine in
		*-*-netbsd[2-9]* | *-*-netbsdelf[2-9]*)
			thread_file='posix'
			tm_defines="${tm_defines} NETBSD_ENABLE_PTHREADS"
			;;
		esac
		;;
	xyes | xposix)
		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 $machine in
	*-*-netbsd*1.[7-9]* | *-*-netbsd[2-9]* | *-*-netbsdelf[2-9]*)
		extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
		;;
	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 $machine in
	*-*-freebsd3 | *-*-freebsd[3].*) fbsd_tm_file="freebsd3.h";;
	*-*-freebsd4 | *-*-freebsd[4].*) fbsd_tm_file="freebsd4.h";;
	*-*-freebsd5 | *-*-freebsd[5].*) fbsd_tm_file="freebsd5.h";;
	*-*-freebsd6 | *-*-freebsd[6].*) fbsd_tm_file="freebsd6.h";;
	*) echo 'Please update *-*-freebsd* in gcc/config.gcc'; exit 1;;
	esac
	tmake_file="t-slibgcc-elf-ver t-freebsd"
	xmake_file=none
	xm_defines=POSIX
	case x${enable_threads} in
	xno) fbsd_tm_file="${fbsd_tm_file} freebsd-nthr.h";;
	x | xyes | xpthreads | xposix)
		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 $machine 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"
	;;
esac

case $machine in
# Support site-specific machine types.
*local*)
	rest=`echo $machine | 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}/x-$rest
	then xmake_file=${cpu_type}/x-$rest
	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"
	;;
alpha-*-interix)
	tm_file="${tm_file} alpha/alpha32.h interix.h alpha/alpha-interix.h"

	# GAS + IEEE_CONFORMANT+IEEE (no inexact);
	#target_cpu_default="MASK_GAS|MASK_IEEE_CONFORMANT|MASK_IEEE"

	# GAS + IEEE_CONFORMANT
	target_cpu_default="MASK_GAS|MASK_IEEE_CONFORMANT"

	xm_defines=POSIX
	xm_file="alpha/xm-alpha-interix.h"
	tmake_file="alpha/t-alpha t-interix alpha/t-interix alpha/t-ieee"
	if test x$enable_threads = xyes ; then
		thread_file='posix'
	fi
	if test x$stabs = xyes ; then
		tm_file="${tm_file} dbxcoff.h"
	fi
	#prefix='$$INTERIX_ROOT'/usr/contrib
	#local_prefix='$$INTERIX_ROOT'/usr/contrib
	;;
alpha*-*-linux*ecoff*)
	echo "Configuration $machine no longer supported" 1>&2
	exit 1
	;;
alpha*-*-linux*libc1*)
	tm_file="${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h"
	target_cpu_default="MASK_GAS"
	tmake_file="t-slibgcc-elf-ver t-linux t-linux-gnulibc1 alpha/t-alpha alpha/t-crtfm alpha/t-ieee"
	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
	gas=yes gnu_ld=yes
	if test x$enable_threads = xyes; then
		thread_file='posix'
	fi
	;;
alpha*-*-linux*)
	tm_file="${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h"
	target_cpu_default="MASK_GAS"
	tmake_file="t-slibgcc-elf-ver t-linux alpha/t-crtfm alpha/t-alpha alpha/t-ieee"
	;;
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_file="${cpu_type}/${cpu_type}.h ${tm_file}"
	# 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]*)
	xm_defines=POSIX
	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 $machine in
	  *-*-osf4*)
	    # Some versions of OSF4 (specifically X4.0-9 296.7) have
	    # a broken tar, so we use cpio instead.
	    install_headers_dir=install-headers-cpio
	    # Set target_cpu_default except on 4.0a.
	    case $machine in
		*-*-osf4.0a) ;;
		*) target_cpu_default=MASK_SUPPORT_ARCH
	    esac
	    ;;
	  *-*-osf5*)
	    tm_file="${tm_file} alpha/osf5.h"
	    target_cpu_default=MASK_SUPPORT_ARCH
	    ;;
	esac
	;;
alpha*-*-vxworks*)
	xm_defines=POSIX
	tm_file="${tm_file} dbx.h alpha/vxworks.h"
	tmake_file="alpha/t-alpha alpha/t-ieee"
	if [ x$gas != xyes ]
	then
		extra_passes="mips-tfile mips-tdump"
	fi
	use_collect2=yes
	thread_file='vxworks'
	;;
alpha64-dec-*vms*)
	xm_defines=POSIX
	tm_file="${tm_file} alpha/vms.h alpha/vms64.h"
	xm_file="alpha/xm-vms.h alpha/xm-vms64.h"
	tmake_file="alpha/t-alpha alpha/t-vms alpha/t-vms64 alpha/t-ieee"
	xmake_file=alpha/x-vms
	exeext=.exe
	# This removes the cpu type and manufacturer components and
	#  replaces "." with "_" in the operating system version.
	case $host in *-*-*vms*)
		target_alias=`echo $host \
		  | sed 's/.*-.*-\(.*\)$/\1/' | sed 's/\./_/g'`
		;;
	esac
	install_headers_dir=install-headers-cp
	prefix=/gnu
	local_prefix=/gnu
	;;
alpha*-dec-*vms*)
	xm_defines=POSIX
	tm_file="${tm_file} alpha/vms.h"
	xm_file=alpha/xm-vms.h
	tmake_file="alpha/t-alpha alpha/t-vms alpha/t-ieee"
	xmake_file=alpha/x-vms
	exeext=.exe
	# This removes the cpu type and manufacturer components and
	#  replaces "." with "_" in the operating system version.
	case $host in *-*-*vms*)
		target_alias=`echo $host \
		  | sed 's/.*-.*-\(.*\)$/\1/' | sed 's/\./_/g'`
		;;
	esac
	install_headers_dir=install-headers-cp
	prefix=/gnu
	local_prefix=/gnu
	;;
arc-*-elf*)
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
	extra_parts="crtinit.o crtfini.o"
	;;
arm-*-coff* | armel-*-coff*)
	tm_file="arm/semi.h arm/aout.h arm/arm.h arm/coff.h"
	tmake_file=arm/t-arm-coff
	;;
arm-*-vxworks*)
	tm_file="arm/semi.h arm/aout.h arm/coff.h arm/vxarm.h arm/arm.h"
	tmake_file=arm/t-arm-coff
	thread_file='vxworks'
	;;
arm-semi-aout | armel-semi-aout)
	tm_file="arm/semi.h arm/aout.h arm/arm.h"
	tmake_file=arm/t-semi
	;;
arm-semi-aof | armel-semi-aof)
	tm_file="arm/semiaof.h arm/aof.h arm/arm.h"
	tmake_file=arm/t-semi
	;;
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-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-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-netbsd"
	extra_parts=""
	use_collect2=yes
	;;
arm*-*-linux*)			# ARM GNU/Linux with ELF
	tm_file="dbxelf.h elfos.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h"
	tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux"
	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
	gnu_ld=yes
	case x${enable_threads} in
	x | xyes | xpthreads | xposix)
		thread_file='posix'
		;;
	esac
	;;
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-elf
	;;
arm*-*-aout)
	tm_file="arm/aout.h arm/arm.h"
	tmake_file=arm/t-arm-aout
	;;
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-elf
	;;
arm*-*-rtems*)
	xm_defines=POSIX
	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-elf t-rtems"
	if test x$enable_threads = xyes; then
	  thread_file='rtems'
	fi
	;;
arm*-*-elf)
	tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h"
	tmake_file=arm/t-arm-elf
	;;
arm*-*-conix*)
	tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/conix-elf.h arm/aout.h arm/arm.h"
	tmake_file=arm/t-arm-elf
	;;
arm*-*-oabi)
	tm_file="arm/unknown-elf-oabi.h dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h"
	tmake_file=arm/t-arm-elf
	;;
arm-*-pe*)
	tm_file="arm/semi.h arm/aout.h arm/arm.h arm/coff.h arm/pe.h"
	tmake_file=arm/t-pe
	extra_objs="pe.o"
	;;
avr-*-*)
	;;
c4x-*-rtems* | tic4x-*-rtems*)
	xm_defines=POSIX
	tmake_file="c4x/t-c4x t-rtems"
	tm_file="c4x/c4x.h c4x/rtems.h rtems.h"
	if test x$enable_threads = xyes; then
	  thread_file='rtems'
	fi
	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"
	;;
cris-*-elf | cris-*-none)
	tm_file="dbxelf.h elfos.h ${tm_file}"
	tmake_file="cris/t-cris cris/t-elfmulti"
	gas=yes
	;;
cris-*-linux*)
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h cris/linux.h"
	tmake_file="cris/t-cris t-slibgcc-elf-ver cris/t-linux"
	;;
d30v-*)
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
	;;
dsp16xx-*)
	;;
fr30-*-elf)
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
	tmake_file=fr30/t-fr30
	extra_parts="crti.o crtn.o crtbegin.o crtend.o"
	;;
frv-*-elf)
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file} frv/frv-abi.h"
	tmake_file=frv/t-frv
	;;
h8300-*-rtems*)
	xm_defines=POSIX
	tmake_file="h8300/t-h8300 t-rtems h8300/t-rtems"
	tm_file="h8300/h8300.h h8300/rtems.h rtems.h"
	if test x$enable_threads = xyes; then
	  thread_file='rtems'
	fi
	;;
h8300-*-elf*)
	tmake_file="h8300/t-h8300 h8300/t-elf"
	tm_file="h8300/h8300.h h8300/elf.h"
	;;
h8300-*-*)
	;;
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=pa/t-linux64
	gas=yes gnu_ld=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="t-slibgcc-elf-ver t-linux pa/t-linux"
	;;
hppa*-*-openbsd*)
	target_cpu_default="MASK_PA_11"
	tmake_file=pa/t-bsd
	;;
hppa1.1-*-pro*)
	target_cpu_default="(MASK_JUMP_IN_DELAY | MASK_PORTABLE_RUNTIME | MASK_GAS | 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-bsd pa/t-pro"
	xmake_file="pa/x-ada"
	;;
hppa1.1-*-osf*)
	target_cpu_default="MASK_PA_11"
	tm_file="${tm_file} pa/pa32-regs.h pa/som.h pa/pa-osf.h"
	tmake_file="pa/t-bsd pa/t-pa"
	xmake_file="pa/x-ada"
	use_collect2=yes
	;;
hppa1.1-*-rtems*)
	xm_defines=POSIX
	target_cpu_default="(MASK_JUMP_IN_DELAY | MASK_PORTABLE_RUNTIME | MASK_GAS | 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 pa/rtems.h rtems.h"
	tmake_file="pa/t-bsd pa/t-pro t-rtems"
	xmake_file="pa/x-ada"
	if test x$enable_threads = xyes; then
	  thread_file='rtems'
	fi
	;;
hppa1.0-*-osf*)
	tm_file="${tm_file} pa/pa32-regs.h pa/som.h pa/pa-osf.h"
	tmake_file="pa/t-bsd pa/t-pa"
	xmake_file="pa/x-ada"
	use_collect2=yes
	;;
hppa1.1-*-bsd*)
	tm_file="${tm_file} pa/pa32-regs.h pa/som.h"
	target_cpu_default="MASK_PA_11"
	tmake_file="pa/t-bsd pa/t-pa"
	xmake_file="pa/x-ada"
	use_collect2=yes
	;;
hppa1.0-*-bsd*)
	tm_file="${tm_file} pa/pa32-regs.h pa/som.h"
	tmake_file="pa/t-bsd pa/t-pa"
	xmake_file="pa/x-ada"
	use_collect2=yes
	;;
hppa1.0-*-hpux7*)
	tm_file="pa/pa-oldas.h ${tm_file} pa/pa32-regs.h pa/som.h pa/pa-hpux7.h"
	xm_defines=POSIX
	tmake_file=pa/t-pa-hpux
	install_headers_dir=install-headers-cpio
	use_collect2=yes
	;;
hppa1.0-*-hpux8.0[0-2]*)
	tm_file="${tm_file} pa/pa32-regs.h pa/som.h pa/pa-hpux.h"
	xm_defines=POSIX
	tmake_file=pa/t-pa-hpux
	if test x$gas != xyes
	then
		tm_file="pa/pa-oldas.h ${tm_file}"
	fi
	install_headers_dir=install-headers-cpio
	use_collect2=yes
	;;
hppa1.1-*-hpux8.0[0-2]*)
	target_cpu_default="MASK_PA_11"
	tm_file="${tm_file} pa/pa32-regs.h pa/som.h pa/pa-hpux.h"
	xm_defines=POSIX
	tmake_file=pa/t-pa-hpux
	if test x$gas != xyes
	then
		tm_file="pa/pa-oldas.h ${tm_file}"
	fi
	install_headers_dir=install-headers-cpio
	use_collect2=yes
	;;
hppa1.1-*-hpux8*)
	target_cpu_default="MASK_PA_11"
	tm_file="${tm_file} pa/pa32-regs.h pa/som.h pa/pa-hpux.h"
	xm_defines=POSIX
	tmake_file=pa/t-pa-hpux
	install_headers_dir=install-headers-cpio
	use_collect2=yes
	;;
hppa1.0-*-hpux8*)
	tm_file="${tm_file} pa/pa32-regs.h pa/som.h pa/pa-hpux.h"
	xm_defines=POSIX
	tmake_file=pa/t-pa-hpux
	install_headers_dir=install-headers-cpio
	use_collect2=yes
	;;
hppa1.1-*-hpux10* | hppa2*-*-hpux10*)
	target_cpu_default="MASK_PA_11"
	tm_file="${tm_file} pa/pa32-regs.h pa/long_double.h pa/som.h pa/pa-hpux.h pa/pa-hpux10.h"
	xm_defines=POSIX
	tmake_file="pa/t-pa pa/t-pa-hpux pa/t-hpux-shlib"
	xmake_file="pa/x-ada"
	if test x$enable_threads = x; then
	    enable_threads=$have_pthread_h
	fi
	case x${enable_threads} in
	xyes | xdce)
		tmake_file="${tmake_file} pa/t-dce-thr"
		;;
	esac
	install_headers_dir=install-headers-cpio
	use_collect2=yes
	;;
hppa1.0-*-hpux10*)
	tm_file="${tm_file} pa/pa32-regs.h pa/long_double.h pa/som.h pa/pa-hpux.h pa/pa-hpux10.h"
	xm_defines=POSIX
	tmake_file="pa/t-pa pa/t-pa-hpux pa/t-hpux-shlib"
	xmake_file="pa/x-ada"
	if test x$enable_threads = x; then
	    enable_threads=$have_pthread_h
	fi
	case x${enable_threads} in
	xyes | xdce)
		tmake_file="${tmake_file} pa/t-dce-thr"
		;;
	esac
	install_headers_dir=install-headers-cpio
	use_collect2=yes
	;;
hppa*64*-*-hpux11*)
	xm_defines=POSIX
	if test x$gas = xyes
	then
		tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h  \
			 pa/pa64-regs.h pa/long_double.h pa/pa-hpux.h \
			 pa/pa-hpux11.h pa/pa-64.h pa/pa64-hpux.h"
	else
		tm_file="pa/pa64-start.h ${tm_file} dbxelf.h pa/elf.h \
			 pa/pa64-regs.h pa/long_double.h pa/pa-hpux.h \
			 pa/pa-hpux11.h pa/pa-64.h pa/pa64-hpux.h"
	fi
	tmake_file="pa/t-pa64 pa/t-pa-hpux"
	xmake_file="pa/x-ada"
	target_cpu_default="(MASK_PA_11|MASK_PA_20|MASK_GAS)"
	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
	if test x$gnu_ld = xyes
	then
		target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
	fi
	case x${enable_threads} in
	xyes | xposix )
		thread_file=posix 
		;;
	esac
	install_headers_dir=install-headers-cpio
	;;
hppa1.1-*-hpux11* | hppa2*-*-hpux11*)
	target_cpu_default="MASK_PA_11"
	tm_file="${tm_file} pa/pa32-regs.h pa/long_double.h pa/som.h pa/pa-hpux.h pa/pa-hpux11.h"
	xm_defines=POSIX
	tmake_file="pa/t-pa pa/t-pa-hpux pa/t-hpux-shlib"
	xmake_file="pa/x-ada"
	case x${enable_threads} in
	xyes | xposix )
		thread_file=posix 
		;;
	esac
	install_headers_dir=install-headers-cpio
	use_collect2=yes
	;;
hppa1.0-*-hpux11*)
	tm_file="${tm_file} pa/pa32-regs.h pa/long_double.h pa/som.h pa/pa-hpux.h pa/pa-hpux11.h"
	xm_defines=POSIX
	tmake_file="pa/t-pa pa/t-pa-hpux pa/t-hpux-shlib"
	xmake_file="pa/x-ada"
	case x${enable_threads} in
	xyes | xposix )
		thread_file=posix 
		;;
	esac
	install_headers_dir=install-headers-cpio
	use_collect2=yes
	;;
hppa1.1-*-hpux* | hppa2*-*-hpux*)
	target_cpu_default="MASK_PA_11"
	tm_file="${tm_file} pa/pa32-regs.h pa/som.h pa/pa-hpux.h pa/pa-hpux9.h"
	xm_defines=POSIX
	tmake_file=pa/t-pa-hpux
	install_headers_dir=install-headers-cpio
	use_collect2=yes
	;;
hppa1.0-*-hpux*)
	tm_file="${tm_file} pa/pa32-regs.h pa/som.h pa/pa-hpux.h pa/pa-hpux9.h"
	xm_defines=POSIX
	tmake_file=pa/t-pa-hpux
	install_headers_dir=install-headers-cpio
	use_collect2=yes
	;;
hppa1.1-*-hiux* | hppa2*-*-hiux*)
	target_cpu_default="MASK_PA_11"
	tm_file="${tm_file} pa/pa32-regs.h pa/som.h pa/pa-hpux.h pa/pa-hiux.h"
	xm_defines=POSIX
	tmake_file=pa/t-pa-hpux
	install_headers_dir=install-headers-cpio
	use_collect2=yes
	;;
hppa1.0-*-hiux*)
	tm_file="${tm_file} pa/pa32-regs.h pa/som.h pa/pa-hpux.h pa/pa-hiux.h"
	xm_defines=POSIX
	tmake_file=pa/t-pa-hpux
	install_headers_dir=install-headers-cpio
	use_collect2=yes
	;;
hppa*-*-lites*)
	tm_file="${tm_file} pa/pa32-regs.h dbxelf.h elfos.h pa/elf.h"
	target_cpu_default="MASK_PA_11"
	tmake_file="pa/t-bsd pa/t-pa"
	xmake_file="pa/x-ada"
	use_collect2=yes
	;;
hppa*-*-mpeix*)
	tm_file="${tm_file} pa/pa32-regs.h pa/long_double.h pa/som.h pa/pa-mpeix.h"
	tmake_file=pa/t-mpeix
	echo "You must use gas. Assuming it is already installed."
	gas=yes
	install_headers_dir=install-headers-tar
	use_collect2=yes
	;;
i370-*-opened*)			 # IBM 360/370/390 Architecture
	xm_defines='POSIX FATAL_EXIT_CODE=12'
	tm_file=i370/oe.h
	tmake_file="i370/t-oe i370/t-i370"
	c_target_objs="i370-c.o"
	cxx_target_objs="i370-c.o"
	;;
i370-*-mvs*)
	xm_defines='POSIX FATAL_EXIT_CODE=12'
	tm_file=i370/mvs.h
	tmake_file="i370/t-i370"
	c_target_objs="i370-c.o"
	cxx_target_objs="i370-c.o"
	;;
i370-*-linux*)
	tm_file="dbxelf.h elfos.h svr4.h linux.h i370/linux.h ${tm_file}"
	tmake_file="t-slibgcc-elf-ver t-linux"
	# broken_install=yes
	elf=yes
	;;
i[34567]86-*-darwin*)
	tm_file="${tm_file} darwin.h i386/darwin.h"
	tm_p_file="${tm_p_file} darwin-protos.h"
	tmake_file="t-darwin"
	extra_objs="darwin.o"
	target_gtfiles="\$(srcdir)/config/darwin.c"
	c_target_objs="darwin-c.o"
	cxx_target_objs="darwin-c.o"
	extra_parts="crt2.o"
	# Darwin linker does collect2 functionality
	use_collect2=no
	;;
i[34567]86-*-elf*)
	xm_defines=POSIX
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/i386elf.h"
	tmake_file="i386/t-i386elf t-svr4"
	;;
i[34567]86-ncr-sysv4*)		# NCR 3000 - ix86 running system V.4
	xm_defines="POSIX SMALL_ARG_MAX"
	if test x$stabs = xyes -a x$gas = xyes
	then
		tm_file=i386/sysv4gdb.h
	else
		tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h i386/sysv4.h i386/sysv4-cpp.h"
	fi
	extra_parts="crtbegin.o crtend.o"
	tmake_file=i386/t-crtpic
	;;
i[34567]86-*-netware)		# Intel 80386's running netware
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h i386/sysv4.h netware.h i386/netware.h"
	tmake_file=i386/t-netware
	;;
i[34567]86-sequent-ptx4* | i[34567]86-sequent-sysv4*)
	if test x$gas = xyes
	then
		tm_file="${tm_file} usegas.h"
	fi
	xm_defines="POSIX SMALL_ARG_MAX"
	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"
	install_headers_dir=install-headers-cpio
	;;
i[34567]86-sequent-sysv*)	# would otherwise be caught by i?86-*-sysv*
	echo "*** Configuration $machine not supported" 1>&2
	exit 1
	;;
i[34567]86-wrs-vxworks*)
	tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h i386/vxi386.h"
	thread_file='vxworks'
	;;
i[34567]86-*-aout*)
	tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h i386/i386-aout.h"
	;;
i[34567]86-*-beoself* | i[34567]86-*-beos*)
	xm_defines=POSIX
	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-*-freebsd2 | i[34567]86-*-freebsd2.* | i[34567]86-*-freebsd*aout*)
	tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h i386/freebsd-aout.h"
	tmake_file=t-freebsd
	;;
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-*-openbsd*)
	tm_file="${cpu_type}/${cpu_type}.h i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h openbsd-oldgas.h openbsd.h ${tm_file}"
	# 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-*-coff*)
	tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/i386-coff.h"
	;;
i[34567]86-*-linux*oldld*)	# would otherwise be caught by i?86-*-linux*
	echo "*** Configuration $machine not supported" 1>&2
	exit 1
	;;
i[34567]86-*-linux*aout*)	# Intel 80386's running GNU/Linux
				# with a.out format
	tmake_file="t-linux-aout i386/t-crtstuff"
	tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h linux-aout.h i386/linux-aout.h"
	gnu_ld=yes
	;;
i[34567]86-*-linux*libc1)	# Intel 80386's running GNU/Linux
				# with ELF format using the
				# GNU/Linux C library 5
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h"
	tmake_file="t-slibgcc-elf-ver t-linux t-linux-gnulibc1 i386/t-crtstuff"
	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
	gnu_ld=yes
	if test x$enable_threads = xyes; then
		thread_file='single'
	fi
	;;
i[34567]86-*-linux*)	# Intel 80386's running GNU/Linux
			# with ELF format using glibc 2
			# aka GNU/Linux C library 6
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h"
	tmake_file="t-slibgcc-elf-ver t-linux i386/t-crtstuff"
	;;
x86_64-*-linux*)
	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"
	tmake_file="t-slibgcc-elf-ver t-linux i386/t-linux64"
	;;
i[34567]86-*-gnu*)
	;;
i[34567]86-go32-msdos | i[34567]86-*-go32*)
	echo "GO32/DJGPP V1.X is no longer supported. Use *-pc-msdosdjgpp for DJGPP V2.X instead."
	exit 1
	;;
i[34567]86-pc-msdosdjgpp*)
	xm_file=i386/xm-djgpp.h
	tm_file="dbxcoff.h ${tm_file} i386/djgpp.h"
	tmake_file=i386/t-djgpp
	gnu_ld=yes
	gas=yes
	exeext=.exe
	case $host in *pc-msdosdjgpp*)
		target_alias=djgpp
		;;
	esac
	;;
i[34567]86-moss-msdos* | i[34567]86-*-moss*)
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h i386/moss.h"
	tmake_file=t-libc-ok
	gnu_ld=yes
	gas=yes
	;;
i[34567]86-*-lynxos*)
	if test x$gas = xyes
	then
		tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h lynx.h i386/lynx.h"
	else
		tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h lynx-ng.h i386/lynx-ng.h"
	fi
	;;
i[34567]86-*-mach*)
	tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h i386/mach.h"
#	tmake_file=t-libc-ok
	use_collect2=yes
	;;
i[34567]86-go32-rtems* | i[34567]86-*-rtemscoff*)
	# would otherwise be caught by i?86-*-rtems*
	echo "*** Configuration $machine not supported" 1>&2
	exit 1
	;;
i[34567]86-*-rtems*)
	xm_defines=POSIX
	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"
	if test x$enable_threads = xyes; then
	  thread_file='rtems'
	fi
	;;
i[34567]86-*-sco3.2v5*)	# 80386 running SCO Open Server 5
	xm_defines=POSIX
	install_headers_dir=install-headers-cpio
	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"
	;;
i[34567]86-*-solaris2*)
	xm_defines="POSIX SMALL_ARG_MAX"
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h i386/sysv4.h sol2.h i386/sol2.h"
	tmake_file="i386/t-sol2 t-svr4"
	if test x$gnu_ld = xyes; then
		tmake_file="$tmake_file t-slibgcc-elf-ver"
	else
		tmake_file="$tmake_file t-slibgcc-sld"
	fi
	extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o"
	if test x${enable_threads} = x; then
	    enable_threads=$have_pthread_h
	    if test x${enable_threads} = x; then
		enable_threads=$have_thread_h
	    fi
	fi
	if test x${enable_threads} = xyes; then
	    if test x${have_pthread_h} = xyes; then
		thread_file='posix'
	    else
		thread_file='solaris'
	    fi
	fi
	;;
i[34567]86-*-sysv5*)           # Intel x86 on System V Release 5
       xm_defines=POSIX
       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
       ;;
i[34567]86-*-sysv4*)		# Intel 80386's running system V.4
	xm_defines="POSIX SMALL_ARG_MAX"
	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"
	;;
i[34567]86-*-udk*)      # Intel x86 on SCO UW/OSR5 Dev Kit
	xm_defines=POSIX
	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h i386/sysv4.h i386/sysv5.h i386/udk.h"
	tmake_file="i386/t-crtpic i386/t-udk t-svr4"
	extra_parts="crtbegin.o crtend.o"
	install_headers_dir=install-headers-cpio
	;;
i[34567]86-*-sysv*)		# Intel 80386's running system V
	xm_defines=POSIX
	if test x$gas = xyes
	then
		if test x$stabs = xyes
		then
			tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/svr3gas.h i386/svr3dbx.h"
			tmake_file=i386/t-svr3dbx
			extra_parts="svr3.ifile svr3z.ifile"
		else
			tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/svr3gas.h"
			extra_parts="crtbegin.o crtend.o"
			tmake_file=i386/t-crtstuff
		fi
	else
		tm_file="${tm_file} svr3.h i386/unix.h i386/att.h i386/sysv3.h"
		extra_parts="crtbegin.o crtend.o"
		tmake_file=i386/t-crtstuff
	fi
	tmake_file="$tmake_file i386/t-crtpic"
	;;
i386-*-vsta)			# Intel 80386's running VSTa kernel
	xm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/xm-vsta.h"
	tm_file="${tm_file} i386/vsta.h"
	;;
i[34567]86-*-win32)
	xm_defines=POSIX
	xm_file=i386/xm-cygwin.h
	tmake_file=i386/t-cygwin
	tm_file="${tm_file} i386/win32.h"
	extra_objs=winnt.o
	if test x$enable_threads = xyes; then
		thread_file='win32'
	fi
	exeext=.exe
	;;
i[34567]86-*-pe | i[34567]86-*-cygwin*)
	xm_defines=POSIX
	xm_file=i386/xm-cygwin.h
	tmake_file=i386/t-cygwin
	tm_file=i386/cygwin.h
	extra_objs=winnt.o
	if test x$enable_threads = xyes; then
		thread_file='win32'
	fi
	exeext=.exe
	;;
i[34567]86-*-mingw32*)
	tm_file=i386/mingw32.h
	xm_defines=POSIX
	xm_file=i386/xm-mingw32.h
	tmake_file="i386/t-cygwin i386/t-mingw32"
	extra_objs=winnt.o
	if test x$enable_threads = xyes; then
		thread_file='win32'
	fi
	exeext=.exe
	case $machine in
		*mingw32crt*)
			tm_file="${tm_file} i386/crtdll.h"
			;;
		*minwg32msv* | *mingw32*)
			;;
	esac
	;;
i[34567]86-*-uwin*)
	tm_file="i386/cygwin.h i386/uwin.h"
	tmake_file="i386/t-cygwin i386/t-uwin"
	extra_objs=winnt.o
	if test x$enable_threads = xyes; then
		thread_file='win32'
	fi
	exeext=.exe
	;;
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"
	xm_file="i386/xm-i386-interix.h"
	xm_defines=POSIX
	tmake_file="t-interix i386/t-interix"
	extra_objs=winnt.o
	xmake_file="x-interix"
	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-*-interix*)
	tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/i386-interix.h interix.h"
	xm_file="i386/xm-i386-interix.h"
	xm_defines=POSIX
	tmake_file="t-interix i386/t-interix"
	extra_objs=winnt.o
	if test x$enable_threads = xyes ; then
		thread_file='posix'
	fi
	if test x$stabs = xyes ; then
		tm_file="${tm_file} dbxcoff.h"
	fi
	;;
i960-wrs-vxworks5 | i960-wrs-vxworks5.0*)
	tm_file="${tm_file} i960/vx960.h"
	tmake_file=i960/t-vxworks960
	use_collect2=yes
	thread_file='vxworks'
	c_target_objs="i960-c.o"
	cxx_target_objs="i960-c.o"
	;;
i960-wrs-vxworks5* | i960-wrs-vxworks)
	tm_file="${tm_file} dbxcoff.h i960/i960-coff.h i960/vx960-coff.h"
	tmake_file=i960/t-vxworks960
	use_collect2=yes
	thread_file='vxworks'
	c_target_objs="i960-c.o"
	cxx_target_objs="i960-c.o"
	;;
i960-wrs-vxworks*)
	tm_file="${tm_file} i960/vx960.h"
	tmake_file=i960/t-vxworks960
	use_collect2=yes
	thread_file='vxworks'
	c_target_objs="i960-c.o"
	cxx_target_objs="i960-c.o"
	;;
i960-*-coff*)
	tm_file="${tm_file} dbxcoff.h i960/i960-coff.h libgloss.h"
	tmake_file=i960/t-960bare
	c_target_objs="i960-c.o"
	cxx_target_objs="i960-c.o"
	;;
i960-*-rtems)
	xm_defines=POSIX
	tmake_file="i960/t-960bare t-rtems"
	tm_file="${tm_file} dbxcoff.h i960/i960-coff.h i960/rtems.h rtems.h"
	if test x$enable_threads = xyes; then
	  thread_file='rtems'
	fi
	c_target_objs="i960-c.o"
	cxx_target_objs="i960-c.o"
	;;
i960-*-*)			# Default i960 environment.
	use_collect2=yes
	tmake_file=i960/t-960bare
	c_target_objs="i960-c.o"
	cxx_target_objs="i960-c.o"
	;;
ia64*-*-aix*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h ia64/sysv4.h ia64/aix.h"
	tmake_file="ia64/t-ia64 ia64/t-aix"
	target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
	extra_parts="crti.o crtn.o crtbegin.o crtend.o crtbeginS.o crtendS.o"
	;;
ia64*-*-elf*)
	tm_file="${tm_file} dbxelf.h elfos.h ia64/sysv4.h ia64/elf.h"
	tmake_file="ia64/t-ia64"
	target_cpu_default="0"
	if test x$gas = xyes
	then
		target_cpu_default="${target_cpu_default}|MASK_GNU_AS"
	fi
	if test x$gnu_ld = xyes
	then
		target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
	fi
	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
	;;
ia64*-*-freebsd*)
	tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
	target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
	tmake_file="${tmake_file} ia64/t-ia64"
	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
	;;
ia64*-*-linux*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h ia64/sysv4.h ia64/linux.h"
	tmake_file="t-slibgcc-elf-ver t-linux ia64/t-ia64 ia64/t-glibc"
	target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
	if test x"$use_libunwind_exceptions" = xyes; then
	  tmake_file="$tmake_file t-libunwind"
	fi
	;;
ia64*-*-hpux*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h ia64/sysv4.h ia64/hpux.h ia64/hpux_longdouble.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"
	;;
ip2k-*-elf)
	;;
m32r-*-elf*)
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
	extra_parts="crtinit.o crtfini.o m32rx/crtinit.o m32rx/crtfini.o"
	;;
# 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"
        ;;
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"
        ;;
m68000-hp-bsd*)			# HP 9000/200 running BSD
	tm_file=m68k/hp2bsd.h
	use_collect2=yes
	;;
m68000-hp-hpux*)		# HP 9000 series 300
	xm_defines=POSIX
	if test x$gas = xyes
	then
		tm_file=m68k/hp310g.h
	else
		tm_file=m68k/hp310.h
	fi
	tmake_file=m68k/t-hp320
	install_headers_dir=install-headers-cpio
	use_collect2=yes
	;;
m68000-sun-sunos3*)
	tm_file=m68k/sun2.h
	use_collect2=yes
	;;
m68000-sun-sunos4*)
	tm_file=m68k/sun2o4.h
	use_collect2=yes
	;;
m68000-att-sysv*)
	xm_defines=POSIX
	if test x$gas = xyes
	then
		tm_file=m68k/3b1g.h
	else
		tm_file=m68k/3b1.h
	fi
	use_collect2=yes
	;;
m68k-atari-sysv4*)              # Atari variant of V.4.
	tm_file=m68k/atari.h
	xm_defines=POSIX
	tmake_file=t-svr4
	extra_parts="crtbegin.o crtend.o"
	;;
m68k-apollo-sysv* | m68k-bull-sysv*)
	# can otherwise be caught by m68k-*-sysv4*
	echo "*** Configuration $machine not supported" 1>&2
	exit 1
	;;
m68k-motorola-sysv*)
	tm_file=m68k/mot3300.h
	xm_defines=POSIX
	if test x$gas = xyes
	then
		if test x$gnu_ld = xyes
		then
			tmake_file=m68k/t-mot3300-gald
		else
			tmake_file=m68k/t-mot3300-gas
			use_collect2=yes
		fi
	else
		if test x$gnu_ld = xyes
		then
			tmake_file=m68k/t-mot3300-gld
		else
			tmake_file=m68k/t-mot3300
			use_collect2=yes
		fi
	fi
	gdb_needs_out_file_path=yes
	extra_parts="crt0.o mcrt0.o"
	;;
m68k-ncr-sysv*)			# NCR Tower 32 SVR3
	tm_file=m68k/tower-as.h
	xm_defines=POSIX
	extra_parts="crtbegin.o crtend.o"
	;;
m68k-plexus-sysv*)
	tm_file=m68k/plexus.h
	xm_defines=POSIX
	use_collect2=yes
	;;
m68k-tti-*)
	tm_file=m68k/pbb.h
	xm_defines=POSIX
	;;
m68k-crds-unos*)
	xm_defines=POSIX
	tm_file=m68k/crds.h
	use_collect2=yes
	;;
m68k-cbm-sysv4*)		# Commodore variant of V.4.
	tm_file=m68k/amix.h
	xm_defines=POSIX
	tmake_file=t-svr4
	extra_parts="crtbegin.o crtend.o"
	;;
m68k-ccur-rtu)
	tm_file=m68k/ccur-GAS.h
	use_collect2=yes
	;;
m68k-hp-bsd4.4*)		# HP 9000/3xx running 4.4bsd
	tm_file=m68k/hp3bsd44.h
	use_collect2=yes
	;;
m68k-hp-bsd*)			# HP 9000/3xx running Berkeley Unix
	tm_file=m68k/hp3bsd.h
	use_collect2=yes
	;;
m68k-hp-hpux7*)	# HP 9000 series 300 running HPUX version 7.
	xm_defines=POSIX
	if test x$gas = xyes
	then
		xmake_file=m68k/x-hp320g
		tm_file=m68k/hp320g.h
	else
		xmake_file=m68k/x-hp320
		tm_file=m68k/hpux7.h
	fi
	install_headers_dir=install-headers-cpio
	use_collect2=yes
	;;
m68k-hp-hpux*)	# HP 9000 series 300
	xm_defines=POSIX
	if test x$gas = xyes
	then
		xmake_file=m68k/x-hp320g
		tm_file=m68k/hp320g.h
	else
		xmake_file=m68k/x-hp320
		tm_file=m68k/hp320.h
	fi
	install_headers_dir=install-headers-cpio
	use_collect2=yes
	;;
m68k-sun-mach*)
	tm_file=m68k/sun3mach.h
	use_collect2=yes
	;;
m68k-sun-sunos3*)
	if test x$with_fp = xno
	then
		tm_file=m68k/sun3n3.h
	else
		tm_file=m68k/sun3o3.h
	fi
	use_collect2=yes
	;;
m68k-sun-sunos*)			# For SunOS 4 (the default).
	if test x$with_fp = xno
	then
		tm_file=m68k/sun3n.h
	else
		tm_file=m68k/sun3.h
	fi
	use_collect2=yes
	;;
m68k-wrs-vxworks*)
	tm_file=m68k/vxm68k.h
	tmake_file=m68k/t-vxworks68
	thread_file='vxworks'
	;;
m68k-*-aout*)
	tmake_file=m68k/t-m68kbare
	tm_file="m68k/m68k-aout.h libgloss.h"
	;;
m68k-*-coff*)
	tmake_file=m68k/t-m68kbare
	tm_file="m68k/m68k-coff.h dbx.h"
	;;
m68020-*-elf* | m68k-*-elf*)
	tm_file="m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h m68k/m68kemb.h m68k/m68020-elf.h"
	xm_defines=POSIX
	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"
	case $machine in
	m68010*)
		target_cpu_default="0"
		;;
	*)
		target_cpu_default="MASK_68020|MASK_68881|MASK_BITFIELD"
		;;
	esac
	;;
m68k*-*-netbsd*)
	tm_file=m68k/netbsd.h
	tmake_file=t-netbsd
	extra_parts=""
	use_collect2=yes
	;;
m68k*-*-openbsd*)
	# needed to unconfuse gdb
	tmake_file="t-libc-ok t-openbsd m68k/t-openbsd"
	# we need collect2 until our bug is fixed...
	use_collect2=yes
	;;
m68k-*-sysv4*)			# Motorola m68k's running system V.4
	tm_file=m68k/m68kv4.h
	xm_defines=POSIX
	tmake_file=t-svr4
	extra_parts="crtbegin.o crtend.o"
	;;
m68k-*-linux*aout*)		# Motorola m68k's running GNU/Linux
				# with a.out format
	tm_file=m68k/linux-aout.h
	tmake_file="t-linux-aout m68k/t-linux-aout"
	gnu_ld=yes
	;;
m68k-*-linux*libc1)		# Motorola m68k's running GNU/Linux
				# with ELF format using the
				# GNU/Linux C library 5
	tm_file=m68k/linux.h
	tmake_file="t-slibgcc-elf-ver t-linux t-linux-gnulibc1 m68k/t-linux"
	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
	gnu_ld=yes
	;;
m68k-*-linux*)		# Motorola m68k's running GNU/Linux
				# with ELF format using glibc 2
				# aka the GNU/Linux C library 6.
	tm_file=m68k/linux.h
	tmake_file="t-slibgcc-elf-ver t-linux m68k/t-linux"
	;;
m68k-*-psos*)
	tmake_file=m68k/t-m68kbare
	tm_file=m68k/m68k-psos.h
	;;
m68k-*-rtemscoff*)	# would otherwise be caught by m68k-*-rtems*
	echo "*** Configuration $machine not supported" 1>&2
	exit 1
	;;
m68k-*-rtems*)
	xm_defines=POSIX
	tmake_file="m68k/t-m68kbare m68k/t-crtstuff t-rtems m68k/t-rtems"
	tm_file="m68k/m68k-none.h m68k/m68kelf.h dbxelf.h elfos.h m68k/m68kemb.h m68k/m68020-elf.h m68k/rtemself.h rtems.h"
	extra_parts="crtbegin.o crtend.o"
	if test x$enable_threads = xyes; then
	  thread_file='rtems'
	fi
	;;
m88k-*-aout*)
	xm_defines=POSIX
	tm_file=m88k/m88k-aout.h
	;;
m88k-*-openbsd*)
	tmake_file="${tmake_file} m88k/t-luna-gas"
	tm_file="m88k/aout-dbx.h aoutos.h m88k/m88k.h openbsd.h ${tm_file}"
	;;
m88k-*-sysv4*)
	xm_defines=POSIX
	tm_file="dbxelf.h elfos.h svr4.h m88k/sysv4.h"
	extra_parts="crtbegin.o crtend.o"
	tmake_file=m88k/t-sysv4
	;;
mcore-*-elf)
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file} mcore/mcore-elf.h"
	tmake_file=mcore/t-mcore
	;;
mcore-*-pe*)
	tm_file=mcore/mcore-pe.h
	tmake_file=mcore/t-mcore-pe
	;;
mips-sgi-irix6*o32)		# SGI System V.4., IRIX 6, O32 ABI
	if test x$gas = xyes
	then
		tm_file="mips/iris5.h mips/iris5gas.h mips/iris6-o32-gas.h"
		if test x$stabs = xyes
		then
			tm_file="${tm_file} dbx.h mips/dbxmdebug.h"
		fi
		tmake_file=mips/t-iris5-gas
	else
		tm_file="mips/iris5.h mips/iris6-o32-as.h"
		tmake_file=mips/t-iris5-as
	fi
	tm_file="${tm_file} mips/iris6-o32.h"
	tmake_file="${tmake_file} mips/t-iris mips/t-iris5-6"
	xm_defines=POSIX
	xm_file=mips/xm-iris5.h
	# mips-tfile doesn't work yet
	# See comment in mips/iris5.h file.
	use_collect2=yes
#	if test x$enable_threads = xyes; then
#		thread_file='irix'
#	fi
	;;
mips-sgi-irix6*)		# SGI System V.4., IRIX 6
	if test "x$gnu_ld" = xyes
	then
		tm_file="mips/iris6.h mips/iris6gld.h"
	else
		tm_file=mips/iris6.h
	fi
	tmake_file="mips/t-iris mips/t-iris5-6 mips/t-iris6"
	xm_defines=POSIX
#	if test x$enable_threads = xyes; then
#		thread_file='irix'
#	fi
	;;
mips-wrs-vxworks)
	tm_file="${tm_file} mips/elf.h mips/vxworks.h"
	tmake_file=mips/t-ecoff
	gas=yes
	gnu_ld=yes
	extra_parts="crtbegin.o crtend.o"
	thread_file='vxworks'
	;;
mips-sgi-irix5cross64)		# Irix5 host, Irix 6 target, cross64
	tm_file="mips/iris6.h mips/cross64.h"
	xm_defines=POSIX
	xm_file=mips/xm-iris5.h
	tmake_file="mips/t-iris mips/t-cross64"
	# See comment in mips/iris[56].h files.
	use_collect2=yes
#	if test x$enable_threads = xyes; then
#		thread_file='irix'
#	fi
	;;
mips-sni-sysv4)
	if test x$gas = xyes
	then
		if test x$stabs = xyes
		then
			tm_file=mips/iris5gdb.h
		else
			tm_file="mips/sni-svr4.h mips/sni-gas.h"
		fi
	else
		tm_file=mips/sni-svr4.h
	fi
	xm_defines=POSIX
        if test x$gnu_ld != xyes
        then
                use_collect2=yes
        fi
        ;;
mips-sgi-irix5*)		# SGI System V.4., IRIX 5
	if test x$gas = xyes
	then
		tm_file="mips/iris5.h mips/iris5gas.h"
		if test x$stabs = xyes
		then
			tm_file="${tm_file} dbx.h mips/dbxmdebug.h"
		fi
		tmake_file=mips/t-iris5-gas
	else
		tm_file=mips/iris5.h
		tmake_file=mips/t-iris5-as
	fi
	tmake_file="${tmake_file} mips/t-iris mips/t-iris5-6"
	xm_defines=POSIX
	xm_file=mips/xm-iris5.h
	# mips-tfile doesn't work yet
	# See comment in mips/iris5.h file.
	use_collect2=yes
#	if test x$enable_threads = xyes; then
#		thread_file='irix'
#	fi
	;;
mips-sgi-*)	# would otherwise be caught by mips-*-elf*
	echo "*** Configuration $machine not supported" 1>&2
	exit 1
	;;
mips*-*-netbsd*)			# NetBSD/mips, either endian.
	target_cpu_default="MASK_GAS|MASK_ABICALLS"
	tm_file="elfos.h ${tm_file} mips/netbsd.h"
	tmake_file="${tmake_file} mips/t-netbsd"
	;;
mips*-*-linux*)				# Linux MIPS, either endian.
        tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h"
	case $machine in
        mipsisa32*-*)
                target_cpu_default="MASK_SOFT_FLOAT"
		tm_defines="MIPS_ISA_DEFAULT=32"
                ;;
        esac
	tmake_file="t-slibgcc-elf-ver t-linux mips/t-linux"
	;;
mips*el-*-openbsd*)	# mips little endian
	target_cpu_default="MASK_GAS|MASK_ABICALLS"
	;;
mips*-*-openbsd*)		# mips big endian
	target_cpu_default="MASK_GAS|MASK_ABICALLS"
	tm_file="mips/openbsd-be.h ${tm_file}"
	;;
mips-*-ecoff* | mipsel-*-ecoff*)
	if test x$stabs = xyes; then
		tm_file="${tm_file} dbx.h"
	fi
	tmake_file=mips/t-ecoff
	;;
mipsisa32-*-elf* | mipsisa32el-*-elf*)
	tm_file="${tm_file} mips/elf.h"
	tmake_file=mips/t-isa3264
	tm_defines="MIPS_ISA_DEFAULT=32 MIPS_ABI_DEFAULT=ABI_MEABI"
	;;
mipsisa64-*-elf* | mipsisa64el-*-elf*)
	tm_file="${tm_file} mips/elf.h"
	tmake_file=mips/t-isa3264
	target_cpu_default="MASK_64BIT|MASK_FLOAT64|MASK_GAS"
	tm_defines="MIPS_ISA_DEFAULT=64 MIPS_ABI_DEFAULT=ABI_MEABI"
	;;
mipsisa64sr71k-*-elf*)
        tm_file="${tm_file} mips/elf.h"
        tmake_file=mips/t-sr71k
	target_cpu_default="MASK_64BIT|MASK_FLOAT64|MASK_GAS"
	tm_defines="MIPS_ISA_DEFAULT=64 MIPS_CPU_STRING_DEFAULT=\\\"sr71000\\\" MIPS_ABI_DEFAULT=ABI_MEABI"
        ;;
mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*)
	tm_file="${tm_file} mips/elf.h"
	tmake_file=mips/t-elf
	target_cpu_default="MASK_64BIT|MASK_FLOAT64|MASK_GAS"
	tm_defines="MIPS_ISA_DEFAULT=64 MIPS_CPU_STRING_DEFAULT=\\\"sb1\\\" MIPS_ABI_DEFAULT=ABI_O64"
	;;
mips-*-elf* | mipsel-*-elf*)
	tm_file="${tm_file} mips/elf.h"
	tmake_file=mips/t-elf
	;;
mips64-*-elf* | mips64el-*-elf*)
	tm_file="${tm_file} mips/elf64.h"
	tmake_file=mips/t-elf
	target_cpu_default="MASK_64BIT|MASK_FLOAT64|MASK_GAS"
	tm_defines="MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64"
	;;
mips64vr-*-elf* | mips64vrel-*-elf*)
        tm_file="mips/vr.h ${tm_file} mips/elf64.h"
        tm_defines="MIPS_ABI_DEFAULT=ABI_O64 MIPS_MARCH_CONTROLS_SOFT_FLOAT=1"
        tmake_file=mips/t-vr
        ;;
mips64orion-*-elf* | mips64orionel-*-elf*)
	tm_file="${tm_file} mips/elforion.h mips/elf64.h"
	tmake_file=mips/t-elf
	tmake_file=mips/t-elf
	target_cpu_default="MASK_64BIT|MASK_FLOAT64|MASK_GAS"
	tm_defines="MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64"
	;;
mips64orion-*-rtems*)
	xm_defines=POSIX
	tm_file="${tm_file} mips/elforion.h mips/elf64.h mips/rtems64.h rtems.h"
	tmake_file="mips/t-elf t-rtems"
	tmake_file=mips/t-elf
	target_cpu_default="MASK_64BIT|MASK_FLOAT64|MASK_GAS"
	tm_defines="MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_O64"
	if test x$enable_threads = xyes; then
	  thread_file='rtems'
	fi
	;;
mips*-*-rtems*)
	xm_defines=POSIX
	tm_file="${tm_file} mips/elf.h mips/rtems.h rtems.h"
	tmake_file="mips/t-elf t-rtems mips/t-rtems"
	if test x$enable_threads = xyes; then
	  thread_file='rtems'
	fi
	;;
mipstx39-*-elf* | mipstx39el-*-elf*)
	tm_file="${tm_file} mips/r3900.h mips/elf.h"
	tmake_file=mips/t-r3900
	;;
mmix-knuth-mmixware)
	;;
mn10200-*-*)
	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
	;;
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
	;;
ns32k-*-netbsdelf*)
	echo "GCC does not yet support the ${machine} 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"
        ;;
pdp11-*-*)
	;;
avr-*-*)
	;;
ns32k-*-openbsd*)
	# Nothing special
	;;
romp-*-openbsd*)
	# Nothing special
	;;
powerpc-*-openbsd*)
	tmake_file="${tmake_file} rs6000/t-rs6000 rs6000/t-openbsd"
	extra_headers=
	;;
powerpc64-*-linux*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux64.h"
	out_file=rs6000/rs6000.c
	tmake_file="rs6000/t-rs6000 t-slibgcc-elf-ver t-linux rs6000/t-linux64"
	;;
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"
	out_file=rs6000/rs6000.c
	tmake_file="rs6000/t-rs6000 t-slibgcc-elf-ver t-gnu rs6000/t-linux64"
	;;
powerpc-*-beos*)
	tm_file="${tm_file} rs6000/aix.h rs6000/beos.h rs6000/xcoff.h"
	xm_defines=POSIX
	tmake_file=rs6000/t-beos
	extra_headers=
	;;
powerpc-*-darwin*)
	tm_file="${tm_file} darwin.h rs6000/darwin.h"
	tm_p_file="${tm_p_file} darwin-protos.h"
	tmake_file="rs6000/t-rs6000 t-darwin rs6000/t-darwin"
	extra_objs="darwin.o"
	target_gtfiles="\$(srcdir)/config/darwin.c"
	c_target_objs="darwin-c.o"
	cxx_target_objs="darwin-c.o"
	extra_parts="crt2.o"
	# Darwin linker does collect2 functionality
	use_collect2=no
	extra_headers=altivec.h
	;;
powerpc*-*-freebsd*)
	tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} rs6000/sysv4.h rs6000/freebsd.h"
	xm_file=rs6000/xm-sysv4.h
	out_file=rs6000/rs6000.c
	tmake_file="rs6000/t-ppcos ${tmake_file} rs6000/t-ppccomm"
	;;
powerpc-*-sysv*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h"
	xm_defines=POSIX
	tmake_file="rs6000/t-ppcos rs6000/t-ppccomm"
	;;
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"
	;;
powerpc-*-chorusos*)
	xm_defines=POSIX
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h chorus.h"
	tmake_file="rs6000/t-ppcos rs6000/t-ppccomm"
	case x${enable_threads} in
	  xyes | xpthreads | xposix)
		thread_file='posix'
		;;
	esac
	;;
powerpc-*-eabiaix*)
	xm_defines=POSIX
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabiaix.h"
	tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
	;;
powerpc-*-eabispe*)
	xm_defines=POSIX
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabispe.h"
	tmake_file="rs6000/t-ppcendian rs6000/t-ppccomm"
	;;
powerpc-*-eabisimaltivec*)
	xm_defines=POSIX
	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"
	tmake_file="rs6000/t-ppcendian rs6000/t-ppccomm"
	;;
powerpc-*-eabisim*)
	xm_defines=POSIX
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabisim.h"
	tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
	;;
powerpc-*-elf*)
	xm_defines=POSIX
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h"
	tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
	;;
powerpc-*-eabialtivec*)
	xm_defines=POSIX
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabialtivec.h"
	tmake_file="rs6000/t-ppcendian rs6000/t-ppccomm"
	;;
powerpc-*-eabi*)
	xm_defines=POSIX
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h"
	tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
	;;
powerpc-*-rtems*)
	xm_defines=POSIX
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/rtems.h rtems.h"
	tmake_file="rs6000/t-fprules rs6000/t-rtems t-rtems rs6000/t-ppccomm"
	if test x$enable_threads = xyes; then
	  thread_file='rtems'
	fi
	;;
powerpc-*-linux*libc1)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h"
	out_file=rs6000/rs6000.c
	tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-linux t-linux-gnulibc1 rs6000/t-ppccomm"
	if test x$enable_threads = xyes; then
		thread_file='posix'
	fi
	;;
powerpc-*-linux-gnualtivec*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxaltivec.h"
	out_file=rs6000/rs6000.c
	tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm"
	;;
powerpc-*-linux*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h"
	out_file=rs6000/rs6000.c
	tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm"
	;;
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"
	out_file=rs6000/rs6000.c
	tmake_file="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"
	out_file=rs6000/rs6000.c
	tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-gnu rs6000/t-ppccomm"
	if test x$enable_threads = xyes; then
		thread_file='posix'
	fi
	;;
powerpc-wrs-vxworks*)
	xm_defines=POSIX
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/vxppc.h"
        tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
	thread_file='vxworks'
        ;;
powerpc-wrs-windiss*)
        xm_defines=POSIX
	tm_file="${tm_file} elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/windiss.h"
        tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
        thread_file=""
        ;;
powerpcle-wrs-vxworks*)
	xm_defines=POSIX
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/vxppc.h"
        tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
	thread_file='vxworks'
        ;;
powerpcle-*-sysv*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h"
	xm_defines=POSIX
	tmake_file="rs6000/t-ppcos rs6000/t-ppccomm"
	;;
powerpcle-*-elf*)
	xm_defines=POSIX
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h"
	tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
	;;
powerpcle-*-eabisim*)
	xm_defines=POSIX
	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-ppcgas rs6000/t-ppccomm"
	;;
powerpcle-*-eabi*)
	xm_defines=POSIX
	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-ppcgas rs6000/t-ppccomm"
	;;
rs6000-ibm-aix3.[01]*)
	xm_defines=POSIX
	tm_file="${tm_file} rs6000/aix.h rs6000/aix31.h rs6000/xcoff.h"
	use_collect2=yes
	;;
rs6000-ibm-aix3.2.[456789]* | powerpc-ibm-aix3.2.[456789]*)
	xm_defines=POSIX
	tm_file="${tm_file} rs6000/aix.h rs6000/aix3newas.h rs6000/xcoff.h"
	tmake_file=rs6000/t-newas
	use_collect2=yes
	extra_headers=
	;;
rs6000-ibm-aix4.[12]* | powerpc-ibm-aix4.[12]*)
	xm_defines=POSIX
	tm_file="${tm_file} rs6000/aix.h rs6000/aix41.h rs6000/xcoff.h"
	tmake_file=rs6000/t-newas
	use_collect2=yes
	extra_headers=
	;;
rs6000-ibm-aix4.[3456789]* | powerpc-ibm-aix4.[3456789]*)
	xm_defines=POSIX
	tm_file="${tm_file} rs6000/aix.h rs6000/aix43.h rs6000/xcoff.h"
	tmake_file=rs6000/t-aix43
	use_collect2=yes
	thread_file='aix'
	extra_headers=
	;;
rs6000-ibm-aix5.1.* | powerpc-ibm-aix5.1.*)
	xm_defines=POSIX
	tm_file="${tm_file} rs6000/aix.h rs6000/aix51.h rs6000/xcoff.h"
	tmake_file=rs6000/t-aix43
	use_collect2=yes
	thread_file='aix'
	extra_headers=
	;;
rs6000-ibm-aix[56789].* | powerpc-ibm-aix[56789].*)
	xm_defines=POSIX
	tm_file="${tm_file} rs6000/aix.h rs6000/aix52.h rs6000/xcoff.h"
	tmake_file=rs6000/t-aix52
	use_collect2=yes
	thread_file='aix'
	extra_headers=
	;;
rs6000-ibm-aix*)
	xm_defines=POSIX
	tm_file="${tm_file} rs6000/aix.h rs6000/xcoff.h"
	use_collect2=yes
	;;
rs6000-bull-bosx)
	xm_defines=POSIX
	tm_file="${tm_file} rs6000/aix.h rs6000/xcoff.h"
	use_collect2=yes
	;;
rs6000-*-mach*)
	tm_file="${tm_file} rs6000/mach.h"
	xm_defines=POSIX
	use_collect2=yes
	;;
rs6000-*-lynxos*)
	tm_file="lynx.h rs6000/lynx.h"
	tmake_file=rs6000/t-rs6000
	use_collect2=yes
	;;
s390-*-linux*)
	tm_file="s390/s390.h dbxelf.h elfos.h svr4.h linux.h s390/linux.h"
	tmake_file="t-slibgcc-elf-ver t-linux s390/t-crtstuff"
	;;
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="t-slibgcc-elf-ver t-linux s390/t-crtstuff s390/t-linux64"
	;;
sh-*-elf* | sh[2346l]*-*-elf*)
	tmake_file="sh/t-sh sh/t-elf"
	case $machine in
	shl* | sh64l*)
		tm_file="sh/little.h ${tm_file}"
		tmake_file="${tmake_file} sh/t-le"
		;;
	esac
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/embed-elf.h"
	case $machine in
	sh64*)
		tmake_file="${tmake_file} sh/t-sh64"
		tm_file="${tm_file} sh/sh64.h"
		extra_headers="shmedia.h ushmedia.h sshmedia.h"
		;;
	sh4_single*)  target_cpu_default="SELECT_SH4_SINGLE" ;;
	sh4*)  target_cpu_default="SELECT_SH4" ;;
	sh3e*) target_cpu_default="SELECT_SH3E" ;;
	sh3*)  target_cpu_default="SELECT_SH3" ;;
	sh2*)  target_cpu_default="SELECT_SH2" ;;
	esac
	case $machine in
	sh[234]*) tmake_file="${tmake_file} sh/t-monolib" ;;
	esac
	;;
sh-*-rtemself*)
	xm_defines=POSIX
	tmake_file="sh/t-sh sh/t-elf t-rtems"
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/embed-elf.h sh/rtemself.h rtems.h"
	if test x$enable_threads = xyes; then
	  thread_file='rtems'
	fi
	;;
sh-*-rtems*)
	xm_defines=POSIX
	tmake_file="sh/t-sh t-rtems"
	tm_file="${tm_file} sh/coff.h sh/rtems.h rtems.h"
	if test x$enable_threads = xyes; then
	  thread_file='rtems'
	fi
	;;
sh-*-linux* | sh[2346lbe]*-*-linux*)
	tmake_file="sh/t-sh sh/t-elf t-slibgcc-elf-ver t-linux"
	case $machine in
	sh*be-*-* | sh*eb-*-*) ;;
	*)
		tm_file="sh/little.h ${tm_file}"
		tmake_file="${tmake_file} sh/t-le"
		;;
	esac
	tmake_file="${tmake_file} sh/t-linux"
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/linux.h"
	gas=yes gnu_ld=yes
	case $machine in
	sh64*)
		tmake_file="${tmake_file} sh/t-sh64"
		tm_file="${tm_file} sh/sh64.h"
		extra_headers="shmedia.h ushmedia.h sshmedia.h"
		;;
	sh4_single*) target_cpu_default="SELECT_SH4_SINGLE" ;;
	sh4*) target_cpu_default="SELECT_SH4" ;;
	sh3e[lb]e*) target_cpu_default="SELECT_SH3E" ;;
	sh3e[lb]*) target_cpu_default="SELECT_SH3" ;;
	sh3e*) target_cpu_default="SELECT_SH3E" ;;
	sh3*) target_cpu_default="SELECT_SH3" ;;
	sh2*) target_cpu_default="SELECT_SH2" ;;
	esac
	case $machine in
	sh[234]*) tmake_file="${tmake_file} sh/t-monolib" ;;
	esac
	;;
sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
  sh64-*-netbsd* | sh64l*-*-netbsd*)
	tm_file="${tm_file} dbxelf.h elfos.h sh/elf.h netbsd.h netbsd-elf.h sh/netbsd-elf.h"
	tmake_file="${tmake_file} sh/t-sh sh/t-elf"
	case $machine in
	sh*l*-*)
		tm_file="sh/little.h ${tm_file}"
		tmake_file="${tmake_file} sh/t-le"
		;;
	*)
		tmake_file="${tmake_file} sh/t-be"
		;;
	esac
	case $machine in
	sh5*-*)
		# SHmedia, 32-bit ABI
		target_cpu_default="SH5_BIT|SH4_BIT|SH3E_BIT"
		tmake_file="${tmake_file} sh/t-sh64 sh/t-netbsd-sh5"
		;;
	sh64*-*)
		# SHmedia, 64-bit ABI
		target_cpu_default="SH5_BIT|SH4_BIT"
		tmake_file="${tmake_file} sh/t-sh64 sh/t-netbsd-sh5 sh/t-netbsd-sh5-64"
		;;
	*)
		# SH3, software floating point
		target_cpu_default="SH1_BIT|SH2_BIT|SH3_BIT"
		tmake_file="${tmake_file} sh/t-netbsd"
		;;
	esac
	;;
sh-*-*)
	tm_file="${tm_file} sh/coff.h"
	;;
sparc-tti-*)
	tm_file="${tm_file} sparc/pbd.h"
	xm_defines=POSIX
	;;
sparc64-wrs-vxworks*)
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h sparc/sol2.h sparc/elf.h sparc/biarch64.h gofast.h sparc/vxsparc64.h"
        tmake_file="sparc/t-vxsparc64 sparc/t-crtfm"
        use_collect2=yes
        ;;
sparc-wrs-vxworks* | sparclite-wrs-vxworks*)
	tm_file="${tm_file} aoutos.h sparc/aout.h gofast.h sparc/vxsparc.h"
	tmake_file=sparc/t-vxsparc
	use_collect2=yes
	thread_file='vxworks'
	;;
sparc-*-aout*)
	tmake_file=sparc/t-sparcbare
	tm_file="sparc/sparc.h aoutos.h sparc/aout.h libgloss.h"
	;;
sparc-*-netbsdelf*)
	tm_file="${tm_file} elfos.h svr4.h sparc/sysv4.h netbsd.h netbsd-elf.h sparc/netbsd-elf.h"
	;;
sparc-*-netbsd*)
	tm_file="${tm_file} sparc/aout.h netbsd.h netbsd-aout.h sparc/netbsd.h"
	tmake_file=t-netbsd
	extra_parts=""
	use_collect2=yes
	;;
sparc-*-openbsd*)
	tm_file="sparc/sparc.h ${tm_file}"
	# needed to unconfuse gdb
	tmake_file="t-libc-ok t-openbsd sparc/t-openbsd"
	# we need collect2 until our bug is fixed...
	use_collect2=yes
	;;
sparc64-*-openbsd*)
	tm_file="sparc/openbsd1-64.h sparc/sparc.h elfos.h svr4.h sparc/sysv4.h sparc/sol2.h sparc/sp64-elf.h openbsd.h sparc/openbsd64.h"
	xm_file=sparc/xm-sp64.h
	gas=yes gnu_ld=yes
	with_cpu=ultrasparc
	;;
sparc-*-bsd*)
	tm_file="${tm_file} sparc/bsd.h"
	;;
sparc-*-chorusos*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h sparc/sol2.h sparc/elf.h chorus.h"
	tmake_file="sparc/t-chorus-elf sparc/t-crtfm"
	extra_parts="crti.o crtn.o crtbegin.o crtend.o"
	case x${enable_threads} in
	  xyes | xpthreads | xposix)
		thread_file='posix'
		;;
	esac
	;;
sparc-*-elf*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h sparc/sol2.h sparc/elf.h"
	tmake_file="sparc/t-elf sparc/t-crtfm"
	extra_parts="crti.o crtn.o crtbegin.o crtend.o"
	;;
sparc-*-linux*aout*)		# SPARC's running GNU/Linux, a.out
	tm_file="aoutos.h sparc/sparc.h sparc/aout.h sparc/linux-aout.h"
	gnu_ld=yes
	;;
sparc-*-linux*libc1*)	# SPARC's running GNU/Linux, libc5
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux.h"
	tmake_file="t-slibgcc-elf-ver t-linux t-linux-gnulibc1 sparc/t-crtfm"
	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
	gnu_ld=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"
	tmake_file="t-slibgcc-elf-ver t-linux sparc/t-crtfm"
	;;
sparc-*-lynxos*)
	if test x$gas = xyes
	then
		tm_file="${tm_file} lynx.h sparc/aout.h sparc/lynx.h"
	else
		tm_file="${tm_file} lynx-ng.h sparc/aout.h sparc/lynx-ng.h"
	fi
	tmake_file=sparc/t-sunos41
	;;
sparc-*-rtemsaout*)	# would otherwise be caught by sparc-*-rtems*
	echo "*** Configuration $machine not supported" 1>&2
	exit 1
	;;
sparc-*-rtems*)
	xm_defines=POSIX
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h sparc/sol2.h sparc/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"
	if test x$enable_threads = xyes; then
	  thread_file='rtems'
	fi
	;;
sparc64-*-solaris2* | sparcv9-*-solaris2*)
	tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h 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-bi.h"
	fi
	xm_defines=POSIX
	tmake_file="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
	extra_parts="crt1.o crti.o crtn.o gcrt1.o crtbegin.o crtend.o"
	if test x${enable_threads} = x ; then
	    enable_threads=$have_pthread_h
	    if test x${enable_threads} = x ; then
		enable_threads=$have_thread_h
	    fi
	fi
	if test x${enable_threads} = xyes ; then
	    if test x${have_pthread_h} = xyes ; then
		thread_file='posix'
	    else
		thread_file='solaris'
	    fi
	fi
	;;
sparc-hal-solaris2*)
        xm_defines=POSIX
        tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h sparc/sol2.h sparc/hal.h"
        tmake_file="sparc/t-halos sparc/t-sol2 sparc/t-crtfm"
	if test x$gnu_ld = xyes; then
		tm_file="${tm_file} sparc/sol2-gld.h"
		tmake_file="$tmake_file t-slibgcc-elf-ver"
	else
		tmake_file="$tmake_file t-slibgcc-sld"
	fi
        extra_parts="crt1.o crti.o crtn.o gmon.o crtbegin.o crtend.o"
	thread_file='solaris'
        ;;
sparc-*-solaris2*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h sparc/sol2.h"
	if test x$gnu_ld = xyes; then
		tm_file="${tm_file} sparc/sol2-gld.h"
	fi
	tmake_file="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 $machine 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
		tmake_file="$tmake_file sparc/t-sol2-64"
		;;
	esac
	xm_defines=POSIX
	extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o"
	if test x${enable_threads} = x; then
	    enable_threads=$have_pthread_h
	    if test x${enable_threads} = x; then
		enable_threads=$have_thread_h
	    fi
	fi
	if test x${enable_threads} = xyes; then
	    if test x${have_pthread_h} = xyes; then
		thread_file='posix'
	    else
		thread_file='solaris'
	    fi
	fi
	;;
sparc-*-sunos4.0*)
	tm_file="${tm_file} sparc/aout.h sparc/sunos4.h"
	use_collect2=yes
	;;
sparc-*-sunos4*)
	tm_file="${tm_file} sparc/aout.h sparc/sunos4.h"
	tmake_file=sparc/t-sunos41
	use_collect2=yes
	if test x$gas = xyes; then
		tm_file="${tm_file} sparc/sun4gas.h"
	fi
	;;
sparc-*-sunos3*)
	tm_file="${tm_file} sparc/aout.h sparc/sun4o3.h"
	use_collect2=yes
	;;
sparc-*-sysv4*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h"
	xm_defines=POSIX
	tmake_file=t-svr4
	extra_parts="crtbegin.o crtend.o"
	;;
sparc-*-vxsim*)
	xm_defines=POSIX
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/vxsim.h"
	tmake_file=sparc/t-vxsparc
	;;
sparclet-*-aout*)
	tm_file="${tm_file} aoutos.h sparc/aout.h sparc/splet.h libgloss.h"
	tmake_file=sparc/t-splet
	;;
sparclite-*-coff*)
	tm_file="${tm_file} gofast.h sparc/lite.h svr3.h sparc/litecoff.h dbxcoff.h libgloss.h"
	tmake_file=sparc/t-sparclite
	;;
sparclite-*-aout*)
	tm_file="${tm_file} gofast.h sparc/aout.h sparc/lite.h aoutos.h libgloss.h"
	tmake_file=sparc/t-sparclite
	;;
sparclite-*-elf*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h sparc/sol2.h sparc/elf.h gofast.h sparc/liteelf.h"
	tmake_file="sparc/t-sparclite sparc/t-crtfm"
        extra_parts="crtbegin.o crtend.o"
	;;
sparc86x-*-aout*)
	tm_file="${tm_file} gofast.h sparc/aout.h sparc/sp86x-aout.h aoutos.h libgloss.h"
	tmake_file=sparc/t-sp86x
	;;
sparc86x-*-elf*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h sparc/sol2.h sparc/elf.h gofast.h sparc/sp86x-elf.h"
	tmake_file="sparc/t-sp86x sparc/t-crtfm"
        extra_parts="crtbegin.o crtend.o"
	;;
sparc64-*-aout*)
	tm_file="sparc/sparc.h aoutos.h sparc/aout.h sparc/sp64-aout.h"
	;;
sparc64-*-elf*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h sparc/sol2.h sparc/sp64-elf.h"
	tmake_file="${tmake_file} sparc/t-crtfm"
	extra_parts="crtbegin.o crtend.o"
	;;
sparc64-*-freebsd*|ultrasparc-*-freebsd*)
	tm_file="${tm_file} ${fbsd_tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/freebsd.h"
	tmake_file="${tmake_file} sparc/t-crtfm"
	xmake_file=none
	case "x$with_cpu" in
		xultrasparc) ;;
		x) with_cpu=ultrasparc ;;
		*) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
	esac
	;;
sparc64-*-linux*)		# 64-bit SPARC's running GNU/Linux
	tmake_file="t-slibgcc-elf-ver t-linux sparc/t-linux64 sparc/t-crtfm"
	tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux64.h"
	;;
sparc64-*-netbsd*)
	tmake_file="${tmake_file} sparc/t-netbsd64"
	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"
	;;
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-strongarm-elf
	out_file=arm/arm.c
	md_file=arm/arm.md
	extra_modes=arm/arm-modes.def
	;;
strongarm-*-coff*)
	tm_file="arm/semi.h arm/aout.h arm/coff.h arm/strongarm-coff.h arm/arm.h"
	tmake_file=arm/t-strongarm-coff
	out_file=arm/arm.c
	md_file=arm/arm.md
	extra_modes=arm/arm-modes.def
	;;
strongarm-*-pe)
	tm_file="arm/semi.h arm/aout.h arm/coff.h arm/strongarm-coff.h arm/arm.h arm/pe.h arm/strongarm-pe.h"
	tmake_file=arm/t-strongarm-pe
	out_file=arm/arm.c
	md_file=arm/arm.md
	extra_modes=arm/arm-modes.def
	extra_objs=pe.o
	;;
thumb*-*-*)
	{ echo "config.gcc: error:
*** The Thumb targets have been deprecated.  The equivalent
*** ARM based toolchain can now generate Thumb instructions
*** when the -mthumb switch is given to the compiler." 1>&2; exit 1; }
	;;
v850-*-rtems*)
	xm_defines=POSIX
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file} v850/v850.h v850/rtems.h rtems.h"
	tmake_file="v850/t-v850 t-rtems"
	if test x$stabs = xyes
	then
		tm_file="${tm_file} dbx.h"
	fi
	use_collect2=no
	c_target_objs="v850-c.o"
	cxx_target_objs="v850-c.o"
	;;
v850e-*-*)
	target_cpu_default="TARGET_CPU_v850e"
	tm_file="dbxelf.h elfos.h svr4.h v850/v850.h"
	tm_p_file=v850/v850-protos.h
	tmake_file=v850/t-v850
	md_file=v850/v850.md
	out_file=v850/v850.c
	if test x$stabs = xyes
	then
		tm_file="${tm_file} dbx.h"
	fi
	use_collect2=no
	c_target_objs="v850-c.o"
	cxx_target_objs="v850-c.o"
	;;
v850-*-*)
	target_cpu_default="TARGET_CPU_generic"
	tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
	tmake_file=v850/t-v850
	if test x$stabs = xyes
	then
		tm_file="${tm_file} dbx.h"
	fi
	use_collect2=no
	c_target_objs="v850-c.o"
	cxx_target_objs="v850-c.o"
	;;
vax-*-bsd*)			# VAXen running BSD
	tm_file="${tm_file} vax/bsd.h"
	use_collect2=yes
	;;
vax-*-sysv*)			# VAXen running system V
	tm_file="${tm_file} vax/vaxv.h"
	xm_defines=POSIX
	;;
vax-*-netbsdelf*)
	tm_file="${tm_file} elfos.h netbsd.h netbsd-elf.h vax/elf.h vax/netbsd-elf.h"
	float_format=vax
	;;
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 ${tm_file}"
	use_collect2=yes
	;;
vax-*-ultrix*)			# VAXen running ultrix
	tm_file="${tm_file} vax/ultrix.h"
	;;
vax-*-vms*)			# VAXen running VMS
	xm_file=vax/xm-vms.h
	tm_file=vax/vms.h
	;;
vax-*-*)			# VAX default entry
	;;
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-xscale-elf
	out_file=arm/arm.c
	md_file=arm/arm.md
	extra_modes=arm/arm-modes.def
	;;
xscale-*-coff)
	tm_file="arm/semi.h arm/aout.h arm/coff.h arm/xscale-coff.h arm/arm.h"
	tmake_file=arm/t-xscale-coff
	out_file=arm/arm.c
	md_file=arm/arm.md
	extra_modes=arm/arm-modes.def
	;;
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
	tmake_file="stormy16/t-stormy16"
	extra_parts="crtbegin.o crtend.o"
	;;
xtensa-*-elf*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h xtensa/elf.h"
	with_newlib=yes
	tmake_file=xtensa/t-xtensa
	extra_parts="crtbegin.o crtend.o"
	fixincludes=Makefile.in # newlib headers should be OK
	;;
xtensa-*-linux*)
	tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h xtensa/linux.h"
	tmake_file="t-slibgcc-elf-ver t-linux xtensa/t-xtensa"
	;;
*)
	echo "*** Configuration $machine not supported" 1>&2
	exit 1
	;;
esac

case $machine in
*-*-sysv*)
	install_headers_dir=install-headers-cpio
	;;
esac

# Distinguish i[34567]86
# Also, do not run mips-tfile on MIPS if using gas.
# Process --with-cpu= for PowerPC/rs6000
target_cpu_default2=
case $machine in
i486-*-*)
	target_cpu_default2=TARGET_CPU_DEFAULT_i486
	;;
i586-*-*)
	case $target_alias in
		k6_2-*)
			target_cpu_default2=TARGET_CPU_DEFAULT_k6_2
			;;
		k6_3-*)
			target_cpu_default2=TARGET_CPU_DEFAULT_k6_3
			;;
		k6-*)
			target_cpu_default2=TARGET_CPU_DEFAULT_k6
			;;
		pentium_mmx-*|winchip_c6-*|winchip2-*|c3-*)
			target_cpu_default2=TARGET_CPU_DEFAULT_pentium_mmx
			;;
		*)
			target_cpu_default2=TARGET_CPU_DEFAULT_pentium
			;;
	esac
	;;
i686-*-* | i786-*-*)
	case $target_alias in
		athlon_xp-*|athlon_mp-*|athlon_4-*)
			target_cpu_default2=TARGET_CPU_DEFAULT_athlon_sse
			;;
		athlon_tbird-*|athlon-*)
			target_cpu_default2=TARGET_CPU_DEFAULT_athlon
			;;
		pentium2-*)
			target_cpu_default2=TARGET_CPU_DEFAULT_pentium2
			;;
		pentium3-*)
			target_cpu_default2=TARGET_CPU_DEFAULT_pentium3
			;;
		pentium4-*)
			target_cpu_default2=TARGET_CPU_DEFAULT_pentium4
			;;
		*)
			target_cpu_default2=TARGET_CPU_DEFAULT_pentiumpro
			;;
	esac
	;;
x86_64-*-*)
	# We should have hammer chip here, but it does not exist yet and
	# thus it is not supported.  Athlon_SSE is probably equivalent feature
	# wise to hammer from our point of view except for 64bit mode.
	case "x$with_cpu" in
		x)
			target_cpu_default2=TARGET_CPU_DEFAULT_athlon_sse
			;;
		xnocona)
			target_cpu_default2=TARGET_CPU_DEFAULT_pentium4
			;;
		xyes|xno)
			echo "--with-cpu must be passed a value" 1>&2
			exit 1
			;;
		*)
			if test x$pass2done = xyes
			then
				echo "Unknown cpu used with --with-cpu=$with_cpu" 1>&2
				exit 1
			fi
			;;
	esac
	;;
alpha*-*-*)
	case $machine in
		alphaev6[78]*)
			target_cpu_default2="MASK_CPU_EV6|MASK_BWX|MASK_MAX|MASK_FIX|MASK_CIX"
			;;
		alphaev6*)
			target_cpu_default2="MASK_CPU_EV6|MASK_BWX|MASK_MAX|MASK_FIX"
			;;
		alphapca56*)
			target_cpu_default2="MASK_CPU_EV5|MASK_BWX|MASK_MAX"
			;;
		alphaev56*)
			target_cpu_default2="MASK_CPU_EV5|MASK_BWX"
			;;
		alphaev5*)
			target_cpu_default2="MASK_CPU_EV5"
			;;
	esac

	if test x$gas = xyes
	then
		if test "$target_cpu_default2" = ""
		then
			target_cpu_default2="MASK_GAS"
		else
			target_cpu_default2="${target_cpu_default2}|MASK_GAS"
		fi
	fi
	;;
arm*-*-*)
	case "x$with_cpu" in
		x)
			# The most generic
			target_cpu_default2="TARGET_CPU_generic"
			;;

		# Distinguish cores, and major variants
		# arm7m doesn't exist, but D & I don't affect code
		xarm[236789] | xarm250 | xarm[67][01]0 \
		| xarm7m | xarm7dm | xarm7dmi | xarm[79]tdmi \
		| xarm7100 | xarm7500 | xarm7500fe | xarm810 \
		| xxscale \
		| xstrongarm | xstrongarm110 | xstrongarm1100)
			target_cpu_default2="TARGET_CPU_$with_cpu"
			;;

		xyes | xno)
			echo "--with-cpu must be passed a value" 1>&2
			exit 1
			;;

		*)
			if test x$pass2done = xyes
			then
				echo "Unknown cpu used with --with-cpu=$with_cpu" 1>&2
				exit 1
			fi
			;;
	esac
	;;

hppa*-*-* | parisc*-*-*)
	if test x$gas = xyes
	then
		target_cpu_default2="MASK_GAS|MASK_JUMP_IN_DELAY"
	fi
	case $machine in
		hppa1* | parisc1*)
			tm_defines="TARGET_SCHED_DEFAULT=\\\"7100LC\\\""
			;;
	esac
	;;
mips*-*-*)
	case $machine in
	mips*-*-ecoff* | mips*-*-elf*)
		if test x$gas = xyes
		then
			if test x$gnu_ld = xyes
			then
				target_cpu_default2="MASK_GAS|MASK_SPLIT_ADDR"
			else
				target_cpu_default2="MASK_GAS"
			fi
		fi
		;;
	mips*-*-*)
		if test x$gas = xyes
		then
			target_cpu_default2="MASK_GAS"
		fi
		;;
	esac
	case $machine in
		mips*el-*-*)
			tm_defines="TARGET_ENDIAN_DEFAULT=0 $tm_defines"
			;;
	esac
	case $tm_file in
		*mips/elf.h* | *mips/elf64.h*)
			tm_defines="OBJECT_FORMAT_ELF $tm_defines"
			;;
	esac
	if test "x$enable_gofast" = xyes
	then
		tm_defines="INIT_SUBTARGET_OPTABS=INIT_GOFAST_OPTABS $tm_defines"
		tm_file="gofast.h $tm_file"
		tmake_file="mips/t-gofast $tmake_file"
	else
		tmake_file="mips/t-mips $tmake_file"
	fi
	;;
powerpc*-*-* | rs6000-*-*)
        if test x$enable_altivec = xyes
        then
                tm_file="$tm_file rs6000/altivec-defs.h"
        fi
	case "x$with_cpu" in
		x)
			;;

		xcommon | xpower | xpower2 | xpower3 | xpowerpc | xpowerpc64 \
		  | xrios | xrios1 | xrios2 | xrsc | xrsc1 | xrs64a \
		  | x601 | x602 | x603 | x603e | x604 | x604e | x620 | x630 \
		  | x740 | x750 | x7400 | x7450 | x505)
			target_cpu_default2="\\\"$with_cpu\\\""
			;;

		x401 | x403 | x405 | xec603e | x801 | x821 | x823 | x860)
			target_cpu_default2="\\\"$with_cpu\\\""
			;;

		xyes | xno)
			echo "--with-cpu must be passed a value" 1>&2
			exit 1
			;;

		*)
			if test x$pass2done = xyes
			then
				echo "Unknown cpu used with --with-cpu=$with_cpu" 1>&2
				exit 1
			fi
			;;
	esac
	c_target_objs="${c_target_objs} rs6000-c.o"
	cxx_target_objs="${cxx_target_objs} rs6000-c.o"
	tmake_file="${tmake_file} rs6000/t-rs6000-c-rule"
	;;
sparc*-*-*)
	case ".$with_cpu" in
		.)
			target_cpu_default2=TARGET_CPU_"`echo $machine | sed 's/-.*$//'`"
			;;
		.supersparc | .hypersparc | .ultrasparc | .v7 | .v8 | .v9)
			target_cpu_default2="TARGET_CPU_$with_cpu"
			;;
		*)
			if test x$pass2done = xyes
			then
				echo "Unknown cpu used with --with-cpu=$with_cpu" 1>&2
				exit 1
			fi
			;;
	esac
	;;
v850*-*-*)
	case "x$with_cpu" in
		x)
			;;
		xv850e)
			target_cpu_default2="TARGET_CPU_$with_cpu"
			;;
		*)
			if test x$pass2done = xyes
			then
				echo "Unknown cpu used with --with-cpu=$with_cpu" 1>&2
				exit 1
			fi
			;;
	esac
	;;
esac

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

# Save data on machine being used to compile GCC in build_xm_file.
# Save data on host machine in vars host_xm_file and host_xmake_file.
if test x$pass1done = x
then
	if test x$xm_file != x
	then build_xm_file=$xm_file
	fi
	build_xm_defines=$xm_defines
	build_install_headers_dir=$install_headers_dir
	build_exeext=$exeext
	pass1done=yes
else
	if test x$pass2done = x
	then
		if test x$xm_file != x
		then host_xm_file=$xm_file
		fi
		host_xm_defines=$xm_defines
		host_xmake_file="$xmake_file"
		host_truncate_target=$truncate_target
		host_extra_gcc_objs=$extra_gcc_objs
		host_extra_objs=$extra_host_objs
		host_exeext=$exeext
		pass2done=yes
	fi
fi
