# configure.in for GNU CC
# Process this file with autoconf to generate a configuration script.

# Copyright (C) 1997 Free Software Foundation, Inc.

#This file is part of GNU CC.

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

#GNU CC 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 GNU CC; see the file COPYING.  If not, write to
#the Free Software Foundation, 59 Temple Place - Suite 330,
#Boston, MA 02111-1307, USA.

# Initialization and defaults
AC_INIT(tree.c)
AC_CONFIG_HEADER(config.h:config.in)

native_prefix=/usr
remove=rm
hard_link=ln
symbolic_link='ln -s'
copy=cp

# Check for additional parameters

# With GNU ld
AC_ARG_WITH(gnu-ld,
[  --with-gnu-ld           arrange to work with GNU ld.],
gnu_ld=yes,
gnu_ld=no)

# With GNU as
AC_ARG_WITH(gnu-as,
[  --with-gnu-as           arrange to work with GNU as.],
gas=yes,
gas=no)

# With stabs
AC_ARG_WITH(stabs,
[  --with-stabs            arrange to use stabs instead of host debug format.],
stabs=yes,
stabs=no)

# With ELF
AC_ARG_WITH(elf,
[  --with-elf              arrange to use ELF instead of host debug format.],
elf=yes,
elf=no)

# Specify the local prefix
AC_ARG_WITH(local-prefix,
[  --with-local-prefix=DIR specifies directory to put local include.],
local_prefix=$with_local_prefix,
local_prefix=/usr/local)

# Default local prefix if it is empty
if [[ x$local_prefix = x ]]; then
	local_prefix=/usr/local
fi

# Specify the g++ header file directory
AC_ARG_WITH(gxx-include-dir,
[  --with-gxx-include-dir=DIR
                          specifies directory to put g++ header files.],
gxx_include_dir=$with_gxx_include_dir,
gxx_include_dir='${prefix}/include/g++')

# Default g++ header file directory if it is empty
if [[ x$gxx_include_dir = x ]]; then
	gxx_include_dir='${prefix}/include/g++'
fi

# Enable use of cpplib for C.
AC_ARG_ENABLE(c-cpplib,
[  --enable-c-cpplib       Use cpplib for C.],
if [[[ x$enable_c_cpplib != xno ]]]; then
  extra_c_objs="${extra_c_objs} cpplib.o cppexp.o cpphash.o cpperror.o"
  extra_c_flags=-DUSE_CPPLIB=1
fi)

# Enable threads
# Pass with no value to take the default
# Pass with a value to specify a thread package
AC_ARG_ENABLE(threads,
[  --enable-threads        enable thread usage for target GCC.
  --enable-threads=LIB    use LIB thread package for target GCC.],
if [[[ x$enable_threads = xno ]]]; then
	enable_threads=''
fi,
enable_threads='')

# Check if a valid thread package
case x${enable_threads} in
	x | xno)
		# No threads
		thread_file='single'
		;;
	xyes)
		# default
		thread_file=''
		;;
	xdecosf1 | xirix | xmach | xos2 | xposix | xpthreads | xsingle | \
	xsolaris | xwin32)
		thread_file=$enable_threads
		;;
	*)
		echo "$enable_threads is an unknown thread package" 1>&2
		exit 1
		;;
esac

# Determine the host, build, and target systems
AC_CANONICAL_SYSTEM

# Find some useful tools
AC_PROG_AWK
AC_PROG_LEX
AC_PROG_LN_S
AC_PROG_RANLIB
AC_PROG_YACC
AC_PROG_INSTALL

# Find the native compiler
AC_PROG_CC
AC_PROG_MAKE_SET

AC_CHECK_HEADERS(stddef.h string.h strings.h stdlib.h time.h unistd.h)

GCC_NEED_DECLARATION(malloc)
GCC_NEED_DECLARATION(realloc)
GCC_NEED_DECLARATION(free)

# File extensions
manext='.1'
objext='.o'
AC_SUBST(manext)
AC_SUBST(objext)

build_xm_file=
build_broken_install=
build_install_headers_dir=install-headers-tar
build_exeext=
host_xm_file=
host_xmake_file=
host_truncate_target=

# Decode the host machine, then the target machine.
# For the host machine, we save the xm_file variable as host_xm_file;
# then we decode the target machine and forget everything else
# that came from the host machine.
for machine in $build $host $target; do

	out_file=
	xmake_file=
	tmake_file=
	extra_headers=
	extra_passes=
	extra_parts=
	extra_programs=
	extra_objs=
	extra_host_objs=
	extra_gcc_objs=
	float_format=
	# 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 force use of install.sh.
	broken_install=
	# Set this to control which fixincludes program to use.
	fixincludes=fixincludes
	# Set this to control how the header file directory is installed.
	install_headers_dir=install-headers-tar
	# Set this to a non-empty list of args to pass to cpp if the target
	# wants its .md file passed through cpp.
	md_cppflags=
	# 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 default cpu_type, tm_file and xm_file so it can be updated in
	# each machine entry.
	cpu_type=`echo $machine | sed 's/-.*$//'`
	case $machine in
	alpha*-*-*)
		cpu_type=alpha
		;;
	arm*-*-*)
		cpu_type=arm
		;;
	c*-convex-*)
		cpu_type=convex
		;;
	i[[3456]]86-*-*)
		cpu_type=i386
		;;
	hppa*-*-*)
		cpu_type=pa
		;;
	m68000-*-*)
		cpu_type=m68k
		;;
	mips*-*-*)
		cpu_type=mips
		;;
	powerpc*-*-*)
		cpu_type=rs6000
		;;
	pyramid-*-*)
		cpu_type=pyr
		;;
	sparc*-*-*)
		cpu_type=sparc
		;;
	esac

	tm_file=${cpu_type}/${cpu_type}.h
	xm_file=${cpu_type}/xm-${cpu_type}.h
	
	case $machine in
	# Support site-specific machine types.
	*local*)
		cpu_type=`echo $machine | sed -e 's/-.*//'`
		rest=`echo $machine | sed -e "s/$cpu_type-//"`
		xm_file=${cpu_type}/xm-$rest.h
		tm_file=${cpu_type}/$rest.h
		if [[ -f $srcdir/config/${cpu_type}/x-$rest ]] ; \
		then xmake_file=${cpu_type}/x-$rest; \
		else true; \
		fi
		if [[ -f $srcdir/config/${cpu_type}/t-$rest ]] ; \
		then tmake_file=${cpu_type}/t-$rest; \
		else true; \
		fi
		;;
	1750a-*-*)
		;;
	a29k-*-bsd* | a29k-*-sym1*)
		tm_file="${tm_file} a29k/unix.h"
		xm_file=a29k/xm-unix.h
		xmake_file=a29k/x-unix
		use_collect2=yes
		;;
	a29k-*-udi | a29k-*-coff)
		tm_file="${tm_file} dbxcoff.h a29k/udi.h"
		tmake_file=a29k/t-a29kbare
		;;
	a29k-*-vxworks*)
		tm_file="${tm_file} dbxcoff.h a29k/udi.h a29k/vx29k.h"
		tmake_file=a29k/t-vx29k
		extra_parts="crtbegin.o crtend.o"
		;;
	a29k-*-*)			# Default a29k environment.
		use_collect2=yes
		;;
	alpha*-*-linux-gnuecoff*)
		tm_file="${tm_file} alpha/linux.h"
		xm_file="${xm_file} alpha/xm-linux.h"
		target_cpu_default="MASK_GAS"
		gas=no
		xmake_file=none
		fixincludes=Makefile.in
		gas=yes gnu_ld=yes
		;;
	alpha*-*-linux-gnu*)
		tm_file="${tm_file} alpha/linux.h alpha/elf.h"
		xm_file="${xm_file} alpha/xm-linux.h"
		target_cpu_default="MASK_GAS"
		gas=no
		tmake_file="t-linux alpha/t-linux"
		xmake_file=none
		fixincludes=Makefile.in
		extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
		gas=yes gnu_ld=yes
 		if [[ x$enable_threads = xyes ]]; then
 			thread_file='posix'
 		fi
		;;
	alpha*-dec-osf[[456789]]*)
		if [[ x$stabs = xyes ]]
		then
			tm_file="${tm_file} dbx.h"
		fi
		if [[ x$gas != xyes ]]
		then
			extra_passes="mips-tfile mips-tdump"
		fi
		broken_install=yes
		use_collect2=yes
		# Some versions of OSF4 (specifically X4.0-9 296.7) have
		# a broken tar, so we use cpio instead.
		case $machine in
		  alpha*-dec-osf4*)
		    install_headers_dir=install-headers-cpio
		    ;;
		esac
		;;
	alpha*-dec-osf[[23]]*)
		tm_file="${tm_file} alpha/osf2or3.h"
		if [[ x$stabs = xyes ]]
		then
			tm_file="${tm_file} dbx.h"
		fi
		if [[ x$gas != xyes ]]
		then
			extra_passes="mips-tfile mips-tdump"
		fi
		broken_install=yes
		use_collect2=yes
		;;
	alpha*-dec-osf1.2)
		tm_file="${tm_file} alpha/osf12.h"
		if [[ x$stabs = xyes ]]
		then
			tm_file="${tm_file} dbx.h"
		fi
		if [[ x$gas != xyes ]]
		then
			extra_passes="mips-tfile mips-tdump"
		fi
		broken_install=yes
		use_collect2=yes
		;;
	alpha*-*-osf*)
		if [[ x$stabs = xyes ]]
		then
			tm_file="${tm_file} dbx.h"
		fi
		if [[ x$gas != xyes ]]
		then
			extra_passes="mips-tfile mips-tdump"
		fi
		broken_install=yes
		use_collect2=yes
		;;
	alpha*-*-winnt3*)
		tm_file="${tm_file} alpha/win-nt.h"
		target_cpu_default=MASK_WINDOWS_NT
		xm_file="${xm_file} config/winnt/xm-winnt.h alpha/xm-winnt.h"
		tmake_file=t-libc-ok
		xmake_file=winnt/x-winnt
		extra_host_objs=oldnames.o
		extra_gcc_objs="spawnv.o oldnames.o"
		fixincludes=fixinc.winnt
		if [[ x$gnu_ld != xyes ]]
		then
			extra_programs=ld.exe
		fi
 		if [[ x$enable_threads = xyes ]]; then
			thread_file='win32'
		fi
		;;
	alpha*-dec-vms*)
		tm_file=alpha/vms.h
		xm_file="${xm_file} alpha/xm-vms.h"
		tmake_file=alpha/t-vms
		fixincludes=Makefile.in
		;;
	arm-*-coff* | armel-*-coff*)
		tm_file=arm/coff.h
		tmake_file=arm/t-bare
		;;
	arm-*-riscix1.[[01]]*)		# Acorn RISC machine (early versions)
		tm_file=arm/riscix1-1.h
		use_collect2=yes
		;;
	arm-*-riscix*)			# Acorn RISC machine
		if [[ x$gas = xyes ]]
		then
		    tm_file=arm/rix-gas.h
		else
		    tm_file=arm/riscix.h
		fi
		xmake_file=arm/x-riscix
		tmake_file=arm/t-riscix
		use_collect2=yes
		;;
	arm-semi-aout | armel-semi-aout)
		tm_file=arm/semi.h
		tmake_file=arm/t-semi
		fixincludes=Makefile.in # There is nothing to fix
		;;
	arm-semi-aof | armel-semi-aof)
		tm_file=arm/semiaof.h
		tmake_file=arm/t-semiaof
		fixincludes=Makefile.in # There is nothing to fix
		;;
	arm-*-netbsd*)
		tm_file=arm/netbsd.h
		xm_file=arm/xm-netbsd.h
		tmake_file=arm/t-netbsd
		# On NetBSD, the headers are already okay.
		fixincludes=Makefile.in
		use_collect2=yes
		;;
	arm-*-linux-gnuaout*)		# ARM Linux
		cpu_type=arm
		xm_file=arm/xm-linux.h
		xmake_file=x-linux
		tm_file=arm/linux-gas.h
		tmake_file=arm/t-linux
		fixincludes=Makefile.in
		broken_install=yes
		gnu_ld=yes
		;;
	arm-*-aout)
		tm_file=arm/aout.h
		;;
	c1-convex-*)			# Convex C1
		target_cpu_default=1
		use_collect2=yes
		fixincludes=Makefile.in
		;;
	c2-convex-*)			# Convex C2
		target_cpu_default=2
		use_collect2=yes
		fixincludes=Makefile.in
		;;
	c32-convex-*)
		target_cpu_default=4
		use_collect2=yes
		fixincludes=Makefile.in
		;;
	c34-convex-*)
		target_cpu_default=8
		use_collect2=yes
		fixincludes=Makefile.in
		;;
	c38-convex-*)
		target_cpu_default=16		
		use_collect2=yes
		fixincludes=Makefile.in
		;;
	clipper-intergraph-clix*)
		tm_file="${tm_file} svr3.h clipper/clix.h"
		xm_file=clipper/xm-clix.h
		xmake_file=clipper/x-clix
		extra_headers=va-clipper.h
		extra_parts="crtbegin.o crtend.o"
		install_headers_dir=install-headers-cpio
		broken_install=yes
		;;
	dsp16xx-*)
		;;
	elxsi-elxsi-*)
		use_collect2=yes
		;;
# This hasn't been upgraded to GCC 2.
#	fx80-alliant-*)			# Alliant FX/80
#		;;
	h8300-*-*)
		float_format=i32
		;;
	hppa1.1-*-pro*)
		tm_file="pa/pa-pro.h ${tm_file} pa/pa-pro-end.h libgloss.h"
		xm_file=pa/xm-papro.h
		tmake_file=pa/t-pro
		;;
	hppa1.1-*-osf*)
		target_cpu_default=1
		tm_file="${tm_file} pa/pa-osf.h"
		use_collect2=yes
		fixincludes=Makefile.in
		;;
	hppa1.1-*-rtems*)
		tm_file="pa/pa-pro.h ${tm_file} pa/pa-pro-end.h libgloss.h pa/rtems.h"
		xm_file=pa/xm-papro.h
		tmake_file=pa/t-pro
		;;
	hppa1.0-*-osf*)
		tm_file="${tm_file} pa/pa-osf.h"
		use_collect2=yes
		fixincludes=Makefile.in
		;;
	hppa1.1-*-bsd*)
		target_cpu_default=1
		use_collect2=yes
		fixincludes=Makefile.in
		;;
	hppa1.0-*-bsd*)
		use_collect2=yes
		fixincludes=Makefile.in
		;;
	hppa1.0-*-hpux7*)
		tm_file="pa/pa-oldas.h ${tm_file} pa/pa-hpux7.h"
		xm_file=pa/xm-pahpux.h
		xmake_file=pa/x-pa-hpux
		if [[ x$gas = xyes ]]
		then
			tm_file="${tm_file} pa/gas.h"
		fi
		broken_install=yes
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa1.0-*-hpux8.0[[0-2]]*)
		tm_file="${tm_file} pa/pa-hpux.h"
		xm_file=pa/xm-pahpux.h
		xmake_file=pa/x-pa-hpux
		if [[ x$gas = xyes ]]
		then
			tm_file="${tm_file} pa/pa-gas.h"
		else
			tm_file="pa/pa-oldas.h ${tm_file}"
		fi
		broken_install=yes
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa1.1-*-hpux8.0[[0-2]]*)
		target_cpu_default=1
		tm_file="${tm_file} pa/pa-hpux.h"
		xm_file=pa/xm-pahpux.h
		xmake_file=pa/x-pa-hpux
		if [[ x$gas = xyes ]]
		then
			tm_file="${tm_file} pa/pa-gas.h"
		else
			tm_file="pa/pa-oldas.h ${tm_file}"
		fi
		broken_install=yes
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa1.1-*-hpux8*)
		target_cpu_default=1
		tm_file="${tm_file} pa/pa-hpux.h"
		xm_file=pa/xm-pahpux.h
		xmake_file=pa/x-pa-hpux
		if [[ x$gas = xyes ]]
		then
			tm_file="${tm_file} pa/pa-gas.h"
		fi
		broken_install=yes
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa1.0-*-hpux8*)
		tm_file="${tm_file} pa/pa-hpux.h"
		xm_file=pa/xm-pahpux.h
		xmake_file=pa/x-pa-hpux
		if [[ x$gas = xyes ]]
		then
			tm_file="${tm_file} pa/pa-gas.h"
		fi
		broken_install=yes
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa1.1-*-hpux10*)
		target_cpu_default=1
		tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux10.h"
		xm_file=pa/xm-pahpux.h
		xmake_file=pa/x-pa-hpux
		if [[ x$gas = xyes ]]
		then
			tm_file="${tm_file} pa/pa-gas.h"
		fi
		broken_install=yes
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa1.0-*-hpux10*)
		tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux10.h"
		xm_file=pa/xm-pahpux.h
		xmake_file=pa/x-pa-hpux
		if [[ x$gas = xyes ]]
		then
			tm_file="${tm_file} pa/pa-gas.h"
		fi
		broken_install=yes
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa1.1-*-hpux*)
		target_cpu_default=1
		tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux9.h"
		xm_file=pa/xm-pahpux.h
		xmake_file=pa/x-pa-hpux
		if [[ x$gas = xyes ]]
		then
			tm_file="${tm_file} pa/pa-gas.h"
		fi
		broken_install=yes
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa1.0-*-hpux*)
		tm_file="${tm_file} pa/pa-hpux.h pa/pa-hpux9.h"
		xm_file=pa/xm-pahpux.h
		xmake_file=pa/x-pa-hpux
		if [[ x$gas = xyes ]]
		then
			tm_file="${tm_file} pa/pa-gas.h"
		fi
		broken_install=yes
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa1.1-*-hiux*)
		target_cpu_default=1
		tm_file="${tm_file} pa/pa-hpux.h pa/pa-hiux.h"
		xm_file=pa/xm-pahpux.h
		xmake_file=pa/x-pa-hpux
		if [[ x$gas = xyes ]]
		then
			tm_file="${tm_file} pa/pa-gas.h"
		fi
		broken_install=yes
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa1.0-*-hiux*)
		tm_file="${tm_file} pa/pa-hpux.h pa/pa-hiux.h"
		xm_file=pa/xm-pahpux.h
		xmake_file=pa/x-pa-hpux
		if [[ x$gas = xyes ]]
		then
			tm_file="${tm_file} pa/pa-gas.h"
		fi
		broken_install=yes
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa*-*-lites*)
		target_cpu_default=1
		use_collect2=yes
		fixincludes=Makefile.in
		;;
	i370-*-mvs*)
		;;
	i[[3456]]86-ibm-aix*)		# IBM PS/2 running AIX
                if [[ x$gas = xyes ]]
		then
			tm_file=i386/aix386.h
			extra_parts="crtbegin.o crtend.o"
			tmake_file=i386/t-crtstuff
		else
			tm_file=i386/aix386ng.h
			use_collect2=yes
		fi
		xm_file=i386/xm-aix.h
		xmake_file=i386/x-aix
		broken_install=yes
		;;
	i486-ncr-sysv4*)		# NCR 3000 - i486 running system V.4
		xm_file=i386/xm-sysv4.h
		xmake_file=i386/x-ncr3000
		if [[ x$stabs = xyes -a x$gas = xyes ]]
		then
			tm_file=i386/sysv4gdb.h
		else
			tm_file=i386/sysv4.h
		fi
		extra_parts="crtbegin.o crtend.o"
		tmake_file=i386/t-crtpic
		;;
	i[[3456]]86-next-*)
		tm_file=i386/next.h
		xm_file=i386/xm-next.h
		tmake_file=i386/t-next
		xmake_file=i386/x-next
		extra_objs=nextstep.o
 		if [[ x$enable_threads = xyes ]]; then
			thread_file='mach'
		fi
		;;
	i[[3456]]86-sequent-bsd*) 		# 80386 from Sequent
		use_collect2=yes
		if [[ x$gas = xyes ]]
		then
			tm_file=i386/seq-gas.h
		else
			tm_file=i386/sequent.h
		fi
		;;
	i[[3456]]86-sequent-ptx1*)
		xm_file=i386/xm-sysv3.h
		xmake_file=i386/x-sysv3
		tm_file=i386/seq-sysv3.h
		tmake_file=i386/t-crtstuff
		fixincludes=fixinc.ptx
		extra_parts="crtbegin.o crtend.o"
		install_headers_dir=install-headers-cpio
		broken_install=yes
		;;
	i[[3456]]86-sequent-ptx2* | i[[3456]]86-sequent-sysv3*)
		xm_file=i386/xm-sysv3.h
		xmake_file=i386/x-sysv3
		tm_file=i386/seq2-sysv3.h
		tmake_file=i386/t-crtstuff
		extra_parts="crtbegin.o crtend.o"
		fixincludes=fixinc.ptx
		install_headers_dir=install-headers-cpio
		broken_install=yes
		;;
	i[[3456]]86-sequent-ptx4* | i[[3456]]86-sequent-sysv4*)
		xm_file=i386/xm-sysv4.h
		xmake_file=x-svr4
		tm_file=i386/ptx4-i.h
		tmake_file=t-svr4
		extra_parts="crtbegin.o crtend.o"
		fixincludes=fixinc.ptx
		install_headers_dir=install-headers-cpio
		broken_install=yes
		;;
	i386-sun-sunos*)		# Sun i386 roadrunner
		xm_file=i386/xm-sun.h
		tm_file=i386/sun.h
		use_collect2=yes
		;;
	i[[3456]]86-*-aout*)
		tm_file=i386/i386-aout.h
		tmake_file=i386/t-i386bare
		;;
	i[[3456]]86-*-bsdi* | i[[345]]86-*-bsd386*)
		tm_file=i386/bsd386.h
		xm_file=i386/xm-bsd386.h
#		tmake_file=t-libc-ok
		;;
	i[[3456]]86-*-bsd*)
		tm_file=i386/386bsd.h
		xm_file=i386/xm-bsd386.h
#		tmake_file=t-libc-ok
# Next line turned off because both 386BSD and BSD/386 use GNU ld.
#		use_collect2=yes
		;;
	i[[3456]]86-*-freebsdelf*)
		tm_file="i386/i386.h i386/att.h linux.h i386/freebsd-elf.h i386/perform.h"
		xm_file=i386/xm-freebsd.h
		# On FreeBSD, the headers are already ok.
		fixincludes=Makefile.in
		tmake_file=i386/t-freebsd
		gas=yes
		gnu_ld=yes
		stabs=yes
		;;
	i[[3456]]86-*-freebsd*)
		tm_file=i386/freebsd.h
		xm_file=i386/xm-freebsd.h
		# On FreeBSD, the headers are already ok.
		fixincludes=Makefile.in
		tmake_file=i386/t-freebsd
		;;
	i[[3456]]86-*-netbsd*)
		tm_file=i386/netbsd.h
		xm_file=i386/xm-netbsd.h
		# On NetBSD, the headers are already okay.
		fixincludes=Makefile.in
		tmake_file=t-netbsd
		;;
	i[[3456]]86-*-coff*)
		tm_file=i386/i386-coff.h
		tmake_file=i386/t-i386bare
		;;
	i[[3456]]86-*-isc*)		# 80386 running ISC system
		xm_file=i386/xm-isc.h
		case $machine in
		  i[[345]]86-*-isc[[34]]*)
		    xmake_file=i386/x-isc3
		    ;;
		  *)
		    xmake_file=i386/x-isc
		    ;;
		esac
                if [[ x$gas = xyes -a x$stabs = xyes ]]
		then
			tm_file=i386/iscdbx.h
			tmake_file=i386/t-svr3dbx
			extra_parts="svr3.ifile svr3z.ifile"
		else
			tm_file=i386/isccoff.h
			tmake_file=i386/t-crtstuff
			extra_parts="crtbegin.o crtend.o"
		fi
		install_headers_dir=install-headers-cpio
		broken_install=yes
		;;
	i[[3456]]86-*-linux-gnuoldld*)	# Intel 80386's running Linux
		xm_file=i386/xm-linux.h # with a.out format using pre BFD linkers
		xmake_file=x-linux-aout
		tmake_file="t-linux-aout i386/t-crtstuff"
		tm_file=i386/linux-oldld.h
		fixincludes=Makefile.in #On Linux, the headers are ok already.
		broken_install=yes
		gnu_ld=yes
		;;
	i[[3456]]86-*-linux-gnuaout*)		# Intel 80386's running Linux
		xm_file=i386/xm-linux.h		# with a.out format
		xmake_file=x-linux-aout
		tmake_file="t-linux-aout i386/t-crtstuff"
		tm_file=i386/linux-aout.h
		fixincludes=Makefile.in #On Linux, the headers are ok already.
		broken_install=yes
		gnu_ld=yes
		;;
	i[[3456]]86-*-linux-gnulibc1)
		xm_file=i386/xm-linux.h	# Intel 80386's running Linux
		xmake_file=x-linux	# with ELF format using the
		tm_file=i386/linux.h	# Linux C library 5
		tmake_file="t-linux t-linux-gnulibc1 i386/t-crtstuff"
		extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
		fixincludes=Makefile.in #On Linux, the headers are ok already.
		broken_install=yes
		gnu_ld=yes
 		if [[ x$enable_threads = xyes ]]; then
 			thread_file='single'
 		fi
		;;
	i[[3456]]86-*-linux-gnu*)		# Intel 80386's running Linux
		xm_file=i386/xm-linux.h # with ELF format using glibc 2
		xmake_file=x-linux	# aka Linux C library 6
		tm_file=i386/linux.h
		tmake_file="t-linux i386/t-crtstuff"
		extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
		fixincludes=Makefile.in #On Linux, the headers are ok already.
		broken_install=yes
		gnu_ld=yes
 		if [[ x$enable_threads = xyes ]]; then
 			thread_file='posix'
 		fi
		;;
	i[[3456]]86-*-gnu*)
		;;
	i[[3456]]86-go32-msdos | i[[3456]]86-*-go32*)
		xm_file=i386/xm-go32.h
		tm_file=i386/go32.h
		tmake_file=i386/t-go32
		;;
	i[[3456]]86-moss-msdos* | i[[3456]]86-*-moss*)
		tm_file=i386/moss.h
		tmake_file=t-libc-ok
		fixincludes=Makefile.in
		gnu_ld=yes
		gas=yes
		;;
	i[[3456]]86-*-lynxos*)
		if [[ x$gas = xyes ]]
		then
			tm_file=i386/lynx.h
		else
			tm_file=i386/lynx-ng.h
		fi
		xm_file=i386/xm-lynx.h
		tmake_file=i386/t-i386bare
		xmake_file=x-lynx
		;;
	i[[3456]]86-*-mach*)
		tm_file=i386/mach.h
#		tmake_file=t-libc-ok
		use_collect2=yes
		;;
	i[[3456]]86-*-osfrose*)		# 386 using OSF/rose
                if [[ x$elf = xyes ]]
		then
			tm_file=i386/osfelf.h
			use_collect2=
		else
			tm_file=i386/osfrose.h
			use_collect2=yes
		fi
		xm_file=i386/xm-osf.h
		xmake_file=i386/x-osfrose
		tmake_file=i386/t-osf
		extra_objs=halfpic.o
		;;
	i[[345]]86-go32-rtems*)
		cpu_type=i386
		xm_file=i386/xm-go32.h
		tm_file=i386/go32-rtems.h
		tmake_file="i386/t-go32 t-rtems"
		;;
	i[[345]]86-*-rtems*)
		cpu_type=i386
		tm_file=i386/rtems.h
		tmake_file="i386/t-i386bare t-rtems"
		;;
	i[[3456]]86-*-sco3.2v5*)		# 80386 running SCO Open Server 5
		xm_file=i386/xm-sco5.h
		xmake_file=i386/x-sco5
		fixincludes=fixinc.sco
		broken_install=yes
		tm_file=i386/sco5.h
		tmake_file=i386/t-sco5
		extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
		;;
	i[[3456]]86-*-sco3.2v4*)	 	# 80386 running SCO 3.2v4 system
		xm_file=i386/xm-sco.h
		xmake_file=i386/x-sco4
		fixincludes=fixinc.sco
		broken_install=yes
		install_headers_dir=install-headers-cpio
                if [[ x$stabs = xyes ]]
		then
			tm_file=i386/sco4dbx.h
			tmake_file=i386/t-svr3dbx
			extra_parts="svr3.ifile svr3z.rfile"
		else
			tm_file=i386/sco4.h
			tmake_file=i386/t-crtstuff
			extra_parts="crtbegin.o crtend.o"
		fi
		truncate_target=yes
		;;
	i[[3456]]86-*-sco*)	 	# 80386 running SCO system
		xm_file=i386/xm-sco.h
		xmake_file=i386/x-sco
		broken_install=yes
		install_headers_dir=install-headers-cpio
                if [[ x$stabs = xyes ]]
		then
			tm_file=i386/scodbx.h
			tmake_file=i386/t-svr3dbx
			extra_parts="svr3.ifile svr3z.rfile"
		else
			tm_file=i386/sco.h
			extra_parts="crtbegin.o crtend.o"
			tmake_file=i386/t-crtstuff
		fi
		truncate_target=yes
		;;
	i[[3456]]86-*-solaris2*)
		xm_file=i386/xm-sysv4.h
		if [[ x$stabs = xyes ]]
		then
			tm_file=i386/sol2dbg.h
		else
			tm_file=i386/sol2.h
		fi
		tmake_file=i386/t-sol2
		extra_parts="crt1.o crti.o crtn.o crtbegin.o crtend.o"
		xmake_file=x-svr4
		fixincludes=fixinc.svr4
		broken_install=yes
 		if [[ x$enable_threads = xyes ]]; then
			thread_file='solaris'
		fi
		;;
	i[[3456]]86-*-sysv4*)		# Intel 80386's running system V.4
		xm_file=i386/xm-sysv4.h
		tm_file=i386/sysv4.h
		if [[ x$stabs = xyes ]]
		then
			tm_file="${tm_file} dbx.h"
		fi
		tmake_file=i386/t-crtpic
		xmake_file=x-svr4
		extra_parts="crtbegin.o crtend.o"
		;;
	i[[3456]]86-*-sysv*)		# Intel 80386's running system V
		xm_file=i386/xm-sysv3.h
		xmake_file=i386/x-sysv3
		if [[ x$gas = xyes ]]
		then
			if [[ x$stabs = xyes ]]
			then
				tm_file=i386/svr3dbx.h
				tmake_file=i386/t-svr3dbx
				extra_parts="svr3.ifile svr3z.rfile"
			else
				tm_file=i386/svr3gas.h
				extra_parts="crtbegin.o crtend.o"
				tmake_file=i386/t-crtstuff
			fi
		else
			tm_file=i386/sysv3.h
			extra_parts="crtbegin.o crtend.o"
			tmake_file=i386/t-crtstuff
		fi
		;;
	i386-*-vsta)			# Intel 80386's running VSTa kernel
		xm_file=i386/xm-vsta.h
		tm_file=i386/vsta.h
		tmake_file=i386/t-vsta
		xmake_file=i386/x-vsta
		;;
	i[[3456]]86-*-pe | i[[3456]]86-*-cygwin32)
		xm_file="${xm_file} i386/xm-cygwin32.h"
		tmake_file=i386/t-cygwin32
		tm_file=i386/cygwin32.h
		xmake_file=i386/x-cygwin32
		extra_objs=winnt.o
		fixincludes=Makefile.in
 		if [[ x$enable_threads = xyes ]]; then
			thread_file='win32'
		fi
		exeext=.exe
		;;
	i[[3456]]86-*-mingw32)
		tm_file=i386/mingw32.h
		xm_file="${xm_file} i386/xm-mingw32.h"
		tmake_file=i386/t-cygwin32
		extra_objs=winnt.o
		xmake_file=i386/x-cygwin32
		fixincludes=Makefile.in
 		if [[ x$enable_threads = xyes ]]; then
			thread_file='win32'
		fi
		exeext=.exe
		;;
	i[[3456]]86-*-winnt3*)
		tm_file=i386/win-nt.h
		out_file=i386/i386.c
		xm_file=i386/xm-winnt.h
		xmake_file=winnt/x-winnt
		tmake_file=i386/t-winnt
		extra_host_objs="winnt.o oldnames.o"
		extra_gcc_objs="spawnv.o oldnames.o"
		fixincludes=fixinc.winnt
		if [[ x$gnu_ld != xyes ]]
		then
			extra_programs=ld.exe
		fi
 		if [[ x$enable_threads = xyes ]]; then
			thread_file='win32'
		fi
		;;
	i[[3456]]86-dg-dgux)
		xm_file=i386/xm-dgux.h
		out_file=i386/dgux.c
		tm_file=i386/dgux.h
		tmake_file=i386/t-dgux
		xmake_file=i386/x-dgux
		fixincludes=fixinc.dgux
		install_headers_dir=install-headers-cpio
              ;;
	i860-alliant-*)		# Alliant FX/2800
		tm_file="${tm_file} svr4.h i860/sysv4.h i860/fx2800.h"
		xm_file="${xm_file} i860/xm-fx2800.h"
		xmake_file=i860/x-fx2800
		tmake_file=i860/t-fx2800
		extra_parts="crtbegin.o crtend.o"
		;;
	i860-*-bsd*)
		tm_file="${tm_file} i860/bsd.h"
		if [[ x$gas = xyes ]]
		then
			tm_file="${tm_file} i860/bsd-gas.h"
		fi
		use_collect2=yes
		;;
	i860-*-mach*)
		tm_file="${tm_file} i860/mach.h"
		tmake_file=t-libc-ok
		;;
	i860-*-osf*)			# Intel Paragon XP/S, OSF/1AD
		tm_file="${tm_file} svr3.h i860/paragon.h"
		xm_file="${xm_file} xm-svr3.h"
		tmake_file=t-osf
		broken_install=yes
		;;
	i860-*-sysv3*)
		tm_file="${tm_file} svr3.h i860/sysv3.h"
		xm_file="${tm_file} xm-svr3.h"
		xmake_file=i860/x-sysv3
		extra_parts="crtbegin.o crtend.o"
		;;
	i860-*-sysv4*)
		tm_file="${tm_file} svr4.h i860/sysv4.h"
		xm_file="${xm_file} xm-svr3.h"
		xmake_file=i860/x-sysv4
		tmake_file=t-svr4
		extra_parts="crtbegin.o crtend.o"
		;;
	i960-wrs-vxworks5 | i960-wrs-vxworks5.0*)
		tm_file="${tm_file} i960/vx960.h"
		tmake_file=i960/t-vxworks960
		use_collect2=yes
		;;
	i960-wrs-vxworks5*)
		tm_file="${tm_file} dbxcoff.h i960/i960-coff.h i960/vx960-coff.h"
		tmake_file=i960/t-vxworks960
		use_collect2=yes
		;;
	i960-wrs-vxworks*)
		tm_file="${tm_file} i960/vx960.h"
		tmake_file=i960/t-vxworks960
		use_collect2=yes
		;;
	i960-*-coff*)
		tm_file="${tm_file} dbxcoff.h i960/i960-coff.h libgloss.h"
		tmake_file=i960/t-960bare
		use_collect2=yes
		;;
	i960-*-rtems)
		tmake_file="i960/t-960bare t-rtems"
		tm_file="${tm_file} dbxcoff.h i960/rtems.h"
		use_collect2=yes
		;;
	i960-*-*)			# Default i960 environment.
		use_collect2=yes
		;;
	m32r-*-elf*)
		extra_parts="crtinit.o crtfini.o"
		;;
	m68000-convergent-sysv*)
		tm_file=m68k/ctix.h
		xm_file=m68k/xm-3b1.h
		use_collect2=yes
		extra_headers=math-68881.h
		;;
	m68000-hp-bsd*)			# HP 9000/200 running BSD
		tm_file=m68k/hp2bsd.h
		xmake_file=m68k/x-hp2bsd
		use_collect2=yes
		extra_headers=math-68881.h
		;;
	m68000-hp-hpux*)		# HP 9000 series 300
		xm_file=m68k/xm-hp320.h
		if [[ x$gas = xyes ]]
		then
			xmake_file=m68k/x-hp320g
			tm_file=m68k/hp310g.h
		else
			xmake_file=m68k/x-hp320
			tm_file=m68k/hp310.h
		fi
		broken_install=yes
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		extra_headers=math-68881.h
		;;
	m68000-sun-sunos3*)
		tm_file=m68k/sun2.h
		use_collect2=yes
		extra_headers=math-68881.h
		;;
	m68000-sun-sunos4*)
		tm_file=m68k/sun2o4.h
		use_collect2=yes
		extra_headers=math-68881.h
		;;
	m68000-att-sysv*)
		xm_file=m68k/xm-3b1.h
		if [[ x$gas = xyes ]]
		then
			tm_file=m68k/3b1g.h
		else
			tm_file=m68k/3b1.h
		fi
		use_collect2=yes
		extra_headers=math-68881.h
		;;
	m68k-apple-aux*)		# Apple Macintosh running A/UX
		xm_file=m68k/xm-aux.h
		tmake_file=m68k/t-aux
		broken_install=yes
		install_headers_dir=install-headers-cpio
		extra_headers=math-68881.h
		extra_parts="crt1.o mcrt1.o maccrt1.o crt2.o crtn.o"
		tm_file=
		if [[ "$gnu_ld" = yes ]]
		then
			tm_file="${tm_file} m68k/auxgld.h"
		else
			tm_file="${tm_file} m68k/auxld.h"
		fi
		if [[ "$gas" = yes ]]
		then
			tm_file="${tm_file} m68k/auxgas.h"
		else
			tm_file="${tm_file} m68k/auxas.h"
		fi
		tm_file="${tm_file} m68k/a-ux.h"
		;;
	m68k-apollo-*)
		tm_file=m68k/apollo68.h
		xmake_file=m68k/x-apollo68
		use_collect2=yes
		extra_headers=math-68881.h
		;;
	m68k-altos-sysv*)		   # Altos 3068
		if [[ x$gas = xyes ]]
		then
		        tm_file=m68k/altos3068.h
		        xm_file=m68k/xm-altos3068.h
		else
			echo "The Altos is supported only with the GNU assembler" 1>&2
			exit 1
		fi
		extra_headers=math-68881.h
	        ;;
	m68k-bull-sysv*)		# Bull DPX/2
		if [[ x$gas = xyes ]]
		then
			if [[ x$stabs = xyes ]]
			then
				tm_file=m68k/dpx2cdbx.h
			else
				tm_file=m68k/dpx2g.h
			fi
		else
			tm_file=m68k/dpx2.h
		fi
		xm_file=m68k/xm-m68kv.h
		xmake_file=m68k/x-dpx2
		use_collect2=yes
		extra_headers=math-68881.h
		;;
	m68k-atari-sysv4*)              # Atari variant of V.4.
		tm_file=m68k/atari.h
		xm_file=m68k/xm-atari.h
		tmake_file=t-svr4
		extra_parts="crtbegin.o crtend.o"
		extra_headers=math-68881.h
		;;
	m68k-motorola-sysv*)
		tm_file=m68k/mot3300.h
		xm_file=m68k/xm-mot3300.h
		if [[ x$gas = xyes ]]
		then
			xmake_file=m68k/x-mot3300-gas
			if [[ x$gnu_ld = xyes ]]
			then
				tmake_file=m68k/t-mot3300-gald
			else
				tmake_file=m68k/t-mot3300-gas
				use_collect2=yes
			fi
		else
			xmake_file=m68k/x-mot3300
			if [[ 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"
		extra_headers=math-68881.h
		;;
	m68k-ncr-sysv*)			# NCR Tower 32 SVR3
		tm_file=m68k/tower-as.h
		xm_file=m68k/xm-tower.h
		xmake_file=m68k/x-tower
		extra_parts="crtbegin.o crtend.o"
		extra_headers=math-68881.h
		;;
        m68k-plexus-sysv*)
		tm_file=m68k/plexus.h
		xm_file=m68k/xm-plexus.h
		use_collect2=yes
		extra_headers=math-68881.h
		;;
	m68k-tti-*)
		tm_file=m68k/pbb.h
		xm_file=m68k/xm-m68kv.h
		extra_headers=math-68881.h
		;;
	m68k-crds-unos*)
		xm_file=m68k/xm-crds.h
		xmake_file=m68k/x-crds
		tm_file=m68k/crds.h
		broken_install=yes
		use_collect2=yes
		extra_headers=math-68881.h
		;;
	m68k-cbm-sysv4*)		# Commodore variant of V.4.
		tm_file=m68k/amix.h
		xm_file=m68k/xm-amix.h
		xmake_file=m68k/x-amix
		tmake_file=t-svr4
		extra_parts="crtbegin.o crtend.o"
		extra_headers=math-68881.h
		;;
	m68k-ccur-rtu)
		tm_file=m68k/ccur-GAS.h
		xmake_file=m68k/x-ccur
		extra_headers=math-68881.h
		use_collect2=yes
		broken_install=yes
		;;
	m68k-hp-bsd4.4*)		# HP 9000/3xx running 4.4bsd
		tm_file=m68k/hp3bsd44.h
		xmake_file=m68k/x-hp3bsd44
		use_collect2=yes
		extra_headers=math-68881.h
		;;
	m68k-hp-bsd*)			# HP 9000/3xx running Berkeley Unix
		tm_file=m68k/hp3bsd.h
		use_collect2=yes
		extra_headers=math-68881.h
		;;
	m68k-isi-bsd*)
		if [[ x$with_fp = xno ]]
		then
			tm_file=m68k/isi-nfp.h
		else
			tm_file=m68k/isi.h
		fi
		use_collect2=yes
		extra_headers=math-68881.h
		;;
	m68k-hp-hpux7*)	# HP 9000 series 300 running HPUX version 7.
		xm_file=m68k/xm-hp320.h
		if [[ 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
		broken_install=yes
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		extra_headers=math-68881.h
		;;
	m68k-hp-hpux*)	# HP 9000 series 300
		xm_file=m68k/xm-hp320.h
		if [[ 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
		broken_install=yes
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		extra_headers=math-68881.h
		;;
	m68k-sun-mach*)
		tm_file=m68k/sun3mach.h
		use_collect2=yes
		extra_headers=math-68881.h
		;;
	m68k-sony-newsos3*)
		if [[ x$gas = xyes ]]
		then
			tm_file=m68k/news3gas.h
		else
			tm_file=m68k/news3.h
		fi
		use_collect2=yes
		extra_headers=math-68881.h
		;;
	m68k-sony-bsd* | m68k-sony-newsos*)
		if [[ x$gas = xyes ]]
		then
			tm_file=m68k/newsgas.h
		else
			tm_file=m68k/news.h
		fi
		use_collect2=yes
		extra_headers=math-68881.h
		;;
	m68k-next-nextstep2*)
		tm_file=m68k/next21.h
		xm_file=m68k/xm-next.h
		tmake_file=m68k/t-next
		xmake_file=m68k/x-next
		extra_objs=nextstep.o
		extra_headers=math-68881.h
		use_collect2=yes
                ;;
	m68k-next-nextstep3*)
		tm_file=m68k/next.h
		xm_file=m68k/xm-next.h
		tmake_file=m68k/t-next
		xmake_file=m68k/x-next
		extra_objs=nextstep.o
		extra_headers=math-68881.h
 		if [[ x$enable_threads = xyes ]]; then
			thread_file='mach'
		fi
		;;
	m68k-sun-sunos3*)
		if [[ x$with_fp = xno ]]
		then
			tm_file=m68k/sun3n3.h
		else
			tm_file=m68k/sun3o3.h
		fi
		use_collect2=yes
		extra_headers=math-68881.h
		;;
	m68k-sun-sunos*)			# For SunOS 4 (the default).
		if [[ x$with_fp = xno ]]
		then
			tm_file=m68k/sun3n.h
		else
			tm_file=m68k/sun3.h
		fi
		xm_file=m68k/xm-sun3.h
		use_collect2=yes
		extra_headers=math-68881.h
		;;
	m68k-wrs-vxworks*)
		tm_file=m68k/vxm68k.h
		tmake_file=m68k/t-vxworks68
		extra_headers=math-68881.h
		;;
	m68k-*-aout*)
		tmake_file=m68k/t-m68kbare
		tm_file="m68k/m68k-aout.h libgloss.h"
		extra_headers=math-68881.h
		;;
	m68k-*-coff*)
		tmake_file=m68k/t-m68kbare
		tm_file="m68k/m68k-coff.h dbx.h libgloss.h"
		extra_headers=math-68881.h
		;;
	m68k-*-lynxos*)
		if [[ x$gas = xyes ]]
		then
			tm_file=m68k/lynx.h
		else
			tm_file=m68k/lynx-ng.h
		fi
		xm_file=m68k/xm-lynx.h
		xmake_file=x-lynx
		tmake_file=m68k/t-lynx
		extra_headers=math-68881.h
		;;
	m68k-*-netbsd*)
		tm_file=m68k/netbsd.h
		xm_file=m68k/xm-netbsd.h
		# On NetBSD, the headers are already okay.
		fixincludes=Makefile.in
		tmake_file=t-netbsd
		;;
	m68k-*-sysv3*)			# Motorola m68k's running system V.3
		xm_file=m68k/xm-m68kv.h
		xmake_file=m68k/x-m68kv
		extra_parts="crtbegin.o crtend.o"
		extra_headers=math-68881.h
		;;
	m68k-*-sysv4*)			# Motorola m68k's running system V.4
		tm_file=m68k/m68kv4.h
		xm_file=m68k/xm-m68kv.h
		tmake_file=t-svr4
		extra_parts="crtbegin.o crtend.o"
		extra_headers=math-68881.h
		;;
	m68k-*-linux-gnuaout*)		# Motorola m68k's running Linux
		xm_file=m68k/xm-linux.h	# with a.out format
		xmake_file=x-linux
		tm_file=m68k/linux-aout.h
		tmake_file="t-linux-aout m68k/t-linux-aout"
		fixincludes=Makefile.in #On Linux, the headers are ok already.
		extra_headers=math-68881.h
		gnu_ld=yes
		;;
	m68k-*-linux-gnulibc1)		# Motorola m68k's running Linux
		xm_file=m68k/xm-linux.h	# with ELF format using the
		xmake_file=x-linux	# Linux C library 5
		tm_file=m68k/linux.h
		tmake_file="t-linux t-linux-gnulibc1 m68k/t-linux"
		extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
		fixincludes=Makefile.in #On Linux, the headers are ok already.
		extra_headers=math-68881.h
		gnu_ld=yes
		;;
	m68k-*-linux-gnu*)			# Motorola m68k's running Linux
		xm_file=m68k/xm-linux.h	# with ELF format using glibc 2
		xmake_file=x-linux	# aka the Linux C library 6.
		tm_file=m68k/linux.h
		tmake_file="t-linux m68k/t-linux"
		extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
		fixincludes=Makefile.in #On Linux, the headers are ok already.
		extra_headers=math-68881.h
		gnu_ld=yes
		if [[ x$enable_threads = xyes ]]; then
			thread_file='posix'
		fi
		;;
	m68k-*-psos*)
		tmake_file=m68k/t-m68kbare
		tm_file=m68k/m68k-psos.h
		extra_headers=math-68881.h
		;;
	m68k-*-rtems*)
		tmake_file="m68k/t-m68kbare t-rtems"
		tm_file=m68k/rtems.h
		extra_headers=math-68881.h
		;;

	m88k-dg-dgux*)
		case $machine in
		  m88k-dg-dguxbcs*)
		    tm_file=m88k/dguxbcs.h
		    tmake_file=m88k/t-dguxbcs
		    ;;
		  *)
		    tm_file=m88k/dgux.h
		    tmake_file=m88k/t-dgux
		    ;;
		esac
		extra_parts="crtbegin.o bcscrtbegin.o crtend.o m88kdgux.ld"
		broken_install=yes
		xmake_file=m88k/x-dgux
		if [[ x$gas = xyes ]]
		then
			tmake_file=m88k/t-dgux-gas
		fi
		fixincludes=fixinc.dgux
		;;
	m88k-dolphin-sysv3*)
		tm_file=m88k/dolph.h
		extra_parts="crtbegin.o crtend.o"
		xm_file=m88k/xm-sysv3.h
		xmake_file=m88k/x-dolph
		if [[ x$gas = xyes ]]
		then
			tmake_file=m88k/t-m88k-gas
		fi
		;;
	m88k-tektronix-sysv3)
		tm_file=m88k/tekXD88.h
		extra_parts="crtbegin.o crtend.o"
		xm_file=m88k/xm-sysv3.h
		xmake_file=m88k/x-tekXD88
		if [[ x$gas = xyes ]]
		then
			tmake_file=m88k/t-m88k-gas
		fi
		;;
	m88k-*-aout*)
		tm_file=m88k/m88k-aout.h
		;;
	m88k-*-coff*)
		tm_file=m88k/m88k-coff.h
		tmake_file=m88k/t-bug
		;;
	m88k-*-luna*)
		tm_file=m88k/luna.h
		extra_parts="crtbegin.o crtend.o"
		if [[ x$gas = xyes ]]
		then
			tmake_file=m88k/t-luna-gas
		else
			tmake_file=m88k/t-luna
		fi
		;;
	m88k-*-sysv3*)
		tm_file=m88k/sysv3.h
		extra_parts="crtbegin.o crtend.o"
		xm_file=m88k/xm-sysv3.h
		xmake_file=m88k/x-sysv3
		if [[ x$gas = xyes ]]
		then
			tmake_file=m88k/t-m88k-gas
		fi
		;;
	m88k-*-sysv4*)
		tm_file=m88k/sysv4.h
		extra_parts="crtbegin.o crtend.o"
		xmake_file=m88k/x-sysv4
		tmake_file=m88k/t-sysv4
		;;
	mips-sgi-irix6*)		# SGI System V.4., IRIX 6
		tm_file=mips/iris6.h
		xm_file=mips/xm-iris6.h
		broken_install=yes
		fixincludes=fixinc.irix
		xmake_file=mips/x-iris6
		tmake_file=mips/t-iris6
 		if [[ x$enable_threads = xyes ]]; then
			thread_file='irix'
		fi
		;;
	mips-sgi-irix5cross64)		# Irix5 host, Irix 6 target, cross64
		tm_file=mips/cross64.h
		xm_file=mips/xm-iris5.h
		broken_install=yes
		fixincludes=Makefile.in
		xmake_file=mips/x-iris
		tmake_file=mips/t-cross64
		# See comment in mips/iris[56].h files.
		use_collect2=yes
 		if [[ x$enable_threads = xyes ]]; then
			thread_file='irix'
		fi
		;;
        mips-sni-sysv4)
		if [[ x$gas = xyes ]]
		then
			if [[ x$stabs = xyes ]]
			then
				tm_file=mips/iris5gdb.h
			else
				tm_file=mips/sni-gas.h
			fi
		else
			tm_file=mips/sni-svr4.h
		fi
                xm_file=mips/xm-sysv.h
                xmake_file=mips/x-sni-svr4
                tmake_file=mips/t-mips-gas
                if [[ x$gnu_ld != xyes ]]
                then
                        use_collect2=yes
                fi
                broken_install=yes
                ;;
	mips-sgi-irix5*)		# SGI System V.4., IRIX 5
		if [[ x$gas = xyes ]]
		then
			tm_file=mips/iris5gas.h
			if [[ x$stabs = xyes ]]
			then
				tm_file="${tm_file} dbx.h"
			fi
		else
			tm_file=mips/iris5.h
		fi
		xm_file=mips/xm-iris5.h
		broken_install=yes
		fixincludes=fixinc.irix
		xmake_file=mips/x-iris
		# mips-tfile doesn't work yet
		tmake_file=mips/t-mips-gas
		# See comment in mips/iris5.h file.
		use_collect2=yes
 		if [[ x$enable_threads = xyes ]]; then
			thread_file='irix'
		fi
		;;
	mips-sgi-irix4loser*)		# Mostly like a MIPS.
		tm_file=mips/iris4loser.h
		if [[ x$stabs = xyes ]]; then
			tm_file="${tm_file} dbx.h"
		fi
		xm_file=mips/xm-iris4.h
		broken_install=yes
		xmake_file=mips/x-iris
		if [[ x$gas = xyes ]]
		then
			tmake_file=mips/t-mips-gas
		else
			extra_passes="mips-tfile mips-tdump"
		fi
		if [[ x$gnu_ld != xyes ]]
		then
			use_collect2=yes
		fi
 		if [[ x$enable_threads = xyes ]]; then
			thread_file='irix'
		fi
		;;
	mips-sgi-irix4*)		# Mostly like a MIPS.
		tm_file=mips/iris4.h
		if [[ x$stabs = xyes ]]; then
			tm_file="${tm_file} dbx.h"
		fi
		xm_file=mips/xm-iris4.h
		broken_install=yes
		xmake_file=mips/x-iris
		if [[ x$gas = xyes ]]
		then
			tmake_file=mips/t-mips-gas
		else
			extra_passes="mips-tfile mips-tdump"
		fi
		if [[ x$gnu_ld != xyes ]]
		then
			use_collect2=yes
		fi
 		if [[ x$enable_threads = xyes ]]; then
			thread_file='irix'
		fi
		;;
	mips-sgi-*)			# Mostly like a MIPS.
		tm_file=mips/iris3.h
		if [[ x$stabs = xyes ]]; then
			tm_file="${tm_file} dbx.h"
		fi
		xm_file=mips/xm-iris3.h
		broken_install=yes
		xmake_file=mips/x-iris3
		if [[ x$gas = xyes ]]
		then
			tmake_file=mips/t-mips-gas
		else
			extra_passes="mips-tfile mips-tdump"
		fi
		if [[ x$gnu_ld != xyes ]]
		then
			use_collect2=yes
		fi
		;;
	mips-dec-osfrose*)		# Decstation running OSF/1 reference port with OSF/rose.
		tm_file=mips/osfrose.h
		xmake_file=mips/x-osfrose
		tmake_file=mips/t-osfrose
		extra_objs=halfpic.o
		use_collect2=yes
		;;
	mips-dec-osf*)			# Decstation running OSF/1 as shipped by DIGITAL
		tm_file=mips/dec-osf1.h
		if [[ x$stabs = xyes ]]; then
			tm_file="${tm_file} dbx.h"
		fi
		xmake_file=mips/x-dec-osf1
		if [[ x$gas = xyes ]]
		then
			tmake_file=mips/t-mips-gas
		else
			tmake_file=mips/t-ultrix
			extra_passes="mips-tfile mips-tdump"
		fi
		if [[ x$gnu_ld != xyes ]]
		then
			use_collect2=yes
		fi
		;;
	mips-dec-bsd*)                  # Decstation running 4.4 BSD
              tm_file=mips/dec-bsd.h
              fixincludes=
	      if [[ x$gas = xyes ]]
	      then
		   	tmake_file=mips/t-mips-gas
	      else
			tmake_file=mips/t-ultrix
			extra_passes="mips-tfile mips-tdump"
	      fi
	      if [[ x$gnu_ld != xyes ]]
	      then
			use_collect2=yes
	      fi
	      ;;
	mips-dec-netbsd*)                  # Decstation running NetBSD
		tm_file=mips/netbsd.h
		xm_file=mips/xm-netbsd.h
		# On NetBSD, the headers are already okay.
		fixincludes=Makefile.in
		tmake_file=t-netbsd
		if [[ x$prefix = xNONE ]]; then
			prefix=$native_prefix
		fi
		prefix=$native_prefix
		;;
	mips-sony-bsd* | mips-sony-newsos*)	# Sony NEWS 3600 or risc/news.
		tm_file=mips/news4.h
		if [[ x$stabs = xyes ]]; then
			tm_file="${tm_file} dbx.h"
		fi
		if [[ x$gas = xyes ]]
		then
			tmake_file=mips/t-mips-gas
		else
			extra_passes="mips-tfile mips-tdump"
		fi
		if [[ x$gnu_ld != xyes ]]
		then
			use_collect2=yes
		fi
		xmake_file=mips/x-sony
		;;
	mips-sony-sysv*)		# Sony NEWS 3800 with NEWSOS5.0.
					# That is based on svr4.
		# t-svr4 is not right because this system doesn't use ELF.
		tm_file=mips/news5.h
		if [[ x$stabs = xyes ]]; then
			tm_file="${tm_file} dbx.h"
		fi
		xm_file=mips/xm-news.h
		if [[ x$gas = xyes ]]
		then
			tmake_file=mips/t-mips-gas
		else
			extra_passes="mips-tfile mips-tdump"
		fi
		if [[ x$gnu_ld != xyes ]]
		then
			use_collect2=yes
		fi
		;;
	mips-tandem-sysv4*)		# Tandem S2 running NonStop UX
		tm_file=mips/svr4-t.h
		if [[ x$stabs = xyes ]]; then
			tm_file="${tm_file} dbx.h"
		fi
		xm_file=mips/xm-sysv4.h
		xmake_file=mips/x-sysv
		if [[ x$gas = xyes ]]
		then
			tmake_file=mips/t-mips-gas
			extra_parts="crtbegin.o crtend.o"
		else
			tmake_file=mips/t-mips
			extra_passes="mips-tfile mips-tdump"
		fi
		if [[ x$gnu_ld != xyes ]]
		then
			use_collect2=yes
		fi
		broken_install=yes
		;;
	mips-*-ultrix* | mips-dec-mach3)	# Decstation.
		tm_file=mips/ultrix.h
		if [[ x$stabs = xyes ]]; then
			tm_file="${tm_file} dbx.h"
		fi
		xmake_file=mips/x-ultrix
		if [[ x$gas = xyes ]]
		then
			tmake_file=mips/t-mips-gas
		else
			tmake_file=mips/t-ultrix
			extra_passes="mips-tfile mips-tdump"
		fi
		if [[ x$gnu_ld != xyes ]]
		then
			use_collect2=yes
		fi
	        ;;
	mips-*-riscos[[56789]]bsd*)
		tm_file=mips/bsd-5.h	# MIPS BSD 4.3, RISC-OS 5.0
		if [[ x$stabs = xyes ]]; then
			tm_file="${tm_file} dbx.h"
		fi
		if [[ x$gas = xyes ]]
		then
			tmake_file=mips/t-bsd-gas
		else
			tmake_file=mips/t-bsd
			extra_passes="mips-tfile mips-tdump"
		fi
		if [[ x$gnu_ld != xyes ]]
		then
			use_collect2=yes
		fi
		broken_install=yes
	        ;;
	mips-*-bsd* | mips-*-riscosbsd* | mips-*-riscos[[1234]]bsd*)
		tm_file=mips/bsd-4.h	# MIPS BSD 4.3, RISC-OS 4.0
		if [[ x$stabs = xyes ]]; then
			tm_file="${tm_file} dbx.h"
		fi
		if [[ x$gas = xyes ]]
		then
			tmake_file=mips/t-bsd-gas
		else
			tmake_file=mips/t-bsd
			extra_passes="mips-tfile mips-tdump"
		fi
		if [[ x$gnu_ld != xyes ]]
		then
			use_collect2=yes
		fi
		broken_install=yes
	        ;;
	mips-*-riscos[[56789]]sysv4*)
		tm_file=mips/svr4-5.h	# MIPS System V.4., RISC-OS 5.0
		if [[ x$stabs = xyes ]]; then
			tm_file="${tm_file} dbx.h"
		fi
		xm_file=mips/xm-sysv4.h
		xmake_file=mips/x-sysv
		if [[ x$gas = xyes ]]
		then
			tmake_file=mips/t-svr4-gas
		else
			tmake_file=mips/t-svr4
			extra_passes="mips-tfile mips-tdump"
		fi
		if [[ x$gnu_ld != xyes ]]
		then
			use_collect2=yes
		fi
		broken_install=yes
		;;
	mips-*-sysv4* | mips-*-riscos[[1234]]sysv4* | mips-*-riscossysv4*)
		tm_file=mips/svr4-4.h	# MIPS System V.4. RISC-OS 4.0
		if [[ x$stabs = xyes ]]; then
			tm_file="${tm_file} dbx.h"
		fi
		xm_file=mips/xm-sysv.h
		xmake_file=mips/x-sysv
		if [[ x$gas = xyes ]]
		then
			tmake_file=mips/t-svr4-gas
		else
			tmake_file=mips/t-svr4
			extra_passes="mips-tfile mips-tdump"
		fi
		if [[ x$gnu_ld != xyes ]]
		then
			use_collect2=yes
		fi
		broken_install=yes
		;;
	mips-*-riscos[[56789]]sysv*)
		tm_file=mips/svr3-5.h	# MIPS System V.3, RISC-OS 5.0
		if [[ x$stabs = xyes ]]; then
			tm_file="${tm_file} dbx.h"
		fi
		xm_file=mips/xm-sysv.h
		xmake_file=mips/x-sysv
		if [[ x$gas = xyes ]]
		then
			tmake_file=mips/t-svr3-gas
		else
			tmake_file=mips/t-svr3
			extra_passes="mips-tfile mips-tdump"
		fi
		if [[ x$gnu_ld != xyes ]]
		then
			use_collect2=yes
		fi
		broken_install=yes
		;;
	mips-*-sysv* | mips-*-riscos*sysv*)
		tm_file=mips/svr3-4.h	# MIPS System V.3, RISC-OS 4.0
		if [[ x$stabs = xyes ]]; then
			tm_file="${tm_file} dbx.h"
		fi
		xm_file=mips/xm-sysv.h
		xmake_file=mips/x-sysv
		if [[ x$gas = xyes ]]
		then
			tmake_file=mips/t-svr3-gas
		else
			tmake_file=mips/t-svr3
			extra_passes="mips-tfile mips-tdump"
		fi
		if [[ x$gnu_ld != xyes ]]
		then
			use_collect2=yes
		fi
		broken_install=yes
		;;
	mips-*-riscos[[56789]]*)		# Default MIPS RISC-OS 5.0.
		tm_file=mips/mips-5.h
		if [[ x$stabs = xyes ]]; then
			tm_file="${tm_file} dbx.h"
		fi
		if [[ x$gas = xyes ]]
		then
			tmake_file=mips/t-mips-gas
		else
			extra_passes="mips-tfile mips-tdump"
		fi
		if [[ x$gnu_ld != xyes ]]
		then
			use_collect2=yes
		fi
		broken_install=yes
		;;
	mips-*-gnu*)
		;;
	mipsel-*-ecoff*)
		tm_file=mips/ecoffl.h
		if [[ x$stabs = xyes ]]; then
			tm_file="${tm_file} dbx.h"
		fi
		tmake_file=mips/t-ecoff
		;;
	mips-*-ecoff*)
		tm_file=mips/ecoff.h
		if [[ x$stabs = xyes ]]; then
			tm_file="${tm_file} dbx.h"
		fi
		tmake_file=mips/t-ecoff
		broken_install=yes
		;;
	mipsel-*-elf*)
		tm_file="mips/elfl.h libgloss.h"
		tmake_file=mips/t-ecoff
		;;
	mips-*-elf*)
		tm_file="mips/elf.h libgloss.h"
		tmake_file=mips/t-ecoff
		;;
	mips64el-*-elf*)
		tm_file="mips/elfl64.h libgloss.h"
		tmake_file=mips/t-ecoff
		;;
	mips64orionel-*-elf*)
		tm_file="mips/elflorion.h libgloss.h"
		tmake_file=mips/t-ecoff
		;;
	mips64-*-elf*)
		tm_file="mips/elf64.h libgloss.h"
		tmake_file=mips/t-ecoff
		;;
	mips64orion-*-elf*)
		tm_file="mips/elforion.h libgloss.h"
		tmake_file=mips/t-ecoff
		;;
	mips64orion-*-rtems*)
		tm_file=mips/rtems64.h
		tmake_file="mips/t-ecoff t-rtems"
		;;
	mips-*-*)				# Default MIPS RISC-OS 4.0.
		if [[ x$stabs = xyes ]]; then
			tm_file="${tm_file} dbx.h"
		fi
		if [[ x$gas = xyes ]]
		then
			tmake_file=mips/t-mips-gas
		else
			extra_passes="mips-tfile mips-tdump"
		fi
		if [[ x$gnu_ld != xyes ]]
		then
			use_collect2=yes
		fi
		;;
	mn10200-*-*)
		cpu_type=mn10200
		tm_file="mn10200/mn10200.h"
		if [[ x$stabs = xyes ]]
		then
			tm_file="${tm_file} dbx.h"
		fi
		use_collect2=no
		;;
	mn10300-*-*)
		cpu_type=mn10300
		tm_file="mn10300/mn10300.h"
		if [[ x$stabs = xyes ]]
		then
			tm_file="${tm_file} dbx.h"
		fi
		use_collect2=no
		;;
	ns32k-encore-bsd*)
		tm_file=ns32k/encore.h
		use_collect2=yes
		;;
	ns32k-sequent-bsd*)
		tm_file=ns32k/sequent.h
		use_collect2=yes
		;;
	ns32k-tek6100-bsd*)
		tm_file=ns32k/tek6100.h
		broken_install=yes
		use_collect2=yes
		;;
	ns32k-tek6200-bsd*)
		tm_file=ns32k/tek6200.h
		broken_install=yes
		use_collect2=yes
		;;
# This has not been updated to GCC 2.
#	ns32k-ns-genix*)
#		xm_file=ns32k/xm-genix.h
#		xmake_file=ns32k/x-genix
#		tm_file=ns32k/genix.h
#		broken_install=yes
#		use_collect2=yes
#		;;
	ns32k-merlin-*)
		tm_file=ns32k/merlin.h
		use_collect2=yes
		;;
	ns32k-pc532-mach*)
		tm_file=ns32k/pc532-mach.h
		use_collect2=yes
		;;
	ns32k-pc532-minix*)
		tm_file=ns32k/pc532-min.h
		xm_file=ns32k/xm-pc532-min.h
		use_collect2=yes
		;;
	ns32k-pc532-netbsd*)
		tm_file=ns32k/netbsd.h
		xm_file=ns32k/xm-netbsd.h
		# On NetBSD, the headers are already okay.
		fixincludes=Makefile.in
		tmake_file=t-netbsd
		;;
        pdp11-*-bsd)
		tm_file="${tm_file} pdp11/2bsd.h"
                ;;
        pdp11-*-*)
		;;
	pyramid-*-*)
		cpu_type=pyr
		xmake_file=pyr/x-pyr
		use_collect2=yes
		;;
	romp-*-aos*)
		use_collect2=yes
		;;
	romp-*-mach*)
		xmake_file=romp/x-mach
		use_collect2=yes
		;;
	powerpc-*-sysv* | powerpc-*-elf*)
		tm_file=rs6000/sysv4.h
		xm_file=rs6000/xm-sysv4.h
		extra_headers=ppc-asm.h
		if [[ x$gas = xyes ]]
		then
			tmake_file="rs6000/t-ppcos rs6000/t-ppccomm"
		else
			tmake_file="rs6000/t-ppc rs6000/t-ppccomm"
		fi
		xmake_file=rs6000/x-sysv4
		;;
	powerpc-*-eabiaix*)
		tm_file=rs6000/eabiaix.h
		tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
		fixincludes=Makefile.in
		extra_headers=ppc-asm.h
		;;
	powerpc-*-eabisim*)
		tm_file=rs6000/eabisim.h
		tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
		fixincludes=Makefile.in
		extra_headers=ppc-asm.h
		;;
	powerpc-*-eabi*)
		tm_file=rs6000/eabi.h
		if [[ x$gas = xyes ]]
		then
			tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
		else
			tmake_file="rs6000/t-ppc rs6000/t-ppccomm"
		fi
		fixincludes=Makefile.in
		extra_headers=ppc-asm.h
		;;
	powerpc-*-rtems*)
		tm_file=rs6000/rtems.h
		if [[ x$gas = xyes ]]
		then
		     tmake_file="rs6000/t-ppcgas t-rtems rs6000/t-ppccomm"
		else
		     tmake_file="rs6000/t-ppc t-rtems rs6000/t-ppccomm"
		fi
		fixincludes=Makefile.in
		extra_headers=ppc-asm.h
		;;
	powerpc-*-linux-gnu*)
		tm_file=rs6000/linux.h
		xm_file=rs6000/xm-sysv4.h
		out_file=rs6000/rs6000.c
		if [[ x$gas = xyes ]]
		then
			tmake_file="rs6000/t-ppcos t-linux rs6000/t-ppccomm"
		else
			tmake_file="rs6000/t-ppc t-linux rs6000/t-ppccomm"
		fi
		xmake_file=x-linux
		fixincludes=Makefile.in
		extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
		extra_headers=ppc-asm.h
		if [[ x$enable_threads = xyes ]]; then
			thread_file='posix'
		fi
		;;
        powerpc-*-vxworks*)
                cpu_type=rs6000
                xm_file=rs6000/xm-sysv4.h
                tm_file=rs6000/vxppc.h
                tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
		extra_headers=ppc-asm.h
                ;;
	powerpcle-*-sysv* | powerpcle-*-elf*)
		tm_file=rs6000/sysv4le.h
		xm_file=rs6000/xm-sysv4.h
		if [[ x$gas = xyes ]]
		then
			tmake_file="rs6000/t-ppcos rs6000/t-ppccomm"
		else
			tmake_file="rs6000/t-ppc rs6000/t-ppccomm"
		fi
		xmake_file=rs6000/x-sysv4
		extra_headers=ppc-asm.h
		;;
	powerpcle-*-eabisim*)
		tm_file=rs6000/eabilesim.h
		tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
		fixincludes=Makefile.in
		extra_headers=ppc-asm.h
		;;
	powerpcle-*-eabi*)
		tm_file=rs6000/eabile.h
		if [[ x$gas = xyes ]]
		then
			tmake_file="rs6000/t-ppcgas rs6000/t-ppccomm"
		else
			tmake_file="rs6000/t-ppc rs6000/t-ppccomm"
		fi
		fixincludes=Makefile.in
		extra_headers=ppc-asm.h
		;;
        powerpcle-*-winnt* )
                tm_file=rs6000/win-nt.h
                tmake_file=rs6000/t-winnt
#               extra_objs=pe.o
		fixincludes=Makefile.in
 		if [[ x$enable_threads = xyes ]]; then
			thread_file='win32'
		fi
		extra_headers=ppc-asm.h
		;;
	powerpcle-*-pe | powerpcle-*-cygwin32)
		tm_file=rs6000/cygwin32.h
		xm_file=rs6000/xm-cygwin32.h
		tmake_file=rs6000/t-winnt
		xmake_file=rs6000/x-cygwin32
#		extra_objs=pe.o
		fixincludes=Makefile.in
 		if [[ x$enable_threads = xyes ]]; then
			thread_file='win32'
		fi
		exeext=.exe
		extra_headers=ppc-asm.h
		;;
	powerpcle-*-solaris2*)
		tm_file=rs6000/sol2.h
		xm_file=rs6000/xm-sysv4.h
		if [[ x$gas = xyes ]]
		then
			tmake_file="rs6000/t-ppcos rs6000/t-ppccomm"
		else
			tmake_file="rs6000/t-ppc rs6000/t-ppccomm"
		fi
		xmake_file=rs6000/x-sysv4
		fixincludes=fixinc.svr4
		extra_headers=ppc-asm.h
		;;
	rs6000-ibm-aix3.[[01]]*)
		tm_file=rs6000/aix31.h
		xmake_file=rs6000/x-aix31
		use_collect2=yes
		;;
	rs6000-ibm-aix3.2.[[456789]]* | powerpc-ibm-aix3.2.[[456789]]*)
		tm_file=rs6000/aix3newas.h
		if [[ x$host != x$target ]]
		then
			tmake_file=rs6000/t-xnewas
		else
			tmake_file=rs6000/t-newas
		fi
		use_collect2=yes
		;;
	rs6000-ibm-aix[[456789]].* | powerpc-ibm-aix[[456789]].*)
		tm_file=rs6000/aix41.h
		if [[ x$host != x$target ]]
		then
			tmake_file=rs6000/t-xnewas
		else
			tmake_file=rs6000/t-newas
		fi
		xmake_file=rs6000/x-aix31
		use_collect2=yes
		;;
	rs6000-ibm-aix*)
		use_collect2=yes
		;;
	rs6000-bull-bosx)
		use_collect2=yes
		;;
	rs6000-*-mach*)
		tm_file=rs6000/mach.h
		xm_file=rs6000/xm-mach.h
		xmake_file=rs6000/x-mach
		use_collect2=yes
		;;
	rs6000-*-lynxos*)
		tm_file=rs6000/lynx.h
		xm_file=rs6000/xm-lynx.h
		tmake_file=rs6000/t-rs6000
		xmake_file=rs6000/x-lynx
		use_collect2=yes
		;;
	sh-*-elf*)
		tm_file=sh/elf.h
		float_format=sh
		;;
	sh-*-*)
		float_format=sh
		;;
	sparc-tti-*)
		tm_file=sparc/pbd.h
		xm_file=sparc/xm-pbd.h
		;;
	sparc-wrs-vxworks* | sparclite-wrs-vxworks*)
		tm_file=sparc/vxsparc.h
		tmake_file=sparc/t-vxsparc
		use_collect2=yes
		;;
	sparc-*-aout*)
		tmake_file=sparc/t-sparcbare
		tm_file="sparc/aout.h libgloss.h"
		;;
	sparc-*-netbsd*)
		tm_file=sparc/netbsd.h
		xm_file=sparc/xm-netbsd.h
		# On NetBSD, the headers are already okay.
		fixincludes=Makefile.in
		tmake_file=t-netbsd
		;;
	sparc-*-bsd*)
		tm_file=sparc/bsd.h
		;;
	sparc-*-linux-gnuaout*)		# Sparc's running Linux, a.out
		xm_file=sparc/xm-linux.h
		tm_file=sparc/linux-aout.h
		xmake_file=x-linux
		fixincludes=Makefile.in #On Linux, the headers are ok already.
		broken_install=yes
		gnu_ld=yes
		;;
	sparc-*-linux-gnulibc1*)		 # Sparc's running Linux
		xm_file=sparc/xm-linux.h # with ELF format using the
		xmake_file=x-linux	 # Linux C library 5.
		tm_file=sparc/linux.h
		tmake_file="t-linux t-linux-gnulibc1 sparc/t-linux"
		extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
		fixincludes=Makefile.in #On Linux, the headers are ok already.
		broken_install=yes
		gnu_ld=yes
		;;
	sparc-*-linux-gnu*)			 # Sparc's running Linux
		xm_file=sparc/xm-linux.h # with ELF format using glibc 2
		xmake_file=x-linux	 # aka the Linux C library 6.
		tm_file=sparc/linux.h
		tmake_file="t-linux sparc/t-linux"
		extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
		fixincludes=Makefile.in #On Linux, the headers are ok already.
		broken_install=yes
		gnu_ld=yes
 		if [[ x$enable_threads = xyes ]]; then
 			thread_file='posix'
 		fi
		;;
	sparc-*-lynxos*)
		if [[ x$gas = xyes ]]
		then
			tm_file=sparc/lynx.h
		else
			tm_file=sparc/lynx-ng.h
		fi
		xm_file=sparc/xm-lynx.h
		tmake_file=sparc/t-sunos41
		xmake_file=x-lynx
		;;
	sparc-*-rtems*)
		tmake_file="sparc/t-sparcbare t-rtems"
		tm_file=sparc/rtems.h
		;;
	sparc-*-solaris2*)
		tm_file=sparc/sol2.h
		xm_file=sparc/xm-sol2.h
		tmake_file=sparc/t-sol2
		xmake_file=sparc/x-sysv4
		extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o"
		fixincludes=fixinc.svr4
		broken_install=yes
 		if [[ x$enable_threads = xyes ]]; then
			thread_file='solaris'
		fi
		;;
	sparc-*-sunos4.0*)
		tm_file=sparc/sunos4.h
		tmake_file=sparc/t-sunos40
		use_collect2=yes
		;;
	sparc-*-sunos4*)
		tm_file=sparc/sunos4.h
		tmake_file=sparc/t-sunos41
		use_collect2=yes
		;;
	sparc-*-sunos3*)
		tm_file=sparc/sun4o3.h
		use_collect2=yes
		;;
	sparc-*-sysv4*)
		tm_file=sparc/sysv4.h
		xm_file=sparc/xm-sysv4.h
		tmake_file=t-svr4
		xmake_file=sparc/x-sysv4
		extra_parts="crtbegin.o crtend.o"
		;;
	sparc-*-vxsim*)
		xm_file=sparc/xm-sol2.h
		tm_file=sparc/vxsim.h
		tmake_file=sparc/t-vxsparc
		xmake_file=sparc/x-sysv4
		;;
	sparclet-*-aout*)
		tm_file="sparc/splet.h libgloss.h"
		tmake_file=sparc/t-splet
		;;
	sparclite-*-coff*)
		tm_file="sparc/litecoff.h libgloss.h"
		tmake_file=sparc/t-sparclite
		;;
	sparclite-*-aout*)
		tm_file="sparc/lite.h aoutos.h libgloss.h"
		tmake_file=sparc/t-sparclite
		;;
	sparc64-*-aout*)
		tmake_file=sparc/t-sp64
		tm_file=sparc/sp64-aout.h
		;;
	sparc64-*-elf*)
		tmake_file=sparc/t-sp64
		tm_file=sparc/sp64-elf.h
		extra_parts="crtbegin.o crtend.o"
		;;
# This hasn't been upgraded to GCC 2.
#	tahoe-harris-*)			# Harris tahoe, using COFF.
#		tm_file=tahoe/harris.h
#		;;
#	tahoe-*-bsd*)			# tahoe running BSD
#		;;
# This hasn't been upgraded to GCC 2.
#	tron-*-*)
#		cpu_type=gmicro
#		use_collect2=yes
#		;;
	vax-*-bsd*)			# vaxen running BSD
		use_collect2=yes
		float_format=vax
		;;
	vax-*-sysv*)			# vaxen running system V
		tm_file="${tm_file} vax/vaxv.h"
		xm_file="${tm_file} vax/xm-vaxv.h"
		float_format=vax
		;;
	vax-*-netbsd*)
		tm_file="${tm_file} netbsd.h vax/netbsd.h"
		xm_file="${xm_file} xm-netbsd.h"
		# On NetBSD, the headers are already okay.
		fixincludes=Makefile.in
		tmake_file=t-netbsd
		float_format=vax
		;;
	vax-*-ultrix*)			# vaxen running ultrix
		tm_file="${tm_file} vax/ultrix.h"
		use_collect2=yes
		float_format=vax
		;;
	vax-*-vms*)			# vaxen running VMS
		xm_file=vax/xm-vms.h
		tm_file=vax/vms.h
		float_format=vax
		;;
	vax-*-*)			# vax default entry
		float_format=vax
		;;
	we32k-att-sysv*)
		xm_file="${xm_file} xm-svr3"
		use_collect2=yes
		;;
	*)
		echo "Configuration $machine not supported" 1>&2
		exit 1
		;;
	esac

	case $machine in
	*-*-linux-gnu*)
	        ;; # Existing Linux/GNU systems do not use the GNU setup.
	*-*-gnu*)
		# On the GNU system, the setup is just about the same on
		# each different CPU.  The specific machines that GNU
		# supports are matched above and just set $cpu_type.
		xm_file=${cpu_type}/xm-gnu.h
		tm_file=${cpu_type}/gnu.h
		extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
		# GNU always uses ELF.
		elf=yes
		# GNU tools are the only tools.
		gnu_ld=yes
		gas=yes
		# On GNU, the headers are already okay.
		fixincludes=Makefile.in
		xmake_file=x-linux	# These details are the same as Linux.
		tmake_file=t-gnu	# These are not.
		;;
	*-*-sysv4*)
		fixincludes=fixinc.svr4
		xmake_try_sysv=x-sysv
		broken_install=yes
		install_headers_dir=install-headers-cpio
		;;
	*-*-sysv*)
		broken_install=yes
		install_headers_dir=install-headers-cpio
		;;
	esac

	# Distinguish i[3456]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=1
		;;
	i586-*-*)
		target_cpu_default2=2
		;;
	i686-*-*)
		target_cpu_default2=3
		;;
	alpha*-*-*)
		case $machine in
			alphaev56*)
				target_cpu_default2="MASK_CPU_EV5|MASK_BYTE_OPS"
				;;
			alphaev5*)
				target_cpu_default2="MASK_CPU_EV5"
				;;
		esac
				
		if [[ x$gas = xyes ]]
		then
			if [[ x$target_cpu_default2 = x ]]
			then
				target_cpu_default2="MASK_GAS"
			else
				target_cpu_default2="${target_cpu_default2}|MASK_GAS"
			fi
		fi
		;;
	mips*-*-ecoff* | mips*-*-elf*)
		if [[ x$gas = xyes ]]
		then
			if [[ x$gnu_ld = xyes ]]
			then
				target_cpu_default2=20
			else
				target_cpu_default2=16
			fi
		fi
		;;
	mips*-*-*)
		if [[ x$gas = xyes ]]
		then
			target_cpu_default2=16
		fi
		;;
	powerpc*-*-* | rs6000-*-*)
		case "x$with_cpu" in
			x)
				;;

			xcommon | xpower | xpower2 | xpowerpc | xrios \
			  | xrios1 | xrios2 | xrsc | xrsc1 \
			  | x601 | x602 | x603 | x603e | x604 | x604e | x620 \
			  | x403 | x505 | x801 | x821 | x823 | x860)
				target_cpu_default2="'\"$with_cpu\"'"
				;;

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

			*)
				echo "Unknown cpu used with --with-cpu=$with_cpu" 1>&2
				exit 1
				;;
		esac
		;;
	sparc*-*-*)
		case ".$with_cpu" in
			.)
				target_cpu_default2=TARGET_CPU_"`echo $machine | sed 's/-.*$//'`"
				;;
			.supersparc | .ultrasparc | .v7 | .v8)
				target_cpu_default2="TARGET_CPU_$with_cpu"
				;;
			*)
				echo "Unknown cpu used with --with-cpu=$with_cpu" 1>&2
				exit 1
				;;
		esac
		;;
	esac

	if [[ x$target_cpu_default2 != x ]]
	then
		if [[ x$target_cpu_default != x ]]
		then
			target_cpu_default="(${target_cpu_default}|${target_cpu_default2})"
		else
			target_cpu_default=$target_cpu_default2
		fi
	fi

	# No need for collect2 if we have the GNU linker.
	case x$gnu_ld in
	xyes)
		use_collect2=
		;;
	esac

# 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 [[ x$pass1done = x ]]
	then
		if [[ x"$xm_file" = x ]]
		then build_xm_file=$cpu_type/xm-$cpu_type.h
		else build_xm_file=$xm_file
		fi
		build_broken_install=$broken_install
		build_install_headers_dir=$install_headers_dir
		build_exeext=$exeext
		pass1done=yes
	else
		if [[ x$pass2done = x ]]
		then
			if [[ x"$xm_file" = x ]]
			then host_xm_file=$cpu_type/xm-$cpu_type.h
			else host_xm_file=$xm_file
			fi
			if [[ x"$xmake_file" = x ]]
			then xmake_file=$cpu_type/x-$cpu_type
			fi
			host_xmake_file="$xmake_file"
			host_truncate_target=$truncate_target
			host_extra_gcc_objs=$extra_gcc_objs
			host_extra_objs=$extra_host_objs
			pass2done=yes
		fi
	fi
done

extra_objs="${host_extra_objs} ${extra_objs}"

# Default the target-machine variables that were not explicitly set.
if [[ x"$tm_file" = x ]]
then tm_file=$cpu_type/$cpu_type.h; fi

if [[ x$extra_headers = x ]]
then extra_headers=; fi

if [[ x"$xm_file" = x ]]
then xm_file=$cpu_type/xm-$cpu_type.h; fi

md_file=$cpu_type/$cpu_type.md

if [[ x$out_file = x ]]
then out_file=$cpu_type/$cpu_type.c; fi

if [[ x"$tmake_file" = x ]]
then tmake_file=$cpu_type/t-$cpu_type
fi

if [[ x$float_format = x ]]
then float_format=i64
fi

# Say what files are being used for the output code and MD file.
echo "Using \`$srcdir/config/$out_file' to output insns."
echo "Using \`$srcdir/config/$md_file' as machine description file."

count=a
for f in $tm_file; do
	count=${count}x
done
if [[ $count = ax ]]; then
	echo "Using \`$srcdir/config/$tm_file' as target machine macro file."
else
	echo "Using the following target machine macro files:"
	for f in $tm_file; do
		echo "	$srcdir/config/$f"
	done
fi

count=a
for f in $host_xm_file; do
	count=${count}x
done
if [[ $count = ax ]]; then
	echo "Using \`$srcdir/config/$host_xm_file' as host machine macro file."
else
	echo "Using the following host machine macro files:"
	for f in $host_xm_file; do
		echo "	$srcdir/config/$f"
	done
fi

if [[ "$host_xm_file" != "$build_xm_file" ]]; then
	count=a
	for f in $build_xm_file; do
		count=${count}x
	done
	if [[ $count = ax ]]; then
		echo "Using \`$srcdir/config/$build_xm_file' as build machine macro file."
	else
		echo "Using the following build machine macro files:"
		for f in $build_xm_file; do
			echo "	$srcdir/config/$f"
		done
	fi
fi

if [[ x$thread_file = x ]]
then thread_file='single'
fi

# Set up the header files.
# $links is the list of header files to create.
# $vars is the list of shell variables with file names to include.
# config2.h is the old config.h.  It is included by the new config.h which
# created from config.in.  The goal is to simplify the transition to autoconf.
vars="host_xm_file tm_file xm_file build_xm_file"
links="config2.h tm.h tconfig.h hconfig.h"

rm -f config.bak
if [[ -f config.status ]]; then mv -f config.status config.bak; fi

# Make the links.
while [[ -n "$vars" ]]
do
	# set file to car of files, files to cdr of files
	set $vars; var=$1; shift; vars=$*
	set $links; link=$1; shift; links=$*

	rm -f $link

	# Define TARGET_CPU_DEFAULT if the system wants one.
	# This substitutes for lots of *.h files.
	if [[ x$target_cpu_default != x -a $link = tm.h ]]
	then
		echo "#define TARGET_CPU_DEFAULT $target_cpu_default" >>$link
	fi

	for file in `eval echo '$'$var`; do
		echo "#include \"$file\"" >>$link
	done
done

# Truncate the target if necessary
if [[ x$host_truncate_target != x ]]; then
	target=`echo $target | sed -e 's/\(..............\).*/\1/'`
fi

# Get the version number from the toplevel
version=`sed -e 's/.*\"\([[^ \"]]*\)[[ \"]].*/\1/' < ${srcdir}/version.c`

# Are we using gcc as the native compiler?
case $host in
*linux*)	# All Linux's use gcc as the native compiler.
	if [[ x$prefix = xNONE ]]; then
		prefix=$native_prefix
	fi
	;;
esac

# Get an absolute path to the GCC top-level source directory
holddir=`pwd`
cd $srcdir
topdir=`pwd`
cd $holddir

# Conditionalize the makefile for this host machine.
# Make-host contains the concatenation of all host makefile fragments
# [there can be more than one].  This file is built by configure.frag.
host_overrides=Make-host
dep_host_xmake_file=
for f in .. ${host_xmake_file}
do
	if [[ -f ${srcdir}/config/$f ]]
	then
		dep_host_xmake_file="${dep_host_xmake_file} ${srcdir}/config/$f"
	fi
done

# Conditionalize the makefile for this target machine.
# Make-target contains the concatenation of all host makefile fragments
# [there can be more than one].  This file is built by configure.frag.
target_overrides=Make-target
dep_tmake_file=
for f in .. ${tmake_file}
do
	if [[ -f ${srcdir}/config/$f ]]
	then
		dep_tmake_file="${dep_tmake_file} ${srcdir}/config/$f"
	fi
done

# If the host doesn't support symlinks, modify CC in
# FLAGS_TO_PASS so CC="stage1/xgcc -Bstage1/" works.
# Otherwise, we can use "CC=$(CC)".
rm -f symtest.tem
if $symbolic_link symtest1.tem symtest.tem 2>/dev/null
then
	cc_set_by_configure="\$(CC)"
	stage_prefix_set_by_configure="\$(STAGE_PREFIX)"
else
	cc_set_by_configure="\`case '\$(CC)' in stage*) echo '\$(CC)' | sed -e 's|stage|../stage|g';; *) echo '\$(CC)';; esac\`"
	stage_prefix_set_by_configure="\`case '\$(STAGE_PREFIX)' in stage*) echo '\$(STAGE_PREFIX)' | sed -e 's|stage|../stage|g';; *) echo '\$(STAGE_PREFIX)';; esac\`"
fi
rm -f symtest.tem

out_object_file=`basename $out_file .c`.o

tm_file_list=
for f in $tm_file; do
	tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
done

host_xm_file_list=
for f in $host_xm_file; do
	host_xm_file_list="${host_xm_file_list} \$(srcdir)/config/$f"
done

build_xm_file_list=
for f in $build_xm_file; do
	build_xm_file_list="${build_xm_file_list} \$(srcdir)/config/$f"
done

# Define macro CROSS_COMPILE in compilation
# if this is a cross-compiler.
# Also use all.cross instead of all.internal
# and add cross-make to Makefile.
cross_overrides="/dev/null"
if [[ x$host != x$target ]]
then
	cross_defines="CROSS=-DCROSS_COMPILE"
	cross_overrides="${topdir}/cross-make"
fi

# When building gcc with a cross-compiler, we need to fix a few things.
# This must come after cross-make as we want all.build to override
# all.cross.
build_overrides="/dev/null"
if [[ x$build != x$host ]]
then
	build_overrides="${topdir}/build-make"
fi

# Expand extra_headers to include complete path.
# This substitutes for lots of t-* files.
extra_headers_list=
if [[ "x$extra_headers" = x ]]
then true
else
	# Prepend ${srcdir}/ginclude/ to every entry in extra_headers.
	for file in $extra_headers;
	do
		extra_headers_list="${extra_headers_list} \$(srcdir)/ginclude/${file}"
	done
fi

# Add a definition of USE_COLLECT2 if system wants one.
# Also tell toplev.c what to do.
# This substitutes for lots of t-* files.
if [[ x$use_collect2 = x ]]
then
	will_use_collect2=
	maybe_use_collect2=
else
	will_use_collect2="ld"
	maybe_use_collect2="-DUSE_COLLECT2"
fi

# NEED TO CONVERT
# Set MD_DEPS if the real md file is in md.pre-cpp.
# Set MD_CPP to the cpp to pass the md file through.  Md files use ';'
# for line oriented comments, so we must always use a GNU cpp.  If
# building gcc with a cross compiler, use the cross compiler just
# built.  Otherwise, we can use the cpp just built.
md_file_sub=
if [[ "x$md_cppflags" = x ]]
then
	md_file_sub=$srcdir/config/$md_file
else
	md_file=md
fi

# If we have gas in the build tree, make a link to it.
if [[ -f ../gas/Makefile ]]; then
	rm -f as; $symbolic_link ../gas/as.new as 2>/dev/null
fi

# If we have ld in the build tree, make a link to it.
if [[ -f ../ld/Makefile ]]; then
	if [[ x$use_collect2 = x ]]; then
		rm -f ld; $symbolic_link ../ld/ld.new ld 2>/dev/null
	else
		rm -f collect-ld; $symbolic_link ../ld/ld.new collect-ld 2>/dev/null
	fi
fi

# Figure out what language subdirectories are present.
subdirs=
for lang in ${srcdir}/*/config-lang.in ..
do
	case $lang in
	..) ;;
	# The odd quoting in the next line works around
	# an apparent bug in bash 1.12 on linux.
	${srcdir}/[[*]]/config-lang.in) ;;
	*) subdirs="$subdirs `echo $lang | sed -e 's,^.*/\([[^/]]*\)/config-lang.in$,\1,'`" ;;
	esac
done

# Make empty files to contain the specs and options for each language.
# Then add #include lines to for a compiler that has specs and/or options.

lang_specs_files=
lang_options_files=
rm -f specs.h options.h
touch specs.h options.h
for subdir in . $subdirs
do
	if [[ -f $srcdir/$subdir/lang-specs.h ]]; then
		echo "#include \"$subdir/lang-specs.h\"" >>specs.h
		lang_specs_files="$lang_specs_files $srcdir/$subdir/lang-specs.h"
	fi
	if [[ -f $srcdir/$subdir/lang-options.h ]]; then
		echo "#include \"$subdir/lang-options.h\"" >>options.h
		lang_options_files="$lang_options_files $srcdir/$subdir/lang-options.h"
	fi
done

# These (without "all_") are set in each config-lang.in.
# `language' must be a single word so is spelled singularly.
all_languages=
all_boot_languages=
all_compilers=
all_stagestuff=
all_diff_excludes=
all_outputs=Makefile
# List of language makefile fragments.
all_lang_makefiles=
all_headers=
all_lib2funcs=

# Add the language fragments.
# Languages are added via two mechanisms.  Some information must be
# recorded in makefile variables, these are defined in config-lang.in.
# We accumulate them and plug them into the main Makefile.
# The other mechanism is a set of hooks for each of the main targets
# like `clean', `install', etc.

language_fragments="Make-lang"
language_hooks="Make-hooks"
oldstyle_subdirs=

for s in .. $subdirs
do
	if [[ $s != ".." ]]
	then
		language=
		boot_language=
		compilers=
		stagestuff=
		diff_excludes=
		headers=
		outputs=
		lib2funcs=
		. ${srcdir}/$s/config-lang.in
		if [[ "x$language" = x ]]
		then
			echo "${srcdir}/$s/config-lang.in doesn't set \$language." 1>&2
			exit 1
		fi
		all_lang_makefiles="$all_lang_makefiles ${srcdir}/$s/Make-lang.in ${srcdir}/$s/Makefile.in"
		all_languages="$all_languages $language"
		if [[ "x$boot_language" = xyes ]]
		then
			all_boot_languages="$all_boot_languages $language"
		fi
		all_compilers="$all_compilers $compilers"
		all_stagestuff="$all_stagestuff $stagestuff"
		all_diff_excludes="$all_diff_excludes $diff_excludes"
		all_headers="$all_headers $headers"
		all_outputs="$all_outputs $outputs"
		if [[ x$outputs = x ]]
		then
			oldstyle_subdirs="$oldstyle_subdirs $s"
		fi
		all_lib2funcs="$all_lib2funcs $lib2funcs"
	fi
done

# Since we can't use `::' targets, we link each language in
# with a set of hooks, reached indirectly via lang.${target}.

rm -f Make-hooks
touch Make-hooks
target_list="all.build all.cross start.encap rest.encap \
	info dvi \
	install-normal install-common install-info install-man \
	uninstall distdir \
	mostlyclean clean distclean extraclean maintainer-clean \
	stage1 stage2 stage3 stage4"
for t in $target_list
do
	x=
	for l in .. $all_languages
	do
		if [[ $l != ".." ]]; then
			x="$x $l.$t"
		fi
	done
	echo "lang.$t: $x" >> Make-hooks
done

# If we're not building in srcdir, create .gdbinit.

if [[ ! -f Makefile.in ]]; then
	echo "dir ." > .gdbinit
	echo "dir ${srcdir}" >> .gdbinit
	if [[ x$gdb_needs_out_file_path = xyes ]]
	then
		echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
	fi
	if [[ "x$subdirs" != x ]]; then
		for s in $subdirs
		do
			echo "dir ${srcdir}/$s" >> .gdbinit
		done
	fi
	echo "source ${srcdir}/.gdbinit" >> .gdbinit
fi

# Process the language and host/target makefile fragments.
${CONFIG_SHELL-/bin/sh} $srcdir/configure.frag $srcdir "$subdirs" "$dep_host_xmake_file" "$dep_tmake_file"

# Substitute configuration variables
AC_SUBST(subdirs)
AC_SUBST(all_languages)
AC_SUBST(all_boot_languages)
AC_SUBST(all_compilers)
AC_SUBST(all_lang_makefiles)
AC_SUBST(all_stagestuff)
AC_SUBST(all_diff_excludes)
AC_SUBST(all_lib2funcs)
AC_SUBST(all_headers)
AC_SUBST(extra_passes)
AC_SUBST(extra_programs)
AC_SUBST(extra_parts)
AC_SUBST(extra_c_objs)
AC_SUBST(extra_c_flags)
AC_SUBST(extra_objs)
AC_SUBST(host_extra_gcc_objs)
AC_SUBST(extra_headers_list)
AC_SUBST(dep_host_xmake_file)
AC_SUBST(dep_tmake_file)
AC_SUBST(out_file)
AC_SUBST(out_object_file)
AC_SUBST(md_file)
AC_SUBST(tm_file_list)
AC_SUBST(build_xm_file_list)
AC_SUBST(host_xm_file_list)
AC_SUBST(lang_specs_files)
AC_SUBST(lang_options_files)
AC_SUBST(thread_file)
AC_SUBST(version)
AC_SUBST(local_prefix)
AC_SUBST(gxx_include_dir)
AC_SUBST(fixincludes)
AC_SUBST(build_install_headers_dir)
AC_SUBST(build_exeext)
AC_SUBST(float_format)
AC_SUBST(will_use_collect2)
AC_SUBST(maybe_use_collect2)
AC_SUBST(cc_set_by_configure)
AC_SUBST(stage_prefix_set_by_configure)

AC_SUBST_FILE(target_overrides)
AC_SUBST_FILE(host_overrides)
AC_SUBST(cross_defines)
AC_SUBST_FILE(cross_overrides)
AC_SUBST_FILE(build_overrides)
AC_SUBST_FILE(language_fragments)
AC_SUBST_FILE(language_hooks)

# Echo that links are built
if [[ x$host = x$target ]]
then
	str1="native "
else
	str1="cross-"
	str2=" from $host"
fi

if [[ x$host != x$build ]]
then
	str3=" on a $build system"
fi

if [[ "x$str2" != x ]] || [[ "x$str3" != x ]]
then
	str4=
fi

echo "Links are now set up to build a ${str1}compiler for ${target}$str4" 1>&2

if [[ "x$str2" != x ]] || [[ "x$str3" != x ]]
then
	echo " ${str2}${str3}." 1>&2
fi

# Configure the subdirectories
# AC_CONFIG_SUBDIRS($subdirs)

# Create the Makefile
# and configure language subdirectories
AC_OUTPUT($all_outputs,
[
. $srcdir/configure.lang
case x$CONFIG_HEADERS in
xconfig.h:config.in)
echo > cstamp-h ;;
esac
],
[
host='${host}'
build='${build}'
target='${target}'
target_alias='${target_alias}'
srcdir='${srcdir}'
subdirs='${subdirs}'
oldstyle_subdirs='${oldstyle_subdirs}'
symbolic_link='${symbolic_link}'
program_transform_set='${program_transform_set}'
program_transform_name='${program_transform_name}'
dep_host_xmake_file='${dep_host_xmake_file}'
host_xmake_file='${host_xmake_file}'
dep_tmake_file='${dep_tmake_file}'
tmake_file='${tmake_file}'
thread_file='${thread_file}'
version='${version}'
local_prefix='${local_prefix}'
build_install_headers_dir='${build_install_headers_dir}'
build_exeext='${build_exeext}'
gdb_needs_out_file_path='${gdb_needs_out_file_path}'
SET_MAKE='${SET_MAKE}'
build_broken_install='${build_broken_install}'
target_list='${target_list}'
target_overrides='${target_overrides}'
host_overrides='${host_overrides}'
cross_defines='${cross_defines}'
cross_overrides='${cross_overrides}'
build_overrides='${build_overrides}'
])
