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

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 Haifa scheduler.
AC_ARG_ENABLE(haifa,
[  --enable-haifa          Use the experimental scheduler.
  --disable-haifa         Don't use the experimental scheduler for the
                          targets which normally enable it.])

# 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
GCC_PROG_LN
GCC_PROG_LN_S
AC_PROG_RANLIB
AC_PROG_YACC
EGCS_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 varargs.h sys/varargs.h)

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

AC_DECL_SYS_SIGLIST

AC_CHECK_FUNCS(strerror strtoul bsearch)

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

build_xm_file=
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 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-gnulibc1*)
		tm_file="${tm_file} alpha/linux.h alpha/elf.h"
		xm_file="${xm_file} alpha/xm-linux.h"
		target_cpu_default="MASK_GAS"
		tmake_file="t-linux t-linux-gnulibc1 alpha/t-linux"
		xmake_file=none
		fixincludes=Makefile.in
		gas=yes gnu_ld=yes
 		if [[ x$enable_threads = xyes ]]; then
 			thread_file='posix'
 		fi
		;;
	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"
		tmake_file="t-linux alpha/t-linux"
		xmake_file=none
		fixincludes=Makefile.in
		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
		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
		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
		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
		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
		;;
	arc-*-elf*)
		extra_parts="crtinit.o crtfini.o"
		;;
	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, except for math.h.
		fixincludes=fixinc.math
		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
		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
		;;
	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*)
		if [[ x$enable_haifa != xno ]]; then
			enable_haifa=yes
		fi
		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*)
		if [[ x$enable_haifa != xno ]]; then
			enable_haifa=yes
		fi
		target_cpu_default=1
		tm_file="${tm_file} pa/pa-osf.h"
		use_collect2=yes
		fixincludes=Makefile.in
		;;
	hppa1.1-*-rtems*)
		if [[ x$enable_haifa != xno ]]; then
			enable_haifa=yes
		fi
		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*)
		if [[ x$enable_haifa != xno ]]; then
			enable_haifa=yes
		fi
		tm_file="${tm_file} pa/pa-osf.h"
		use_collect2=yes
		fixincludes=Makefile.in
		;;
	hppa1.1-*-bsd*)
		if [[ x$enable_haifa != xno ]]; then
			enable_haifa=yes
		fi
		target_cpu_default=1
		use_collect2=yes
		fixincludes=Makefile.in
		;;
	hppa1.0-*-bsd*)
		if [[ x$enable_haifa != xno ]]; then
			enable_haifa=yes
		fi
		use_collect2=yes
		fixincludes=Makefile.in
		;;
	hppa1.0-*-hpux7*)
		if [[ x$enable_haifa != xno ]]; then
			enable_haifa=yes
		fi
		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
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa1.0-*-hpux8.0[[0-2]]*)
		if [[ x$enable_haifa != xno ]]; then
			enable_haifa=yes
		fi
		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
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa1.1-*-hpux8.0[[0-2]]*)
		if [[ x$enable_haifa != xno ]]; then
			enable_haifa=yes
		fi
		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
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa1.1-*-hpux8*)
		if [[ x$enable_haifa != xno ]]; then
			enable_haifa=yes
		fi
		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
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa1.0-*-hpux8*)
		if [[ x$enable_haifa != xno ]]; then
			enable_haifa=yes
		fi
		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
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa1.1-*-hpux10*)
		if [[ x$enable_haifa != xno ]]; then
			enable_haifa=yes
		fi
		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
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa1.0-*-hpux10*)
		if [[ x$enable_haifa != xno ]]; then
			enable_haifa=yes
		fi
		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
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa1.1-*-hpux*)
		if [[ x$enable_haifa != xno ]]; then
			enable_haifa=yes
		fi
		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
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa1.0-*-hpux*)
		if [[ x$enable_haifa != xno ]]; then
			enable_haifa=yes
		fi
		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
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa1.1-*-hiux*)
		if [[ x$enable_haifa != xno ]]; then
			enable_haifa=yes
		fi
		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
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa1.0-*-hiux*)
		if [[ x$enable_haifa != xno ]]; then
			enable_haifa=yes
		fi
		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
		install_headers_dir=install-headers-cpio
		use_collect2=yes
		;;
	hppa*-*-lites*)
		if [[ x$enable_haifa != xno ]]; then
			enable_haifa=yes
		fi
		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
		;;
	i[[456]]86-ncr-sysv4*)		# NCR 3000 - ix86 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
		;;
	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
		;;
	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
		;;
	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, except for math.h.
		fixincludes=fixinc.math
		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, except for math.h.
		fixincludes=fixinc.math
		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, except for math.h.
		fixincludes=fixinc.math
		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
		;;
	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.
		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.
		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.
		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.
		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
		install_headers_dir=install-headers-cpio
		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
		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
		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
 		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
		;;
	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
		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
		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
		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
		;;
	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
		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
		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, except for math.h.
		fixincludes=fixinc.math
		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"
		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
		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
		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
                ;;
	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
		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
		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
		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
		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, except for math.h.
		fixincludes=fixinc.math
		tmake_file=t-netbsd
		;;
	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
		;;
	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
	        ;;
	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
	        ;;
	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
		;;
	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
		;;
	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
		;;
	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
		;;
	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
		;;
	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
		;;
	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
		use_collect2=yes
		;;
	ns32k-tek6200-bsd*)
		tm_file=ns32k/tek6200.h
		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
#		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, except for math.h.
		fixincludes=fixinc.math
		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-gnulibc1)
		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 t-linux-gnulibc1 rs6000/t-ppccomm"
		else
			tmake_file="rs6000/t-ppc t-linux t-linux-gnulibc1 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-*-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-*-rtems*)
		tmake_file="sh/t-sh t-rtems"
		tm_file=sh/rtems.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, except for math.h.
		fixincludes=fixinc.math
		tmake_file=t-netbsd
		;;
	sparc-*-bsd*)
		tm_file=sparc/bsd.h
		;;
	sparc-*-elf*)
		tm_file=sparc/elf.h
		tmake_file=sparc/t-elf
		extra_parts="crti.o crtn.o crtbegin.o crtend.o"
		#float_format=i128
		float_format=i64
		;;
	sparc-*-linux-gnuaout*)		# Sparc's running Linux, a.out
		xm_file="sparc/xm-sparc.h sparc/xm-linux.h"
		tm_file=sparc/linux-aout.h
		xmake_file=x-linux
		fixincludes=Makefile.in #On Linux, the headers are ok already.
		gnu_ld=yes
		;;
	sparc-*-linux-gnulibc1*)	# Sparc's running Linux, libc5
		xm_file="sparc/xm-sparc.h sparc/xm-linux.h"
		xmake_file=x-linux
		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.
		gnu_ld=yes
		;;
	sparc-*-linux-gnu*)		# Sparc's running Linux, libc6
		xm_file="sparc/xm-sparc.h sparc/xm-linux.h"
		xmake_file=x-linux
		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.
		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
 		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
		if [[ x$gas = xyes ]]; then
			tm_file="${tm_file} sparc/sun4gas.h"
		fi
		;;
	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"
		;;
	sparc64-*-linux*)		# 64-bit Sparc's running Linux
		tmake_file=sparc/t-sp64
		xm_file="sparc/xm-sp64.h sparc/xm-linux.h"
		tm_file=sparc/linux64.h
		xmake_file=x-linux
		fixincludes=Makefile.in	# On Linux, the headers are ok already.
		gnu_ld=yes
		;;
# 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
#		;;
	v850-*-*)
		cpu_type=v850
		tm_file="v850/v850.h"
		xm_file="v850/xm-v850.h"
		if [[ x$stabs = xyes ]]
		then
			tm_file="${tm_file} dbx.h"
		fi
		use_collect2=no
		;;
	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, except for math.h.
		fixincludes=fixinc.math
		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
		install_headers_dir=install-headers-cpio
		;;
	*-*-sysv*)
		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"
				;;
			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 | .v9)
				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_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`

# 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

# If this is using newlib, then define inhibit_libc in
# LIBGCC2_CFLAGS.  This will cause __eprintf to be left out of
# libgcc.a, but that's OK because newib should have its own version of
# assert.h.
inhibit_libc=
if [[ x$with_newlib = xyes ]]; then
	inhibit_libc=-Dinhibit_libc
fi
AC_SUBST(inhibit_libc)

# Override SCHED_OBJ and SCHED_CFLAGS to enable the Haifa scheduler.
sched_prefix=
sched_cflags=
if [[ x$enable_haifa = xyes ]]; then
    echo "Using the Haifa scheduler."
    sched_prefix=haifa-
    sched_cflags=-DHAIFA
fi
AC_SUBST(sched_prefix)
AC_SUBST(sched_cflags)
if [[ x$enable_haifa != x ]]; then
    # Explicitly remove files that need to be recompiled for the Haifa scheduler.
    for x in genattrtab.o toplev.o loop.o unroll.o *sched.o; do
	if [[ -f $x ]]; then
	    echo "Removing $x"
	    rm -f $x
	fi
    done
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(install)

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
# If the host supports symlinks, point stage[1234] at ../stage[1234] so
# bootstrapping and the installation procedure can still use
# CC="stage1/xgcc -Bstage1/".  If the host doesn't support symlinks,
# FLAGS_TO_PASS has been modified to solve the problem there.
# This is virtually a duplicate of what happens in configure.lang; we do
# an extra check to make sure this only happens if ln -s can be used.
if [[ "$symbolic_link" = "ln -s" ]]; then
 for d in .. ${subdirs} ; do
   if [[ $d != .. ]]; then
	STARTDIR=`pwd`
	cd $d
	for t in stage1 stage2 stage3 stage4 include
	do
		rm -f $t
		$symbolic_link ../$t $t 2>/dev/null
	done
	cd $STARTDIR
   fi
 done
else true ; fi
],
[
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}'
out_file='${out_file}'
gdb_needs_out_file_path='${gdb_needs_out_file_path}'
SET_MAKE='${SET_MAKE}'
target_list='${target_list}'
target_overrides='${target_overrides}'
host_overrides='${host_overrides}'
cross_defines='${cross_defines}'
cross_overrides='${cross_overrides}'
build_overrides='${build_overrides}'
])
