dnl Process this file with autoconf to produce a configure script.
AC_REVISION([$CVSid$])
AC_PREREQ(2.11)dnl		dnl Minimum Autoconf version required.
AC_INIT(include/features.h)
AC_CONFIG_HEADER(config.h)

# This will get text that should go into config.make.
config_vars=

# Check for a --with-gmp argument and set gmp-srcdir in config.make.
AC_ARG_WITH(gmp, dnl
  --with-gmp=DIRECTORY	  find GMP source code in DIRECTORY (not needed),
	    [dnl
case "$with_gmp" in
yes) AC_MSG_ERROR(--with-gmp requires an argument; use --with-gmp=DIRECTORY) ;;
''|no) ;;
*) config_vars="$config_vars
gmp-srcdir = $withval" ;;
esac
])
# Check for a --with-gettext argument and set gettext-srcdir in config.make.
AC_ARG_WITH(gettext, dnl
  --with-gettext=DIR	  find GNU gettext source code in DIR (not needed),
	    [dnl
case "$with_gettext" in
yes)
  AC_MSG_ERROR(--with-gettext requires an argument; use --with-gettext=DIR) ;;
''|no) ;;
*)
  config_vars="$config_vars
gettext-srcdir = $withval" ;;
esac
])

dnl Arguments to specify presence of other packages/features.
AC_ARG_WITH(fp, dnl
[  --with-fp		  if using floating-point hardware [default=yes]],
	    with_fp=$withval, with_fp=yes)
AC_ARG_WITH(binutils, dnl
  --with-binutils=PATH	  specify location of binutils (as and ld),
	    path_binutils=$withval, path_binutils='')
AC_ARG_WITH(elf, dnl
  --with-elf		  if using the ELF object format,
	    elf=$withval, elf=no)
AC_ARG_WITH(cvs, dnl
[  --without-cvs	  if CVS should not be used],
	    with_cvs=$withval, with_cvs=yes)
AC_SUBST(with_cvs)

AC_ARG_ENABLE(libio, dnl
[  --enable-libio          build in GNU libio instead of GNU stdio],
 	      [if test $enableval = yes; then
	         stdio=libio
	       else
	         stdio=stdio
	       fi],
	      stdio=default)

AC_ARG_ENABLE(sanity-checks, dnl
[  --disable-sanity-checks really do not use threads (should not be used
			  except in special situations) [default=yes]],
              enable_sanity=$enableval, enable_sanity=yes)

dnl Arguments to enable or disable building the static, shared, profiled,
dnl and -fomit-frame-pointer libraries.
AC_ARG_ENABLE(static, dnl
[  --enable-static         build static library [default=yes]],
	      static=$enableval, static=yes)
AC_ARG_ENABLE(shared, dnl
[  --enable-shared         build shared library [default=yes if GNU ld & ELF]],
	      shared=$enableval, shared=default)
AC_ARG_ENABLE(profile, dnl
[  --enable-profile        build profiled library [default=yes]],
	      profile=$enableval, profile=yes)
AC_ARG_ENABLE(omitfp, dnl
[  --enable-omitfp         build undebuggable optimized library [default=no]],
	      omitfp=$enableval, omitfp=no)
AC_ARG_ENABLE(bounded, dnl
[  --enable-bounded        build with runtime bounds checking [default=no]],
	      bounded=$enableval, bounded=no)
AC_ARG_ENABLE(versioning, dnl
[  --disable-versioning    do not include versioning information in the
                          library objects [default=yes if supported]],
             enable_versioning=$enableval, enable_versioning=yes)

dnl Generic infrastructure for drop-in additions to libc.
AC_ARG_ENABLE(add-ons, dnl
[  --enable-add-ons[=DIR1,DIR2]... configure and build add-ons in DIR1,DIR2,...
                                  search for add-ons if no parameter given],
  [case "$enableval" in
    yes) if test "$srcdir" = "."; then
	   add_ons=`echo */configure | sed -e 's!/configure!!g'`
	 else
	   add_ons=`echo $srcdir/*/configure | \
		    sed -e 's!/configure!!g' -e "s!$srcdir/!!g"`
	 fi;;
    *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
   esac],
  [add_ons=])

AC_CONFIG_SUBDIRS($add_ons)
add_ons_pfx=
if test x"$add_ons" != x; then
  for f in $add_ons; do
    # Test whether such a subdir really exists.
    if test -d $srcdir/$f; then
      add_ons_pfx="$add_ons_pfx $f/"
    else
      AC_MSG_ERROR(add-on directory \"$f\" does not exist)
    fi
  done
fi

dnl On some platforms we cannot use dynamic loading.  We must provide
dnl static NSS modules.
AC_ARG_ENABLE(static-nss, dnl
[  --enable-static-nss     build static NSS modules [default=no]],
	      static_nss=$enableval, static_nss=no)
if test x"$static_nss" = xyes; then
  AC_DEFINE(DO_STATIC_NSS)
fi

AC_CANONICAL_HOST

# The way shlib-versions is used to generate soversions.mk uses a
# fairly simplistic model for name recognition that can't distinguish
# i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a $host_os
# of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
# tell.  This doesn't get used much beyond that, so it's fairly safe.
case "$host_os" in
linux*)
  ;;
gnu*)
  host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
  ;;
esac

###
### I put this here to prevent those annoying emails from people who cannot
### read and try to compile glibc on unsupported platforms.  --drepper
###
### By using the undocumented --enable-hacker-mode option for configure
### one can skip this test to make the configuration not fail for unsupported
### platforms.
###
if test -z "$enable_hacker_mode"; then
  case "$machine-$host_os" in
  *-linux* | *-gnu* | arm*-none*)
    ;;
  *)
    echo "*** The GNU C library is currently not available for this platform."
    echo "*** So far nobody cared to port it and if there is no volunteer it"
    echo "*** might never happen.  So, if you have interest to see glibc on"
    echo "*** this platform visit"
    echo "***	http://www.gnu.org/software/libc/porting.html"
    echo "*** and join the group of porters"
    exit 1
    ;;
  esac
fi

# We keep the original values in `$config_*' and never modify them, so we
# can write them unchanged into config.make.  Everything else uses
# $machine, $vendor, and $os, and changes them whenever convenient.
config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os

# Some configurations imply other options.
case "$host_os" in
gnu* | linux* | bsd4.4* | netbsd* | freebsd*)
  # These systems always use GNU tools.
  gnu_ld=yes gnu_as=yes ;;
esac
case "$host_os" in
# i586-linuxaout is mangled into i586-pc-linux-gnuaout
linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
  ;;
gnu* | linux* | sysv4* | solaris2* | irix6*)
  # These systems (almost) always use the ELF format.
  elf=yes
  ;;
esac

machine=$config_machine
vendor=$config_vendor
os=$config_os

dnl We need to use [ and ] for other purposes for a while now.
changequote(,)dnl
# Expand the configuration machine name into a subdirectory by architecture
# type and particular chip.
case "$machine" in
a29k | am29000)	base_machine=a29k machine=a29k ;;
alpha*)		base_machine=alpha machine=alpha/$machine ;;
arm*)		base_machine=arm machine=arm/$machine ;;
c3[012])	base_machine=cx0 machine=cx0/c30 ;;
c4[04])		base_machine=cx0 machine=cx0/c40 ;;
hppa*)		base_machine=hppa machine=hppa/$machine ;;
i[3456]86)	base_machine=i386 machine=i386/$machine ;;
m680?0)		base_machine=m68k machine=m68k/$machine ;;
m68k)		base_machine=m68k machine=m68k/m68020 ;;
m88???)		base_machine=m88k machine=m88k/$machine ;;
m88k)		base_machine=m88k machine=m88k/m88100 ;;
mips64*)	base_machine=mips64 machine=mips/mips64/$machine ;;
mips*)		base_machine=mips
		case "`uname -m`" in
		IP22) machine=mips/mips3 ;;
		*)    machine=mips/$machine ,,
		esac ;;
sparc | sparcv[67])
		base_machine=sparc machine=sparc/sparc32 ;;
sparcv8 | supersparc | hypersparc)
		base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
sparc64 | ultrasparc)
		base_machine=sparc machine=sparc/sparc64 ;;
esac
changequote([,])dnl
AC_SUBST(base_machine)

if test "$base_machine" = "i386"; then
  AC_DEFINE(USE_REGPARMS)
fi

# Compute the list of sysdep directories for this configuration.
# This can take a while to compute.
sysdep_dir=$srcdir/sysdeps
AC_MSG_CHECKING(sysdep dirs)
dnl We need to use [ and ] for other purposes for a while now.
changequote(,)dnl
# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"

case "$os" in
gnu*)
  base_os=mach/hurd ;;
netbsd* | 386bsd* | freebsd* | bsdi*)
  base_os=unix/bsd/bsd4.4 ;;
osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
  base_os=unix/bsd ;;
sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
  base_os=unix/sysv ;;
irix6*)
  base_os=unix/sysv/irix6/$os ;;
solaris[2-9]*)
  base_os=unix/sysv/sysv4 ;;
none)
  base_os=standalone ;;
*)
  base_os='' ;;
esac

# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
tail=$os
ostry=$os
while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
  ostry="$ostry /$o"
  tail=$o
done
o=`echo $tail | sed 's/[0-9]*$//'`
if test $o != $tail; then
  ostry="$ostry /$o"
fi
# For linux-gnu, try linux-gnu, then linux.
o=`echo $tail | sed 's/-.*$//'`
if test $o != $tail; then
  ostry="$ostry /$o"
fi

# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
base=
tail=$base_os
while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
  set $b
  base="$base /$1"
  tail="$2"
done

# For sparc/sparc9, try sparc/sparc9 and then sparc.
mach=
tail=$machine
while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
  set $m
  # Prepend the machine's FPU directory unless --without-fp.
  if test "$with_fp" = yes; then
    mach="$mach /$1/fpu"
  fi
  mach="$mach /$1"
  tail="$2"
done

dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
changequote([,])dnl

# Find what sysdep directories exist.
sysnames=
IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
for d in $add_ons_pfx ''; do
  for b in $base ''; do
    for m0 in $mach ''; do
      for v in /$vendor ''; do
	test "$v" = / && continue
	for o in /$ostry ''; do
	  test "$o" = / && continue
	  for m in $mach ''; do
	    if test "$m0$b$v$o$m"; then
	      try="${d}sysdeps$m0$b$v$o$m"
	      test -n "$enable_debug_configure" &&
	      echo "$0 [DEBUG]: try $try" >&2
	      case $try in
		/*) dest=$try ;;
		*)  dest=$srcdir/$try ;;
	      esac
	      if test -d $dest; then
		sysnames="$sysnames $try"
		{ test -n "$o" || test -n "$b"; } && os_used=t
		{ test -n "$m" || test -n "$m0"; } && machine_used=t
	      fi
	    fi
	  done
	done
      done
    done
  done
done
IFS="$ac_save_ifs"

if test -z "$os_used" && test "$os" != none; then
  AC_MSG_ERROR(Operating system $os is not supported.)
fi
if test -z "$machine_used" && test "$machine" != none; then
  AC_MSG_ERROR(The $machine is not supported.)
fi

# We have now validated the configuration.


# If using ELF, look for an `elf' subdirectory of each machine directory.
# We prepend these rather than inserting them whereever the machine appears
# because things specified by the machine's ELF ABI should override
# OS-specific things, and should always be the same for any OS on the
# machine (otherwise what's the point of an ABI?).
if test "$elf" = yes; then
  elf_dirs=
  for d in $add_ons_pfx ''; do
    case $d in
      /*) xsrcdir= ;;
      *)  xsrcdir=$srcdir/ ;;
    esac
    for m in $mach; do
      if test -d $xsrcdir${d}sysdeps$m/elf; then
	elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
      fi
    done
  done
  sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
fi


# Expand the list of system names into a full list of directories
# from each element's parent name and Implies file (if present).
set $sysnames
names=
while test $# -gt 0; do
  name=$1
  shift

  case " $names " in *" $name "*)
    # Already in the list.
    continue
  esac

  # Report each name as we discover it, so there is no long pause in output.
  echo $ac_n "$name $ac_c" >&AC_FD_MSG

  name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`

  case $name in
    /*) xsrcdir= ;;
    *)  xsrcdir=$srcdir/ ;;
  esac
  test -n "$enable_debug_configure" &&
  echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2

  if test -f $xsrcdir$name/Implies; then
    # Collect more names from the `Implies' file (removing comments).
    implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
    implied=
    for x in $implied_candidate; do
      if test -d $xsrcdir$name_base/$x; then
	implied="$implied $name_base/$x";
      else
        AC_MSG_WARN($name/Implies specifies nonexistent $x)
      fi
    done
  else
    implied=
  fi

  # Add NAME to the list of names.
  names="$names $name"

  # Find the parent of NAME, using the empty string if it has none.
changequote(,)dnl
  parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
changequote([,])dnl

  # Add the names implied by NAME, and NAME's parent (if it has one), to
  # the list of names to be processed (the argument list).  We prepend the
  # implied names to the list and append the parent.  We want implied
  # directories to come before further directories inferred from the
  # configuration components; this ensures that for sysv4, unix/common
  # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
  # after sysv4).
  sysnames="`echo $implied $* $parent`"
  test -n "$sysnames" && set $sysnames
done

# Add the default directories.
sysnames="$names sysdeps/generic"
AC_SUBST(sysnames)
# The other names were emitted during the scan.
AC_MSG_RESULT(sysdeps/generic)


### Locate tools.

AC_PROG_INSTALL
if test "$INSTALL" = "${srcdir}/install-sh -c"; then
  # The makefiles need to use a different form to find it in $srcdir.
  INSTALL='\$(..)./install-sh -c'
fi
AC_PROG_LN_S

# These programs are version sensitive.
AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl
AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
  [version \([egcst0-9.-]*\)],
  [egcs-2.91.*|egcs-2.90.2[789]|egcs-2.90.[3-9][0-9]|*2.8.[1-9]*|*2.9.[0-9]*],
  critic_missing=t)
AC_CHECK_PROG_VER(MAKE, make gmake, --version,
  [version \([0-9][0-9.]*\), by],
  [3.75 | 3.76.[1-9] | 3.7[789]* | 3.[89]*], critic_missing=t)

AC_CHECK_PROG_VER(MSGFMT, msgfmt gmsgfmt, --version,
  [GNU gettext.*\([0-9][0-9]*\.[0-9]*\)],
  [0.[1-9][0-9] | [1-9].*], MSGFMT=: aux_missing=t)
AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
  [GNU texinfo \([0-9][0-9.]*\)],
  [3.1[1-9] | 3.[2-9][0-9]], MAKEINFO=: aux_missing=t)

if test -n "$critic_missing"; then
AC_MSG_ERROR([
*** Some critical program is missing or too old.
*** Check the INSTALL file for required versions.])
fi

test -n "$aux_missing" && AC_MSG_WARN([
*** An auxiliary program is missing or too old;
*** some features will be disabled.
*** Check the INSTALL file for required versions.])

AC_PROG_CC_LOCAL
AC_CANONICAL_BUILD
if test $host != $build; then
  AC_CHECK_PROGS(BUILD_CC, gcc cc)
fi
AC_SUBST(cross_compiling)
AC_PROG_CPP
LIBC_PROG_BINUTILS
AC_CHECK_TOOL(AR, ar)
AC_CHECK_TOOL(RANLIB, ranlib, :)
AC_CHECK_TOOL(MIG, mig)

# check if ar takes S
AC_CACHE_CHECK(for ar S, libc_cv_ar_S, [dnl
tmpo=$$.o
tmplib=lib$$.a
rm -f $tmpo $tmplib
touch $tmpo
if AC_TRY_COMMAND([${AR-ar} rcuS $tmplib $tmpo > /dev/null 2>&1]); then
  libc_cv_ar_S=yes
else
  libc_cv_ar_S=no
fi
rm -f $tmpo $tmplib])
AC_SUBST(libc_cv_ar_S)dnl

# Test if LD_LIBRARY_PATH contains the notation for the current directory
# since this would lead to problems installing/building glibc.
# LD_LIBRARY_PATH contains the current directory if one of the following
# is true:
# - one of the terminals (":" and ";") is the first or last sign
# - two terminals occur directly after each other
# - the path contains an element with a dot in it
AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
changequote(,)dnl
case ${LD_LIBRARY_PATH} in
  [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
    ld_library_path_setting="contains current directory"
    ;;
  *)
    ld_library_path_setting="ok"
    ;;
esac
changequote([,])dnl
AC_MSG_RESULT($ld_library_path_setting)
if test "$ld_library_path_setting" != "ok"; then
AC_MSG_ERROR([
*** LD_LIBRARY_PATH shouldn't contain the current directory when
*** building glibc. Please change the environment variable
*** and run configure again.])
fi

AC_PATH_PROG(BASH, bash, no)
if test "$BASH" != no &&
   $BASH -c 'test "$BASH_VERSINFO" \
	     && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
  libc_cv_have_bash2=yes
else
  libc_cv_have_bash2=no
fi
AC_SUBST(libc_cv_have_bash2)

dnl We need a ksh compatible shell for tzselect.
if test "$BASH" = no; then
  AC_PATH_PROG(KSH, ksh, no)
  if test "$KSH" = no; then
    libc_cv_have_ksh=no
  else
    libc_cv_have_ksh=yes
  fi
else
  KSH="$BASH"
  AC_SUBST(KSH)
  libc_cv_have_ksh=yes
fi
AC_SUBST(libc_cv_have_ksh)

AC_PATH_PROGS(PERL, perl, no)
AC_SUBST(PERL)

AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
echo '#include <stddef.h>
FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
if eval "$ac_cpp conftest.c 2>/dev/null" \
| grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
  libc_cv_signed_size_t=no
else
  libc_cv_signed_size_t=yes
fi
rm -f conftest*])
if test $libc_cv_signed_size_t = yes; then
  dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
  cat >> confdefs.h <<\EOF
#undef __SIZE_TYPE__
#define __SIZE_TYPE__ unsigned
EOF
fi

AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
AC_TRY_COMPILE(dnl
[#define __need_size_t
#define __need_wchar_t
#include <stddef.h>
#define __need_NULL
#include <stddef.h>], [size_t size; wchar_t wchar;
#ifdef offsetof
#error stddef.h ignored __need_*
#endif
if (&size == NULL || &wchar == NULL) abort ();],
               libc_cv_friendly_stddef=yes,
               libc_cv_friendly_stddef=no)])
if test $libc_cv_friendly_stddef = yes; then
  config_vars="$config_vars
override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
fi

AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
	       libc_cv_need_minus_P, [dnl
cat > conftest.S <<EOF
#include "confdefs.h"
/* Nothing whatsoever.  */
EOF
if ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null; then
  libc_cv_need_minus_P=no
else
  libc_cv_need_minus_P=yes
fi
rm -f conftest*])
if test $libc_cv_need_minus_P = yes; then
  config_vars="$config_vars
asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
fi

AC_CACHE_CHECK(for assembler global-symbol directive,
	       libc_cv_asm_global_directive, [dnl
libc_cv_asm_global_directive=UNKNOWN
for ac_globl in .globl .global; do
  cat > conftest.s <<EOF
.text
${ac_globl} foo
foo:
EOF
  if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
    libc_cv_asm_global_directive=${ac_globl}
  fi
  rm -f conftest*
  test $libc_cv_asm_global_directive != UNKNOWN && break
done])
if test $libc_cv_asm_global_directive = UNKNOWN; then
  AC_MSG_ERROR(cannot determine asm global directive)
else
  AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
fi

AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
cat > conftest.s <<EOF
.text
foo:
.set glibc_conftest_frobozz,foo
$libc_cv_asm_global_directive glibc_conftest_frobozz
EOF
# The alpha-dec-osf1 assembler gives only a warning for `.set'
# (but it doesn't work), so we must do a linking check to be sure.
cat > conftest1.c <<\EOF
extern int glibc_conftest_frobozz;
main () { printf ("%d\n", glibc_conftest_frobozz); }
EOF
if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
	    -o conftest conftest.s conftest1.c 1>&AC_FD_CC 2>&AC_FD_CC; then
  libc_cv_asm_set_directive=yes
else
  libc_cv_asm_set_directive=no
fi
rm -f conftest*])
if test $libc_cv_asm_set_directive = yes; then
  AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
fi

AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
[cat > conftest.s <<EOF
.text
_sym:
.symver _sym,sym@VERS
EOF
if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
  libc_cv_asm_symver_directive=yes
else
  libc_cv_asm_symver_directive=no
fi
rm -f conftest*])
AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
if test $libc_cv_asm_symver_directive = yes; then
  cat > conftest.s <<EOF
.text
_sym:
.symver _sym,sym@VERS
EOF
  cat > conftest.map <<EOF
VERS_1 {
	global: sym;
};

VERS_2 {
        global: sym;
} VERS_1;
EOF
  if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
    if AC_TRY_COMMAND([${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
					-nostartfiles -nostdlib
					-Wl,--version-script,conftest.map
		       1>&AC_FD_CC]);
    then
      libc_cv_ld_version_script_option=yes
    else
      libc_cv_ld_version_script_option=no
    fi
  else
    libc_cv_ld_version_script_option=no
  fi
else
  libc_cv_ld_version_script_option=no
fi
rm -f conftest*])
if test $libc_cv_asm_symver_directive = yes &&
   test $libc_cv_ld_version_script_option = yes &&
   test $enable_versioning = yes; then
  VERSIONING=yes
  AC_DEFINE(DO_VERSIONING)
else
  VERSIONING=no
fi
AC_SUBST(VERSIONING)

if test $VERSIONING = no; then
  echo "\
*** WARNING: You should not compile GNU libc without versioning. Not using
*** versioning will introduce incompatibilities so that old binaries
*** will not run anymore.
*** For versioning you need recent binutils (binutils-2.8.1.0.17 or newer)."
fi
if test $elf = yes; then
  AC_CACHE_CHECK(for .previous assembler directive,
		 libc_cv_asm_previous_directive, [dnl
  cat > conftest.s <<EOF
.section foo_section
.previous
EOF
  if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
    libc_cv_asm_previous_directive=yes
  else
    libc_cv_asm_previous_directive=no
  fi
  rm -f conftest*])
  if test $libc_cv_asm_previous_directive = yes; then
    AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
  else
    AC_CACHE_CHECK(for .popsection assembler directive,
		   libc_cv_asm_popsection_directive, [dnl
    cat > conftest.s <<EOF
.pushsection foo_section
.popsection
EOF
    if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
      libc_cv_asm_popsection_directive=yes
    else
      libc_cv_asm_popsection_directive=no
    fi
    rm -f conftest*])
    if test $libc_cv_asm_popsection_directive = yes; then
      AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
    fi
  fi
fi

if test $elf != yes; then
  AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
		 [AC_TRY_COMPILE(, [asm (".section .init");
				    asm (".section .fini");
				    asm (".text");],
				 libc_cv_have_initfini=yes,
				 libc_cv_have_initfini=no)])
  AC_SUBST(libc_cv_have_initfini)dnl
  if test $libc_cv_have_initfini = yes; then
    AC_DEFINE(HAVE_INITFINI)
  fi
fi

dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
[cat > conftest.$ac_ext <<EOF
dnl This sometimes fails to find confdefs.h, for some reason.
dnl [#]line __oline__ "[$]0"
[#]line __oline__ "configure"
#include "confdefs.h"
void underscore_test(void) {
return; }
EOF
if AC_TRY_EVAL(ac_compile); then
  if grep _underscore_test conftest* >/dev/null; then
    ifelse([$1], , :, [rm -f conftest*
    $1])
  else
    ifelse([$2], , , [rm -f conftest*
    $2])
  fi
else
  echo "configure: failed program was:" >&AC_FD_CC
  cat conftest.$ac_ext >&AC_FD_CC
  ifelse([$2], , , [rm -f conftest*
  $2])
fi
rm -f conftest*])

if test $elf = yes; then
  libc_cv_asm_underscores=no
else
  if test $ac_cv_prog_cc_works = yes; then
    AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
		   [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
			        libc_cv_asm_underscores=yes,
			        libc_cv_asm_underscores=no)])
  else
    AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
		   [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
				            libc_cv_asm_underscores=no)])
  fi
fi
if test $libc_cv_asm_underscores = no; then
  AC_DEFINE(NO_UNDERSCORES)
fi

if test $elf = yes; then
  libc_cv_weak_symbols=yes
fi

AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
		 [dnl
cat > conftest.s <<EOF
.text
${libc_cv_asm_global_directive} foo
foo:
.weak foo
.weak bar; bar = foo
EOF
if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
  libc_cv_asm_weak_directive=yes
else
  libc_cv_asm_weak_directive=no
fi
rm -f conftest*])

if test $libc_cv_asm_weak_directive = no; then
  AC_CACHE_CHECK(for assembler .weakext directive,
		 libc_cv_asm_weakext_directive,
		 [dnl
cat > conftest.s <<EOF
.text
${libc_cv_asm_global_directive} foo
foo:
.weakext bar foo
.weakext baz
${libc_cv_asm_global_directive} baz
baz:
EOF
  if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
    libc_cv_asm_weakext_directive=yes
  else
    libc_cv_asm_weakext_directive=no
  fi
  rm -f conftest*])

fi # no .weak

if test $libc_cv_asm_weak_directive = yes; then
  AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
elif test $libc_cv_asm_weakext_directive = yes; then
  AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
fi

AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
cat > conftest.c <<\EOF
_start () {}
int __eh_pc;
__throw () {}
EOF
dnl No \ in command here because it ends up inside ''.
if AC_TRY_COMMAND([${CC-cc} $CFLAGS
			    -nostdlib -nostartfiles -Wl,--no-whole-archive
			    -o conftest conftest.c 1>&AC_FD_CC]); then
  libc_cv_ld_no_whole_archive=yes
else
  libc_cv_ld_no_whole_archive=no
fi
rm -f conftest*])
AC_SUBST(libc_cv_ld_no_whole_archive)dnl

AC_CACHE_CHECK(for gcc -fno-exceptions, libc_cv_gcc_no_exceptions, [dnl
cat > conftest.c <<\EOF
_start () {}
int __eh_pc;
__throw () {}
EOF
dnl No \ in command here because it ends up inside ''.
if AC_TRY_COMMAND([${CC-cc} $CFLAGS
			    -nostdlib -nostartfiles -fno-exceptions
			    -o conftest conftest.c 1>&AC_FD_CC]); then
  libc_cv_gcc_no_exceptions=yes
else
  libc_cv_gcc_no_exceptions=no
fi
rm -f conftest*])
AC_SUBST(libc_cv_gcc_no_exceptions)dnl

if test "$base_machine" = alpha ; then
AC_CACHE_CHECK(for function ..ng prefix, libc_cv_gcc_alpha_ng_prefix, [dnl
cat > conftest.c <<\EOF
foo () { }
EOF
dnl
if AC_TRY_COMMAND([${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null]);
then
  libc_cv_gcc_alpha_ng_prefix=yes
else
  libc_cv_gcc_alpha_ng_prefix=no
fi
rm -f conftest* ])
if test $libc_cv_gcc_alpha_ng_prefix = yes ; then
  AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "$")
else
  AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "")
fi
fi

AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
[cat > conftest.c <<EOF
#line __oline__ "configure"
static char __EH_FRAME_BEGIN__[];
_start ()
{
#ifdef CHECK__register_frame
  __register_frame (__EH_FRAME_BEGIN__);
  __deregister_frame (__EH_FRAME_BEGIN__);
#endif
#ifdef CHECK__register_frame_info
  __register_frame_info (__EH_FRAME_BEGIN__);
  __deregister_frame_info (__EH_FRAME_BEGIN__);
#endif
}
int __eh_pc;
__throw () {}
/* FIXME: this is fragile.  */
malloc () {}
strcmp () {}
strlen () {}
memcpy () {}
memset () {}
free () {}
abort () {}
__bzero () {}
EOF
dnl No \ in command here because it ends up inside ''.
if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info
			    -nostdlib -nostartfiles
			    -o conftest conftest.c -lgcc >&AC_FD_CC]); then
  libc_cv_gcc_dwarf2_unwind_info=static
else
  libc_cv_gcc_dwarf2_unwind_info=no
fi
if test $libc_cv_gcc_dwarf2_unwind_info = no; then
  if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame
			      -nostdlib -nostartfiles
			      -o conftest conftest.c -lgcc >&AC_FD_CC]); then
    libc_cv_gcc_dwarf2_unwind_info=yes
  else
    libc_cv_gcc_dwarf2_unwind_info=no
  fi
fi
rm -f conftest*])
case $libc_cv_gcc_dwarf2_unwind_info in
yes)
  AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
  ;;
static)
  AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
  AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
  ;;
esac

### End of automated tests.
### Now run sysdeps configure fragments.

# sysdeps configure fragments may set these with files to be linked below.
libc_link_dests=
libc_link_sources=

# They also can set these variables.
ldd_rewrite_script=no

# Iterate over all the sysdep directories we will use, running their
# configure fragments, and looking for a uname implementation.
uname=
for dir in $sysnames; do
  case $dir in
    /*) dest=$dir ;;
    *)  dest=$srcdir/$dir ;;
  esac
  if test -r $dest/configure; then
    AC_MSG_RESULT(running configure fragment for $dest)
    . $dest/configure
  fi
[
  if test -z "$uname"; then
    if test -r $dest/uname.c ||
       test -r $dest/uname.S ||
       { test -r $dest/syscalls.list &&
	 grep '^uname[ 	]' $dest/syscalls.list >/dev/null; }; then
      uname=$dir
    fi
  fi
]dnl
done

AC_LINK_FILES(`echo $libc_link_sources`, `echo $libc_link_dests`)

# If we will use the generic uname implementation, we must figure out what
# it will say by examining the system, and write the results in config-name.h.
if test "$uname" = "sysdeps/generic"; then

changequote(,)dnl
  uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
changequote([,])dnl
  if test $uname_sysname != $config_os; then
    config_release=`echo $config_os | sed s/$uname_sysname//`
  fi
dnl
AC_DEFUN(LIBC_KERNEL_ID, [dnl
    if test -r /vmunix; then
      kernel_id=`strings /vmunix | grep UNIX`
    elif test -r /dynix; then
      kernel_id=`strings /dynix | grep DYNIX`
    else
      kernel_id=
    fi
])dnl

  AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
AC_REQUIRE([LIBC_KERNEL_ID])dnl
changequote(,)dnl
  kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
changequote([,])dnl
  if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
	 != x$config_release; then
    # The configuration release is a substring of the kernel release.
    libc_cv_uname_release=$kernel_release
  elif test x$config_release != x; then
    libc_cv_uname_release=$config_release
  elif test x$kernel_release != x; then
    libc_cv_uname_release=$kernel_release
  else
    libc_cv_uname_release=unknown
  fi])
  uname_release="$libc_cv_uname_release"

  AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
AC_REQUIRE([LIBC_KERNEL_ID])dnl
changequote(,)dnl
  kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
changequote([,])dnl
  if test -n "$kernel_version"; then
    libc_cv_uname_version="$kernel_version"
  else
    libc_cv_uname_version=unknown
  fi])
  uname_version="$libc_cv_uname_version"

AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
  config_uname=config-name.h:config-name.in
else
  # For non-generic uname, we don't need to create config-name.h at all.
  config_uname=
fi

AC_MSG_CHECKING(stdio selection)
AC_SUBST(stdio)
case $stdio in
libio) AC_DEFINE(USE_IN_LIBIO) ;;
default) stdio=stdio ;;
esac
AC_MSG_RESULT($stdio)

AC_MSG_CHECKING(ldap selection)
AC_SUBST(LDAP)
case $add_ons in
*ldap*)
   ldap=yes
   LDAP=ldap ;;
*) ldap=no
   LDAP= ;;
esac
AC_MSG_RESULT($ldap)

AC_SUBST(libc_cv_slibdir)
AC_SUBST(libc_cv_sysconfdir)
AC_SUBST(libc_cv_rootsbindir)

AC_SUBST(has_ldconfig)
AC_SUBST(ldd_rewrite_script)

AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf)
if test $gnu_ld = yes; then
  AC_DEFINE(HAVE_GNU_LD)
fi
if test $gnu_as = yes; then
  AC_DEFINE(HAVE_GNU_AS)
fi
if test $elf = yes; then
  AC_DEFINE(HAVE_ELF)
fi

AC_SUBST(static)
AC_SUBST(shared)
if test $shared = default; then
  if test $gnu_ld = yes; then
    shared=$elf
  else
    # For now we do not assume shared libs are available.  In future more
    # tests might become available.
    shared=no
  fi
fi

dnl We must not allow compilation without static library on some platforms.
if test $static = no && test $shared = yes; then
  case "$host_os" in
  linux* | gnu*)
    AC_MSG_ERROR([
*** You must compile with support for the static library since the shared
*** library uses it.  Restart configure without \`--disable-static'.])
    ;;
  *)
    ;;
  esac
fi

AC_CACHE_CHECK([whether -fPIC is default], pic_default,
[pic_default=yes
cat > conftest.c <<EOF
#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
# error PIC is default.
#endif
EOF
if eval "${CC-cc} -S conftest.c 2>&AC_FD_CC 1>&AC_FD_CC"; then
  pic_default=no
fi
rm -f conftest.*])
AC_SUBST(pic_default)

AC_SUBST(profile)
AC_SUBST(omitfp)
AC_SUBST(bounded)
AC_SUBST(static_nss)
AC_SUBST(nopic_initfini)

AC_SUBST(DEFINES)

if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
  config_makefile=
else
  config_makefile=Makefile
fi

VERSION=`sed -e 's/^#define VERSION "\([^"]*\)"/\1/p' -e d < $srcdir/version.h`
AC_SUBST(VERSION)

AC_OUTPUT(config.make glibcbug ${config_makefile} ${config_uname}, ,
          [echo '$config_vars' >> config.make; test -d bits || mkdir bits])
