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
AC_PREREQ(2.5)dnl v2.5 needed for --bindir et al
AC_INIT(as.h)dnl
dnl
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(shared,
[  --enable-shared         build shared BFD library],
[case "${enableval}" in
  yes) shared=true shared_bfd=true shared_opcodes=true ;;
  no)  shared=false ;;
  *bfd*opcodes*) shared=true shared_bfd=true shared_opcodes=true ;;
  *opcodes*bfd*) shared=true shared_bfd=true shared_opcodes=true ;;
  *bfd*) shared=true shared_bfd=true ;;
  *opcodes*) shared=true shared_opcodes=true ;;
  *) shared=false ;;
esac])dnl

# Generate a header file -- gets more post-processing by Makefile later.
AC_CONFIG_HEADER(conf)

dnl For recursion to work right, this must be an absolute pathname.
AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..)
AC_CANONICAL_SYSTEM
AC_ARG_PROGRAM

te_file=generic

canon_targets=""
if test -n "$enable_targets" ; then
  for t in `echo $enable_targets | sed 's/,/ /g'`; do
    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

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

    # check for architecture variants
    case ${cpu} in
      armeb)		cpu_type=arm endian=big ;;
      arm*)		cpu_type=arm endian=little ;;
      hppa*)		cpu_type=hppa ;;
changequote(,)dnl
      i[456]86)		cpu_type=i386 ;;
      m680[012346]0)	cpu_type=m68k ;;
      m68008)		cpu_type=m68k ;;
      m683??)		cpu_type=m68k ;;
changequote([,])dnl
      m8*)		cpu_type=m88k ;;
      mips*el)		cpu_type=mips endian=little;;
      mips*)		cpu_type=mips endian=big ;;
      powerpcle*)	cpu_type=ppc endian=little ;;
      powerpc*)		cpu_type=ppc endian=big ;;
      rs6000*)		cpu_type=ppc ;;
      sparc64)		cpu_type=sparc want_sparc_v9=true ;;
      sparc*)		cpu_type=sparc ;;
      *)		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

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

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

      alpha-*-*vms*)	    fmt=evax ;;
      alpha-*-netware*)     fmt=ecoff ;;
      alpha-*-osf*)         fmt=ecoff ;;
      alpha-*-linuxecoff*)  fmt=ecoff ;;
      alpha-*-linux*)       fmt=elf em=linux ;;

# start-sanitize-arc
      arc-*-elf*)           fmt=elf bfd_gas=yes ;;
# end-sanitize-arc

      arm-*-riscix*)	    fmt=aout targ=arm-lit em=riscix ;;
      arm-*-aout)	    fmt=aout
			    case "$endian" in
			      big)	targ=arm-big ;;
			      *)	targ=arm-lit ;;
			    esac
			    ;;
      arm-*-coff)           fmt=coff ;;
      arm-*-riscix*)        fmt=aout ;;
      arm-*-pe)             fmt=coff targ=armcoff em=pe ;;

# start-sanitize-d10v
      d10v-*-*)		    fmt=elf bfd_gas=yes ;;
# end-sanitize-d10v

      hppa-*-*elf*)         fmt=elf em=hppa ;;
      hppa-*-lites*)        fmt=elf em=hppa ;;
      hppa-*-osf*)          fmt=som em=hppa ;;
      hppa-*-hpux*)         fmt=som em=hppa ;;
      hppa-*-bsd*)          fmt=som em=hppa ;;
      hppa-*-hiux*)         fmt=som em=hppa ;;

      h8300-*-coff)         fmt=coff ;;

      i386-ibm-aix*)        fmt=coff targ=i386coff
			     em=i386aix ;;
      i386-*-bsd*)          fmt=aout em=386bsd ;;
      i386-*-netbsd0.8)     fmt=aout em=386bsd ;;
      i386-*-netbsd*)       fmt=aout em=nbsd bfd_gas=yes;;
      i386-*-linux*aout* | i386-*-linuxoldld)   fmt=aout em=linux ;;
      i386-*-linux*coff*)   fmt=coff em=linux
			     targ=i386coff ;;
      i386-*-linux*)        fmt=elf em=linux ;;
      i386-*-lynxos*)       fmt=coff targ=i386coff
			     em=lynx ;;
      i386-*-sysv4* | i386-*-solaris* | i386-*-elf | i386-*-freebsdelf*)
			    fmt=elf ;;
      i386-*-sco*elf*)      fmt=elf targ=sco5 ;;
      i386-*-coff | i386-*-sysv* | i386-*-sco* | i386-*-isc*)
			    fmt=coff targ=i386coff ;;
      i386-*-vsta)          fmt=aout ;;
      i386-*-go32)          fmt=coff targ=i386coff ;;
      i386-*-rtems*)        fmt=coff targ=i386coff ;;
      i386-*-gnu*)          fmt=elf ;;
      i386-*-mach*)
			    fmt=aout em=mach bfd_gas=yes ;;
      i386-*-msdos*)        fmt=aout ;;
      i386-*-moss*)	    fmt=elf ;;
      i386-*-pe)            fmt=coff targ=i386coff em=pe ;;
      i386-*-cygwin32)      fmt=coff targ=i386coff em=pe ;;
      i386-*-*nt)           fmt=coff targ=i386coff em=pe ;;
      i960-*-bout)          fmt=bout ;;
      i960-*-coff)          fmt=coff em=ic960 targ=ic960coff ;;
      i960-*-rtems*)        fmt=coff em=ic960 targ=ic960coff ;;
      i960-*-nindy*)        fmt=bout ;;
      i960-*-vxworks4*)     fmt=bout ;;
      i960-*-vxworks5.0)    fmt=bout ;;
      i960-*-vxworks5.*)    fmt=coff em=ic960 targ=ic960coff ;;
      i960-*-vxworks*)      fmt=bout ;;

      m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*)
			    fmt=aout em=sun3 ;;
      m68k-motorola-sysv*)  fmt=coff targ=m68kcoff em=delta ;;
      m68k-bull-sysv3*)     fmt=coff targ=m68kcoff em=dpx2 ;;
      m68k-apollo-*)        fmt=coff targ=apollo em=apollo ;;
      m68k-*-sysv4 | m68k-*-elf) # must be before -sysv*
			    fmt=elf ;;
      m68k-*-coff | m68k-*-sysv* | m68k-*-rtems*)
			    fmt=coff targ=m68kcoff ;;
      m68k-*-hpux*)         fmt=hp300 em=hp300 ;;
      m68k-*-linux*aout*)   fmt=aout em=linux ;;
      m68k-*-linux*)	    fmt=elf em=linux ;;
      m68k-*-lynxos*)       fmt=coff targ=m68kcoff
			     em=lynx ;;
      m68k-*-netbsd*)       fmt=aout em=nbsd bfd_gas=yes ;;
      m68k-apple-aux*)      fmt=coff targ=m68kcoff em=aux ;;
      m68k-*-psos*)         fmt=elf em=psos;;

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

      # don't change em like *-*-bsd does
      mips-dec-netbsd*)	    fmt=elf targ=mips-lit endian=little ;;
      mips-dec-bsd*)        fmt=aout targ=mips-lit ;;
      mips-sony-bsd*)       fmt=ecoff targ=mips-big ;;
      mips-*-bsd*)          AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.) ;;
      mips-*-ultrix*)       fmt=ecoff targ=mips-lit endian=little ;;
      mips-*-osf*)          fmt=ecoff targ=mips-lit endian=little ;;
      mips-*-ecoff*)        fmt=ecoff 
			    case "$endian" in
			    big) targ=mips-big ;;
			    *)   targ=mips-lit ;;
			    esac
			    ;;
      mips-*-ecoff*)        fmt=ecoff targ=mips-big ;;
      mips-*-gnu*)          fmt=aout
			    case "$endian" in
			    big) targ=mips-big ;;
			    *)   targ=mips-lit ;;
			    esac
			    ;;
      mips-*-irix6*)	    fmt=elf targ=mips-big ;;
      mips-*-irix5*)        fmt=elf targ=mips-big ;;
      mips-*-irix*)         fmt=ecoff targ=mips-big ;;
      mips-*-riscos*)       fmt=ecoff targ=mips-big ;;
      mips-*-sysv*)         fmt=ecoff targ=mips-big ;;
      mips-*-elf* | mips-*-rtems*)
			    fmt=elf 
			    case "$endian" in
			    big) targ=mips-big ;;
			    *)   targ=mips-lit ;;
			    esac
			    ;;
      mn10200-*-*)	    fmt=elf bfd_gas=yes ;;
      mn10300-*-*)	    fmt=elf bfd_gas=yes ;;
      ppc-*-pe | ppc-*-cygwin32 | ppc-*-winnt*)
		            fmt=coff em=pe 
			    case "$endian" in
			    big) targ=ppc-big ;;
			    *)   targ=ppc-lit ;;
			    esac
                            ;;
      ppc-*-aix*)           fmt=coff ;;
      ppc-*-elf* | ppc-*-eabi* | ppc-*-sysv4*)
			    fmt=elf
			    case "$endian" in
			    big)  targ=ppc-big ;;
			    *)    targ=ppc-lit ;;
			    esac
			    ;;
      ppc-*-linux*)	    fmt=elf
			    case "$endian" in
			    big)  targ=ppc-big ;;
			    *)    AC_MSG_ERROR(Linux must be configured big endian) ;;
			    esac
			    ;;
      ppc-*-solaris*)	    fmt=elf
			    case "$endian" in
			    big)  AC_MSG_ERROR(Solaris must be configured little endian) ;;
			    *)    targ=ppc-sol ;;
			    esac
			    ;;
      ppc-*-rtems*)
			    fmt=elf
			    case "$endian" in
			    big)  targ=ppc-big ;;
			    *)    targ=ppc-lit ;;
			    esac
			    ;;
      ppc-*-macos* | ppc-*-mpw*)
			    fmt=coff em=macos ;;
      ppc-*-netware*)       fmt=elf em=ppcnw ;;

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

      ns32k-pc532-mach* | ns32k-pc532-ux*)    fmt=aout em=pc532mach ;;
      ns32k-pc532-netbsd* | ns32k-pc532-lites*)  fmt=aout em=nbsd532 ;;

      sparc-*-rtems*)       fmt=aout ;;
      sparc-*-sunos4*)      fmt=aout em=sun3 ;;
      sparc-*-aout | sparc*-*-vxworks*)
			    fmt=aout em=sparcaout ;;
      sparc-*-coff)         fmt=coff ;;
      sparc-*-lynxos*)      fmt=coff em=lynx ;;
      sparc-fujitsu-none)   fmt=aout ;;
      sparc-*-elf | sparc-*-sysv4* | sparc-*-solaris*)
			    fmt=elf ;;
      sparc-*-netbsd*)      fmt=aout em=nbsd bfd_gas=yes ;;

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

      vax-*-bsd* | vax-*-ultrix*)
			    fmt=aout ;;
      vax-*-vms)            fmt=vms ;;

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

      w65-*-*)              fmt=coff ;;

      *-*-aout | *-*-scout)
			    fmt=aout ;;
      *-*-nindy*)
			    fmt=bout ;;
      *-*-bsd*)
			    fmt=aout em=sun3 ;;
      *-*-generic)          fmt=generic ;;
      *-*-xray | *-*-hms)   fmt=coff ;;
      *-*-sim)              fmt=coff ;;
      *-*-elf | *-*-sysv4* | *-*-solaris*)
			    AC_MSG_WARN(GAS support for ${generic_target} is incomplete.)
			    fmt=elf dev=yes ;;
      *-*-vxworks)          fmt=aout ;;
      *-*-netware)          fmt=elf ;;
    esac

    case ${cpu_type}-${fmt} in
      alpha-*)	bfd_gas=yes ;;
      arm-*)	bfd_gas=yes ;;
    # not yet
    # i386-aout)	bfd_gas=preferred ;;
      mips-*)	bfd_gas=yes ;;
      ns32k-*)	bfd_gas=yes ;;
      ppc-*)	bfd_gas=yes ;;
      sparc-*)	bfd_gas=yes ;;
      *-elf)	bfd_gas=yes ;;
      *-ecoff)	bfd_gas=yes ;;
      *-som)	bfd_gas=yes ;;
      *)		;;
    esac

# Other random stuff.

    # do we need the opcodes library?
    case ${cpu_type} in
      vax | i386)
	;;
      *)
	need_opcodes=yes
	if test "${shared_opcodes}" = "true"; then
	  # A shared libopcodes must be linked against libbfd.
	  need_bfd=yes
	fi
	;;
    esac

    test -n "$want_sparc_v9" && AC_DEFINE(SPARC_V9)

    case ${cpu}-${vendor}-${os} in
      sparc64-*-elf*) AC_DEFINE(SPARC_ARCH64) ;;
    esac

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

# 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
      gas_target=$targ
      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-*-*-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 ;;
    esac

    emulations="$emulations $emulation"

done

# 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} ;;
  *)		atof=ieee ;;
esac

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

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

# and target makefile frag

target_frag=${srcdir}/config/${gas_target}.mt
if test ! -r ${target_frag}; then
  target_frag=/dev/null # ick! but subst_file can't be conditionalized
fi
AC_SUBST_FILE(target_frag)

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) ;;
      m68k) AC_DEFINE(M68KCOFF) ;;
      m88k) AC_DEFINE(M88KCOFF) ;;
    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)
	fmt=elf   file=mipself ;;
    mipsbecoff | mipslecoff)
	fmt=ecoff file=mipsecoff ;;
  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)    ;;
      bout)	AC_DEFINE(OBJ_MAYBE_BOUT)    ;;
      coff)	AC_DEFINE(OBJ_MAYBE_COFF)    ;;
      ecoff)	AC_DEFINE(OBJ_MAYBE_ECOFF)   ;;
      elf)	AC_DEFINE(OBJ_MAYBE_ELF)     ;;
      generic)	AC_DEFINE(OBJ_MAYBE_GENERIC) ;;
      hp300)	AC_DEFINE(OBJ_MAYBE_HP300)   ;;
      ieee)	AC_DEFINE(OBJ_MAYBE_IEEE)    ;;
      som)	AC_DEFINE(OBJ_MAYBE_SOM)     ;;
      vms)	AC_DEFINE(OBJ_MAYBE_VMS)     ;;
    esac
    extra_objects="$extra_objects obj-$fmt.o"
  done
  obj_format=multi
fi
if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
  te_file=multi
  extra_objects="$extra_objects $emfiles"
  DEFAULT_EMULATION=`set . $emulations ; echo $2`
  AC_DEFINE(USE_EMULATIONS)
fi
AC_SUBST(extra_objects)
AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS)
AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION")

files="config/tc-${target_cpu_type}.c config/tc-${target_cpu_type}.h \
	config/obj-${obj_format}.h config/obj-${obj_format}.c \
	config/te-${te_file}.h config/atof-${atof}.c \
	$extra_files"
links="targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c \
	$extra_links"

case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
  yes-*-coff)	need_bfd=yes ;;
  no-*-coff)	need_bfd=yes
		AC_DEFINE(MANY_SEGMENTS) ;;
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(atof)
dnl AC_SUBST(emulation)

AC_LINK_FILES($files, $links)

case "${primary_bfd_gas}" in
  yes)	AC_DEFINE(BFD_ASSEMBLER)
	need_bfd=yes ;;
esac

# do we need the opcodes library?
case "${need_opcodes}" in
yes)
  OPCODES_DEP=../opcodes/libopcodes.a
  OPCODES_LIB='-L../opcodes -lopcodes'

  # We need to handle some special cases for shared libraries.
  case "${host}" in
  *-*-sunos*)
    # On SunOS, we must link against the name we are going to install,
    # not -lbfd, since SunOS does not support SONAME.
    if test "${shared_opcodes}" = "true"; then
      OPCODES_LIB='-L../opcodes -l`echo opcodes | sed '"'"'$(program_transform_name)'"'"'`'
    fi
    ;;
  alpha*-*-osf*)
    # On Alpha OSF/1, the native linker searches all the -L
    # directories for any LIB.so files, and only then searches for any
    # LIB.a files.  That means that if there is an installed
    # libbfd.so, but this build is not done with --enable-shared, the
    # link will wind up being against the install libbfd.so rather
    # than the newly built libbfd.  To avoid this, we must explicitly
    # link against libbfd.a when --enable-shared is not used.
    if test "${shared_opcodes}" != "true"; then
      OPCODES_LIB='../opcodes/libopcodes.a'
    fi
    ;;
  esac
  ;;
esac
AC_SUBST(OPCODES_DEP)
AC_SUBST(OPCODES_LIB)

case "${need_bfd}" in
yes)
  BFDDEP=../bfd/libbfd.a
  BFDLIB='-L../bfd -lbfd'
  ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h"

  # We need to handle some special cases for shared libraries
  case "${host}" in
  *-*-sunos*)
    # On SunOS, we must link against the name we are going to install,
    # not -lbfd, since SunOS does not support SONAME.
    if test "${shared_bfd}" = "true"; then
      BFDLIB='-L../bfd -l`echo bfd | sed '"'"'$(program_transform_name)'"'"'`'
    fi
    ;;
  alpha*-*-osf*)
    # On Alpha OSF/1, the native linker searches all the -L
    # directories for any LIB.so files, and only then searches for any
    # LIB.a files.  That means that if there is an installed
    # libbfd.so, but this build is not done with --enable-shared, the
    # link will wind up being against the install libbfd.so rather
    # than the newly built libbfd.  To avoid this, we must explicitly
    # link against libbfd.a when --enable-shared is not used.
    if test "${shared_bfd}" != "true"; then
      BFDLIB='../bfd/libbfd.a'
    fi
    ;;
  esac
  ;;
esac
AC_SUBST(BFDDEP)
AC_SUBST(BFDLIB)
AC_SUBST(ALL_OBJ_DEPS)

AC_DEFINE_UNQUOTED(TARGET_ALIAS,	"${target_alias}")
AC_DEFINE_UNQUOTED(TARGET_CANONICAL,	"${target}")
AC_DEFINE_UNQUOTED(TARGET_CPU,		"${target_cpu}")
AC_DEFINE_UNQUOTED(TARGET_VENDOR,	"${target_vendor}")
AC_DEFINE_UNQUOTED(TARGET_OS,		"${target_os}")

AC_PROG_CC
AC_PROG_INSTALL

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

# 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)

# 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
])

HLDFLAGS=
HLDENV=
RPATH_ENVVAR=LD_LIBRARY_PATH
# If we have shared libraries, try to set rpath reasonably.
if test "${shared}" = "true"; then
  case "${host}" in
  *-*-hpux*)
    HLDFLAGS='-Wl,+s,+b,$(libdir)'
    RPATH_ENVVAR=SHLIB_PATH
    ;;
  *-*-irix5* | *-*-irix6*)
    HLDFLAGS='-Wl,-rpath,$(libdir)'
    ;;
  *-*-linux*aout*)
    ;;
  *-*-linux*)
    HLDFLAGS='-Wl,-rpath,$(libdir)'
    ;;
  *-*-solaris*)
    HLDFLAGS='-R $(libdir)'
    ;;
  *-*-sysv4*)
    HLDENV='if test -z "$${LD_RUN_PATH}"; then LD_RUN_PATH=$(libdir); else LD_RUN_PATH=$${LD_RUN_PATH}:$(libdir); fi; export LD_RUN_PATH;'
    ;;
  esac
fi

# On SunOS, if the linker supports the -rpath option, use it to
# prevent ../bfd and ../opcodes from being included in the run time
# search path.
case "${host}" in
  *-*-sunos*)
    echo 'main () { }' > conftest.c
    ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t
    if grep 'unrecognized' conftest.t >/dev/null 2>&1; then
      :
    elif grep 'No such file' conftest.t >/dev/null 2>&1; then
      :
    elif grep 'do not mix' conftest.t >/dev/null 2>&1; then
      :
    elif test "${shared}" = "true"; then
      HLDFLAGS='-Wl,-rpath=$(libdir)'
    else
      HLDFLAGS='-Wl,-rpath='
    fi
    rm -f conftest.t conftest.c conftest
    ;;
esac
AC_SUBST(HLDFLAGS)
AC_SUBST(HLDENV)
AC_SUBST(RPATH_ENVVAR)

dnl This must come last.
AC_OUTPUT(Makefile doc/Makefile .gdbinit:gdbinit.in)