dnl Process this file with autoconf to produce a configure script.
dnl
dnl   Copyright 2012-2013 Free Software Foundation
dnl
dnl This file is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
dnl the Free Software Foundation; either version 3 of the License, or
dnl (at your option) any later version.
dnl 
dnl This program is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
dnl GNU General Public License for more details.
dnl 
dnl You should have received a copy of the GNU General Public License
dnl along with this program; see the file COPYING3.  If not see
dnl <http://www.gnu.org/licenses/>.
dnl

AC_PREREQ(2.59)
AC_INIT([bfd], [2.23.52])
AC_CONFIG_SRCDIR([libbfd.c])

AC_CANONICAL_TARGET
AC_ISC_POSIX

AM_INIT_AUTOMAKE

dnl These must be called before LT_INIT, because it may want
dnl to call AC_CHECK_PROG.
AC_CHECK_TOOL(AR, ar)
AC_CHECK_TOOL(RANLIB, ranlib, :)

dnl Default to a non shared library.  This may be overridden by the
dnl configure option --enable-shared.
AC_DISABLE_SHARED

AC_PROG_CC
AC_GNU_SOURCE
AC_USE_SYSTEM_EXTENSIONS

LT_INIT([dlopen])

# AC_PLUGINS setting $plugins is called by ACX_LARGEFILE.
ACX_LARGEFILE

AM_CONDITIONAL(PLUGINS, test "$plugins" = "yes")

if test "$plugins" = "yes"; then
  if test "$enable_dlopen" != "yes" ; then
    AC_MSG_ERROR([
      Building BFD with plugin support requires a host that supports -ldl.])
  fi
  enable_targets="$enable_targets plugin"
fi

AC_ARG_ENABLE(64-bit-bfd,
[  --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)],
[case "${enableval}" in
  yes)  want64=true  ;;
  no)   want64=false ;;
  *)    AC_MSG_ERROR(bad value ${enableval} for 64-bit-bfd option) ;;
esac],[want64=false])dnl

AC_ARG_ENABLE(targets,
[  --enable-targets        alternative target configurations],
[case "${enableval}" in
  yes | "") AC_MSG_ERROR([enable-targets option must specify target names or 'all'])
            ;;
  no)       enable_targets= ;;
  *)        enable_targets=$enableval ;;
esac])dnl

AC_ARG_WITH(mmap,
[  --with-mmap             try using mmap for BFD input files if available],
[case "${withval}" in
  yes)  want_mmap=true ;;
  no)   want_mmap=false ;;
  *)    AC_MSG_ERROR(bad value ${withval} for BFD with-mmap option) ;;
esac],[want_mmap=false])dnl

AC_ARG_ENABLE(secureplt,
[  --enable-secureplt      Default to creating read-only plt entries],
[case "${enableval}" in
  yes)  use_secureplt=true  ;;
  no)   use_secureplt=false ;;
  *)    AC_MSG_ERROR(bad value ${enableval} for secureplt option) ;;
esac],[use_secureplt=false])dnl
if test $use_secureplt = true; then
  AC_DEFINE(USE_SECUREPLT, 1,
    [Define if we should default to creating read-only plt entries])
fi

AC_ARG_ENABLE(leading-mingw64-underscores,
  AS_HELP_STRING([--enable-leading-mingw64-underscores],
                 [Enable leading underscores on 64 bit mingw targets]),
  [],[])
AS_IF([ test x"$enable_leading_mingw64_underscores" = xyes ],
  [AC_DEFINE(USE_MINGW64_LEADING_UNDERSCORES, 1,
    [Define if we should use leading underscore on 64 bit mingw targets])])

DEBUGDIR=${libdir}/debug
AC_ARG_WITH(separate-debug-dir,
  AS_HELP_STRING([--with-separate-debug-dir=DIR],
                 [Look for global separate debug info in DIR [[default=LIBDIR/debug]]]),
[DEBUGDIR="${withval}"])
AC_SUBST(DEBUGDIR)

# Check to see if we should allow the generation of
# symbols with the ELF standard's STT_COMMON type.
AC_ARG_ENABLE(elf-stt-common,
[  --enable-elf-stt-common Allow the generation of ELF symbols with the STT_COMMON type],
[case "${enableval}" in
  yes) want_elf_stt_common=true ;;
  no)  want_elf_stt_common=false ;;
  *)   AC_MSG_ERROR(bad value ${enableval} for ELF STT_COMMON option) ;;
 esac],
# We have to choose a default behaviour.  For native builds we could
# test whether the loader supports the STT_COMMON type, but that would
# mean that built binaries could not be exported to older systems where
# the loader does not support it. So by default we always choose to
# disable this feature.
  want_elf_stt_common=false)dnl
if test $want_elf_stt_common = true; then
  AC_DEFINE(USE_STT_COMMON, 1,
    [Define if we may generate symbols with ELF's STT_COMMON type])
fi

ACX_PKGVERSION([GNU Binutils])
ACX_BUGURL([http://www.sourceware.org/bugzilla/])

AM_BINUTILS_WARNINGS

AC_CONFIG_HEADERS(config.h:config.in)

# PR 14072
AH_VERBATIM([00_CONFIG_H_CHECK],
[/* Check that config.h is #included before system headers
    (this works only for glibc, but that should be enough).  */
#if defined(__GLIBC__) && !defined(__FreeBSD_kernel__) && !defined(__CONFIG_H__)
#  error config.h must be #included before system headers
#endif
#define __CONFIG_H__ 1])

if test -z "$target" ; then
    AC_MSG_ERROR(Unrecognized target system type; please check config.sub.)
fi

AM_MAINTAINER_MODE
AM_CONDITIONAL(GENINSRC_NEVER, false)
AM_INSTALL_LIBBFD
AC_EXEEXT

host64=false
target64=false
bfd_default_target_size=32

# host stuff:

ALL_LINGUAS="fr tr ja es sv da zh_CN ro rw vi fi id ru uk"
ZW_GNU_GETTEXT_SISTER_DIR
AM_PO_SUBDIRS

# Permit host specific settings.
. ${srcdir}/configure.host

AC_SUBST(HDEFINES)
AC_PROG_INSTALL

BFD_HOST_64BIT_LONG=0
BFD_HOST_64BIT_LONG_LONG=0
BFD_HOST_64_BIT_DEFINED=0
BFD_HOST_64_BIT=
BFD_HOST_U_64_BIT=
BFD_HOSTPTR_T="unsigned long"

AC_CHECK_SIZEOF(long long)
AC_CHECK_SIZEOF(void *)
AC_CHECK_SIZEOF(long)

if test "x${ac_cv_sizeof_void_p}" = "x8"; then
  host64=true
fi

if test "x${ac_cv_sizeof_long}" = "x8"; then
  BFD_HOST_64BIT_LONG=1
  test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long"
  test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long"
elif test "x${ac_cv_sizeof_long_long}" = "x8"; then
  BFD_HOST_64BIT_LONG_LONG=1
  test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long long"
  test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long long"
  if test "x${ac_cv_sizeof_void_p}" = "x8"; then
    BFD_HOSTPTR_T="unsigned long long"
  fi
fi

if test -n "${HOST_64BIT_TYPE}" -a -n "${HOST_U_64BIT_TYPE}"; then
  BFD_HOST_64_BIT_DEFINED=1
  BFD_HOST_64_BIT="${HOST_64BIT_TYPE}"
  BFD_HOST_U_64_BIT="${HOST_U_64BIT_TYPE}"
fi

AC_SUBST(BFD_HOST_64BIT_LONG)
AC_SUBST(BFD_HOST_64BIT_LONG_LONG)
AC_SUBST(BFD_HOST_64_BIT_DEFINED)
AC_SUBST(BFD_HOST_64_BIT)
AC_SUBST(BFD_HOST_U_64_BIT)
AC_SUBST(BFD_HOSTPTR_T)

BFD_CC_FOR_BUILD

AC_CHECK_HEADERS(alloca.h stddef.h string.h strings.h stdlib.h time.h unistd.h)
AC_CHECK_HEADERS(fcntl.h sys/file.h sys/time.h sys/stat.h sys/resource.h)
GCC_HEADER_STDINT(bfd_stdint.h)
AC_HEADER_TIME
AC_HEADER_DIRENT

AC_CHECK_HEADERS(windows.h dlfcn.h)

ACX_HEADER_STRING
AC_CHECK_FUNCS(fcntl getpagesize setitimer sysconf fdopen getuid getgid fileno)
AC_CHECK_FUNCS(strtoull getrlimit)

AC_CHECK_DECLS(basename)
AC_CHECK_DECLS(ftello)
AC_CHECK_DECLS(ftello64)
AC_CHECK_DECLS(fseeko)
AC_CHECK_DECLS(fseeko64)

BFD_BINARY_FOPEN

AC_CHECK_DECLS(ffs)
AC_CHECK_DECLS(free)
AC_CHECK_DECLS(getenv)
AC_CHECK_DECLS(malloc)
AC_CHECK_DECLS(realloc)
AC_CHECK_DECLS(stpcpy)
AC_CHECK_DECLS(strstr)
AC_CHECK_DECLS(snprintf)
AC_CHECK_DECLS(vsnprintf)

# Link in zlib if we can.  This allows us to read compressed debug sections.
# This is used only by compress.c.
AM_ZLIB

# If we are configured native, pick a core file support file.
COREFILE=
COREFLAG=
CORE_HEADER=
TRAD_HEADER=
if test "${target}" = "${host}"; then
  case "${host}" in
  alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu | alpha*-*-*vms*)
	COREFILE=''
	;;
  alpha*-*-linux-*)
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/alphalinux.h"'
	;;
  alpha*-*-netbsd* | alpha*-*-openbsd*)
	COREFILE=netbsd-core.lo
	;;
  alpha*-*-*)
        COREFILE=osf-core.lo
	;;
  arm-*-freebsd* | arm-*-kfreebsd*-gnu)
	COREFILE='' ;;
  arm-*-netbsd* | arm-*-openbsd*)
	COREFILE=netbsd-core.lo
	;;
  arm-*-riscix)		COREFILE=trad-core.lo ;;
  hppa*-*-hpux*)	COREFILE=hpux-core.lo ;;
  hppa*-*-hiux*)	COREFILE=hpux-core.lo ;;
  hppa*-*-mpeix*)	COREFILE=hpux-core.lo ;;
  hppa*-*-bsd*)		COREFILE="hpux-core.lo hppabsd-core.lo"
			COREFLAG="-DHPUX_CORE -DHPPABSD_CORE" ;;
  hppa*-*-netbsd* | hppa*-*-openbsd*)
	COREFILE=netbsd-core.lo
	;;

  i370-*-*)
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/i370linux.h"'
	;;

changequote(,)dnl
  i[3-7]86-sequent-bsd*)
changequote([,])dnl
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/symmetry.h"'
	;;
changequote(,)dnl
  i[3-7]86-sequent-sysv4*) ;;
  i[3-7]86-sequent-sysv*)
changequote([,])dnl
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/symmetry.h"'
	;;
changequote(,)dnl
  i[3-7]86-*-bsdi)
changequote([,])dnl
	COREFILE=
	;;
changequote(,)dnl
  i[3-7]86-*-bsd* | i[3-7]86-*-freebsd[123] | i[3-7]86-*-freebsd[123]\.* | i[3-7]86-*-freebsd4\.[01234] | i[3-7]86-*-freebsd4\.[01234]\.* | i[3-7]86-*-freebsd*aout*)
changequote([,])dnl
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/i386bsd.h"'
	;;
changequote(,)dnl
  i[3-7]86-*-freebsd* | i[3-7]86-*-kfreebsd*-gnu | i[3-7]86-*-dragonfly*)
changequote([,])dnl
	COREFILE=''
	TRAD_HEADER='"hosts/i386bsd.h"'
	;;
changequote(,)dnl
  i[3-7]86-*-netbsd* | i[3-7]86-*-knetbsd*-gnu | i[3-7]86-*-openbsd*)
changequote([,])dnl
	COREFILE=netbsd-core.lo
	;;
changequote(,)dnl
  i[3-7]86-esix-sysv3*)
changequote([,])dnl
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/esix.h"'
	;;
changequote(,)dnl
  i[3-7]86-*-sco3.2v5*)
changequote([,])dnl
	COREFILE=sco5-core.lo
	;;
changequote(,)dnl
  i[3-7]86-*-sco* | i[3-7]86-*-isc*)
changequote([,])dnl
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/i386sco.h"'
	;;
changequote(,)dnl
  i[3-7]86-*-mach3*)
changequote([,])dnl
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/i386mach3.h"'
	;;
changequote(,)dnl
  i[3-7]86-*-linux-*)
changequote([,])dnl
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/i386linux.h"'
	case "$enable_targets"-"$want64" in
	*x86_64-*linux*|*-true)
	  CORE_HEADER='"hosts/x86-64linux.h"'
	esac
	;;
changequote(,)dnl
  i[3-7]86-*-isc*)	COREFILE=trad-core.lo ;;
  i[3-7]86-*-aix*)	COREFILE=aix386-core.lo ;;
changequote([,])dnl
  i860-*-mach3* | i860-*-osf1*)
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/i860mach3.h"'
	;;
  mips-*-netbsd* | mips*-*-openbsd*)
	COREFILE=netbsd-core.lo
	;;
  mips-dec-*)
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/decstation.h"'
	;;
  mips-sgi-irix4*)	COREFILE=irix-core.lo ;;
  mips-sgi-irix5*)	COREFILE=irix-core.lo ;;
  mips-sgi-irix6*)	COREFILE=irix-core.lo ;;
  mips-*-sysv4*)	;;
  mips-*-sysv* | mips-*-riscos*)
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/riscos.h"'
	;;
  mips-sony-bsd*)
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/news-mips.h"'
	;;
  m68*-bull*-sysv*)
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/dpx2.h"'
	;;
  m68*-hp-hpux*)	COREFILE=hpux-core.lo ;;
  m68*-hp-bsd*)
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/hp300bsd.h"'
	;;
  m68*-*-linux-*)
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/m68klinux.h"'
	;;
  m68*-motorola-sysv*)
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/delta68.h"'
	;;
  m68*-sony-*)
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/news.h"'
	;;
  m68*-*-netbsd* | m68*-*-openbsd*)
	COREFILE=netbsd-core.lo
	;;
  m68*-apple-aux*)
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/m68kaux.h"'
	;;
  m88*-*-sysv4*)
	;;
  m88*-motorola-sysv*)
	COREFILE=ptrace-core.lo
	;;
  m88*-*-mach3*)
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/m88kmach3.h"'
	;;
  m88*-*-openbsd*)
	COREFILE=netbsd-core.lo
	;;
  ns32k-pc532-mach)
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/pc532mach.h"'
	;;
  ns32k-*-netbsd* | ns32k-*-openbsd*)
	COREFILE=netbsd-core.lo
	;;
  rs6000-*-lynx*)
  	COREFILE=lynx-core.lo
	;;
changequote(,)dnl
  rs6000-*-aix[5-9].* | powerpc-*-aix[5-9].*)
changequote([,])dnl
        COREFILE=rs6000-core.lo
	COREFLAG="$COREFLAG -DAIX_5_CORE -DAIX_CORE_DUMPX_CORE"
	;;
changequote(,)dnl
  rs6000-*-aix4.[3-9]* | powerpc-*-aix4.[3-9]*)
changequote([,])dnl
        COREFILE=rs6000-core.lo
	COREFLAG="$COREFLAG -DAIX_CORE_DUMPX_CORE"
	# Not all versions of AIX with -DAIX_CORE_DUMPX_CORE
	# have c_impl as a member of struct core_dumpx
	AC_MSG_CHECKING([for c_impl in struct core_dumpx])
	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <core.h>]], [[struct core_dumpx c; c.c_impl = 0;]])],[AC_DEFINE(HAVE_ST_C_IMPL, 1,
	    [Define if struct core_dumpx has member c_impl])
	  AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
	;;
  rs6000-*-aix4*)	COREFILE=rs6000-core.lo ;;
  rs6000-*-*)		COREFILE=rs6000-core.lo ;;
  powerpc-*-aix4*)	COREFILE=rs6000-core.lo ;;
  powerpc-*-aix*)	COREFILE=rs6000-core.lo ;;
  powerpc-*-beos*)	;;
  powerpc-*-freebsd* | powerpc-*-kfreebsd*-gnu)
		        COREFILE='' ;;
  powerpc-*-netbsd*)	COREFILE=netbsd-core.lo ;;
  powerpc-*-*bsd*)	COREFILE=netbsd-core.lo ;;
  s390*-*-*)            COREFILE=trad-core.lo ;;
  sh*-*-netbsd* | sh*-*-openbsd*)
	COREFILE=netbsd-core.lo
	;;
  sparc-*-netbsd* | sparc*-*-openbsd*)
	COREFILE=netbsd-core.lo
	;;
  tahoe-*-*)
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/tahoe.h"'
	;;
  vax-*-netbsd* | vax-*-openbsd*)
  	COREFILE=netbsd-core.lo
	;;
  vax-*-ultrix2*)
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/vaxult2.h"'
	;;
  vax-*-ultrix*)
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/vaxult2.h"'
	;;
  vax-*-linux-*)
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/vaxlinux.h"'
	;;
  vax-*-*)
	COREFILE=trad-core.lo
	TRAD_HEADER='"hosts/vaxbsd.h"'
	;;
  x86_64-*-linux*)
	CORE_HEADER='"hosts/x86-64linux.h"'
	;;
  x86_64-*-netbsd* | x86_64-*-openbsd*)
	COREFILE=netbsd-core.lo
	;;
  esac

  case "$COREFILE" in
  aix386-core.lo)	COREFLAG=-DAIX386_CORE ;;
  hppabsd-core.lo)	COREFLAG=-DHPPABSD_CORE ;;
  hpux-core.lo)		COREFLAG=-DHPUX_CORE ;;
  irix-core.lo)		COREFLAG=-DIRIX_CORE ;;
  lynx-core.lo)		COREFLAG=-DLYNX_CORE ;;
  netbsd-core.lo)	COREFLAG=-DNETBSD_CORE ;;
  osf-core.lo)		COREFLAG=-DOSF_CORE ;;
  ptrace-core.lo)	COREFLAG=-DPTRACE_CORE ;;
  rs6000-core.lo)	COREFLAG="$COREFLAG -DAIX_CORE" ;;
  sco5-core.lo)		COREFLAG="$COREFLAG -DSCO5_CORE" ;;
  trad-core.lo)		COREFLAG="$COREFLAG -DTRAD_CORE" ;;
  esac

  # ELF corefile support has several flavors, but all of
  # them use something called <sys/procfs.h>
  AC_CHECK_HEADERS(sys/procfs.h)
  if test "$ac_cv_header_sys_procfs_h" = yes; then
    BFD_HAVE_SYS_PROCFS_TYPE(prstatus_t)
    BFD_HAVE_SYS_PROCFS_TYPE(prstatus32_t)
    BFD_HAVE_SYS_PROCFS_TYPE_MEMBER(prstatus_t, pr_who)
    BFD_HAVE_SYS_PROCFS_TYPE_MEMBER(prstatus32_t, pr_who)
    BFD_HAVE_SYS_PROCFS_TYPE(pstatus_t)
    BFD_HAVE_SYS_PROCFS_TYPE(pxstatus_t)
    BFD_HAVE_SYS_PROCFS_TYPE(pstatus32_t)
    BFD_HAVE_SYS_PROCFS_TYPE(prpsinfo_t)
    BFD_HAVE_SYS_PROCFS_TYPE_MEMBER(prpsinfo_t, pr_pid)
    BFD_HAVE_SYS_PROCFS_TYPE(prpsinfo32_t)
    BFD_HAVE_SYS_PROCFS_TYPE_MEMBER(prpsinfo32_t, pr_pid)
    BFD_HAVE_SYS_PROCFS_TYPE(psinfo_t)
    BFD_HAVE_SYS_PROCFS_TYPE_MEMBER(psinfo_t, pr_pid)
    BFD_HAVE_SYS_PROCFS_TYPE(psinfo32_t)
    BFD_HAVE_SYS_PROCFS_TYPE_MEMBER(psinfo32_t, pr_pid)
    BFD_HAVE_SYS_PROCFS_TYPE(lwpstatus_t)
    BFD_HAVE_SYS_PROCFS_TYPE(lwpxstatus_t)
    BFD_HAVE_SYS_PROCFS_TYPE_MEMBER(lwpstatus_t, pr_context)
    BFD_HAVE_SYS_PROCFS_TYPE_MEMBER(lwpstatus_t, pr_reg)
    BFD_HAVE_SYS_PROCFS_TYPE_MEMBER(lwpstatus_t, pr_fpreg)
    BFD_HAVE_SYS_PROCFS_TYPE(win32_pstatus_t)
  fi
fi
AC_SUBST(COREFILE)
AC_SUBST(COREFLAG)
if test -n "$CORE_HEADER"; then
  AC_DEFINE_UNQUOTED(CORE_HEADER, $CORE_HEADER,
    [Name of host specific core header file to include in elf.c.])
fi
if test -n "$TRAD_HEADER"; then
  AC_DEFINE_UNQUOTED(TRAD_HEADER, $TRAD_HEADER,
    [Name of host specific header file to include in trad-core.c.])
fi

# Check if linker supports --as-needed and --no-as-needed options
AC_CACHE_CHECK(linker --as-needed support, bfd_cv_ld_as_needed,
	[bfd_cv_ld_as_needed=no
	if $LD --help 2>/dev/null | grep as-needed > /dev/null; then
		bfd_cv_ld_as_needed=yes
	fi
	])

LT_LIB_M

# When building a shared libbfd, link against the pic version of libiberty
# so that apps that use libbfd won't need libiberty just to satisfy any
# libbfd references.
# We can't do that if a pic libiberty is unavailable since including non-pic
# code would insert text relocations into libbfd.
SHARED_LIBADD=
SHARED_LDFLAGS=
if test "$enable_shared" = "yes"; then
changequote(,)dnl
  x=`sed -n -e 's/^[ 	]*PICFLAG[ 	]*=[ 	]*//p' < ../libiberty/Makefile | sed -n '$p'`
changequote([,])dnl
  if test -n "$x"; then
    SHARED_LIBADD="-L`pwd`/../libiberty/pic -liberty"
  fi

# More hacks to build DLLs on Windows.
  case "${host}" in
  *-*-cygwin*)
    SHARED_LDFLAGS="-no-undefined"
    SHARED_LIBADD="-L`pwd`/../libiberty -liberty -L`pwd`/../intl -lintl -lcygwin -lkernel32"
  ;;
  esac

  if test -n "$SHARED_LIBADD"; then
    if test -n "$LIBM"; then
      if test x"$bfd_cv_ld_as_needed" = xyes; then
	# Link against libm only when needed.  Put -lc, -lm inside -Wl
	# to stop libtool reordering these options.
	SHARED_LIBADD="$SHARED_LIBADD -Wl,-lc,--as-needed,`echo $LIBM | sed 's/ /,/g'`,--no-as-needed"
      else
	SHARED_LIBADD="$SHARED_LIBADD $LIBM"
      fi
    fi
  fi
fi
AC_SUBST(SHARED_LDFLAGS)
AC_SUBST(SHARED_LIBADD)

# target stuff:

# Canonicalize the secondary target names.
if test -n "$enable_targets" ; then
    for targ in `echo $enable_targets | sed 's/,/ /g'`
    do
	result=`$ac_config_sub $targ 2>/dev/null`
	if test -n "$result" ; then
	    canon_targets="$canon_targets $result"
	else
	    # Allow targets that config.sub doesn't recognize, like "all".
	    canon_targets="$canon_targets $targ"
	fi
    done
fi

all_targets=false
defvec=
selvecs=
assocvecs=
selarchs=
TDEFINES=
for targ in $target $canon_targets
do
    if test "x$targ" = "xall"; then
        all_targets=true
	assocvecs="$assocvecs $targ_defvec $targ_selvecs"
    else
	. $srcdir/config.bfd
	if test "x$targ" = "x$target"; then
	    defvec=$targ_defvec
	fi
	selvecs="$selvecs $targ_defvec $targ_selvecs"
	selarchs="$selarchs $targ_archs"
	TDEFINES="$TDEFINES $targ_cflags"
    fi
done
AC_SUBST(TDEFINES)

# This processing still needs to be done if we're to decide properly whether
# 64-bit support needs to be compiled in.  Currently, it will be included if
# the default or any other explicitly requested target requires it; it
# will not be included on a 32-bit host if no 64-bit target is requested, and
# no "--with-64-bit-bfd" option is given, even if "--enable-targets=all" is
# used.

# uniq the default and selected vectors in all the configured targets.
f=""
for i in $selvecs ; do
    case " $f " in
    *" $i "*) ;;
    *) f="$f $i" ;;
    esac
done
selvecs="$f"


# uniq the associated vectors in all the configured targets.
f=""
for i in $assocvecs ; do
    case " $f " in
    *" $i "*) ;;
    *) f="$f $i" ;;
    esac
done
assocvecs="$f"


# uniq the architectures in all the configured targets.
f=""
for i in $selarchs ; do
    case " $f " in
    *" $i "*) ;;
    *) f="$f $i" ;;
    esac
done
selarchs="$f"

# Target backend .o files.
tb=

elf="elf.lo elflink.lo elf-attrs.lo elf-strtab.lo
     elf-eh-frame.lo dwarf1.lo"

for vec in $selvecs
do
    target_size=32
    case "$vec" in
    # This list is alphabetized to make it easy to compare
    # with the two vector lists in targets.c.  For the same reason,
    # use one entry per line, even though this leads to long lines.
    a_out_adobe_vec)		tb="$tb aout-adobe.lo aout32.lo" ;;
    aix5coff64_vec)		tb="$tb coff64-rs6000.lo xcofflink.lo aix5ppc-core.lo"; target_size=64 ;;
    aout0_big_vec)		tb="$tb aout0.lo aout32.lo" ;;
    aout_arm_big_vec)		tb="$tb aout-arm.lo aout32.lo" ;;
    aout_arm_little_vec)	tb="$tb aout-arm.lo aout32.lo" ;;
    apollocoff_vec)		tb="$tb coff-apollo.lo" ;;
    arm_epoc_pe_big_vec)	tb="$tb epoc-pe-arm.lo peigen.lo cofflink.lo " ;;
    arm_epoc_pe_little_vec)	tb="$tb epoc-pe-arm.lo peigen.lo cofflink.lo " ;;
    arm_epoc_pei_big_vec)	tb="$tb epoc-pei-arm.lo peigen.lo cofflink.lo " ;;
    arm_epoc_pei_little_vec)	tb="$tb epoc-pei-arm.lo peigen.lo cofflink.lo " ;;
    arm_wince_pe_big_vec)	tb="$tb pe-arm-wince.lo pe-arm.lo peigen.lo cofflink.lo " ;;
    arm_wince_pe_little_vec)	tb="$tb pe-arm-wince.lo pe-arm.lo peigen.lo cofflink.lo " ;;
    arm_wince_pei_big_vec)	tb="$tb pei-arm-wince.lo pei-arm.lo peigen.lo cofflink.lo " ;;
    arm_wince_pei_little_vec)	tb="$tb pei-arm-wince.lo pei-arm.lo peigen.lo cofflink.lo " ;;
    armcoff_big_vec)		tb="$tb coff-arm.lo cofflink.lo " ;;
    armcoff_little_vec)		tb="$tb coff-arm.lo cofflink.lo " ;;
    armnetbsd_vec)		tb="$tb armnetbsd.lo aout32.lo" ;;
    armpe_big_vec)		tb="$tb pe-arm.lo peigen.lo cofflink.lo " ;;
    armpe_little_vec)		tb="$tb pe-arm.lo peigen.lo cofflink.lo " ;;
    armpei_big_vec)		tb="$tb pei-arm.lo peigen.lo cofflink.lo " ;;
    armpei_little_vec)		tb="$tb pei-arm.lo peigen.lo cofflink.lo " ;;
    b_out_vec_big_host)		tb="$tb bout.lo aout32.lo" ;;
    b_out_vec_little_host)	tb="$tb bout.lo aout32.lo" ;;
    bfd_pei_ia64_vec)		tb="$tb pei-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
    bfd_elf32_am33lin_vec)	tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
    bfd_elf32_avr_vec)		tb="$tb elf32-avr.lo elf32.lo $elf" ;;
    bfd_elf32_bfin_vec)		tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
    bfd_elf32_bfinfdpic_vec)	tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
    bfd_elf32_big_generic_vec) 	tb="$tb elf32-gen.lo elf32.lo $elf" ;;
    bfd_elf32_bigarc_vec)	tb="$tb elf32-arc.lo elf32.lo $elf" ;;
    bfd_elf32_bigarm_vec)	tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
    bfd_elf32_bigarm_nacl_vec)	tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
    bfd_elf32_bigarm_symbian_vec)
                                tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
    bfd_elf32_bigarm_vxworks_vec)
                                tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
    bfd_elf32_bigmips_vec) 	tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
    bfd_elf32_bigmips_vxworks_vec)
			 	tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
    bfd_elf32_bigmoxie_vec)	tb="$tb elf32-moxie.lo elf32.lo $elf" ;;
    bfd_elf32_bignios2_vec)	tb="$tb elf32-nios2.lo elf32.lo $elf" ;;
    bfd_elf32_cr16_vec)		tb="$tb elf32-cr16.lo elf32.lo $elf" ;;
    bfd_elf32_cr16c_vec)	tb="$tb elf32-cr16c.lo elf32.lo $elf" ;;
    bfd_elf32_cris_vec)		tb="$tb elf32-cris.lo elf32.lo $elf" ;;
    bfd_elf32_crx_vec)          tb="$tb elf32-crx.lo elf32.lo $elf" ;;
    bfd_elf32_d10v_vec)		tb="$tb elf32-d10v.lo elf32.lo $elf" ;;
    bfd_elf32_d30v_vec)		tb="$tb elf32-d30v.lo elf32.lo $elf" ;;
    bfd_elf32_dlx_big_vec)	tb="$tb elf32-dlx.lo elf32.lo $elf" ;;
    bfd_elf32_epiphany_vec)	tb="$tb elf32-epiphany.lo elf32.lo $elf" ;;
    bfd_elf32_fr30_vec)		tb="$tb elf32-fr30.lo elf32.lo $elf" ;;
    bfd_elf32_frv_vec)		tb="$tb elf32-frv.lo elf32.lo $elf" ;;
    bfd_elf32_frvfdpic_vec)	tb="$tb elf32-frv.lo elf32.lo $elf" ;;
    bfd_elf32_h8300_vec)	tb="$tb elf32-h8300.lo elf32.lo $elf" ;;
    bfd_elf32_hppa_linux_vec)	tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
    bfd_elf32_hppa_nbsd_vec)	tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
    bfd_elf32_hppa_vec)		tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
    bfd_elf32_i370_vec)		tb="$tb elf32-i370.lo elf32.lo $elf" ;;
    bfd_elf32_i386_sol2_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
    bfd_elf32_i386_freebsd_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
    bfd_elf32_i386_nacl_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
    bfd_elf32_i386_vxworks_vec)	tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
    bfd_elf32_i386_vec)		tb="$tb elf32-i386.lo elf-ifunc.lo elf-nacl.lo elf-vxworks.lo elf32.lo $elf" ;;
    bfd_elf32_i860_little_vec)	tb="$tb elf32-i860.lo elf32.lo $elf" ;;
    bfd_elf32_i860_vec)		tb="$tb elf32-i860.lo elf32.lo $elf" ;;
    bfd_elf32_i960_vec)		tb="$tb elf32-i960.lo elf32.lo $elf" ;;
    bfd_elf32_ia64_big_vec)	tb="$tb elf32-ia64.lo elfxx-ia64.lo elf32.lo $elf" ;;
    bfd_elf32_ia64_hpux_big_vec) tb="$tb elf32-ia64.lo elfxx-ia64.lo elf32.lo $elf";;
    bfd_elf32_ip2k_vec)		tb="$tb elf32-ip2k.lo elf32.lo $elf" ;;
    bfd_elf32_iq2000_vec)       tb="$tb elf32-iq2000.lo elf32.lo $elf" ;;
    bfd_elf32_lm32_vec)         tb="$tb elf32-lm32.lo elf32.lo $elf" ;;
    bfd_elf32_lm32fdpic_vec)         tb="$tb elf32-lm32.lo elf32.lo $elf" ;;
    bfd_elf32_little_generic_vec) tb="$tb elf32-gen.lo elf32.lo $elf" ;;
    bfd_elf32_littlearc_vec)	tb="$tb elf32-arc.lo elf32.lo $elf" ;;
    bfd_elf32_littlearm_symbian_vec)
                                tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
    bfd_elf32_littlearm_vxworks_vec)
                                tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
    bfd_elf32_littlearm_vec)	tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
    bfd_elf32_littlearm_nacl_vec) tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
    bfd_elf32_littlemips_vec) 	tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
    bfd_elf32_littlemips_vxworks_vec)
			 	tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
    bfd_elf32_littlemoxie_vec)	tb="$tb elf32-moxie.lo elf32.lo $elf" ;;
    bfd_elf32_littlenios2_vec)	tb="$tb elf32-nios2.lo elf32.lo $elf" ;;
    bfd_elf32_m32c_vec)         tb="$tb elf32-m32c.lo elf32.lo $elf" ;;
    bfd_elf32_m32r_vec)		tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
    bfd_elf32_m32rle_vec)       tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
    bfd_elf32_m32rlin_vec)      tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
    bfd_elf32_m32rlelin_vec)    tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
    bfd_elf32_m68hc11_vec)	tb="$tb elf32-m68hc11.lo elf32-m68hc1x.lo elf32.lo $elf" ;;
    bfd_elf32_m68hc12_vec)	tb="$tb elf32-m68hc12.lo elf32-m68hc1x.lo elf32.lo $elf" ;;
    bfd_elf32_m68k_vec)		tb="$tb elf32-m68k.lo elf32.lo $elf" ;;
    bfd_elf32_m88k_vec)		tb="$tb elf32-m88k.lo elf32.lo $elf" ;;
    bfd_elf32_mcore_big_vec)	tb="$tb elf32-mcore.lo elf32.lo $elf" ;;
    bfd_elf32_mcore_little_vec)	tb="$tb elf32-mcore.lo elf32.lo $elf" ;;
    bfd_elf32_mep_vec)		tb="$tb elf32-mep.lo elf32.lo $elf" ;;
    bfd_elf32_mep_little_vec)	tb="$tb elf32-mep.lo elf32.lo $elf" ;;
    bfd_elf32_metag_vec)	tb="$tb elf32-metag.lo elf32.lo $elf" ;;
    bfd_elf32_microblazeel_vec)	tb="$tb elf32-microblaze.lo elf32.lo $elf" ;;
    bfd_elf32_microblaze_vec)	tb="$tb elf32-microblaze.lo elf32.lo $elf" ;;
    bfd_elf32_mn10200_vec)	tb="$tb elf-m10200.lo elf32.lo $elf" ;;
    bfd_elf32_mn10300_vec)	tb="$tb elf-m10300.lo elf32.lo $elf" ;;
    bfd_elf32_mt_vec)           tb="$tb elf32-mt.lo elf32.lo $elf" ;;
    bfd_elf32_msp430_vec)	tb="$tb elf32-msp430.lo elf32.lo $elf" ;;
    bfd_elf32_msp430_ti_vec)	tb="$tb elf32-msp430.lo elf32.lo $elf" ;;
    bfd_elf32_nbigmips_vec)	tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
    bfd_elf32_nlittlemips_vec)	tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
    bfd_elf32_ntradbigmips_vec | bfd_elf32_ntradbigmips_freebsd_vec)
				tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
    bfd_elf32_ntradlittlemips_vec | bfd_elf32_ntradlittlemips_freebsd_vec)
				tb="$tb elfn32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
    bfd_elf32_openrisc_vec)	tb="$tb elf32-openrisc.lo elf32.lo $elf" ;;
    bfd_elf32_or32_big_vec)	tb="$tb elf32-or32.lo elf32.lo $elf" ;;
    bfd_elf32_pj_vec)           tb="$tb elf32-pj.lo elf32.lo $elf";;
    bfd_elf32_pjl_vec)          tb="$tb elf32-pj.lo elf32.lo $elf";;
    bfd_elf32_powerpc_vec)	tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;;
    bfd_elf32_powerpcle_vec)	tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;;
    bfd_elf32_powerpc_freebsd_vec) tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;;
    bfd_elf32_powerpc_vxworks_vec) tb="$tb elf32-ppc.lo elf-vxworks.lo elf32.lo $elf" ;;
    bfd_elf32_rl78_vec)         tb="$tb elf32-rl78.lo $elf" ;;
    bfd_elf32_rx_le_vec)        tb="$tb elf32-rx.lo elf32.lo $elf" ;;
    bfd_elf32_rx_be_vec)        tb="$tb elf32-rx.lo elf32.lo $elf" ;;
    bfd_elf32_rx_be_ns_vec)     tb="$tb elf32-rx.lo elf32.lo $elf" ;;
    bfd_elf32_s390_vec)		tb="$tb elf32-s390.lo elf32.lo $elf" ;;
    bfd_elf32_bigscore_vec)     tb="$tb elf32-score.lo elf32-score7.lo elf32.lo $elf"; want64=true; target_size=64;;
    bfd_elf32_littlescore_vec)  tb="$tb elf32-score.lo elf32-score7.lo elf32.lo $elf"; want64=true; target_size=64;;
    # FIXME: We include cofflink.lo not because it's needed for
    # bfd_elf32_sh64[l]_vec, but because we include bfd_elf32_sh[l]_vec
    # which needs it but does not list it.  Should be fixed in right place.
    bfd_elf32_sh64_vec)		tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" target_size=64 ;;
    bfd_elf32_sh64l_vec)	tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" target_size=64 ;;
    bfd_elf32_sh64lin_vec)	tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" target_size=64 ;;
    bfd_elf32_sh64blin_vec)	tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" target_size=64 ;;
    bfd_elf32_sh64lnbsd_vec)	tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" ;;
    bfd_elf32_sh64nbsd_vec)	tb="$tb elf32-sh64.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf cofflink.lo" ;;
    bfd_elf32_sh_vec)		tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;;
    bfd_elf32_shbfd_vec)	tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
    bfd_elf32_shblin_vec)	tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
    bfd_elf32_shfd_vec)		tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
    bfd_elf32_shl_vec)		tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;;
    bfd_elf32_shl_symbian_vec)	tb="$tb elf32-sh-symbian.lo elf32-sh64-com.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;;
    bfd_elf32_shlin_vec)	tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
    bfd_elf32_shlnbsd_vec)	tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
    bfd_elf32_shlvxworks_vec)	tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;;
    bfd_elf32_shnbsd_vec)	tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
    bfd_elf32_shvxworks_vec)	tb="$tb elf32-sh.lo elf-vxworks.lo elf32.lo $elf coff-sh.lo" ;;
    bfd_elf32_sparc_vec)	tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;;
    bfd_elf32_sparc_sol2_vec)	tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;;
    bfd_elf32_sparc_vxworks_vec) tb="$tb elf32-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf32.lo $elf" ;;
    bfd_elf32_spu_vec)		tb="$tb elf32-spu.lo elf32.lo $elf" ;;
    bfd_elf32_tic6x_be_vec)	tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
    bfd_elf32_tic6x_le_vec)	tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
    bfd_elf32_tic6x_linux_be_vec) tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
    bfd_elf32_tic6x_linux_le_vec) tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
    bfd_elf32_tic6x_elf_be_vec) tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
    bfd_elf32_tic6x_elf_le_vec) tb="$tb elf32-tic6x.lo elf32.lo $elf" ;;
    bfd_elf32_tilegx_be_vec)	tb="$tb elf32-tilegx.lo elfxx-tilegx.lo elf32.lo $elf" ; target_size=32 ;;
    bfd_elf32_tilegx_le_vec)	tb="$tb elf32-tilegx.lo elfxx-tilegx.lo elf32.lo $elf" ; target_size=32 ;;
    bfd_elf32_tilepro_vec)	tb="$tb elf32-tilepro.lo elf32.lo $elf" ;;
    bfd_elf32_tradbigmips_vec | bfd_elf32_tradbigmips_freebsd_vec)
				tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
    bfd_elf32_tradlittlemips_vec | bfd_elf32_tradlittlemips_freebsd_vec)
				tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
    bfd_elf32_us_cris_vec)	tb="$tb elf32-cris.lo elf32.lo $elf" ;;
    bfd_elf32_v850_vec)		tb="$tb elf32-v850.lo elf32.lo $elf" ;;
    bfd_elf32_v850_rh850_vec)	tb="$tb elf32-v850.lo elf32.lo $elf" ;;
    bfd_elf32_vax_vec)		tb="$tb elf32-vax.lo elf32.lo $elf" ;;
    bfd_elf32_xstormy16_vec)	tb="$tb elf32-xstormy16.lo elf32.lo $elf" ;;
    bfd_elf32_xc16x_vec)		tb="$tb elf32-xc16x.lo elf32.lo $elf" ;;
    bfd_elf32_xgate_vec)  	tb="$tb elf32-xgate.lo elf32.lo $elf" ;;
    bfd_elf32_xtensa_le_vec)	tb="$tb xtensa-isa.lo xtensa-modules.lo elf32-xtensa.lo elf32.lo $elf" ;;
    bfd_elf32_xtensa_be_vec)	tb="$tb xtensa-isa.lo xtensa-modules.lo elf32-xtensa.lo elf32.lo $elf" ;;
    bfd_elf64_alpha_freebsd_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf64_alpha_vec)	tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf64_bigaarch64_vec)	tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf32_bigaarch64_vec)	tb="$tb elf32-aarch64.lo elfxx-aarch64.lo elf32.lo $elf"; target_size=64 ;;
    bfd_elf64_big_generic_vec) 	tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf64_bigmips_vec) 	tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
    bfd_elf64_hppa_linux_vec)	tb="$tb elf64-hppa.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf64_hppa_vec)		tb="$tb elf64-hppa.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf64_ia64_big_vec)	tb="$tb elf64-ia64.lo elfxx-ia64.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf64_ia64_hpux_big_vec) tb="$tb elf64-ia64.lo elfxx-ia64.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf64_ia64_little_vec)	tb="$tb elf64-ia64.lo elfxx-ia64.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf64_ia64_vms_vec)	tb="$tb elf64-ia64-vms.lo elf64-ia64.lo elfxx-ia64.lo elf64.lo vms-lib.lo vms-misc.lo $elf"; target_size=64 ;;    
    bfd_elf64_littleaarch64_vec)tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf32_littleaarch64_vec)tb="$tb elf32-aarch64.lo elfxx-aarch64.lo elf32.lo $elf"; target_size=64 ;;
    bfd_elf64_little_generic_vec) tb="$tb elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf64_littlemips_vec) 	tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
    bfd_elf64_mmix_vec) 	tb="$tb elf64-mmix.lo elf64.lo $elf" target_size=64 ;;
    bfd_elf64_powerpc_vec)	tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf64_powerpcle_vec)	tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;;
    bfd_elf64_powerpc_freebsd_vec) tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;;
    bfd_elf64_s390_vec)		tb="$tb elf64-s390.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf64_sh64_vec)		tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
    bfd_elf64_sh64l_vec)	tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
    bfd_elf64_sh64lin_vec)	tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
    bfd_elf64_sh64blin_vec)	tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
    bfd_elf64_sh64lnbsd_vec)	tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
    bfd_elf64_sh64nbsd_vec)	tb="$tb elf64-sh64.lo elf64.lo $elf" target_size=64 ;;
    bfd_elf64_sparc_vec)	tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf64_sparc_freebsd_vec) tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf64_sparc_sol2_vec) tb="$tb elf64-sparc.lo elfxx-sparc.lo elf-vxworks.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf64_tilegx_be_vec)	tb="$tb elf64-tilegx.lo elfxx-tilegx.lo elf64.lo $elf" ; target_size=64 ;;
    bfd_elf64_tilegx_le_vec)	tb="$tb elf64-tilegx.lo elfxx-tilegx.lo elf64.lo $elf" ; target_size=64 ;;
    bfd_elf64_tradbigmips_vec | bfd_elf64_tradbigmips_freebsd_vec)
				tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
    bfd_elf64_tradlittlemips_vec | bfd_elf64_tradlittlemips_freebsd_vec)
				tb="$tb elf64-mips.lo elf64.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
    bfd_elf64_x86_64_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf64_x86_64_nacl_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf64_x86_64_sol2_vec)  tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf64_x86_64_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf32_x86_64_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo elf32.lo $elf"; target_size=64 ;;
    bfd_elf32_x86_64_nacl_vec)	tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo elf32.lo $elf"; target_size=64 ;;
    bfd_elf64_l1om_vec)		tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf64_l1om_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf64_k1om_vec)		tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
    bfd_elf64_k1om_freebsd_vec) tb="$tb elf64-x86-64.lo elf-ifunc.lo elf-nacl.lo elf64.lo $elf"; target_size=64 ;;
    bfd_mmo_vec)		tb="$tb mmo.lo" target_size=64 ;;
    bfd_powerpc_pe_vec)         tb="$tb pe-ppc.lo peigen.lo cofflink.lo" ;;
    bfd_powerpc_pei_vec)        tb="$tb pei-ppc.lo peigen.lo cofflink.lo" ;;
    bfd_powerpcle_pe_vec)       tb="$tb pe-ppc.lo peigen.lo cofflink.lo" ;;
    bfd_powerpcle_pei_vec)      tb="$tb pei-ppc.lo peigen.lo cofflink.lo" ;;
    cris_aout_vec)		tb="$tb aout-cris.lo" ;;
    demo_64_vec)		tb="$tb demo64.lo aout64.lo"; target_size=64 ;;
    ecoff_big_vec)		tb="$tb coff-mips.lo ecoff.lo ecofflink.lo" ;;
    ecoff_biglittle_vec)	tb="$tb coff-mips.lo ecoff.lo ecofflink.lo" ;;
    ecoff_little_vec)		tb="$tb coff-mips.lo ecoff.lo ecofflink.lo" ;;
    ecoffalpha_little_vec)	tb="$tb coff-alpha.lo ecoff.lo ecofflink.lo"; target_size=64 ;;
    go32coff_vec)		tb="$tb coff-go32.lo cofflink.lo" ;;
    go32stubbedcoff_vec)	tb="$tb coff-stgo32.lo cofflink.lo" ;;
    h8300coff_vec)		tb="$tb coff-h8300.lo reloc16.lo" ;;
    h8500coff_vec)		tb="$tb coff-h8500.lo reloc16.lo" ;;
    host_aout_vec)		tb="$tb host-aout.lo aout32.lo" ;;
    hp300bsd_vec)		tb="$tb hp300bsd.lo aout32.lo" ;;
    hp300hpux_vec)		tb="$tb hp300hpux.lo aout32.lo" ;;
    i386aout_vec)		tb="$tb i386aout.lo aout32.lo" ;;
    i386bsd_vec)		tb="$tb i386bsd.lo aout32.lo" ;;
    i386coff_vec)		tb="$tb coff-i386.lo cofflink.lo" ;;
    x86_64coff_vec)		tb="$tb coff-x86_64.lo cofflink.lo"; target_size=64 ;;
    i386dynix_vec)		tb="$tb i386dynix.lo aout32.lo" ;;
    i386freebsd_vec)		tb="$tb i386freebsd.lo aout32.lo" ;;
    i386linux_vec)		tb="$tb i386linux.lo aout32.lo" ;;
    i386lynx_aout_vec)		tb="$tb i386lynx.lo lynx-core.lo aout32.lo" ;;
    i386lynx_coff_vec)		tb="$tb cf-i386lynx.lo cofflink.lo lynx-core.lo" ;;
    i386mach3_vec)		tb="$tb i386mach3.lo aout32.lo" ;;
    i386msdos_vec)		tb="$tb i386msdos.lo" ;;
    i386netbsd_vec)		tb="$tb i386netbsd.lo aout32.lo" ;;
    i386os9k_vec)		tb="$tb i386os9k.lo aout32.lo" ;;
    i386pe_vec)			tb="$tb pe-i386.lo peigen.lo cofflink.lo" ;;
    i386pei_vec)		tb="$tb pei-i386.lo peigen.lo cofflink.lo" ;;
    x86_64pe_vec)		tb="$tb pe-x86_64.lo pex64igen.lo cofflink.lo"; target_size=64 ;;
    x86_64pei_vec)		tb="$tb pei-x86_64.lo pex64igen.lo cofflink.lo"; target_size=64 ;;
    i860coff_vec)		tb="$tb coff-i860.lo cofflink.lo" ;;
    icoff_big_vec)		tb="$tb coff-i960.lo cofflink.lo" ;;
    icoff_little_vec)		tb="$tb coff-i960.lo cofflink.lo" ;;
    ieee_vec)			tb="$tb ieee.lo" ;;
    m68k4knetbsd_vec)		tb="$tb m68k4knetbsd.lo aout32.lo" ;;
    m68kaux_coff_vec)		tb="$tb coff-aux.lo coff-m68k.lo cofflink.lo" ;;
    m68kcoff_vec)		tb="$tb coff-m68k.lo cofflink.lo" ;;
    m68kcoffun_vec)		tb="$tb coff-u68k.lo coff-m68k.lo cofflink.lo" ;;
    m68klinux_vec)		tb="$tb m68klinux.lo aout32.lo" ;;
    m68knetbsd_vec)		tb="$tb m68knetbsd.lo aout32.lo" ;;
    m68ksysvcoff_vec)		tb="$tb coff-svm68k.lo cofflink.lo" ;;
    m88kbcs_vec)		tb="$tb coff-m88k.lo" ;;
    m88kmach3_vec)		tb="$tb m88kmach3.lo aout32.lo" ;;
    m88kopenbsd_vec)		tb="$tb m88kopenbsd.lo aout32.lo" ;;
    mach_o_be_vec)              tb="$tb mach-o.lo" ;;
    mach_o_le_vec)              tb="$tb mach-o.lo" ;;
    mach_o_fat_vec)             tb="$tb mach-o.lo" ;;
    mach_o_i386_vec)            tb="$tb mach-o-i386.lo" ;;
    mach_o_x86_64_vec)          tb="$tb mach-o-x86-64.lo" ;;
    mcore_pe_big_vec)		tb="$tb pe-mcore.lo peigen.lo cofflink.lo" ;;
    mcore_pe_little_vec)	tb="$tb pe-mcore.lo peigen.lo cofflink.lo" ;;
    mcore_pei_big_vec)		tb="$tb pei-mcore.lo peigen.lo cofflink.lo" ;;
    mcore_pei_little_vec)	tb="$tb pei-mcore.lo peigen.lo cofflink.lo" ;;
    mipslpe_vec)		tb="$tb pe-mips.lo peigen.lo cofflink.lo" ;;
    mipslpei_vec)		tb="$tb pei-mips.lo peigen.lo cofflink.lo" ;;
    newsos3_vec)		tb="$tb newsos3.lo aout32.lo" ;;
    nlm32_alpha_vec)		tb="$tb nlm32-alpha.lo nlm32.lo nlm.lo"; target_size=64 ;;
    nlm32_i386_vec)		tb="$tb nlm32-i386.lo nlm32.lo nlm.lo" ;;
    nlm32_powerpc_vec)		tb="$tb nlm32-ppc.lo nlm32.lo nlm.lo" ;;
    nlm32_sparc_vec)		tb="$tb nlm32-sparc.lo nlm32.lo nlm.lo" ;;
    or32coff_big_vec)		tb="$tb coff-or32.lo cofflink.lo" ;;
    pc532machaout_vec)		tb="$tb pc532-mach.lo aout-ns32k.lo" ;;
    pc532netbsd_vec)		tb="$tb ns32knetbsd.lo aout-ns32k.lo" ;;
    pef_vec)                    tb="$tb pef.lo" ;;
    pef_xlib_vec)               tb="$tb pef.lo" ;;
    pdp11_aout_vec)		tb="$tb pdp11.lo" ;;
    plugin_vec)                 tb="$tb plugin.lo" ;;
    pmac_xcoff_vec)		tb="$tb coff-rs6000.lo xcofflink.lo" ;;
    ppcboot_vec)		tb="$tb ppcboot.lo" ;;
    riscix_vec)			tb="$tb aout32.lo riscix.lo" ;;
    rs6000coff64_vec)		tb="$tb coff64-rs6000.lo xcofflink.lo aix5ppc-core.lo"; target_size=64 ;;
    rs6000coff_vec)		tb="$tb coff-rs6000.lo xcofflink.lo" ;;
    shcoff_small_vec)		tb="$tb coff-sh.lo cofflink.lo" ;;
    shcoff_vec)			tb="$tb coff-sh.lo cofflink.lo" ;;
    shlcoff_small_vec)		tb="$tb coff-sh.lo cofflink.lo" ;;
    shlcoff_vec)		tb="$tb coff-sh.lo cofflink.lo" ;;
    shlpe_vec)			tb="$tb pe-sh.lo coff-sh.lo peigen.lo cofflink.lo" ;;
    shlpei_vec)			tb="$tb pei-sh.lo coff-sh.lo peigen.lo cofflink.lo" ;;
    som_vec)			tb="$tb som.lo" ;;
    sparccoff_vec)		tb="$tb coff-sparc.lo" ;;
    sparcle_aout_vec)		tb="$tb aout-sparcle.lo aout32.lo" ;;
    sparclinux_vec)		tb="$tb sparclinux.lo aout32.lo" ;;
    sparclynx_aout_vec)		tb="$tb sparclynx.lo lynx-core.lo aout32.lo" ;;
    sparclynx_coff_vec)		tb="$tb cf-sparclynx.lo lynx-core.lo" ;;
    sparcnetbsd_vec)		tb="$tb sparcnetbsd.lo aout32.lo" ;;
    sunos_big_vec)		tb="$tb sunos.lo aout32.lo" ;;
    sym_vec)                    tb="$tb xsym.lo" ;;
    tic30_aout_vec)		tb="$tb aout-tic30.lo" ;;
    tic30_coff_vec)		tb="$tb coff-tic30.lo" ;;
    tic4x_coff0_vec)            tb="$tb coff-tic4x.lo" ;;
    tic4x_coff0_beh_vec)        tb="$tb coff-tic4x.lo" ;;
    tic4x_coff1_vec)            tb="$tb coff-tic4x.lo" ;;
    tic4x_coff1_beh_vec)        tb="$tb coff-tic4x.lo" ;;
    tic4x_coff2_vec)            tb="$tb coff-tic4x.lo" ;;
    tic4x_coff2_beh_vec)        tb="$tb coff-tic4x.lo" ;;
    tic54x_coff0_beh_vec)	tb="$tb coff-tic54x.lo" ;;
    tic54x_coff0_vec)		tb="$tb coff-tic54x.lo" ;;
    tic54x_coff1_beh_vec)	tb="$tb coff-tic54x.lo" ;;
    tic54x_coff1_vec)		tb="$tb coff-tic54x.lo" ;;
    tic54x_coff2_beh_vec)	tb="$tb coff-tic54x.lo" ;;
    tic54x_coff2_vec)		tb="$tb coff-tic54x.lo" ;;
    tic80coff_vec)		tb="$tb coff-tic80.lo cofflink.lo" ;;
    vaxnetbsd_vec)		tb="$tb vaxnetbsd.lo aout32.lo" ;;
    vax1knetbsd_vec)		tb="$tb vax1knetbsd.lo aout32.lo" ;;
    vaxbsd_vec)			tb="$tb vaxbsd.lo aout32.lo" ;;
    versados_vec)		tb="$tb versados.lo" ;;
    vms_alpha_vec)		tb="$tb vms-alpha.lo vms-misc.lo vms-lib.lo"; target_size=64 ;;
    vms_lib_txt_vec)		tb="$tb vms-lib.lo vms-misc.lo" ;;
    w65_vec)			tb="$tb coff-w65.lo reloc16.lo" ;;
    we32kcoff_vec)		tb="$tb coff-we32k.lo" ;;
    z80coff_vec)		tb="$tb coff-z80.lo reloc16.lo" ;;
    z8kcoff_vec)		tb="$tb coff-z8k.lo reloc16.lo cofflink.lo" ;;

    # These appear out of order in targets.c
    srec_vec)			tb="$tb srec.lo" ;;
    symbolsrec_vec)		tb="$tb srec.lo" ;;
    tekhex_vec)			tb="$tb tekhex.lo" ;;
    cisco_core_big_vec)		tb="$tb cisco-core.lo" ;;
    cisco_core_little_vec)	tb="$tb cisco-core.lo" ;;

    "")			;;
    *) AC_MSG_ERROR(*** unknown target vector $vec) ;;
    esac

    if test ${target_size} = 64; then
	target64=true
    fi
    if test x"${vec}" = x"${defvec}"; then
	bfd_default_target_size=${target_size}
    fi
done

# Target architecture .o files.
# A couple of CPUs use shorter file names to avoid problems on DOS
# filesystems.
ta=`echo $selarchs | sed -e s/bfd_/cpu-/g -e s/_arch/.lo/g -e s/mn10200/m10200/ -e s/mn10300/m10300/`

# Weed out duplicate .o files.
f=""
for i in $tb ; do
    case " $f " in
    *" $i "*) ;;
    *) f="$f $i" ;;
    esac
done
tb="$f"

f=""
for i in $ta ; do
    case " $f " in
    *" $i "*) ;;
    *) f="$f $i" ;;
    esac
done
ta="$f"

bfd_backends="$tb"
bfd_machines="$ta"

if test x${all_targets} = xtrue ; then
  bfd_backends="${bfd_backends}"' $(ALL_BACKENDS)'
  bfd_machines="${bfd_machines}"' $(ALL_MACHINES)'
  selvecs=
  havevecs=-DHAVE_all_vecs
  selarchs=
  test -n "$assocvecs" &&
    assocvecs=`echo $assocvecs | sed -e 's/^/\&/' -e 's/ \(.\)/,\&\1/g'`
else	# all_targets is true
  # Only set these if they will be nonempty, for the clever echo.
  havevecs=
  assocvecs=
  test -n "$selvecs" &&
    havevecs=`echo $selvecs | sed -e 's/^/-DHAVE_/' -e 's/ \(.\)/ -DHAVE_\1/g'`
  test -n "$selvecs" &&
    selvecs=`echo $selvecs | sed -e 's/^/\&/' -e 's/ \(.\)/,\&\1/g'`
  test -n "$selarchs" &&
    selarchs=`echo $selarchs | sed -e 's/^/\&/' -e 's/ \(.\)/,\&\1/g'`
fi	# all_targets is true

case ${host64}-${target64}-${want64} in
  *true*)
    wordsize=64
    bfd64_libs='$(BFD64_LIBS)'
    all_backends='$(BFD64_BACKENDS) $(BFD32_BACKENDS)'
    if test $BFD_HOST_64_BIT_DEFINED = 0; then
      AC_MSG_WARN([You have requested a 64 bit BFD configuration, but])
      AC_MSG_WARN([your compiler may not have a 64 bit integral type])
    fi
    if test -n "$GCC" ; then
       bad_64bit_gcc=no;
       AC_MSG_CHECKING([for gcc version with buggy 64-bit support])
       # Add more tests for gcc versions with non-working 64-bit support here.
       AC_EGREP_CPP([: 2 : 91 : 1 :],[:__GNUC__:__GNUC_MINOR__:__i386__:],
		    bad_64bit_gcc=yes;
		    AC_MSG_RESULT([yes: egcs-1.1.2 on ix86 spotted]),
		    AC_MSG_RESULT(no))
       if test $bad_64bit_gcc = yes ; then
	 AC_MSG_ERROR([A newer version of gcc is needed for the requested 64-bit BFD configuration])
       fi
    fi
    ;;
  false-false-false)
    wordsize=32
    all_backends='$(BFD32_BACKENDS)'
    ;;
esac

AC_SUBST(wordsize)
AC_SUBST(bfd64_libs)
AC_SUBST(all_backends)
AC_SUBST(bfd_backends)
AC_SUBST(bfd_machines)
AC_SUBST(bfd_default_target_size)

if test "$plugins" = "yes"; then
  supports_plugins=1
else
  supports_plugins=0
fi
AC_SUBST(supports_plugins)
AC_SUBST(lt_cv_dlopen_libs)

# Determine the host dependant file_ptr a.k.a. off_t type.  In order
# prefer: off64_t - if ftello64 and fseeko64, off_t - if ftello and
# fseeko, long.  This assumes that sizeof off_t is .ge. sizeof long.
# Hopefully a reasonable assumption since fseeko et.al. should be
# upward compatible.
AC_CHECK_FUNCS(ftello ftello64 fseeko fseeko64 fopen64)
if test x"$ac_cv_func_ftello" = xyes -a x"$ac_cv_func_fseeko" = xyes; then
    AC_CHECK_SIZEOF(off_t)
fi
AC_MSG_CHECKING([file_ptr type])
bfd_file_ptr="long"
bfd_ufile_ptr="unsigned long"
if test x"$ac_cv_func_ftello64" = xyes -a x"$ac_cv_func_fseeko64" = xyes \
	-o x"${ac_cv_sizeof_off_t}" = x8; then
    bfd_file_ptr=BFD_HOST_64_BIT
    bfd_ufile_ptr=BFD_HOST_U_64_BIT
fi
AC_MSG_RESULT($bfd_file_ptr)
AC_SUBST(bfd_file_ptr)
AC_SUBST(bfd_ufile_ptr)


tdefaults=""
test -n "${defvec}" && tdefaults="${tdefaults} -DDEFAULT_VECTOR=${defvec}"
test -n "${selvecs}" && tdefaults="${tdefaults} -DSELECT_VECS='${selvecs}'"
test -n "${assocvecs}" && tdefaults="${tdefaults} -DASSOCIATED_VECS='${assocvecs}'"
test -n "${selarchs}" && tdefaults="${tdefaults} -DSELECT_ARCHITECTURES='${selarchs}'"
AC_SUBST(tdefaults)
AC_SUBST(havevecs)

dnl AC_CHECK_HEADERS(sys/mman.h)
AC_FUNC_MMAP
AC_CHECK_FUNCS(madvise mprotect)
case ${want_mmap}+${ac_cv_func_mmap_fixed_mapped} in
  true+yes )  AC_DEFINE(USE_MMAP, 1, [Use mmap if it's available?]) ;;
esac

rm -f doc/config.status
AC_CONFIG_FILES([Makefile doc/Makefile bfd-in3.h:bfd-in2.h po/Makefile.in:po/Make-in])

dnl We need this duplication, even though we use AM_PO_SUBDIRS, because of
dnl our two separate POTFILES.  Yuck.
AC_CONFIG_COMMANDS([default],
[[
case "$srcdir" in
  .) srcdirpre= ;;
  *) srcdirpre='$(srcdir)/' ;;
esac
POFILES=
GMOFILES=
for lang in dummy $OBSOLETE_ALL_LINGUAS; do
  if test $lang != dummy; then
    POFILES="$POFILES $srcdirpre$lang.po"
    GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
  fi
done
sed -e '/SRC-POTFILES =/r po/SRC-POTFILES' \
    -e '/BLD-POTFILES =/r po/BLD-POTFILES' \
    -e "s,@POFILES@,$POFILES," \
    -e "s,@GMOFILES@,$GMOFILES," \
    po/Makefile.in > po/Makefile]],[[]])

dnl Required by html, pdf, install-pdf and install-html
AC_SUBST(datarootdir)
AC_SUBST(docdir)
AC_SUBST(htmldir)
AC_SUBST(pdfdir)

AC_OUTPUT
