dnl Process this file with autoconf to produce a configure script.
dnl
dnl And be careful when changing it!  If you must add tests with square
dnl brackets, be sure changequote invocations surround it.
dnl
dnl
dnl v2.5 needed for --bindir et al
AC_PREREQ(2.57)
AC_INIT(as.h)

dnl Autoconf 2.57 will find the aux dir without this.  However, unless
dnl we specify this explicitly, automake-1.7 will assume that ylwrap is in
dnl gas/ instead of gas/../.
AC_CONFIG_AUX_DIR(..)
AC_CANONICAL_SYSTEM
AC_ISC_POSIX

changequote(,)dnl
BFD_VERSION=`sed -n -e 's/^.._INIT_AUTOMAKE.*,[ 	]*\([^ 	]*\)[ 	]*).*/\1/p' < ${srcdir}/../bfd/configure.in`
changequote([,])dnl
AM_INIT_AUTOMAKE(gas, ${BFD_VERSION})

AM_PROG_LIBTOOL

user_bfd_gas=
AC_ARG_ENABLE(bfd-assembler,
[  --enable-bfd-assembler  use BFD back end for writing object files],
[case "${enableval}" in
  yes) need_bfd=yes user_bfd_gas=yes ;;
  no)  user_bfd_gas=no ;;
  *)   AC_MSG_ERROR(bad value ${enableval} given for bfd-assembler option) ;;
esac])dnl
AC_ARG_ENABLE(targets,
[    targets            alternative target configurations besides the primary],
[case "${enableval}" in
  yes | "") AC_ERROR(enable-targets option must specify target names or 'all')
	    ;;
  no)	    enable_targets= ;;
  *)	    enable_targets=$enableval ;;
esac])dnl
AC_ARG_ENABLE(commonbfdlib,
[  --enable-commonbfdlib   build shared BFD/opcodes/libiberty library],
[case "${enableval}" in
  yes) commonbfdlib=true ;;
  no)  commonbfdlib=false ;;
  *)   AC_MSG_ERROR([bad value ${enableval} for BFD commonbfdlib option]) ;;
esac])dnl

using_cgen=no

build_warnings="-W -Wall -Wstrict-prototypes -Wmissing-prototypes"
AC_ARG_ENABLE(build-warnings,
[  --enable-build-warnings Enable build-time compiler warnings if gcc is used],
[case "${enableval}" in
  yes)	;;
  no)	build_warnings="-w";;
  ,*)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
        build_warnings="${build_warnings} ${t}";;
  *,)   t=`echo "${enableval}" | sed -e "s/,/ /g"`
        build_warnings="${t} ${build_warnings}";;
  *)    build_warnings=`echo "${enableval}" | sed -e "s/,/ /g"`;;
esac
if test x"$silent" != x"yes" && test x"$build_warnings" != x""; then
  echo "Setting warning flags = $build_warnings" 6>&1
fi])dnl
WARN_CFLAGS=""
if test "x${build_warnings}" != x -a "x$GCC" = xyes ; then
    WARN_CFLAGS="${build_warnings}"
fi
AC_SUBST(WARN_CFLAGS)

# Generate a header file
AM_CONFIG_HEADER(config.h:config.in)

# If we are on a DOS filesystem, we must use gdb.ini rather than
# .gdbinit.
case "${host}" in
  *-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-windows*)
    GDBINIT="gdb.ini"
    AC_CONFIG_FILES(gdb.ini:gdbinit.in)
    ;;
  *)
    GDBINIT=".gdbinit"
    AC_CONFIG_FILES(.gdbinit:gdbinit.in)
    ;;
esac
AC_SUBST(GDBINIT)

te_file=generic

# Makefile target for installing gas in $(tooldir)/bin.
install_tooldir=install-exec-tooldir

canon_targets=""
all_targets=no
if test -n "$enable_targets" ; then
  for t in `echo $enable_targets | sed 's/,/ /g'`; do
    if test $t = "all"; then
      all_targets=yes
      continue
    fi
    result=`$ac_config_sub $t 2>/dev/null`
    if test -n "$result" ; then
      canon_targets="$canon_targets $result"
#    else
#      # Permit "all", etc.  We don't support it yet though.
#      canon_targets="$canon_targets $t"
    fi
  done
  GAS_UNIQ(canon_targets)
fi

emulations=""

for this_target in $target $canon_targets ; do

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

    # check for architecture variants
    arch=
    endian=
    case ${cpu} in
      am33_2.0)		cpu_type=mn10300 endian=little ;;
      alpha*)		cpu_type=alpha ;;
      arm*b|xscale*b|strongarm*b) cpu_type=arm endian=big ;;
      arm*|xscale*|strongarm*)    cpu_type=arm endian=little ;;
      c4x*)		cpu_type=tic4x ;;
      hppa*)		cpu_type=hppa ;;
changequote(,)dnl
      i[3-7]86)		cpu_type=i386 arch=i386;;
      x86_64)		cpu_type=i386 arch=x86_64;;
      ia64)		cpu_type=ia64 ;;
      ip2k)             cpu_type=ip2k endian=big ;; 
      iq2000)           cpu_type=iq2000 endian=big ;; 
      m6811|m6812|m68hc12) cpu_type=m68hc11 ;;
      m680[012346]0)	cpu_type=m68k ;;
changequote([,])dnl
      m68008)		cpu_type=m68k ;;
      m683??)		cpu_type=m68k ;;
      m5200)		cpu_type=m68k ;;
      m8*)		cpu_type=m88k ;;
      mips*el)		cpu_type=mips endian=little ;;
      mips*)		cpu_type=mips 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 ;;
      sh5*)		cpu_type=sh64 endian=big ;;
      sh5le*)		cpu_type=sh64 endian=little ;;
      sh64*)            cpu_type=sh64 endian=big ;;
      sh64le*)		cpu_type=sh64 endian=little ;;
      sh*le)		cpu_type=sh endian=little ;;
      sh*)		cpu_type=sh endian=big ;;
      sparclite*)	cpu_type=sparc arch=sparclite ;;
      sparclet*)	cpu_type=sparc arch=sparclet ;;
      sparc64*)		cpu_type=sparc arch=v9-64 ;;
      sparc86x*)	cpu_type=sparc arch=sparc86x  ;;
      sparc*)		cpu_type=sparc arch=sparclite ;; # ??? See tc-sparc.c.
      v850*)		cpu_type=v850 ;;
      xtensa*)		cpu_type=xtensa arch=xtensa ;;
      m32r)             cpu_type=m32r target_cpu=m32r endian=big ;;
      m32rle)           cpu_type=m32r target_cpu=m32r endian=little ;;
      *)		cpu_type=${cpu} ;;
    esac

    if test ${this_target} = $target ; then
      target_cpu_type=${cpu_type}
    elif test ${target_cpu_type} != ${cpu_type} ; then
      continue
    fi

    generic_target=${cpu_type}-$vendor-$os
    dev=no
    bfd_gas=no
    em=generic

    # assign object format
    case ${generic_target} in
      a29k-*-coff)			fmt=coff ;;
      a29k-amd-udi)			fmt=coff ;;
      a29k-amd-ebmon)			fmt=coff ;;
      a29k-nyu-sym1)			fmt=coff ;;
      a29k-*-rtems*)			fmt=coff ;;
      a29k-*-vxworks*)			fmt=coff ;;

      alpha*-*-*vms*)			fmt=evax ;;
      alpha*-*-netware*)		fmt=ecoff ;;
      alpha*-*-osf*)			fmt=ecoff ;;
      alpha*-*-linuxecoff*)		fmt=ecoff ;;
      alpha*-*-linux-gnu*)		fmt=elf em=linux ;;
      alpha*-*-netbsd*)			fmt=elf em=nbsd ;;
      alpha*-*-openbsd*)		fmt=elf em=obsd ;;

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

      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-*-kaos*)			fmt=elf ;;
      arm*-*-conix*)			fmt=elf ;;
      arm-*-linux*aout*)		fmt=aout em=linux ;;
      arm*-*-linux-gnu*)		fmt=elf  em=linux ;;
      arm*-*-uclinux*)			fmt=elf  em=linux ;;
      arm-*-netbsdelf*)                 fmt=elf  em=nbsd ;;
      arm-*-*n*bsd*)			fmt=aout em=nbsd ;;
      arm-**-nto*)			fmt=elf ;;
      arm-*-oabi | thumb-*-oabi)	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 ;;

      cris-*-linux-gnu*)		fmt=multi bfd_gas=yes em=linux ;;
      cris-*-*)				fmt=multi bfd_gas=yes ;;

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

      fr30-*-*)				fmt=elf ;;
      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-*-rtems*)			fmt=elf 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-*-rtems*)			fmt=coff ;;
      h8300-*-coff)			fmt=coff ;;
      h8300-*-elf)			fmt=elf ;;
      h8500-*-rtems*)			fmt=coff ;;
      h8500-*-coff)			fmt=coff ;;

      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-*-*n*bsd*)	case ${cpu} in
			    x86_64)	fmt=elf em=nbsd ;;
			    *)		fmt=aout em=nbsd ;;
			esac ;;
      i386-*-linux*aout*)		fmt=aout em=linux ;;
      i386-*-linux*oldld)		fmt=aout em=linux ;;
      i386-*-linux*coff*)		fmt=coff em=linux ;;
      i386-*-linux-gnu*)		fmt=elf em=linux ;;
      x86_64-*-linux-gnu*)		fmt=elf em=linux ;;
      i386-*-lynxos*)			fmt=coff em=lynx ;;
changequote(,)dnl
      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 ;;
changequote([,])dnl
      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
	  if test ${this_target} = $target; then
	    AC_DEFINE(SCO_ELF, 1, [Define if defaulting to ELF on SCO 5.])
	  fi ;;
      i386-*-sco3.2*)			fmt=coff ;;
      i386-*-vsta)			fmt=aout ;;
      i386-*-msdosdjgpp* \
      | i386-*-go32* \
      | i386-go32-rtems*)		fmt=coff em=go32
	    AC_DEFINE(STRICTCOFF, 1, [Using strict COFF?]) ;;
      i386-*-rtemself*)			fmt=elf ;;
      i386-*-rtemscoff*)		fmt=coff ;;
      i386-*-rtems*)			fmt=elf ;;
      i386-*-gnu*)			fmt=elf ;;
      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-*-mingw32*)			fmt=coff em=pe ;;
      i386-*-nto-qnx*)			fmt=elf ;;
      i386-*-*nt*)			fmt=coff em=pe ;;
      i386-*-chaos)			fmt=elf ;;

      i860-*-*)				fmt=elf endian=little
		AC_MSG_WARN(GAS support for ${generic_target} is preliminary and a work in progress) ;;
      i960-*-bout)			fmt=bout ;;
      i960-*-coff)			fmt=coff em=ic960 ;;
      i960-*-rtems*)			fmt=coff em=ic960 ;;
      i960-*-nindy*)			fmt=bout ;;
      i960-*-vxworks5.0)		fmt=bout ;;
      i960-*-vxworks5.*)		fmt=coff em=ic960 ;;
      i960-*-vxworks*)			fmt=bout ;;
      i960-*-elf*)			fmt=elf ;;

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

      ip2k-*-*)				fmt=elf ;;

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

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

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

      m68k-*-vxworks*)			fmt=aout em=sun3 ;;
      m68k-ericsson-ose)		fmt=aout em=sun3 ;;
      m68k-*-sunos*)			fmt=aout em=sun3 ;;
      m68k-motorola-sysv*)		fmt=coff em=delta ;;
      m68k-bull-sysv3*)			fmt=coff em=dpx2 ;;
      m68k-apollo-*)			fmt=coff em=apollo ;;
      m68k-*-elf*)			fmt=elf ;;
      m68k-*-sysv4*)			fmt=elf em=svr4 ;;
      m68k-*-sysv*)			fmt=coff ;;
      m68k-*-coff | m68k-*-rtemscoff*)	fmt=coff ;;
      m68k-*-rtems*)			fmt=elf ;;
      m68k-*-hpux*)			fmt=hp300 em=hp300 ;;
      m68k-*-linux*aout*)		fmt=aout em=linux ;;
      m68k-*-linux-gnu*)		fmt=elf em=linux ;;
      m68k-*-uclinux*)			fmt=elf ;;
      m68k-*-gnu*)			fmt=elf ;;
      m68k-*-lynxos*)			fmt=coff em=lynx ;;
      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-apple-aux*)			fmt=coff em=aux ;;
      m68k-*-psos*)			fmt=elf em=psos;;

      m88k-motorola-sysv3*)		fmt=coff em=delt88 ;;
      m88k-*-coff*)			fmt=coff ;;

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

      # don't change em like *-*-bsd does
      mips-dec-openbsd*)		fmt=elf endian=little ;;
      mips-sony-bsd*)			fmt=ecoff ;;
      mips-*-bsd*)
	    AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.) ;;
      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-*-sysv*)			fmt=ecoff ;;
      mips-*-elf* | mips-*-rtems*)	fmt=elf ;;
      mips-*-netbsd*)			fmt=elf ;;
      mips-*-openbsd*)			fmt=elf ;;

      mmix-*-*)				fmt=elf ;;
      mn10200-*-*)			fmt=elf ;;
      mn10300-*-*)			fmt=elf ;;
      msp430-*-*)			fmt=elf ;;
      openrisc-*-*)			fmt=elf ;;
      or32-*-rtems*)			fmt=coff ;;
      or32-*-coff)			fmt=coff ;;
      or32-*-elf)			fmt=elf ;;
      pj*)				fmt=elf ;;

      ppc-*-pe | ppc-*-cygwin*)		fmt=coff em=pe ;;
      ppc-*-winnt*)			fmt=coff em=pe ;;
changequote(,)dnl
      ppc-*-aix5.[01])			fmt=coff em=aix5 ;;
changequote([,])dnl
      ppc-*-aix5.*)			fmt=coff em=aix5
      	AC_DEFINE(AIX_WEAK_SUPPORT, 1,
		  [Define if using AIX 5.2 value for C_WEAKEXT.])
      ;;
      ppc-*-aix*)			fmt=coff ;;
      ppc-*-beos*)			fmt=coff ;;
      ppc-*-*n*bsd* | ppc-*-elf*)	fmt=elf ;;
      ppc-*-eabi* | ppc-*-sysv4*)	fmt=elf ;;
      ppc-*-linux-gnu*)			fmt=elf em=linux
	    case "$endian" in
		big)  ;;
		*)    AC_MSG_ERROR(GNU/Linux must be configured big endian) ;;
	    esac ;;
      ppc-*-solaris*)			fmt=elf
	    if test ${this_target} = $target; then
		AC_DEFINE(TARGET_SOLARIS_COMMENT, 1,
			  [Define if default target is PowerPC Solaris.])
	    fi
	    if test x${endian} = xbig; then
		AC_MSG_ERROR(Solaris must be configured little endian)
	    fi ;;
      ppc-*-rtems*)			fmt=elf ;;
      ppc-*-macos*)			fmt=coff em=macos ;;
      ppc-*-netware*)			fmt=elf em=ppcnw ;;
      ppc-**-nto*)			fmt=elf ;;
      ppc-*-kaos*)			fmt=elf ;;

      s390x-*-linux-gnu*)		fmt=elf em=linux ;;
      s390-*-linux-gnu*)		fmt=elf em=linux ;;

      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-*-elf*)			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 ;;

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

      sparc-*-rtemsaout*)		fmt=aout ;;
      sparc-*-rtemself*)		fmt=elf ;;
      sparc-*-rtems*)			fmt=elf ;;
      sparc-*-sunos4*)			fmt=aout em=sun3 ;;
      sparc-*-aout | sparc*-*-vxworks*)	fmt=aout em=sparcaout ;;
      sparc-*-coff)			fmt=coff ;;
      sparc-*-linux*aout*)		fmt=aout em=linux ;;
      sparc-*-linux-gnu*)		fmt=elf em=linux ;;
      sparc-*-lynxos*)			fmt=coff em=lynx ;;
      sparc-fujitsu-none)		fmt=aout ;;
      sparc-*-elf)			fmt=elf ;;
      sparc-*-sysv4*)			fmt=elf ;;
      sparc-*-solaris*)			fmt=elf ;;
      sparc-*-netbsdelf*)		fmt=elf em=nbsd ;;
      sparc-*-*n*bsd*)	case ${cpu} in
			    sparc64)	fmt=elf em=nbsd ;;
			    *)		fmt=aout em=nbsd ;;
			esac ;;
      strongarm-*-coff)			fmt=coff ;;
      strongarm-*-elf)			fmt=elf ;;
      strongarm-*-kaos*)		fmt=elf ;;
      xscale-*-coff)			fmt=coff ;;
      xscale-*-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;;
      tic80-*-*)			fmt=coff ;;

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

      vax-*-netbsdelf*)			fmt=elf em=nbsd ;;
      vax-*-netbsd*)			fmt=aout em=nbsd ;;
      vax-*-bsd* | vax-*-ultrix*)	fmt=aout ;;
      vax-*-linux-gnu*)			fmt=elf em=linux bfd_gas=yes ;;
      vax-*-vms)			fmt=vms ;;

      w65-*-*)				fmt=coff ;;

      xstormy16-*-*)			fmt=elf ;;

      xtensa-*-*)			fmt=elf ;;

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

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

    if test ${this_target} = $target ; then
      endian_def=
      if test x${endian} = xbig; then
	endian_def=1
      elif test x${endian} = xlittle; then
	endian_def=0
      fi
      if test x${endian_def} != x; then
	AC_DEFINE_UNQUOTED(TARGET_BYTES_BIG_ENDIAN, $endian_def,
			   [Define as 1 if big endian.])
      fi
    fi

    case ${cpu_type}-${fmt} in
	alpha*-* | arm-* | i386-* | ia64*-* | mips-* | ns32k-* \
		| pdp11-* | ppc-* | sparc-* | strongarm-* | xscale-* \
		| *-elf | *-ecoff | *-som)
	    bfd_gas=yes ;;
    esac

# Other random stuff.

    case ${cpu_type} in
      mips)
	# Set mips_cpu to the name of the default CPU.
	case ${target_cpu} in
	  mips | mipsbe | mipseb | mipsle | mipsel | mips64 | mips64el)
	    mips_cpu=from-abi
	    ;;
	  mipsisa32 | mipsisa32el)
	    mips_cpu=mips32
	    ;;
	  mipsisa32r2 | mipsisa32r2el)
	    mips_cpu=mips32r2
	    ;;
	  mipsisa64 | mipsisa64el)
	    mips_cpu=mips64
	    ;;
	  mipsisa64r2 | mipsisa64r2el)
	    mips_cpu=mips64r2
	    ;;
	  mipstx39 | mipstx39el)
	    mips_cpu=r3900
	    ;;
	  mips64vr | mips64vrel)
	    mips_cpu=vr4100
	    ;;
	  mipsisa32r2* | mipsisa64r2*)
changequote(,)dnl
	    mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..r2//' -e 's/el$//'`
changequote([,])dnl
	    ;;
	  mips64* | mipsisa64* | mipsisa32*)
changequote(,)dnl
	    mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..//' -e 's/el$//'`
changequote([,])dnl
	    ;;
	  *)
	    AC_ERROR($target_cpu isn't a supported MIPS CPU name)
	    ;;
	esac
	# See whether it's appropriate to set E_MIPS_ABI_O32 for o32
	# binaries.  It's a GNU extension that some OSes don't understand.
	# The value only matters on ELF targets.
	case ${target} in
	  *-*-irix*)
	    use_e_mips_abi_o32=0
	    ;;
	  *)
	    use_e_mips_abi_o32=1
	    ;;
	esac
	# Decide whether to generate 32-bit or 64-bit code by default.
	# Used to resolve -march=from-abi when an embedded ABI is selected.
	case ${target} in
	  mips64*-*-* | mipsisa64*-*-*)
	    mips_default_64bit=1
	    ;;
	  *)
	    mips_default_64bit=0
	    ;;
	esac
	# Decide which ABI to target by default.
	case ${target} in
	  mips64*-linux* | mips-sgi-irix6*)
	    mips_default_abi=N32_ABI
	    ;;
	  mips*-linux*)
	    mips_default_abi=O32_ABI
	    ;;
	  *)
	    mips_default_abi=NO_ABI
	    ;;
	esac
	AC_DEFINE_UNQUOTED(MIPS_CPU_STRING_DEFAULT, "$mips_cpu",
			   [Default CPU for MIPS targets. ])
	AC_DEFINE_UNQUOTED(USE_E_MIPS_ABI_O32, $use_e_mips_abi_o32,
			   [Allow use of E_MIPS_ABI_O32 on MIPS targets. ])
	AC_DEFINE_UNQUOTED(MIPS_DEFAULT_64BIT, $mips_default_64bit,
			   [Generate 64-bit code by default on MIPS targets. ])
	AC_DEFINE_UNQUOTED(MIPS_DEFAULT_ABI, $mips_default_abi,
			   [Choose a default ABI for MIPS targets. ])
	;;
    esac

    # Do we need the opcodes library?
    case ${cpu_type} in
      vax | i386 | tic30)
	;;

      *)
	need_opcodes=yes

	case "${enable_shared}" in
	yes) shared_opcodes=true ;;
	*opcodes*) shared_opcodes=true ;;
	*) shared_opcodes=false ;;
	esac
	if test "${shared_opcodes}" = "true"; then
	  # A shared libopcodes must be linked against libbfd.
	  need_bfd=yes
	fi
	;;
    esac

    # Any other special object files needed ?
    case ${cpu_type} in
      fr30 | ip2k | iq2000 | m32r | openrisc)
	using_cgen=yes
	;;

      frv)
	using_cgen=yes
	;;
      m68k)
	case ${extra_objects} in
	*m68k-parse.o*) ;;
	*) extra_objects="$extra_objects m68k-parse.o" ;;
	esac
	;;

      mips)
	echo ${extra_objects} | grep -s "itbl-parse.o" 
	if test $? -ne 0 ; then
	  extra_objects="$extra_objects itbl-parse.o"
	fi

	echo ${extra_objects} | grep -s "itbl-lex.o" 
	if test $? -ne 0 ; then
	  extra_objects="$extra_objects itbl-lex.o"
	fi

	echo ${extra_objects} | grep -s "itbl-ops.o" 
	if test $? -ne 0 ; then
	  extra_objects="$extra_objects itbl-ops.o"
	fi
	;;

      i386 | s390 | sparc)
	if test $this_target = $target ; then
	  AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
	fi
	;;

      xstormy16)
	using_cgen=yes
	;;

      xtensa)
	echo ${extra_objects} | grep -s "xtensa-relax.o"
	if test $? -ne 0 ; then
	  extra_objects="$extra_objects xtensa-relax.o"
	fi
	;;

      *)
	;;
    esac

    if test $using_cgen = yes ; then
	case "x${extra_objects}" in
	*cgen.o*) ;;
	*) extra_objects="$extra_objects cgen.o" ;;
	esac
    fi

# See if we really can support this configuration with the emulation code.

    if test $this_target = $target ; then
      primary_bfd_gas=$bfd_gas
      obj_format=$fmt
      te_file=$em

      if test $bfd_gas = no ; then
	# Can't support other configurations this way.
	break
      fi
    elif test $bfd_gas = no ; then
      # Can't support this configuration.
      break
    fi

# From target name and format, produce a list of supported emulations.

    case ${generic_target}-${fmt} in
      mips-*-irix5*-*)	emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
      mips*-*-linux*-*) case "$endian" in
			big)	emulation="mipsbelf mipslelf mipself" ;;
			*)	emulation="mipslelf mipsbelf mipself" ;;
			esac ;;
      mips-*-lnews*-ecoff) ;;
      mips-*-*-ecoff)	case "$endian" in
			big)	emulation="mipsbecoff mipslecoff mipsecoff" ;;
			*)	emulation="mipslecoff mipsbecoff mipsecoff" ;;
			esac ;;
      mips-*-*-elf)	case "$endian" in
			big)	emulation="mipsbelf mipslelf mipself" ;;
			*)	emulation="mipslelf mipsbelf mipself" ;;
			esac ;;
      mips-*-sysv4*MP*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
      # i386-pc-pe-coff != i386-pc-coff.
      i386-*-pe-coff)	;;
      # Uncommenting the next line will turn on support for i386 AOUT
      # for the default linux configuration
      # i386-*-linux*-elf) emulation="i386elf i386aout" ;;
      #
      i386-*-aout)	emulation="i386aout" ;;
      i386-*-coff)	emulation="i386coff" ;;
      i386-*-elf)	emulation="i386elf" ;;

      # Always all formats.  The first stated emulation becomes the default.
      cris-*-*aout*)	emulation="crisaout criself" ;;
      cris-*-*)		emulation="criself crisaout" ;;
    esac

    emulations="$emulations $emulation"

done

# Turn on all targets if possible
if test ${all_targets} = "yes"; then
  case ${target_cpu_type} in
  i386)
    case ${obj_format} in
    aout)
      emulations="$emulations i386coff i386elf"
      ;;
    coff)
      emulations="$emulations i386aout i386elf"
    ;;
    elf)
      emulations="$emulations i386aout i386coff"
      ;;
    esac
  ;;
  esac
fi

# Assign floating point type.  Most processors with FP support
# IEEE FP.  On those that don't support FP at all, usually IEEE
# is emulated.
case ${target_cpu} in
  vax | tahoe )	atof=${target_cpu} ;;
  pdp11)	atof=vax ;;
  *)		atof=ieee ;;
esac

case "${obj_format}" in
  "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
esac

# Unfortunately the cpu in cpu-opc.h file isn't always $(TARGET_CPU).
cgen_cpu_prefix=""
if test $using_cgen = yes ; then
  case ${target_cpu} in
    *) cgen_cpu_prefix=${target_cpu} ;;
  esac
  AC_SUBST(cgen_cpu_prefix)
  AC_DEFINE(USING_CGEN, 1, [Using cgen code?])
fi

dnl
dnl Make sure the desired support files exist.
dnl

if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
  AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
fi

if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
  AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
fi

case ${user_bfd_gas}-${primary_bfd_gas} in
  yes-yes | no-no)
    # We didn't override user's choice.
    ;;
  no-yes)
    AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
    ;;
  no-preferred)
    primary_bfd_gas=no
    ;;
  *-preferred)
    primary_bfd_gas=yes
    ;;
  yes-*)
    primary_bfd_gas=yes
    ;;
  -*)
    # User specified nothing.
    ;;
esac

# Some COFF configurations want these random other flags set.
case ${obj_format} in
  coff)
    case ${target_cpu_type} in
      i386) AC_DEFINE(I386COFF, 1, [Using i386 COFF?]) ;;
      m68k) AC_DEFINE(M68KCOFF, 1, [Using m68k COFF?]) ;;
      m88k) AC_DEFINE(M88KCOFF, 1, [Using m88k COFF?]) ;;
    esac
    ;;
esac

# Getting this done right is going to be a bitch.  Each configuration specified
# with --enable-targets=... should be checked for environment, format, cpu, and
# bfd_gas setting.
#
# For each configuration, the necessary object file support code must be linked
# in.  This might be only one, it might be up to four.  The necessary emulation
# code needs to be provided, too.
#
# And then there's "--enable-targets=all"....
#
# For now, just always do it for MIPS ELF or ECOFF configurations.  Sigh.

formats="${obj_format}"
emfiles=""
EMULATIONS=""
GAS_UNIQ(emulations)
for em in . $emulations ; do
  case $em in
    .)	continue ;;
    mipsbelf | mipslelf | mipself)
	fmt=elf   file=mipself ;;
    mipsbecoff | mipslecoff | mipsecoff)
	fmt=ecoff file=mipsecoff ;;
    *coff)
	fmt=coff  file=$em ;;
    *aout)
	fmt=aout file=$em ;;
    *elf)
	fmt=elf file=$em ;;
  esac
  formats="$formats $fmt"
  emfiles="$emfiles e-$file.o"
  EMULATIONS="$EMULATIONS &$em,"
done
GAS_UNIQ(formats)
GAS_UNIQ(emfiles)
if test `set . $formats ; shift ; echo $#` -gt 1 ; then
  for fmt in $formats ; do
    case $fmt in
      aout)	AC_DEFINE(OBJ_MAYBE_AOUT, 1,    [a.out support?])   ;;
      bout)	AC_DEFINE(OBJ_MAYBE_BOUT, 1,    [b.out support?])   ;;
      coff)	AC_DEFINE(OBJ_MAYBE_COFF, 1,    [COFF support?])    ;;
      ecoff)	AC_DEFINE(OBJ_MAYBE_ECOFF, 1,   [ECOFF support?])   ;;
      elf)	AC_DEFINE(OBJ_MAYBE_ELF, 1,     [ELF support?])     ;;
      generic)	AC_DEFINE(OBJ_MAYBE_GENERIC, 1, [generic support?]) ;;
      hp300)	AC_DEFINE(OBJ_MAYBE_HP300, 1,   [HP300 support?])   ;;
      ieee)	AC_DEFINE(OBJ_MAYBE_IEEE, 1,    [IEEE support?])    ;;
      som)	AC_DEFINE(OBJ_MAYBE_SOM, 1,     [SOM support?])     ;;
      vms)	AC_DEFINE(OBJ_MAYBE_VMS, 1,     [VMS support?])     ;;
    esac
    extra_objects="$extra_objects obj-$fmt.o"
  done
  obj_format=multi
fi
if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
  DEFAULT_EMULATION=`set . $emulations ; echo $2`
  # e-mips* has more than one emulation per file, e-i386* has just one at the
  # moment.  If only one emulation is specified, then don't define
  # USE_EMULATIONS or include any of the e-files as they will only be bloat.
  case "${obj_format}${emfiles}" in
    multi* | *mips*)
      extra_objects="$extra_objects $emfiles"
      AC_DEFINE(USE_EMULATIONS, 1, [Use emulation support?]) ;;
  esac
fi
AC_SUBST(extra_objects)
AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS, [Supported emulations.])
AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION",
		   [Default emulation.])

case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
  yes-*-coff)	need_bfd=yes ;;
  no-*-coff)	need_bfd=yes
		AC_DEFINE(MANY_SEGMENTS, 1, [old COFF support?]) ;;
esac

reject_dev_configs=yes

case ${reject_dev_configs}-${dev} in
  yes-yes) # Oops.
    AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
    ;;
esac

AC_SUBST(target_cpu_type)
AC_SUBST(obj_format)
AC_SUBST(te_file)
AC_SUBST(install_tooldir)
AC_SUBST(atof)
dnl AC_SUBST(emulation)

case "${primary_bfd_gas}" in
  yes)	AC_DEFINE(BFD_ASSEMBLER, 1, [Use BFD interface?])
	need_bfd=yes ;;
esac

# do we need the opcodes library?
case "${need_opcodes}" in
yes)
  OPCODES_LIB=../opcodes/libopcodes.la
  ;;
esac

case "${need_bfd}" in
yes)
  BFDLIB=../bfd/libbfd.la
  BFDVER_H=../bfd/bfdver.h
  ALL_OBJ_DEPS="$ALL_OBJ_DEPS"' ../bfd/bfd.h $(INCDIR)/symcat.h'
  ;;
esac

AC_SUBST(BFDLIB)
AC_SUBST(OPCODES_LIB)

AC_SUBST(BFDVER_H)
AC_SUBST(ALL_OBJ_DEPS)

AC_DEFINE_UNQUOTED(TARGET_ALIAS,	"${target_alias}", [Target alias.])
AC_DEFINE_UNQUOTED(TARGET_CANONICAL,	"${target}",       [Canonical target.])
AC_DEFINE_UNQUOTED(TARGET_CPU,		"${target_cpu}",   [Target CPU.])
AC_DEFINE_UNQUOTED(TARGET_VENDOR,	"${target_vendor}", [Target vendor.])
AC_DEFINE_UNQUOTED(TARGET_OS,		"${target_os}",    [Target OS.])

AC_PROG_CC

AC_PROG_YACC
AM_PROG_LEX

ALL_LINGUAS="fr tr es"
CY_GNU_GETTEXT

AM_MAINTAINER_MODE
AC_EXEEXT

AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)

# Put this here so that autoconf's "cross-compiling" message doesn't confuse
# people who are not cross-compiling but are compiling cross-assemblers.
AC_MSG_CHECKING(whether compiling a cross-assembler)
if test "${host}" = "${target}"; then
  cross_gas=no
else
  cross_gas=yes
  AC_DEFINE(CROSS_COMPILE, 1, [Compiling cross-assembler?])
fi
AC_MSG_RESULT($cross_gas)

dnl ansidecl.h will deal with const
dnl AC_CONST
AC_FUNC_ALLOCA
AC_C_INLINE

# VMS doesn't have unlink.
AC_CHECK_FUNCS(unlink remove, break)

# Some systems don't have sbrk().
AC_CHECK_FUNCS(sbrk)

# do we need the math library?
case "${need_libm}" in
yes) 
  AC_CHECK_LIBM
  AC_SUBST(LIBM)
  ;;
esac

# Some non-ANSI preprocessors botch requoting inside strings.  That's bad
# enough, but on some of those systems, the assert macro relies on requoting
# working properly!
GAS_WORKING_ASSERT

# On some systems, the system header files may not declare malloc, realloc,
# and free.  There are places where gas needs these functions to have been
# declared -- such as when taking their addresses.
gas_test_headers="
#ifdef HAVE_MEMORY_H
#include <memory.h>
#endif
#ifdef HAVE_STRING_H
#include <string.h>
#else
#ifdef HAVE_STRINGS_H
#include <strings.h>
#endif
#endif
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
"
GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers)
GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers)
GAS_CHECK_DECL_NEEDED(environ, f, char **f, $gas_test_headers)

# Does errno.h declare errno, or do we have to add a separate declaration
# for it?
GAS_CHECK_DECL_NEEDED(errno, f, int f, [
#ifdef HAVE_ERRNO_H
#include <errno.h>
#endif
])

dnl This must come last.

dnl We used to make symlinks to files in the source directory, but now
dnl we just use the right name for .c files, and create .h files in
dnl the build directory which include the right .h file.  Make sure
dnl the old symlinks don't exist, so that a reconfigure in an existing
dnl directory behaves reasonably.

AC_CONFIG_FILES(Makefile doc/Makefile po/Makefile.in:po/Make-in)
AC_CONFIG_COMMANDS([default],
[rm -f targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c itbl-cpu.h
 echo '#include "tc-'"${target_cpu_type}"'.h"' > targ-cpu.h
 echo '#include "obj-'"${obj_format}"'.h"' > obj-format.h
 echo '#include "te-'"${te_file}"'.h"' > targ-env.h
 echo '#include "itbl-'"${target_cpu_type}"'.h"' > itbl-cpu.h
 if test "x$cgen_cpu_prefix" != x ; then
   echo '#include "opcodes/'"${cgen_cpu_prefix}"'-desc.h"' > cgen-desc.h
 fi

 sed -e '/POTFILES =/r po/POTFILES' po/Makefile.in > po/Makefile],
[target_cpu_type=${target_cpu_type}
 cgen_cpu_prefix=${cgen_cpu_prefix}
 obj_format=${obj_format}
 te_file=${te_file}])

AC_OUTPUT
