# 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 ;;
  epiphany*)		cpu_type=epiphany 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 ;;
  lm32)			cpu_type=lm32 ;;
  m32c)			cpu_type=m32c endian=little ;;
  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 ;;
  mep)			cpu_type=mep endian=little ;;
  microblaze*)		cpu_type=microblaze ;;
  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 ;;
  rl78*)		cpu_type=rl78 ;;
  rx)			cpu_type=rx ;;
  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.
  tilegx*be)		cpu_type=tilegx endian=big ;;
  tilegx*)		cpu_type=tilegx endian=little ;;
  v850*)		cpu_type=v850 ;;
  x86_64*)		cpu_type=i386 arch=x86_64;;
  xgate)		cpu_type=xgate ;;
  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)				fmt=coff ;;
  arm-*-rtems*)				fmt=elf ;;
  arm-*-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-*-nacl*)				fmt=elf  em=nacl ;;
  arm-*-netbsdelf*)			fmt=elf  em=nbsd ;;
  arm-*-*n*bsd*)			fmt=aout em=nbsd ;;
  arm-*-nto*)				fmt=elf ;;
  arm-epoc-pe)				fmt=coff em=epoc-pe ;;
  arm-wince-pe | arm-*-wince | arm*-*-mingw32ce* | arm*-*-cegcc*)
					fmt=coff em=wince-pe ;;
  arm-*-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 ;;

  epiphany-*-*)				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-*-nacl*)				fmt=elf em=nacl
    case ${cpu} in
      x86_64*)				arch=x86_64:32 ;;
    esac ;;
  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
    case ${cpu}-${os} in
      x86_64*-linux-gnux32)		arch=x86_64:32 ;;
    esac ;;
  i386-*-lynxos*)			fmt=elf em=lynx ;;
  i386-*-sysv[45]*)			fmt=elf ;;
  i386-*-solaris*)			fmt=elf em=solaris ;;
  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)		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 ;;
  i386-*-darwin*)			fmt=macho ;;

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

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

  ia64-*-elf*)				fmt=elf ;;
  ia64-*-*vms*)				fmt=elf em=vms ;;
  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 ;;

  lm32-*-*)				fmt=elf ;;

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

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

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

  m68k-*-aout)				fmt=aout bfd_gas=yes ;;
  m68k-*-elf*)				fmt=elf ;;
  m68k-*-sysv4*)			fmt=elf em=svr4 ;;
  m68k-*-rtems*)			fmt=elf ;;
  m68k-*-linux-*)			fmt=elf em=linux ;;
  m68k-*-uclinux*)			fmt=elf em=uclinux ;;
  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;;

  mep-*-elf)				fmt=elf ;;

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

  microblaze-*-*)			fmt=elf ;;

  # 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*-*-freebsd* | mips*-*-kfreebsd*-gnu)
					fmt=elf em=freebsd ;;
  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 ;;

  moxie-*-uclinux)			fmt=elf em=linux;;
  moxie-*-*)				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-*-aix[5-9].*)			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 em=solaris ;;
  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
    case ${cpu} in
      sh*l*)	endian=little ;;
      *)	endian=big ;;
    esac ;;
  sh*-*-symbianelf*)			fmt=elf endian=little ;;
  sh-*-elf*)				fmt=elf ;;
  sh-*-uclinux* | sh[12]-*-uclinux*)	fmt=elf em=uclinux ;;
  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 ;;

  sparc64-*-rtems*)			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 em=solaris ;;
  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;;
  tic6x-*-*)				fmt=elf ;;

  tilepro-*-* | tilegx*-*-*)		fmt=elf ;;

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

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

  xstormy16-*-*)			fmt=elf ;;
  
  xgate-*-*)    			fmt=elf ;;

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

  z80-*-coff)				fmt=coff ;;

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

  *-*-aout | *-*-scout)			fmt=aout ;;
  *-*-dragonfly*)			fmt=elf em=dragonfly ;;
  *-*-freebsd* | *-*-kfreebsd*-gnu)	fmt=elf em=freebsd ;;
  *-*-bsd*)				fmt=aout em=sun3 ;;
  *-*-generic)				fmt=generic ;;
  *-*-xray | *-*-hms)			fmt=coff ;;
  *-*-sim)				fmt=coff ;;
  *-*-elf | *-*-sysv4*)			fmt=elf ;;
  *-*-solaris*)				fmt=elf em=solaris ;;
  *-*-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 | microblaze | 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
