# 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
  aarch64)		cpu_type=aarch64 endian=little ;;
  aarch64_be)		cpu_type=aarch64 endian=big ;;
  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
  aarch64*-*-elf)			fmt=elf;;
  aarch64*-*-linux*)			fmt=elf em=linux ;;

  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
  aarch64 | 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
