# libgcc host-specific configuration file.
# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
# 2008, 2009, 2010 Free Software Foundation, Inc.

#This file is part of GCC.

#GCC is free software; you can redistribute it and/or modify it under
#the terms of the GNU General Public License as published by the Free
#Software Foundation; either version 3, or (at your option) any later
#version.

#GCC is distributed in the hope that it will be useful, but WITHOUT
#ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
#FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
#for more details.

#You should have received a copy of the GNU General Public License
#along with GCC; see the file COPYING3.  If not see
#<http://www.gnu.org/licenses/>.

# This is the libgcc host-specific configuration file
# where a configuration type is mapped to different system-specific
# definitions and files.  This is invoked by the autoconf-generated
# configure script.  Putting it in a separate shell file lets us skip
# running autoconf when modifying host-specific information.

# This file bears an obvious resemblance to gcc/config.gcc.  The cases
# should be kept similar, to ease moving library-specific settings
# from config.gcc to this file.  That is also why tmake_file is
# left as tmake_file, rather than hmake_file, even though this library
# switches on ${host}.

# This file switches on the shell variable ${host}, and also uses the
# following shell variables:
#
#  with_*		Various variables as set by configure.

# This file sets the following shell variables for use by the
# autoconf-generated configure script:
#
#  asm_hidden_op	The assembler pseudo-op to use for hide
#			lists for object files implemented in
#			assembly (with -fvisibility=hidden for C).
#			The default is ".hidden".
#  cpu_type		The name of the cpu, if different from the first
#			chunk of the canonical host name.
#  extra_parts		List of extra object files that should be compiled
#			for this target machine.  This may be overridden
#			by setting EXTRA_PARTS in a tmake_file fragment.
#			If either is set, EXTRA_PARTS and
#			EXTRA_MULTILIB_PARTS inherited from the GCC
#			subdirectory will be ignored.
#  tmake_file		A list of machine-description-specific
#			makefile-fragments, if different from
#			"$cpu_type/t-$cpu_type".

asm_hidden_op=.hidden
extra_parts=
tmake_file=

# Set default cpu_type so it can be updated in each machine entry.
cpu_type=`echo ${host} | sed 's/-.*$//'`
case ${host} in
m32c*-*-*)
        cpu_type=m32c
        ;;
alpha*-*-*)
	cpu_type=alpha
	;;
am33_2.0-*-linux*)
	cpu_type=mn10300
	;;
arm*-*-*)
	cpu_type=arm
	;;
avr-*-*)
	cpu_type=avr
	;;    
bfin*-*)
	cpu_type=bfin
	;;
fido-*-*)
	cpu_type=m68k
	;;
frv*)	cpu_type=frv
	;;
moxie*)	cpu_type=moxie
	;;
i[34567]86-*-*)
	cpu_type=i386
	;;
x86_64-*-*)
	cpu_type=i386
	;;
ia64-*-*)
	;;
hppa*-*-*)
	cpu_type=pa
	;;
lm32*-*-*)
	cpu_type=lm32
	;;
m32r*-*-*)
        cpu_type=m32r
        ;;
m68k-*-*)
	;;
mep*-*-*)
	;;
microblaze*-*-*)
	cpu_type=microblaze
	;;
mips*-*-*)
	cpu_type=mips
	;;
powerpc*-*-*)
	cpu_type=rs6000
	;;
rs6000*-*-*)
	;;
score*-*-*)
	cpu_type=score
	;;
sparc64*-*-*)
	cpu_type=sparc
	;;
sparc*-*-*)
	cpu_type=sparc
	;;
spu*-*-*)
	cpu_type=spu
	;;
s390*-*-*)
	cpu_type=s390
	;;
# Note the 'l'; we need to be able to match e.g. "shle" or "shl".
sh[123456789lbe]*-*-*)
	cpu_type=sh
	;;
esac

# Common parts for widely ported systems.
case ${host} in
*-*-darwin*)
  asm_hidden_op=.private_extern
  tmake_file="t-darwin ${cpu_type}/t-darwin t-slibgcc-darwin"
  ;;
*-*-freebsd*)
  # This is the generic ELF configuration of FreeBSD.  Later
  # machine-specific sections may refine and add to this
  # configuration.
  ;;
*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu*)
  extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
  ;;
*-*-netbsd*)
  ;;
*-*-openbsd*)
  ;;
*-*-rtems*)
  ;;
*-*-vxworks*)
  ;;
*-*-elf)
  ;;
esac

case ${host} in
# Support site-specific machine types.
*local*)
	rest=`echo ${host} | sed -e "s/$cpu_type-//"`
	if test -f $srcdir/config/${cpu_type}/t-$rest
	then tmake_file=${cpu_type}/t-$rest
	fi
	;;
alpha*-*-linux* | alpha*-*-gnu*)
	tmake_file="${tmake_file} alpha/t-crtfm"
	extra_parts="$extra_parts crtfastmath.o"
	;;
alpha*-*-freebsd*)
	;;
alpha*-*-netbsd*)
	;;
alpha*-*-openbsd*)
	;;
alpha*-dec-osf5.1*)
	;;
alpha64-dec-*vms*)
	tmake_file="vms/t-vms vms/t-vms64 alpha/t-vms"
	;;
alpha*-dec-*vms*)
	tmake_file="vms/t-vms alpha/t-vms"
	;;
arc-*-elf*)
	;;
arm-wrs-vxworks)
	;;
arm*-*-freebsd*)
	;;
arm*-*-netbsdelf*)
	;;
arm*-*-netbsd*)
	;;
arm*-*-linux*)			# ARM GNU/Linux with ELF
	;;
arm*-*-uclinux*)		# ARM ucLinux
	;;
arm*-*-ecos-elf)
	;;
arm*-*-eabi* | arm*-*-symbianelf* )
	;;
arm*-*-rtems*)
	;;
arm*-*-elf)
	;;
arm*-wince-pe*)
	;;
arm-*-pe*)
	;;
avr-*-rtems*)
	;;
avr-*-*)
    # Make HImode functions for AVR
    tmake_file=${cpu_type}/t-avr
	;;
bfin*-elf*)
        ;;
bfin*-uclinux*)
        ;;
bfin*-linux-uclibc*)
	# No need to build crtbeginT.o on uClibc systems.  Should probably
	# be moved to the OS specific section above.
	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
	;;
bfin*-*)
        ;;
crisv32-*-elf | crisv32-*-none | cris-*-elf | cris-*-none)
	extra_parts="crtbegin.o crtend.o"
	;;
cris-*-linux* | crisv32-*-linux*)
	;;
crx-*-elf)
	;;
fido-*-elf)
	;;
fr30-*-elf)
	;;
frv-*-elf)
	;;
frv-*-*linux*)
	;;
h8300-*-rtems*)
	;;
h8300-*-elf*)
	;;
hppa*64*-*-linux*)
	;;
hppa*-*-linux*)
	;;
hppa[12]*-*-hpux10*)
	;;
hppa*64*-*-hpux11*)
	;;
hppa[12]*-*-hpux11*)
	;;
i[34567]86-*-darwin*)
	;;
x86_64-*-darwin*)
	tmake_file="t-darwin ${cpu_type}/t-darwin64 t-slibgcc-darwin"
	;;
i[34567]86-*-elf*)
	;;
x86_64-*-elf*)
	;;
i[34567]86-*-freebsd*)
	tmake_file="${tmake_file} i386/t-freebsd"
	;;
x86_64-*-freebsd*)
	tmake_file="${tmake_file} i386/t-freebsd"
	;;
i[34567]86-*-netbsdelf*)
	;;
i[34567]86-*-netbsd*)
	;;
x86_64-*-netbsd*)
	;;
i[34567]86-*-openbsd2.*|i[34567]86-*openbsd3.[0123])
	;;
i[34567]86-*-openbsd*)
	;;
i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i[34567]86-*-gnu*)
	extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o"
	tmake_file="${tmake_file} i386/t-crtpc i386/t-crtfm"
	;;
x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
	extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o"
	tmake_file="${tmake_file} i386/t-crtpc i386/t-crtfm"
	;;
i[34567]86-pc-msdosdjgpp*)
	;;
i[34567]86-*-lynxos*)
	;;
i[3456x]86-*-netware*)
	case /${with_ld} in
	*/nwld)
	 	tmake_file="${tmake_file} i386/t-nwld"
		;;
	esac
	;;
i[34567]86-*-nto-qnx*)
	;;
i[34567]86-*-rtems*)
	;;
i[34567]86-*-solaris2*)
	tmake_file="${tmake_file} i386/t-sol2"
	case ${host} in
	*-*-solaris2.1[0-9]*)
		# Solaris 2.10 provides crt1.o, crti.o, crtn.o, and gcrt1.o as
		# part of the base system.
		extra_parts="gmon.o crtbegin.o crtend.o"
		;;
	*)
		extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o"
		;;
	esac
	;;
i[4567]86-wrs-vxworks|i[4567]86-wrs-vxworksae)
	;;
i[34567]86-*-pe)
	;;
i[34567]86-*-cygwin* | i[34567]86-*-mingw*)
	extra_parts="crtbegin.o crtend.o crtfastmath.o"
	tmake_file="i386/t-cygming i386/t-crtfm"
	;;
x86_64-*-mingw*)
	;;
i[34567]86-*-interix3*)
	;;
ia64*-*-elf*)
	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
	tmake_file="ia64/t-ia64"
	;;
ia64*-*-freebsd*)
	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
	tmake_file="ia64/t-ia64"
	;;
ia64*-*-linux*)
	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
	tmake_file="ia64/t-ia64 t-softfp ia64/t-fprules-softfp ia64/t-softfp-compat"
	;;
ia64*-*-hpux*)
	;;
ia64-hp-*vms*)
	tmake_file="vms/t-vms vms/t-vms64 ia64/t-vms"
	;;
iq2000*-*-elf*)
        ;;
lm32-*-elf*|lm32-*-rtems*)
        extra_parts="crtbegin.o crtend.o crti.o crtn.o"
        tmake_file="lm32/t-lm32 lm32/t-elf t-softfp"
	;;
lm32-*-uclinux*)
        extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o"
        tmake_file="lm32/t-lm32 lm32/t-uclinux t-softfp"
	;;	
m32r-*-elf*|m32r-*-rtems*)
 	;;
m32rle-*-elf*)
	;;
m32r-*-linux*)
 	;;
m32rle-*-linux*)
	;;
m68hc11-*-*|m6811-*-*)
        ;;
m68hc12-*-*|m6812-*-*)
        ;;
m68k-*-elf*)
	;;
m68k*-*-netbsdelf*)
	;;
m68k*-*-openbsd*)
	;;
m68k-*-uclinux*)		# Motorola m68k/ColdFire running uClinux with uClibc
	;;
m68k-*-linux*)		# Motorola m68k's running GNU/Linux
				# with ELF format using glibc 2
				# aka the GNU/Linux C library 6.
	;;
m68k-*-rtems*)
	;;
mcore-*-elf)
	;;
mcore-*-pe*)
	;;
microblaze*-*-*)
        tmake_file="microblaze/t-microblaze"
	;;
mips-sgi-irix[56]*)
	;;
mips*-*-netbsd*)			# NetBSD/mips, either endian.
	;;
mips64*-*-linux*)
	extra_parts="$extra_parts crtfastmath.o"
	tmake_file="{$tmake_file} mips/t-crtfm"
	;;
mips*-*-linux*)				# Linux MIPS, either endian.
	extra_parts="$extra_parts crtfastmath.o"
	tmake_file="{$tmake_file} mips/t-crtfm"
	;;
mips*-*-openbsd*)
	;;
mipsisa32-*-elf* | mipsisa32el-*-elf*)
	;;
mipsisa32r2-*-elf* | mipsisa32r2el-*-elf*)
	;;
mipsisa64-*-elf* | mipsisa64el-*-elf*)
	;;
mipsisa64r2-*-elf* | mipsisa64r2el-*-elf*)
	;;
mipsisa64sr71k-*-elf*)
        ;;
mipsisa64sb1-*-elf* | mipsisa64sb1el-*-elf*)
	;;
mips-*-elf* | mipsel-*-elf*)
	;;
mips64-*-elf* | mips64el-*-elf*)
	;;
mips64vr-*-elf* | mips64vrel-*-elf*)
        ;;
mips64orion-*-elf* | mips64orionel-*-elf*)
	;;
mips*-*-rtems*)
	;;
mips-wrs-vxworks)
	;;
mipstx39-*-elf* | mipstx39el-*-elf*)
	;;
mmix-knuth-mmixware)
	extra_parts="crti.o crtn.o crtbegin.o crtend.o"
	tmake_file="${tmake_file} ${cpu_type}/t-${cpu_type}"
	;;
mn10300-*-*)
	;;
moxie-*-*)
	tmake_file="moxie/t-moxie moxie/t-moxie-softfp"
	extra_parts="crtbegin.o crtend.o crti.o crtn.o"
	;;
pdp11-*-*)
	;;
picochip-*-*)
        ;;
powerpc-*-darwin*)
	;;
powerpc64-*-darwin*)
	;;
powerpc-*-freebsd*)
	tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-freebsd t-softfp"
	;;
powerpc-*-netbsd*)
	;;
powerpc-*-eabispe*)
	tmake_file="${tmake_file} rs6000/t-ppccomm"
	;;
powerpc-*-eabisimaltivec*)
	;;
powerpc-*-eabisim*)
	;;
powerpc-*-elf*)
	;;
powerpc-*-eabialtivec*)
	;;
powerpc-*-eabi*)
	tmake_file="${tmake_file} rs6000/t-ppccomm"
	;;
powerpc-*-rtems*)
	;;
powerpc-*-linux* | powerpc64-*-linux*)
	tmake_file="${tmake_file} rs6000/t-ppccomm rs6000/t-ldbl128 t-softfp"
	;;
powerpc64-*-gnu*)
	tmake_file="${tmake_file} rs6000/t-ldbl128 t-softfp"
	;;
powerpc-*-gnu-gnualtivec*)
	tmake_file="${tmake_file} rs6000/t-ldbl128"
	;;
powerpc-*-gnu*)
	tmake_file="${tmake_file} rs6000/t-ldbl128"
	;;
powerpc-wrs-vxworks|powerpc-wrs-vxworksae)
	;;
powerpc-*-lynxos*)
	;;
powerpcle-*-elf*)
	;;
powerpcle-*-eabisim*)
	;;
powerpcle-*-eabi*)
	;;
rs6000-ibm-aix4.[3456789]* | powerpc-ibm-aix4.[3456789]*)
	;;
rs6000-ibm-aix5.1.* | powerpc-ibm-aix5.1.*)
	;;
rs6000-ibm-aix[56789].* | powerpc-ibm-aix[56789].*)
	;;
rx-*-elf)
	extra_parts="crtbegin.o crtend.o"
	tmake_file="rx/t-rx"
	;;
s390-*-linux*)
	tmake_file="${tmake_file} s390/t-crtstuff s390/t-linux s390/32/t-floattodi"
	;;
s390x-*-linux*)
	tmake_file="${tmake_file} s390/t-crtstuff s390/t-linux"
	;;
s390x-ibm-tpf*)
	tmake_file="${tmake_file} s390/t-crtstuff s390/t-tpf"
	;;
score-*-elf)
        ;;
sh-*-elf* | sh[12346l]*-*-elf* | \
sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
  sh-*-linux* | sh[2346lbe]*-*-linux* | \
  sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
   sh64-*-netbsd* | sh64l*-*-netbsd*)
	case ${host} in
	sh*-*-linux*)
		tmake_file="${tmake_file} sh/t-linux"
		;;
	esac
	;;
sh-*-rtems*)
	;;
sh-wrs-vxworks)
	;;
sparc-*-netbsdelf*)
	;;
sparc64-*-openbsd*)
	;;
sparc-*-elf*)
	;;
sparc-*-linux*)		# SPARC's running GNU/Linux, libc6
	extra_parts="$extra_parts crtfastmath.o"
	tmake_file="${tmake_file} sparc/t-crtfm"
	;;
sparc-*-rtems* | sparc64-*-rtems* )
	;;
sparc64-*-solaris2* | sparcv9-*-solaris2*)
	;;
sparc-*-solaris2*)
	;;
sparc64-*-elf*)
	;;
sparc-wrs-vxworks)
	;;
sparc64-*-freebsd*|ultrasparc-*-freebsd*)
	;;
sparc64-*-linux*)		# 64-bit SPARC's running GNU/Linux
	extra_parts="$extra_parts crtfastmath.o"
	tmake_file="${tmake_file} sparc/t-crtfm"
	;;
sparc64-*-netbsd*)
	;;
spu-*-elf*)
	;;
v850e1-*-*)
	;;
v850e-*-*)
	;;
v850-*-*)
	;;
vax-*-linux*)
	;;
vax-*-netbsdelf*)
	;;
vax-*-netbsd*)
	;;
vax-*-openbsd*)
	;;
xstormy16-*-elf)
	;;
xtensa*-*-elf*)
	;;
xtensa*-*-linux*)
	;;
am33_2.0-*-linux*)
	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
	;;
m32c-*-elf*|m32c-*-rtems*)
 	;;
mep*-*-*)
	;;
*)
	echo "*** Configuration ${host} not supported" 1>&2
	exit 1
	;;
esac

case ${host} in
i[34567]86-*-linux* | x86_64-*-linux* | \
  i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | \
  i[34567]86-*-gnu*)
	tmake_file="${tmake_file} t-tls i386/t-cpuinfo"
	if test "$libgcc_cv_cfi" = "yes"; then
		tmake_file="${tmake_file} t-stack i386/t-stack-i386"
	fi
	;;
esac

case ${host} in
i[34567]86-*-darwin* | x86_64-*-darwin* | \
  i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu | \
  i[34567]86-*-linux* | x86_64-*-linux* | \
  i[34567]86-*-gnu* | \
  i[34567]86-*-solaris2* | \
  i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw* | \
  i[34567]86-*-freebsd* | x86_64-*-freebsd*)
	if test "${host_address}" = 32; then
		tmake_file="${tmake_file} t-softfp i386/${host_address}/t-fprules-softfp"
	fi
	;;
esac

case ${host} in
i[34567]86-*-linux* | x86_64-*-linux*)
	# Provide backward binary compatibility for 64bit Linux/x86.
	if test "${host_address}" = 64; then
		tmake_file="${tmake_file} i386/${host_address}/t-softfp-compat"
	fi
	;;
esac
