# gas target specific configuration file.  This is a -*- sh -*- file.

# This is invoked by configure.  Putting it in a separate shell file
# lets us skip running autoconf when modifying target specific
# information.

# Input shell variables:
#   targ	a configuration target name, such as i686-pc-linux-gnu.

# Output shell variables:
#   cpu_type	canonical gas cpu type; identifies the config/tc-* files
#   fmt		output format; identifies the config/obj-* files
#   em		emulation; identifies the config/te-* files

# Optional output shell variables; these are not always set:
#   arch	the default architecture; sets DEFAULT_ARCH on some systems 
#   endian	"big" or "little"; used on bi-endian systems

cpu_type=
fmt=
em=generic
bfd_gas=no
arch=
endian=

eval `echo $targ | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/cpu=\1 vendor=\2 os=\3/'`

# Check for architecture variants.  Set cpu_type and, optionally,
# endian and arch.
# Note: This table is alpha-sorted, please try to keep it that way.
case ${cpu} in
  alpha*)		cpu_type=alpha ;;
  am33_2.0)		cpu_type=mn10300 endian=little ;;
  arm*be|arm*b)		cpu_type=arm endian=big ;;
  arm*)			cpu_type=arm endian=little ;;
  bfin*)		cpu_type=bfin endian=little ;;
  c4x*)			cpu_type=tic4x ;;
  cr16*)		cpu_type=cr16 endian=little ;;
  crisv32)		cpu_type=cris arch=crisv32 ;;
  crx*)			cpu_type=crx endian=little ;;
  fido)			cpu_type=m68k ;;
  hppa*)		cpu_type=hppa ;;
  i[3-7]86)		cpu_type=i386 arch=i386;;
  ia64)			cpu_type=ia64 ;;
  ip2k)			cpu_type=ip2k endian=big ;; 
  iq2000)		cpu_type=iq2000 endian=big ;; 
  m32c)			cpu_type=m32c endian=big ;;
  m32r)			cpu_type=m32r endian=big ;;
  m32rle)		cpu_type=m32r endian=little ;;
  m5200)		cpu_type=m68k ;;
  m68008)		cpu_type=m68k ;;
  m680[012346]0)	cpu_type=m68k ;;
  m6811|m6812|m68hc12)	cpu_type=m68hc11 ;;
  m683??)		cpu_type=m68k ;;
  maxq)			cpu_type=maxq ;;
  mep-*-elf)		cpu_type=mep endian=big ;;
  mips*el)		cpu_type=mips endian=little ;;
  mips*)		cpu_type=mips endian=big ;;
  mt)                   cpu_type=mt endian=big ;;
  or32*)		cpu_type=or32 endian=big ;;
  pjl*)			cpu_type=pj endian=little ;;
  pj*)			cpu_type=pj endian=big ;;
  powerpc*le*)		cpu_type=ppc endian=little ;;
  powerpc*)		cpu_type=ppc endian=big ;;
  rs6000*)		cpu_type=ppc ;;
  s390x*)		cpu_type=s390 arch=s390x ;;
  s390*)		cpu_type=s390 arch=s390 ;;
  score*l)              cpu_type=score endian=little ;;
  score*)               cpu_type=score endian=big ;;
  sh5le*)		cpu_type=sh64 endian=little ;;
  sh5*)			cpu_type=sh64 endian=big ;;
  sh64le*)		cpu_type=sh64 endian=little ;;
  sh64*)            	cpu_type=sh64 endian=big ;;
  sh*le)		cpu_type=sh endian=little ;;
  sh*)			cpu_type=sh endian=big ;;
  sparc64*)		cpu_type=sparc arch=v9-64 ;;
  sparc86x*)		cpu_type=sparc arch=sparc86x  ;;
  sparclet*)		cpu_type=sparc arch=sparclet ;;
  sparclite*)		cpu_type=sparc arch=sparclite ;;
  sparc*)		cpu_type=sparc arch=sparclite ;; # ??? See tc-sparc.c.
  strongarm*be)		cpu_type=arm endian=big ;;
  strongarm*b)		cpu_type=arm endian=big ;;
  strongarm*)		cpu_type=arm endian=little ;;
  v850*)		cpu_type=v850 ;;
  x86_64*)		cpu_type=i386 arch=x86_64;;
  xscale*be|xscale*b)	cpu_type=arm endian=big ;;
  xscale*)		cpu_type=arm endian=little ;;
  xtensa*)		cpu_type=xtensa arch=xtensa ;;
  *)			cpu_type=${cpu} ;;
esac


# Assign object format.  Set fmt, em, and bfd_gas.
generic_target=${cpu_type}-$vendor-$os
# Note: This table is alpha-sorted, please try to keep it that way.
case ${generic_target} in
  alpha-*-*vms*)			fmt=evax ;;
  alpha-*-osf*)				fmt=ecoff ;;
  alpha-*-linuxecoff*)			fmt=ecoff ;;
  alpha-*-linux-*)			fmt=elf em=linux ;;
  alpha-*-netbsd*)			fmt=elf em=nbsd ;;
  alpha-*-openbsd*)			fmt=elf em=obsd ;;

  arc-*-elf*)				fmt=elf ;;

  arm-*-aout)				fmt=aout ;;
  arm-*-coff | thumb-*-coff)		fmt=coff ;;
  arm-*-rtems* | thumb-*-rtems*)	fmt=elf ;;
  arm-*-elf | thumb-*-elf)		fmt=elf ;;
  arm-*-eabi*)				fmt=elf em=armeabi ;;
  arm-*-symbianelf*)			fmt=elf em=symbian ;;
  arm-*-kaos*)				fmt=elf ;;
  arm-*-conix*)				fmt=elf ;;
  arm-*-linux*aout*)			fmt=aout em=linux ;;
  arm-*-linux-*eabi*)			fmt=elf  em=armlinuxeabi ;;
  arm-*-linux-*)			fmt=elf  em=linux ;;
  arm-*-uclinux*eabi*)			fmt=elf  em=armlinuxeabi ;;
  arm-*-uclinux*)			fmt=elf  em=linux ;;
  arm-*-netbsdelf*)                 	fmt=elf  em=nbsd ;;
  arm-*-*n*bsd*)			fmt=aout em=nbsd ;;
  arm-*-nto*)				fmt=elf ;;
  arm-epoc-pe | thumb-epoc-pe)		fmt=coff em=epoc-pe ;;
  arm-wince-pe | arm-*-wince)		fmt=coff em=wince-pe ;;
  arm-*-pe | thumb-*-pe)		fmt=coff em=pe ;;
  arm-*-riscix*)			fmt=aout em=riscix ;;

  avr-*-*)				fmt=elf bfd_gas=yes ;;

  bfin-*-linux-uclibc)			fmt=fdpicelf em=linux ;;
  bfin-*-uclinux*)			fmt=elf em=linux ;;
  bfin-*-rtems*)			fmt=elf ;;
  bfin-*elf)				fmt=elf ;;

  cr16-*-elf*)	    			fmt=elf ;;

  cris-*-linux-* | crisv32-*-linux-*)
					fmt=multi em=linux ;;
  cris-*-* | crisv32-*-*)		fmt=multi ;;

  crx-*-elf*)	    			fmt=elf ;;

  d10v-*-*)				fmt=elf ;;
  d30v-*-*)				fmt=elf ;;
  dlx-*-*)				fmt=elf ;;

  fr30-*-*)				fmt=elf ;;
  frv-*-*linux*)			fmt=elf em=linux;;
  frv-*-*)				fmt=elf ;;

  hppa-*-linux*)
    case ${cpu} in
      hppa*64*)				fmt=elf em=hppalinux64 ;;
      hppa*)				fmt=elf em=linux ;;
    esac ;;
  hppa-*-*elf*)				fmt=elf em=hppa ;;
  hppa-*-lites*)			fmt=elf em=hppa ;;
  hppa-*-netbsd*)			fmt=elf em=nbsd ;;
  hppa-*-openbsd*)			fmt=elf em=hppa ;;
  hppa-*-osf*)				fmt=som em=hppa ;;
  hppa-*-hpux11*)
    case ${cpu} in
      hppa*64*)				fmt=elf em=hppa64 ;;
      hppa*)				fmt=som em=hppa ;;
    esac ;;
  hppa-*-hpux*)				fmt=som em=hppa ;;
  hppa-*-mpeix*)			fmt=som em=hppa ;;
  hppa-*-bsd*)				fmt=som em=hppa ;;
  hppa-*-hiux*)				fmt=som em=hppa ;;

  h8300-*-elf | h8300-*-rtems*)		fmt=elf ;;

  i370-*-elf* | i370-*-linux*)		fmt=elf ;;

  i386-ibm-aix*)			fmt=coff em=i386aix ;;
  i386-sequent-bsd*)			fmt=aout em=dynix ;;
  i386-*-beospe*)			fmt=coff em=pe ;;
  i386-*-beos*)				fmt=elf ;;
  i386-*-coff)				fmt=coff ;;
  i386-*-elf)				fmt=elf ;;
  i386-*-kaos*)				fmt=elf ;;
  i386-*-bsd*)				fmt=aout em=386bsd ;;
  i386-*-netbsd0.8)			fmt=aout em=386bsd ;;
  i386-*-netbsdpe*)			fmt=coff em=pe ;;
  i386-*-netbsd*-gnu* | \
  i386-*-knetbsd*-gnu | \
  i386-*-netbsdelf*)			fmt=elf em=nbsd ;;
  i386-*-netbsd*)
    case ${cpu} in
      x86_64)				fmt=elf em=nbsd ;;
      *)				fmt=aout em=nbsd ;;
    esac ;;
  i386-*-openbsd[0-2].* | \
  i386-*-openbsd3.[0-2])		fmt=aout em=nbsd ;;
  i386-*-openbsd*)			fmt=elf em=nbsd ;;
  i386-*-linux*aout*)			fmt=aout em=linux ;;
  i386-*-linux*oldld)			fmt=aout em=linux ;;
  i386-*-linux*coff*)			fmt=coff em=linux ;;
  i386-*-linux-*)			fmt=elf em=linux ;;
  i386-*-lynxos*)			fmt=elf em=lynx ;;
  i386-*-sysv[45]*)			fmt=elf ;;
  i386-*-solaris*)			fmt=elf ;;
  i386-*-freebsdaout*)			fmt=aout em=386bsd ;;
  i386-*-freebsd[12].*)			fmt=aout em=386bsd ;;
  i386-*-freebsd[12])			fmt=aout em=386bsd ;;
  i386-*-freebsd* | i386-*-kfreebsd*-gnu | i386-*-dragonfly*)
				    	fmt=elf em=freebsd ;;
  i386-*-sysv*)				fmt=coff ;;
  i386-*-sco3.2v5*coff)			fmt=coff ;;
  i386-*-isc*)				fmt=coff ;;
  i386-*-sco3.2v5*)			fmt=elf ;;
  i386-*-sco3.2*)			fmt=coff ;;
  i386-*-vsta)				fmt=aout ;;
  i386-*-msdosdjgpp* \
  | i386-*-go32*)			fmt=coff em=go32 ;;
  i386-*-rtems*)			fmt=elf ;;
  i386-*-gnu*)				fmt=elf em=gnu ;;
  i386-*-mach*)				fmt=aout em=mach ;;
  i386-*-msdos*)			fmt=aout ;;
  i386-*-moss*)				fmt=elf ;;
  i386-*-pe)				fmt=coff em=pe ;;
  i386-*-cygwin*)			fmt=coff em=pe ;;
  i386-*-interix*)			fmt=coff em=interix ;;
  i386-*-mingw*)
    case ${cpu} in
      x86_64*)				fmt=coff em=pep ;;
      i*)				fmt=coff em=pe ;;
    esac ;;
  i386-*-nto-qnx*)			fmt=elf ;;
  i386-*-*nt*)				fmt=coff em=pe ;;
  i386-*-chaos)				fmt=elf ;;
  i386-*-rdos*)				fmt=elf ;;

  i860-*-*)				fmt=elf endian=little ;;

  i960-*-elf*)				fmt=elf ;;

  ia64-*-elf*)				fmt=elf ;;
  ia64-*-aix*)				fmt=elf em=ia64aix ;;
  ia64-*-linux-*)			fmt=elf em=linux ;;
  ia64-*-hpux*)				fmt=elf em=hpux ;;
  ia64-*-netbsd*)			fmt=elf em=nbsd ;;

  ip2k-*-*)				fmt=elf ;;

  iq2000-*-elf)         		fmt=elf ;;

  m32c-*-elf)         			fmt=elf ;;

  m32r-*-elf*)				fmt=elf ;;
  m32r-*-linux*)			fmt=elf em=linux;;

  m68hc11-*-* | m6811-*-*)		fmt=elf ;;
  m68hc12-*-* | m6812-*-*)		fmt=elf ;;

  m68k-*-elf*)				fmt=elf ;;
  m68k-*-sysv4*)			fmt=elf em=svr4 ;;
  m68k-*-rtems*)			fmt=elf ;;
  m68k-*-linux-*)			fmt=elf em=linux ;;
  m68k-*-uclinux*)			fmt=elf ;;
  m68k-*-gnu*)				fmt=elf ;;
  m68k-*-netbsdelf*)			fmt=elf em=nbsd ;;
  m68k-*-netbsd*)			fmt=aout em=nbsd bfd_gas=yes ;;
  m68k-*-openbsd*)			fmt=aout em=nbsd bfd_gas=yes ;;
  m68k-*-psos*)				fmt=elf em=psos;;

  maxq-*-coff)      			fmt=coff bfd_gas=yes ;;

  mep-*-elf)				fmt=elf ;;

  mcore-*-elf)				fmt=elf ;;
  mcore-*-pe)				fmt=coff em=pe bfd_gas=yes ;;

  # don't change em like *-*-bsd does
  mips-sony-bsd*)			fmt=ecoff ;;
  mips-*-ultrix*)			fmt=ecoff endian=little ;;
  mips-*-osf*)				fmt=ecoff endian=little ;;
  mips-*-ecoff*)			fmt=ecoff ;;
  mips-*-pe*)				fmt=coff endian=little em=pe ;;
  mips-*-irix6*)			fmt=elf em=irix ;;
  mips-*-irix5*)			fmt=elf em=irix ;;
  mips-*-irix*)				fmt=ecoff em=irix ;;
  mips-*-lnews*)			fmt=ecoff em=lnews ;;
  mips-*-riscos*)			fmt=ecoff ;;
  mips*-*-linux*)			fmt=elf em=tmips ;;
  mips-*-sysv4*MP* | mips-*-gnu*)	fmt=elf em=tmips ;;
  mips*-sde-elf*)			fmt=elf em=tmips ;;
  mips-*-sysv*)				fmt=ecoff ;;
  mips-*-elf* | mips-*-rtems*)		fmt=elf ;;
  mips-*-netbsd*)			fmt=elf em=tmips ;;
  mips-*-openbsd*)			fmt=elf em=tmips ;;

  mmix-*-*)				fmt=elf ;;

  mn10200-*-*)				fmt=elf ;;

  # cpu_type for am33_2.0 is set to mn10300
  mn10300-*-linux*)			fmt=elf em=linux ;;
  mn10300-*-*)				fmt=elf ;;

  mt-*-elf)				fmt=elf bfd_gas=yes ;;

  msp430-*-*)				fmt=elf ;;

  ns32k-pc532-mach*)			fmt=aout em=pc532mach ;;
  ns32k-pc532-ux*)			fmt=aout em=pc532mach ;;
  ns32k-pc532-lites*)			fmt=aout em=nbsd532 ;;
  ns32k-*-*n*bsd*)			fmt=aout em=nbsd532 ;;

  openrisc-*-*)				fmt=elf ;;

  or32-*-rtems*)			fmt=elf ;;
  or32-*-elf)				fmt=elf ;;

  pj*)					fmt=elf ;;

  ppc-*-pe | ppc-*-cygwin*)		fmt=coff em=pe ;;
  ppc-*-winnt*)				fmt=coff em=pe ;;
  ppc-*-aix5.[01])			fmt=coff em=aix5 ;;
  ppc-*-aix5.*)				fmt=coff em=aix5 ;;
  ppc-*-aix*)				fmt=coff ;;
  ppc-*-beos*)				fmt=coff ;;
  ppc-*-*n*bsd* | ppc-*-elf*)		fmt=elf ;;
  ppc-*-eabi* | ppc-*-sysv4*)		fmt=elf ;;
  ppc-*-linux-*)			fmt=elf em=linux ;;
  ppc-*-solaris*)			fmt=elf ;;
  ppc-*-rtems*)				fmt=elf ;;
  ppc-*-macos*)				fmt=coff em=macos ;;
  ppc-*-nto*)				fmt=elf ;;
  ppc-*-kaos*)				fmt=elf ;;
  ppc-*-lynxos*)			fmt=elf em=lynx ;;

  s390-*-linux-*)			fmt=elf em=linux ;;
  s390-*-tpf*)				fmt=elf ;;

  score-*-elf)                          fmt=elf ;;

  sh*-*-linux*)				fmt=elf em=linux
    case ${cpu} in
      sh*eb)	endian=big ;;
      *)	endian=little ;;
    esac ;;
  sh5*-*-netbsd*)			fmt=elf em=nbsd ;;
  sh64*-*-netbsd*)			fmt=elf em=nbsd ;;
  sh*-*-netbsdelf*)			fmt=elf em=nbsd ;;
  sh*-*-symbianelf*)			fmt=elf endian=little ;;
  sh-*-elf* | sh-*-uclinux* | sh[12]-*-uclinux*)	fmt=elf ;;
  sh-*-coff*)				fmt=coff ;;
  sh-*-nto*)				fmt=elf ;;
  sh-*-pe*)				fmt=coff em=pe bfd_gas=yes endian=little ;;
  sh-*-rtemscoff*)			fmt=coff ;;
  sh-*-rtems*)				fmt=elf ;;
  sh-*-kaos*)				fmt=elf ;;
  shle*-*-kaos*)			fmt=elf ;;
  sh64-*-elf*)				fmt=elf ;;

  sparc-*-rtems*)			fmt=elf ;;
  sparc-*-sunos4*)			fmt=aout em=sun3 ;;
  sparc-*-aout)				fmt=aout em=sparcaout ;;
  sparc-*-coff)				fmt=coff ;;
  sparc-*-linux*aout*)			fmt=aout em=linux ;;
  sparc-*-linux-*)			fmt=elf em=linux ;;
  sparc-fujitsu-none)			fmt=aout ;;
  sparc-*-elf)				fmt=elf ;;
  sparc-*-sysv4*)			fmt=elf ;;
  sparc-*-solaris*)			fmt=elf ;;
  sparc-*-netbsdelf*)			fmt=elf em=nbsd ;;
  sparc-*-netbsd*)
    case ${cpu} in
      sparc64)				fmt=elf em=nbsd ;;
      *)				fmt=aout em=nbsd ;;
    esac ;;
  sparc-*-openbsd[0-2].* | \
  sparc-*-openbsd3.[0-1])
    case ${cpu} in
      sparc64)				fmt=elf em=nbsd ;;
      *)				fmt=aout em=nbsd ;;
    esac ;;
  sparc-*-openbsd*)			fmt=elf em=nbsd ;;

  spu-*-elf)				fmt=elf ;;

  tic30-*-*aout*)			fmt=aout bfd_gas=yes ;;
  tic30-*-*coff*)			fmt=coff bfd_gas=yes ;;
  tic4x-*-* | c4x-*-*)			fmt=coff bfd_gas=yes ;;
  tic54x-*-* | c54x*-*-*)		fmt=coff bfd_gas=yes need_libm=yes;;

  v850-*-*)				fmt=elf ;;
  v850e-*-*)				fmt=elf ;;
  v850ea-*-*)				fmt=elf ;;

  vax-*-netbsdelf*)			fmt=elf em=nbsd ;;
  vax-*-linux-*)			fmt=elf em=linux ;;

  xscale-*-coff)			fmt=coff ;;
  xscale-*-elf)				fmt=elf ;;

  xstormy16-*-*)			fmt=elf ;;

  xtensa*-*-*)				fmt=elf ;;

  z80-*-coff)				fmt=coff ;;

  z8k-*-coff | z8k-*-sim)		fmt=coff ;;

  *-*-aout | *-*-scout)			fmt=aout ;;
  *-*-freebsd* | *-*-kfreebsd*-gnu)	fmt=elf em=freebsd ;;
  *-*-bsd*)				fmt=aout em=sun3 ;;
  *-*-generic)				fmt=generic ;;
  *-*-xray | *-*-hms)			fmt=coff ;;
  *-*-sim)				fmt=coff ;;
  *-*-elf | *-*-sysv4* | *-*-solaris*)	fmt=elf ;;
  *-*-aros*)				fmt=elf em=linux ;;
  *-*-vxworks* | *-*-windiss)		fmt=elf em=vxworks ;;
  *-*-netware)				fmt=elf em=netware ;;
esac

case ${cpu_type} in
  alpha | arm | i386 | ia64 | mips | ns32k | pdp11 | ppc | sparc | z80 | z8k)
    bfd_gas=yes
    ;;
esac
case ${fmt} in
  elf | ecoff | fdpicelf | multi | som)
    bfd_gas=yes
    ;;
esac

if test $bfd_gas != yes; then
  echo This target is no longer supported in gas
  exit 1
fi
