# This file is generated from configure.ac by Autoconf.  DO NOT EDIT!

$as_echo "#define NO_HIDDEN 1" >>confdefs.h


# Don't bother trying to generate any glue code to be compatible with the
# existing system library, because we are the only system library.
inhibit_glue=yes

case "$machine" in
  i386*)
    # The default oldest ABI is 2.2.6.
    # We only need a "yes" here if the oldest ABI supported will be < 2.2.6.
    if test "$oldest_abi" != default && test "$oldest_abi" \< "2.2.6"; then
      libc_cv_gcc_unwind_find_fde=yes
    fi
    ;;
esac


{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Hurd header version" >&5
$as_echo_n "checking Hurd header version... " >&6; }
if ${libc_cv_hurd_version+:} false; then :
  $as_echo_n "(cached) " >&6
else
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h.  */
#include <hurd/version.h>
int
main ()
{

#define NEED_VERSION 20020609
#if HURD_INTERFACE_VERSION < NEED_VERSION
# error Hurd version too old: HURD_INTERFACE_VERSION < NEED_VERSION
#endif
  ;
  return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
  libc_cv_hurd_version=ok
else
  libc_cv_hurd_version=bad
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_hurd_version" >&5
$as_echo "$libc_cv_hurd_version" >&6; }
if test "x$libc_cv_hurd_version" != xok; then
  as_fn_error $? "Hurd headers not installed or too old" "$LINENO" 5
fi
