Blame configure.ac

Packit Service 82fcde
dnl Process this file with autoconf to produce a configure script.
Packit Service 82fcde
dnl Note we do not use AC_PREREQ here!  See aclocal.m4 for what we use instead.
Packit Service 82fcde
AC_INIT([GNU C Library], [(see version.h)], [https://sourceware.org/bugzilla/], [glibc])
Packit Service 82fcde
AC_CONFIG_SRCDIR([include/features.h])
Packit Service 82fcde
AC_CONFIG_HEADERS([config.h])
Packit Service 82fcde
AC_CONFIG_AUX_DIR([scripts])
Packit Service 82fcde
Packit Service 82fcde
ACX_PKGVERSION([GNU libc])
Packit Service 82fcde
ACX_BUGURL([http://www.gnu.org/software/libc/bugs.html])
Packit Service 82fcde
AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"],
Packit Service 82fcde
		   [Package description])
Packit Service 82fcde
AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"],
Packit Service 82fcde
		   [Bug reporting address])
Packit Service 82fcde
Packit Service 82fcde
# Glibc should not depend on any header files
Packit Service 82fcde
AC_DEFUN([_AC_INCLUDES_DEFAULT_REQUIREMENTS],
Packit Service 82fcde
  [m4_divert_text([DEFAULTS],
Packit Service 82fcde
    [ac_includes_default='/* none */'])])
Packit Service 82fcde
Packit Service 82fcde
# We require GCC, and by default use its preprocessor.  Override AC_PROG_CPP
Packit Service 82fcde
# here to work around the Autoconf issue discussed in
Packit Service 82fcde
# <https://sourceware.org/ml/libc-alpha/2013-01/msg00721.html>.
Packit Service 82fcde
AC_DEFUN([AC_PROG_CPP],
Packit Service 82fcde
[AC_REQUIRE([AC_PROG_CC])dnl
Packit Service 82fcde
AC_ARG_VAR([CPP],      [C preprocessor])dnl
Packit Service 82fcde
_AC_ARG_VAR_CPPFLAGS()dnl
Packit Service 82fcde
# On Suns, sometimes $CPP names a directory.
Packit Service 82fcde
if test -n "$CPP" && test -d "$CPP"; then
Packit Service 82fcde
  CPP=
Packit Service 82fcde
fi
Packit Service 82fcde
if test -z "$CPP"; then
Packit Service 82fcde
  CPP="$CC -E"
Packit Service 82fcde
fi
Packit Service 82fcde
AC_SUBST(CPP)dnl
Packit Service 82fcde
])# AC_PROG_CPP
Packit Service 82fcde
Packit Service 82fcde
# We require GCC.  Override _AC_PROG_CC_C89 here to work around the Autoconf
Packit Service 82fcde
# issue discussed in
Packit Service 82fcde
# <https://sourceware.org/ml/libc-alpha/2013-01/msg00757.html>.
Packit Service 82fcde
AC_DEFUN([_AC_PROG_CC_C89], [[$1]])
Packit Service 82fcde
Packit Service 82fcde
dnl This is here so we can set $subdirs directly based on configure fragments.
Packit Service 82fcde
AC_CONFIG_SUBDIRS()
Packit Service 82fcde
Packit Service 82fcde
AC_CANONICAL_HOST
Packit Service 82fcde
Packit Service 82fcde
AC_PROG_CC
Packit Service 82fcde
if test $host != $build; then
Packit Service 82fcde
  AC_CHECK_PROGS(BUILD_CC, gcc cc)
Packit Service 82fcde
fi
Packit Service 82fcde
AC_SUBST(cross_compiling)
Packit Service 82fcde
AC_PROG_CPP
Packit Service 82fcde
AC_CHECK_TOOL(READELF, readelf, false)
Packit Service 82fcde
Packit Service 82fcde
# We need the C++ compiler only for testing.
Packit Service 82fcde
AC_PROG_CXX
Packit Service 82fcde
# It's useless to us if it can't link programs (e.g. missing -lstdc++).
Packit Service 82fcde
AC_CACHE_CHECK([whether $CXX can link programs], libc_cv_cxx_link_ok, [dnl
Packit Service 82fcde
AC_LANG_PUSH([C++])
Packit Service 82fcde
# Default, dynamic case.
Packit Service 82fcde
AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
Packit Service 82fcde
	       [libc_cv_cxx_link_ok=yes],
Packit Service 82fcde
	       [libc_cv_cxx_link_ok=no])
Packit Service 82fcde
# Static case.
Packit Service 82fcde
old_LDFLAGS="$LDFLAGS"
Packit Service 82fcde
LDFLAGS="$LDFLAGS -static"
Packit Service 82fcde
AC_LINK_IFELSE([AC_LANG_SOURCE([
Packit Service 82fcde
#include <iostream>
Packit Service 82fcde
Packit Service 82fcde
int
Packit Service 82fcde
main()
Packit Service 82fcde
{
Packit Service 82fcde
  std::cout << "Hello, world!";
Packit Service 82fcde
  return 0;
Packit Service 82fcde
}
Packit Service 82fcde
])],
Packit Service 82fcde
	       [],
Packit Service 82fcde
	       [libc_cv_cxx_link_ok=no])
Packit Service 82fcde
LDFLAGS="$old_LDFLAGS"
Packit Service 82fcde
AC_LANG_POP([C++])])
Packit Service 82fcde
AS_IF([test $libc_cv_cxx_link_ok != yes], [CXX=])
Packit Service 82fcde
Packit Service 82fcde
if test "`cd $srcdir; pwd -P`" = "`pwd -P`"; then
Packit Service 82fcde
  AC_MSG_ERROR([you must configure in a separate build directory])
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
# This will get text that should go into config.make.
Packit Service 82fcde
config_vars=
Packit Service 82fcde
Packit Service 82fcde
# Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
Packit Service 82fcde
AC_ARG_WITH([gd],
Packit Service 82fcde
	    AC_HELP_STRING([--with-gd=DIR],
Packit Service 82fcde
			   [find libgd include dir and library with prefix DIR]),
Packit Service 82fcde
	    [dnl
Packit Service 82fcde
case "$with_gd" in
Packit Service 82fcde
yes|''|no) ;;
Packit Service 82fcde
*) libgd_include="-I$withval/include"
Packit Service 82fcde
   libgd_ldflags="-L$withval/lib" ;;
Packit Service 82fcde
esac
Packit Service 82fcde
])
Packit Service 82fcde
AC_ARG_WITH([gd-include],
Packit Service 82fcde
	    AC_HELP_STRING([--with-gd-include=DIR],
Packit Service 82fcde
			   [find libgd include files in DIR]),
Packit Service 82fcde
	    [dnl
Packit Service 82fcde
case "$with_gd_include" in
Packit Service 82fcde
''|no) ;;
Packit Service 82fcde
*) libgd_include="-I$withval" ;;
Packit Service 82fcde
esac
Packit Service 82fcde
])
Packit Service 82fcde
AC_ARG_WITH([gd-lib],
Packit Service 82fcde
	    AC_HELP_STRING([--with-gd-lib=DIR],
Packit Service 82fcde
			   [find libgd library files in DIR]),
Packit Service 82fcde
	    [dnl
Packit Service 82fcde
case "$with_gd_lib" in
Packit Service 82fcde
''|no) ;;
Packit Service 82fcde
*) libgd_ldflags="-L$withval" ;;
Packit Service 82fcde
esac
Packit Service 82fcde
])
Packit Service 82fcde
Packit Service 82fcde
if test -n "$libgd_include"; then
Packit Service 82fcde
  config_vars="$config_vars
Packit Service 82fcde
CFLAGS-memusagestat.c = $libgd_include"
Packit Service 82fcde
fi
Packit Service 82fcde
if test -n "$libgd_ldflags"; then
Packit Service 82fcde
  config_vars="$config_vars
Packit Service 82fcde
libgd-LDFLAGS = $libgd_ldflags"
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
dnl Arguments to specify presence of other packages/features.
Packit Service 82fcde
AC_ARG_WITH([binutils],
Packit Service 82fcde
	    AC_HELP_STRING([--with-binutils=PATH],
Packit Service 82fcde
			   [specify location of binutils (as and ld)]),
Packit Service 82fcde
	    [path_binutils=$withval],
Packit Service 82fcde
	    [path_binutils=''])
Packit Service 82fcde
AC_ARG_WITH([selinux],
Packit Service 82fcde
	    AC_HELP_STRING([--with-selinux],
Packit Service 82fcde
			   [if building with SELinux support]),
Packit Service 82fcde
	    [with_selinux=$withval],
Packit Service 82fcde
	    [with_selinux=auto])
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_WITH([headers],
Packit Service 82fcde
	    AC_HELP_STRING([--with-headers=PATH],
Packit Service 82fcde
			   [location of system headers to use
Packit Service 82fcde
			    (for example /usr/src/linux/include)
Packit Service 82fcde
			    @<:@default=compiler default@:>@]),
Packit Service 82fcde
	    [sysheaders=$withval],
Packit Service 82fcde
	    [sysheaders=''])
Packit Service 82fcde
AC_SUBST(sysheaders)
Packit Service 82fcde
Packit Service 82fcde
AC_SUBST(use_default_link)
Packit Service 82fcde
AC_ARG_WITH([default-link],
Packit Service 82fcde
	    AC_HELP_STRING([--with-default-link],
Packit Service 82fcde
			   [do not use explicit linker scripts]),
Packit Service 82fcde
	    [use_default_link=$withval],
Packit Service 82fcde
	    [use_default_link=default])
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_ENABLE([sanity-checks],
Packit Service 82fcde
	      AC_HELP_STRING([--disable-sanity-checks],
Packit Service 82fcde
			     [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
Packit Service 82fcde
	      [enable_sanity=$enableval],
Packit Service 82fcde
	      [enable_sanity=yes])
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_ENABLE([shared],
Packit Service 82fcde
	      AC_HELP_STRING([--enable-shared],
Packit Service 82fcde
			     [build shared library @<:@default=yes if GNU ld@:>@]),
Packit Service 82fcde
	      [shared=$enableval],
Packit Service 82fcde
	      [shared=yes])
Packit Service 82fcde
AC_ARG_ENABLE([profile],
Packit Service 82fcde
	      AC_HELP_STRING([--enable-profile],
Packit Service 82fcde
			     [build profiled library @<:@default=no@:>@]),
Packit Service 82fcde
	      [profile=$enableval],
Packit Service 82fcde
	      [profile=no])
Packit Service 82fcde
AC_ARG_ENABLE([static-pie],
Packit Service 82fcde
	      AC_HELP_STRING([--enable-static-pie],
Packit Service 82fcde
			     [enable static PIE support and use it in the testsuite @<:@default=no@:>@]),
Packit Service 82fcde
	      [static_pie=$enableval],
Packit Service 82fcde
	      [static_pie=no])
Packit Service 82fcde
AC_ARG_ENABLE([timezone-tools],
Packit Service 82fcde
	      AC_HELP_STRING([--disable-timezone-tools],
Packit Service 82fcde
			     [do not install timezone tools @<:@default=install@:>@]),
Packit Service 82fcde
	      [enable_timezone_tools=$enableval],
Packit Service 82fcde
	      [enable_timezone_tools=yes])
Packit Service 82fcde
AC_SUBST(enable_timezone_tools)
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_ENABLE([hardcoded-path-in-tests],
Packit Service 82fcde
	      AC_HELP_STRING([--enable-hardcoded-path-in-tests],
Packit Service 82fcde
			     [hardcode newly built glibc path in tests @<:@default=no@:>@]),
Packit Service 82fcde
	      [hardcoded_path_in_tests=$enableval],
Packit Service 82fcde
	      [hardcoded_path_in_tests=no])
Packit Service 82fcde
AC_SUBST(hardcoded_path_in_tests)
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_ENABLE([stackguard-randomization],
Packit Service 82fcde
	      AC_HELP_STRING([--enable-stackguard-randomization],
Packit Service 82fcde
			     [initialize __stack_chk_guard canary with a random number at program start]),
Packit Service 82fcde
	      [enable_stackguard_randomize=$enableval],
Packit Service 82fcde
	      [enable_stackguard_randomize=no])
Packit Service 82fcde
if test "$enable_stackguard_randomize" = yes; then
Packit Service 82fcde
  AC_DEFINE(ENABLE_STACKGUARD_RANDOMIZE)
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_ENABLE([hidden-plt],
Packit Service 82fcde
	      AC_HELP_STRING([--disable-hidden-plt],
Packit Service 82fcde
			     [do not hide internal function calls to avoid PLT]),
Packit Service 82fcde
	      [hidden=$enableval],
Packit Service 82fcde
	      [hidden=yes])
Packit Service 82fcde
if test "x$hidden" = xno; then
Packit Service 82fcde
  AC_DEFINE(NO_HIDDEN)
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_ENABLE([bind-now],
Packit Service 82fcde
	      AC_HELP_STRING([--enable-bind-now],
Packit Service 82fcde
			     [disable lazy relocations in DSOs]),
Packit Service 82fcde
	      [bindnow=$enableval],
Packit Service 82fcde
	      [bindnow=no])
Packit Service 82fcde
AC_SUBST(bindnow)
Packit Service 82fcde
if test "x$bindnow" = xyes; then
Packit Service 82fcde
  AC_DEFINE(BIND_NOW)
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
dnl Build glibc with -fstack-protector, -fstack-protector-all, or
Packit Service 82fcde
dnl -fstack-protector-strong.
Packit Service 82fcde
AC_ARG_ENABLE([stack-protector],
Packit Service 82fcde
	      AC_HELP_STRING([--enable-stack-protector=@<:@yes|no|all|strong@:>@],
Packit Service 82fcde
			     [Use -fstack-protector[-all|-strong] to detect glibc buffer overflows]),
Packit Service 82fcde
	      [enable_stack_protector=$enableval],
Packit Service 82fcde
	      [enable_stack_protector=no])
Packit Service 82fcde
case "$enable_stack_protector" in
Packit Service 82fcde
all|yes|no|strong) ;;
Packit Service 82fcde
*) AC_MSG_ERROR([Not a valid argument for --enable-stack-protector: \"$enable_stack_protector\"]);;
Packit Service 82fcde
esac
Packit Service 82fcde
Packit Service 82fcde
dnl On some platforms we cannot use dynamic loading.  We must provide
Packit Service 82fcde
dnl static NSS modules.
Packit Service 82fcde
AC_ARG_ENABLE([static-nss],
Packit Service 82fcde
	      AC_HELP_STRING([--enable-static-nss],
Packit Service 82fcde
			     [build static NSS modules @<:@default=no@:>@]),
Packit Service 82fcde
	      [static_nss=$enableval],
Packit Service 82fcde
	      [static_nss=no])
Packit Service 82fcde
dnl Enable static NSS also if we build no shared objects.
Packit Service 82fcde
if test x"$static_nss" = xyes || test x"$shared" = xno; then
Packit Service 82fcde
  static_nss=yes
Packit Service 82fcde
  AC_DEFINE(DO_STATIC_NSS)
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_ENABLE([force-install],
Packit Service 82fcde
	      AC_HELP_STRING([--disable-force-install],
Packit Service 82fcde
			     [don't force installation of files from this package, even if they are older than the installed files]),
Packit Service 82fcde
	      [force_install=$enableval],
Packit Service 82fcde
	      [force_install=yes])
Packit Service 82fcde
AC_SUBST(force_install)
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_ENABLE([maintainer-mode],
Packit Service 82fcde
	      AC_HELP_STRING([--enable-maintainer-mode],
Packit Service 82fcde
			     [enable make rules and dependencies not useful (and sometimes confusing) to the casual installer]),
Packit Service 82fcde
	      [maintainer=$enableval],
Packit Service 82fcde
	      [maintainer=no])
Packit Service 82fcde
Packit Service 82fcde
dnl On some platforms we allow dropping compatibility with all kernel
Packit Service 82fcde
dnl versions.
Packit Service 82fcde
AC_ARG_ENABLE([kernel],
Packit Service 82fcde
	      AC_HELP_STRING([--enable-kernel=VERSION],
Packit Service 82fcde
			     [compile for compatibility with kernel not older than VERSION]),
Packit Service 82fcde
	      [minimum_kernel=$enableval],
Packit Service 82fcde
	      [])
Packit Service 82fcde
dnl Prevent unreasonable values.
Packit Service 82fcde
if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
Packit Service 82fcde
  # Better nothing than this.
Packit Service 82fcde
  minimum_kernel=""
Packit Service 82fcde
else
Packit Service 82fcde
  if test "$minimum_kernel" = current; then
Packit Service 82fcde
    minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
Packit Service 82fcde
  fi
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
dnl For the development we sometimes want gcc to issue even more warnings.
Packit Service 82fcde
dnl This is not the default since many of the extra warnings are not
Packit Service 82fcde
dnl appropriate.
Packit Service 82fcde
AC_ARG_ENABLE([all-warnings],
Packit Service 82fcde
	      AC_HELP_STRING([--enable-all-warnings],
Packit Service 82fcde
			     [enable all useful warnings gcc can issue]),
Packit Service 82fcde
	      [all_warnings=$enableval],
Packit Service 82fcde
	      [])
Packit Service 82fcde
AC_SUBST(all_warnings)
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_ENABLE([werror],
Packit Service 82fcde
	      AC_HELP_STRING([--disable-werror],
Packit Service 82fcde
			     [do not build with -Werror]),
Packit Service 82fcde
	      [enable_werror=$enableval],
Packit Service 82fcde
	      [enable_werror=yes])
Packit Service 82fcde
AC_SUBST(enable_werror)
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_ENABLE([multi-arch],
Packit Service 82fcde
	      AC_HELP_STRING([--enable-multi-arch],
Packit Service 82fcde
			     [enable single DSO with optimizations for multiple architectures]),
Packit Service 82fcde
	      [multi_arch=$enableval],
Packit Service 82fcde
	      [multi_arch=default])
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_ENABLE([experimental-malloc],
Packit Service 82fcde
	      AC_HELP_STRING([--disable-experimental-malloc],
Packit Service 82fcde
			     [disable experimental malloc features]),
Packit Service 82fcde
	      [experimental_malloc=$enableval],
Packit Service 82fcde
	      [experimental_malloc=yes])
Packit Service 82fcde
AC_SUBST(experimental_malloc)
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_ENABLE([crypt],
Packit Service 82fcde
              AC_HELP_STRING([--disable-crypt],
Packit Service 82fcde
                             [do not build nor install the passphrase hashing library, libcrypt]),
Packit Service 82fcde
              [build_crypt=$enableval],
Packit Service 82fcde
              [build_crypt=yes])
Packit Service 82fcde
AC_SUBST(build_crypt)
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_ENABLE([nss-crypt],
Packit Service 82fcde
	      AC_HELP_STRING([--enable-nss-crypt],
Packit Service 82fcde
			     [enable libcrypt to use nss]),
Packit Service 82fcde
	      [nss_crypt=$enableval],
Packit Service 82fcde
	      [nss_crypt=no])
Packit Service 82fcde
if test x$build_libcrypt = xno && test x$nss_crypt = xyes; then
Packit Service 82fcde
  AC_MSG_WARN([--enable-nss-crypt has no effect when libcrypt is disabled])
Packit Service 82fcde
  nss_crypt=no
Packit Service 82fcde
fi
Packit Service 82fcde
if test x$nss_crypt = xyes; then
Packit Service 82fcde
  nss_includes=-I$(nss-config --includedir 2>/dev/null)
Packit Service 82fcde
  if test $? -ne 0; then
Packit Service 82fcde
    AC_MSG_ERROR([cannot find include directory with nss-config])
Packit Service 82fcde
  fi
Packit Service 82fcde
  nspr_includes=-I$(nspr-config --includedir 2>/dev/null)
Packit Service 82fcde
  if test $? -ne 0; then
Packit Service 82fcde
    AC_MSG_ERROR([cannot find include directory with nspr-config])
Packit Service 82fcde
  fi
Packit Service 82fcde
  old_CFLAGS="$CFLAGS"
Packit Service 82fcde
  CFLAGS="$CFLAGS $nss_includes $nspr_includes"
Packit Service 82fcde
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
Packit Service 82fcde
#include <hasht.h>
Packit Service 82fcde
#include <nsslowhash.h>
Packit Service 82fcde
void f (void) { NSSLOW_Init (); }])],
Packit Service 82fcde
	     libc_cv_nss_crypt=yes,
Packit Service 82fcde
	     AC_MSG_ERROR([
Packit Service 82fcde
cannot find NSS headers with lowlevel hash function interfaces]))
Packit Service 82fcde
  old_LIBS="$LIBS"
Packit Service 82fcde
  old_LDFLAGS="$LDFLAGS"
Packit Service 82fcde
  LIBS="$LIBS -lfreebl3"
Packit Service 82fcde
  AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
Packit Service 82fcde
#include <hasht.h>
Packit Service 82fcde
#include <nsslowhash.h>],
Packit Service 82fcde
				  [NSSLOW_Init();])],
Packit Service 82fcde
		 libc_cv_nss_crypt=yes,
Packit Service 82fcde
		 AC_MSG_ERROR([
Packit Service 82fcde
cannot link program using lowlevel NSS hash functions]))
Packit Service 82fcde
  # Check to see if there is a static NSS cryptographic library.
Packit Service 82fcde
  # If there isn't then we can't link anything with libcrypt.a,
Packit Service 82fcde
  # and that might mean disabling some static tests.
Packit Service 82fcde
  LDFLAGS="$LDFLAGS -static"
Packit Service 82fcde
  AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
Packit Service 82fcde
#include <hasht.h>
Packit Service 82fcde
#include <nsslowhash.h>],
Packit Service 82fcde
				  [NSSLOW_Init();])],
Packit Service 82fcde
		 libc_cv_static_nss_crypt=yes,
Packit Service 82fcde
		 libc_cv_static_nss_crypt=no)
Packit Service 82fcde
  LDFLAGS="$old_LDFLAGS"
Packit Service 82fcde
  CFLAGS="$old_CFLAGS"
Packit Service 82fcde
  LIBS="$old_LIBS"
Packit Service 82fcde
else
Packit Service 82fcde
  libc_cv_nss_crypt=no
Packit Service 82fcde
  libc_cv_static_nss_crypt=no
Packit Service 82fcde
fi
Packit Service 82fcde
AC_SUBST(libc_cv_nss_crypt)
Packit Service 82fcde
AC_SUBST(libc_cv_static_nss_crypt)
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_ENABLE([obsolete-rpc],
Packit Service 82fcde
              AC_HELP_STRING([--enable-obsolete-rpc],
Packit Service 82fcde
                             [build and install the obsolete RPC code for link-time usage]),
Packit Service 82fcde
              [link_obsolete_rpc=$enableval],
Packit Service 82fcde
              [link_obsolete_rpc=no])
Packit Service 82fcde
AC_SUBST(link_obsolete_rpc)
Packit Service 82fcde
Packit Service 82fcde
if test "$link_obsolete_rpc" = yes; then
Packit Service 82fcde
  AC_DEFINE(LINK_OBSOLETE_RPC)
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_ENABLE([obsolete-nsl],
Packit Service 82fcde
              AC_HELP_STRING([--enable-obsolete-nsl],
Packit Service 82fcde
                             [build and install the obsolete libnsl library and depending NSS modules]),
Packit Service 82fcde
              [build_obsolete_nsl=$enableval],
Packit Service 82fcde
              [build_obsolete_nsl=no])
Packit Service 82fcde
AC_SUBST(build_obsolete_nsl)
Packit Service 82fcde
Packit Service 82fcde
if test "$build_obsolete_nsl" = yes; then
Packit Service 82fcde
  AC_DEFINE(LINK_OBSOLETE_NSL)
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_ENABLE([systemtap],
Packit Service 82fcde
              [AS_HELP_STRING([--enable-systemtap],
Packit Service 82fcde
	       [enable systemtap static probe points @<:@default=no@:>@])],
Packit Service 82fcde
              [systemtap=$enableval],
Packit Service 82fcde
	      [systemtap=no])
Packit Service 82fcde
if test "x$systemtap" != xno; then
Packit Service 82fcde
  AC_CACHE_CHECK([for systemtap static probe support], libc_cv_sdt, [dnl
Packit Service 82fcde
  old_CFLAGS="$CFLAGS"
Packit Service 82fcde
  CFLAGS="-std=gnu11 $CFLAGS"
Packit Service 82fcde
  AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <sys/sdt.h>
Packit Service 82fcde
void foo (int i, void *p)
Packit Service 82fcde
{
Packit Service 82fcde
  asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) ""
Packit Service 82fcde
       :: STAP_PROBE_ASM_OPERANDS (2, i, p));
Packit Service 82fcde
}]])], [libc_cv_sdt=yes], [libc_cv_sdt=no])
Packit Service 82fcde
  CFLAGS="$old_CFLAGS"])
Packit Service 82fcde
  if test $libc_cv_sdt = yes; then
Packit Service 82fcde
    AC_DEFINE([USE_STAP_PROBE])
Packit Service 82fcde
  elif test "x$systemtap" != xauto; then
Packit Service 82fcde
    AC_MSG_FAILURE([systemtap support needs sys/sdt.h with asm support])
Packit Service 82fcde
  fi
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_ENABLE([build-nscd],
Packit Service 82fcde
	      [AS_HELP_STRING([--disable-build-nscd],
Packit Service 82fcde
	       [disable building and installing the nscd daemon])],
Packit Service 82fcde
	      [build_nscd=$enableval],
Packit Service 82fcde
	      [build_nscd=default])
Packit Service 82fcde
AC_SUBST(build_nscd)
Packit Service 82fcde
Packit Service 82fcde
# Note the use of $use_nscd is near the bottom of the file.
Packit Service 82fcde
AC_ARG_ENABLE([nscd],
Packit Service 82fcde
	      [AS_HELP_STRING([--disable-nscd],
Packit Service 82fcde
	       [library functions will not contact the nscd daemon])],
Packit Service 82fcde
	      [use_nscd=$enableval],
Packit Service 82fcde
	      [use_nscd=yes])
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_ENABLE([pt_chown],
Packit Service 82fcde
	      [AS_HELP_STRING([--enable-pt_chown],
Packit Service 82fcde
	       [Enable building and installing pt_chown])],
Packit Service 82fcde
	      [build_pt_chown=$enableval],
Packit Service 82fcde
	      [build_pt_chown=no])
Packit Service 82fcde
AC_SUBST(build_pt_chown)
Packit Service 82fcde
if test "$build_pt_chown" = yes; then
Packit Service 82fcde
  AC_DEFINE(HAVE_PT_CHOWN)
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_ENABLE([tunables],
Packit Service 82fcde
	      [AS_HELP_STRING([--enable-tunables],
Packit Service 82fcde
	       [Enable tunables support. Known values are 'yes', 'no' and 'valstring'])],
Packit Service 82fcde
	      [have_tunables=$enableval],
Packit Service 82fcde
	      [have_tunables=yes])
Packit Service 82fcde
AC_SUBST(have_tunables)
Packit Service 82fcde
if test "$have_tunables" = yes; then
Packit Service 82fcde
  AC_DEFINE(HAVE_TUNABLES)
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
# The abi-tags file uses a fairly simplistic model for name recognition that
Packit Service 82fcde
# can't distinguish i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a
Packit Service 82fcde
# $host_os of `gnu*' here to be `gnu-gnu*' just so that it can tell.
Packit Service 82fcde
# This doesn't get used much beyond that, so it's fairly safe.
Packit Service 82fcde
case "$host_os" in
Packit Service 82fcde
linux*)
Packit Service 82fcde
  ;;
Packit Service 82fcde
gnu*)
Packit Service 82fcde
  host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
Packit Service 82fcde
  ;;
Packit Service 82fcde
esac
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_ENABLE([mathvec],
Packit Service 82fcde
	      [AS_HELP_STRING([--enable-mathvec],
Packit Service 82fcde
	      [Enable building and installing mathvec @<:@default depends on architecture@:>@])],
Packit Service 82fcde
	      [build_mathvec=$enableval],
Packit Service 82fcde
	      [build_mathvec=notset])
Packit Service 82fcde
Packit Service 82fcde
AC_ARG_ENABLE([cet],
Packit Service 82fcde
	      AC_HELP_STRING([--enable-cet],
Packit Service 82fcde
			     [enable Intel Control-flow Enforcement Technology (CET), x86 only]),
Packit Service 82fcde
	      [enable_cet=$enableval],
Packit Service 82fcde
	      [enable_cet=no])
Packit Service 82fcde
Packit Service 82fcde
# We keep the original values in `$config_*' and never modify them, so we
Packit Service 82fcde
# can write them unchanged into config.make.  Everything else uses
Packit Service 82fcde
# $machine, $vendor, and $os, and changes them whenever convenient.
Packit Service 82fcde
config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
Packit Service 82fcde
Packit Service 82fcde
# Don't allow vendor == "unknown"
Packit Service 82fcde
test "$config_vendor" = unknown && config_vendor=
Packit Service 82fcde
config_os="`echo $config_os | sed 's/^unknown-//'`"
Packit Service 82fcde
Packit Service 82fcde
# Some configurations imply other options.
Packit Service 82fcde
elf=yes
Packit Service 82fcde
Packit Service 82fcde
# The configure fragment of a port can modify these to supplement
Packit Service 82fcde
# or override the table in the case statement below.  No fragment should
Packit Service 82fcde
# ever change the config_* variables, however.
Packit Service 82fcde
machine=$config_machine
Packit Service 82fcde
vendor=$config_vendor
Packit Service 82fcde
os=$config_os
Packit Service 82fcde
base_os=''
Packit Service 82fcde
Packit Service 82fcde
submachine=
Packit Service 82fcde
AC_ARG_WITH([cpu],
Packit Service 82fcde
	    AS_HELP_STRING([--with-cpu=CPU], [select code for CPU variant]),
Packit Service 82fcde
	    [dnl
Packit Service 82fcde
  case "$withval" in
Packit Service 82fcde
  yes|'') AC_MSG_ERROR([--with-cpu requires an argument]) ;;
Packit Service 82fcde
  no) ;;
Packit Service 82fcde
  *) submachine="$withval" ;;
Packit Service 82fcde
  esac
Packit Service 82fcde
])
Packit Service 82fcde
Packit Service 82fcde
# An preconfigure script can set this when it wants to disable the sanity
Packit Service 82fcde
# check below.
Packit Service 82fcde
libc_config_ok=no
Packit Service 82fcde
Packit Service 82fcde
# A preconfigure script for a system that may or may not use fpu
Packit Service 82fcde
# sysdeps directories sets this to a preprocessor conditional for
Packit Service 82fcde
# whether to use such directories.
Packit Service 82fcde
with_fp_cond=1
Packit Service 82fcde
Packit Service 82fcde
dnl Let sysdeps/*/preconfigure act here.
Packit Service 82fcde
LIBC_PRECONFIGURE([$srcdir], [for sysdeps])
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
###
Packit Service 82fcde
### By using the undocumented --enable-hacker-mode option for configure
Packit Service 82fcde
### one can skip this test to make the configuration not fail for unsupported
Packit Service 82fcde
### platforms.
Packit Service 82fcde
###
Packit Service 82fcde
if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
Packit Service 82fcde
  case "$machine-$host_os" in
Packit Service 82fcde
  *-linux* | *-gnu*)
Packit Service 82fcde
    ;;
Packit Service 82fcde
  *)
Packit Service 82fcde
    AC_MSG_ERROR([
Packit Service 82fcde
*** The GNU C library is currently unavailable for this platform.
Packit Service 82fcde
*** If you are interested in seeing glibc on this platform visit
Packit Service 82fcde
*** the "How to submit a new port" in the wiki:
Packit Service 82fcde
***   https://sourceware.org/glibc/wiki/#Development
Packit Service 82fcde
*** and join the community!])
Packit Service 82fcde
    ;;
Packit Service 82fcde
  esac
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
# Set base_machine if not set by a preconfigure fragment.
Packit Service 82fcde
test -n "$base_machine" || base_machine=$machine
Packit Service 82fcde
AC_SUBST(base_machine)
Packit Service 82fcde
Packit Service 82fcde
# Determine whether to use fpu or nofpu sysdeps directories.
Packit Service 82fcde
AC_CACHE_CHECK([for use of fpu sysdeps directories],
Packit Service 82fcde
	       libc_cv_with_fp, [dnl
Packit Service 82fcde
cat > conftest.c <
Packit Service 82fcde
#if $with_fp_cond
Packit Service 82fcde
int dummy;
Packit Service 82fcde
#else
Packit Service 82fcde
# error "no hardware floating point"
Packit Service 82fcde
#endif
Packit Service 82fcde
EOF
Packit Service 82fcde
libc_cv_with_fp=no
Packit Service 82fcde
if ${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c -o conftest.s \
Packit Service 82fcde
   1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
Packit Service 82fcde
  libc_cv_with_fp=yes
Packit Service 82fcde
fi
Packit Service 82fcde
rm -f conftest*])
Packit Service 82fcde
AC_SUBST(libc_cv_with_fp)
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
Packit Service 82fcde
LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector],
Packit Service 82fcde
		   [libc_cv_ssp=yes],
Packit Service 82fcde
		   [libc_cv_ssp=no])
Packit Service 82fcde
])
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(for -fstack-protector-strong, libc_cv_ssp_strong, [dnl
Packit Service 82fcde
LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector-strong],
Packit Service 82fcde
		   [libc_cv_ssp_strong=yes],
Packit Service 82fcde
		   [libc_cv_ssp_strong=no])
Packit Service 82fcde
])
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(for -fstack-protector-all, libc_cv_ssp_all, [dnl
Packit Service 82fcde
LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector-all],
Packit Service 82fcde
		   [libc_cv_ssp_all=yes],
Packit Service 82fcde
		   [libc_cv_ssp_all=no])
Packit Service 82fcde
])
Packit Service 82fcde
Packit Service 82fcde
stack_protector=
Packit Service 82fcde
no_stack_protector=
Packit Service 82fcde
if test "$libc_cv_ssp" = yes; then
Packit Service 82fcde
  no_stack_protector="-fno-stack-protector -DSTACK_PROTECTOR_LEVEL=0"
Packit Service 82fcde
  AC_DEFINE(HAVE_CC_NO_STACK_PROTECTOR)
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
if test "$enable_stack_protector" = yes && test "$libc_cv_ssp" = yes; then
Packit Service 82fcde
  stack_protector="-fstack-protector"
Packit Service 82fcde
  AC_DEFINE(STACK_PROTECTOR_LEVEL, 1)
Packit Service 82fcde
elif test "$enable_stack_protector" = all && test "$libc_cv_ssp_all" = yes; then
Packit Service 82fcde
  stack_protector="-fstack-protector-all"
Packit Service 82fcde
  AC_DEFINE(STACK_PROTECTOR_LEVEL, 2)
Packit Service 82fcde
elif test "$enable_stack_protector" = strong && test "$libc_cv_ssp_strong" = yes; then
Packit Service 82fcde
  stack_protector="-fstack-protector-strong"
Packit Service 82fcde
  AC_DEFINE(STACK_PROTECTOR_LEVEL, 3)
Packit Service 82fcde
else
Packit Service 82fcde
  stack_protector="-fno-stack-protector"
Packit Service 82fcde
  AC_DEFINE(STACK_PROTECTOR_LEVEL, 0)
Packit Service 82fcde
fi
Packit Service 82fcde
AC_SUBST(libc_cv_ssp)
Packit Service 82fcde
AC_SUBST(stack_protector)
Packit Service 82fcde
AC_SUBST(no_stack_protector)
Packit Service 82fcde
Packit Service 82fcde
if test -n "$stack_protector"; then
Packit Service 82fcde
  dnl Don't run configure tests with stack-protection on, to avoid problems with
Packit Service 82fcde
  dnl bootstrapping.
Packit Service 82fcde
  no_ssp=-fno-stack-protector
Packit Service 82fcde
else
Packit Service 82fcde
  no_ssp=
Packit Service 82fcde
Packit Service 82fcde
  if test "$enable_stack_protector" != no; then
Packit Service 82fcde
    AC_MSG_ERROR([--enable-stack-protector=$enable_stack_protector specified, but specified level of stack protection is not supported by the compiler.])
Packit Service 82fcde
  fi
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
# For the multi-arch option we need support in the assembler & linker.
Packit Service 82fcde
AC_CACHE_CHECK([for assembler and linker STT_GNU_IFUNC support],
Packit Service 82fcde
	       libc_cv_ld_gnu_indirect_function, [dnl
Packit Service 82fcde
cat > conftest.S <
Packit Service 82fcde
.type foo,%gnu_indirect_function
Packit Service 82fcde
foo:
Packit Service 82fcde
.globl _start
Packit Service 82fcde
_start:
Packit Service 82fcde
.globl __start
Packit Service 82fcde
__start:
Packit Service 82fcde
.data
Packit Service 82fcde
#ifdef _LP64
Packit Service 82fcde
.quad foo
Packit Service 82fcde
#else
Packit Service 82fcde
.long foo
Packit Service 82fcde
#endif
Packit Service 82fcde
EOF
Packit Service 82fcde
libc_cv_ld_gnu_indirect_function=no
Packit Service 82fcde
if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
Packit Service 82fcde
	    -nostartfiles -nostdlib $no_ssp \
Packit Service 82fcde
	    -o conftest conftest.S 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
Packit Service 82fcde
  # Do a link to see if the backend supports IFUNC relocs.
Packit Service 82fcde
  $READELF -r conftest 1>&AS_MESSAGE_LOG_FD
Packit Service 82fcde
  LC_ALL=C $READELF -r conftest | grep 'no relocations' >/dev/null || {
Packit Service 82fcde
    libc_cv_ld_gnu_indirect_function=yes
Packit Service 82fcde
  }
Packit Service 82fcde
fi
Packit Service 82fcde
rm -f conftest*])
Packit Service 82fcde
Packit Service 82fcde
# Check if gcc supports attribute ifunc as it is used in libc_ifunc macro.
Packit Service 82fcde
AC_CACHE_CHECK([for gcc attribute ifunc support],
Packit Service 82fcde
	       libc_cv_gcc_indirect_function, [dnl
Packit Service 82fcde
cat > conftest.c <
Packit Service 82fcde
extern int func (int);
Packit Service 82fcde
int used_func (int a)
Packit Service 82fcde
{
Packit Service 82fcde
  return a;
Packit Service 82fcde
}
Packit Service 82fcde
static void *resolver ()
Packit Service 82fcde
{
Packit Service 82fcde
  return &used_func;
Packit Service 82fcde
}
Packit Service 82fcde
extern __typeof (func) func __attribute__ ((ifunc ("resolver")));
Packit Service 82fcde
EOF
Packit Service 82fcde
libc_cv_gcc_indirect_function=no
Packit Service 82fcde
if ${CC-cc} -c conftest.c -o conftest.o 1>&AS_MESSAGE_LOG_FD \
Packit Service 82fcde
   2>&AS_MESSAGE_LOG_FD ; then
Packit Service 82fcde
  if $READELF -s conftest.o | grep IFUNC >/dev/null 2>&AS_MESSAGE_LOG_FD; then
Packit Service 82fcde
    libc_cv_gcc_indirect_function=yes
Packit Service 82fcde
  fi
Packit Service 82fcde
fi
Packit Service 82fcde
rm -f conftest*])
Packit Service 82fcde
Packit Service 82fcde
# Check if gcc warns about alias for function with incompatible types.
Packit Service 82fcde
AC_CACHE_CHECK([if compiler warns about alias for function with incompatible types],
Packit Service 82fcde
	       libc_cv_gcc_incompatible_alias, [dnl
Packit Service 82fcde
cat > conftest.c <
Packit Service 82fcde
int __redirect_foo (const void *s, int c);
Packit Service 82fcde
Packit Service 82fcde
__typeof (__redirect_foo) *foo_impl (void) __asm__ ("foo");
Packit Service 82fcde
__typeof (__redirect_foo) *foo_impl (void)
Packit Service 82fcde
{
Packit Service 82fcde
  return 0;
Packit Service 82fcde
}
Packit Service 82fcde
Packit Service 82fcde
extern __typeof (__redirect_foo) foo_alias __attribute__ ((alias ("foo")));
Packit Service 82fcde
EOF
Packit Service 82fcde
libc_cv_gcc_incompatible_alias=yes
Packit Service 82fcde
if ${CC-cc} -Werror -c conftest.c -o conftest.o 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
Packit Service 82fcde
  libc_cv_gcc_incompatible_alias=no
Packit Service 82fcde
fi
Packit Service 82fcde
rm -f conftest*])
Packit Service 82fcde
Packit Service 82fcde
if test x"$libc_cv_ld_gnu_indirect_function" != xyes; then
Packit Service 82fcde
  if test x"$multi_arch" = xyes; then
Packit Service 82fcde
    AC_MSG_ERROR([--enable-multi-arch support requires assembler and linker support])
Packit Service 82fcde
  else
Packit Service 82fcde
    multi_arch=no
Packit Service 82fcde
  fi
Packit Service 82fcde
fi
Packit Service 82fcde
if test x"$libc_cv_gcc_indirect_function" != xyes; then
Packit Service 82fcde
  # GCC 8+ emits a warning for alias with incompatible types and it might
Packit Service 82fcde
  # fail to build ifunc resolvers aliases to either weak or internal
Packit Service 82fcde
  # symbols.  Disables multiarch build in this case.
Packit Service 82fcde
  if test x"$libc_cv_gcc_incompatible_alias" == xyes; then
Packit Service 82fcde
    AC_MSG_WARN([gcc emits a warning for alias between functions of incompatible types])
Packit Service 82fcde
    if test x"$multi_arch" = xyes; then
Packit Service 82fcde
      AC_MSG_ERROR([--enable-multi-arch support requires a gcc with gnu-indirect-function support])
Packit Service 82fcde
    fi
Packit Service 82fcde
    AC_MSG_WARN([Multi-arch is disabled.])
Packit Service 82fcde
    multi_arch=no
Packit Service 82fcde
  elif test x"$multi_arch" = xyes; then
Packit Service 82fcde
    AC_MSG_WARN([--enable-multi-arch support recommends a gcc with gnu-indirect-function support.
Packit Service 82fcde
Please use a gcc which supports it by default or configure gcc with --enable-gnu-indirect-function])
Packit Service 82fcde
  fi
Packit Service 82fcde
fi
Packit Service 82fcde
multi_arch_d=
Packit Service 82fcde
if test x"$multi_arch" != xno; then
Packit Service 82fcde
  multi_arch_d=/multiarch
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
# Compute the list of sysdep directories for this configuration.
Packit Service 82fcde
# This can take a while to compute.
Packit Service 82fcde
sysdep_dir=$srcdir/sysdeps
Packit Service 82fcde
AC_MSG_CHECKING(sysdep dirs)
Packit Service 82fcde
dnl We need to use [ and ] for other purposes for a while now.
Packit Service 82fcde
changequote(,)dnl
Packit Service 82fcde
# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
Packit Service 82fcde
os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
Packit Service 82fcde
Packit Service 82fcde
test "x$base_os" != x || case "$os" in
Packit Service 82fcde
gnu*)
Packit Service 82fcde
  base_os=mach/hurd ;;
Packit Service 82fcde
linux*)
Packit Service 82fcde
  base_os=unix/sysv ;;
Packit Service 82fcde
esac
Packit Service 82fcde
Packit Service 82fcde
# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
Packit Service 82fcde
tail=$os
Packit Service 82fcde
ostry=$os
Packit Service 82fcde
while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
Packit Service 82fcde
  ostry="$ostry /$o"
Packit Service 82fcde
  tail=$o
Packit Service 82fcde
done
Packit Service 82fcde
o=`echo $tail | sed 's/[0-9]*$//'`
Packit Service 82fcde
if test $o != $tail; then
Packit Service 82fcde
  ostry="$ostry /$o"
Packit Service 82fcde
fi
Packit Service 82fcde
# For linux-gnu, try linux-gnu, then linux.
Packit Service 82fcde
o=`echo $tail | sed 's/-.*$//'`
Packit Service 82fcde
if test $o != $tail; then
Packit Service 82fcde
  ostry="$ostry /$o"
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
Packit Service 82fcde
base=
Packit Service 82fcde
tail=$base_os
Packit Service 82fcde
while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
Packit Service 82fcde
  set $b
Packit Service 82fcde
  base="$base /$1"
Packit Service 82fcde
  tail="$2"
Packit Service 82fcde
done
Packit Service 82fcde
Packit Service 82fcde
# For sparc/sparc32, try sparc/sparc32 and then sparc.
Packit Service 82fcde
mach=
Packit Service 82fcde
tail=$machine${submachine:+/$submachine}
Packit Service 82fcde
while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
Packit Service 82fcde
  set $m
Packit Service 82fcde
  # Prepend the machine's FPU directory unless --without-fp.
Packit Service 82fcde
  if test "$libc_cv_with_fp" = yes; then
Packit Service 82fcde
    maybe_fpu=/fpu
Packit Service 82fcde
  else
Packit Service 82fcde
    maybe_fpu=/nofpu
Packit Service 82fcde
  fi
Packit Service 82fcde
  # For each machine term, try it with and then without /multiarch.
Packit Service 82fcde
  for try_fpu in $maybe_fpu ''; do
Packit Service 82fcde
    for try_multi in $multi_arch_d ''; do
Packit Service 82fcde
      mach="$mach /$1$try_fpu$try_multi"
Packit Service 82fcde
    done
Packit Service 82fcde
  done
Packit Service 82fcde
  tail="$2"
Packit Service 82fcde
done
Packit Service 82fcde
Packit Service 82fcde
dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
Packit Service 82fcde
changequote([,])dnl
Packit Service 82fcde
Packit Service 82fcde
# Find what sysdep directories exist.
Packit Service 82fcde
sysnames=
Packit Service 82fcde
for b in $base ''; do
Packit Service 82fcde
  for m0 in $mach ''; do
Packit Service 82fcde
    for v in /$vendor ''; do
Packit Service 82fcde
      test "$v" = / && continue
Packit Service 82fcde
      for o in /$ostry ''; do
Packit Service 82fcde
	test "$o" = / && continue
Packit Service 82fcde
	for m in $mach ''; do
Packit Service 82fcde
	  try_suffix="$m0$b$v$o$m"
Packit Service 82fcde
	  if test -n "$try_suffix"; then
Packit Service 82fcde
	    try_srcdir="${srcdir}/"
Packit Service 82fcde
	    try="sysdeps$try_suffix"
Packit Service 82fcde
	    test -n "$enable_debug_configure" &&
Packit Service 82fcde
	    echo "$0 [DEBUG]: try $try" >&2
Packit Service 82fcde
	    if test -d "$try_srcdir$try"; then
Packit Service 82fcde
	      sysnames="$sysnames $try"
Packit Service 82fcde
	      { test -n "$o" || test -n "$b"; } && os_used=t
Packit Service 82fcde
	      { test -n "$m" || test -n "$m0"; } && machine_used=t
Packit Service 82fcde
	      case x${m0:-$m} in
Packit Service 82fcde
	      x*/$submachine) submachine_used=t ;;
Packit Service 82fcde
	      esac
Packit Service 82fcde
	    fi
Packit Service 82fcde
	  fi
Packit Service 82fcde
	done
Packit Service 82fcde
      done
Packit Service 82fcde
    done
Packit Service 82fcde
  done
Packit Service 82fcde
done
Packit Service 82fcde
Packit Service 82fcde
# If the assembler supports gnu_indirect_function symbol type and the
Packit Service 82fcde
# architecture supports multi-arch, we enable multi-arch by default.
Packit Service 82fcde
case $sysnames in
Packit Service 82fcde
*"$multi_arch_d"*)
Packit Service 82fcde
  ;;
Packit Service 82fcde
*)
Packit Service 82fcde
  test x"$multi_arch" = xdefault && multi_arch=no
Packit Service 82fcde
  ;;
Packit Service 82fcde
esac
Packit Service 82fcde
if test x"$multi_arch" != xno; then
Packit Service 82fcde
  AC_DEFINE(USE_MULTIARCH)
Packit Service 82fcde
fi
Packit Service 82fcde
AC_SUBST(multi_arch)
Packit Service 82fcde
Packit Service 82fcde
if test -z "$os_used" && test "$os" != none; then
Packit Service 82fcde
  AC_MSG_ERROR(Operating system $os is not supported.)
Packit Service 82fcde
fi
Packit Service 82fcde
if test -z "$machine_used" && test "$machine" != none; then
Packit Service 82fcde
  AC_MSG_ERROR(The $machine is not supported.)
Packit Service 82fcde
fi
Packit Service 82fcde
if test -z "$submachine_used" && test -n "$submachine"; then
Packit Service 82fcde
  AC_MSG_ERROR(The $submachine subspecies of $host_cpu is not supported.)
Packit Service 82fcde
fi
Packit Service 82fcde
AC_SUBST(submachine)
Packit Service 82fcde
Packit Service 82fcde
# We have now validated the configuration.
Packit Service 82fcde
Packit Service 82fcde
# Expand the list of system names into a full list of directories
Packit Service 82fcde
# from each element's parent name and Implies file (if present).
Packit Service 82fcde
set $sysnames
Packit Service 82fcde
names=
Packit Service 82fcde
while test $# -gt 0; do
Packit Service 82fcde
  name=$1
Packit Service 82fcde
  shift
Packit Service 82fcde
Packit Service 82fcde
  case " $names " in *" $name "*)
Packit Service 82fcde
    # Already in the list.
Packit Service 82fcde
    continue
Packit Service 82fcde
  esac
Packit Service 82fcde
Packit Service 82fcde
  # Report each name as we discover it, so there is no long pause in output.
Packit Service 82fcde
  echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
Packit Service 82fcde
Packit Service 82fcde
  name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
Packit Service 82fcde
Packit Service 82fcde
  case $name in
Packit Service 82fcde
    /*) xsrcdir= ;;
Packit Service 82fcde
    *)  xsrcdir=$srcdir/ ;;
Packit Service 82fcde
  esac
Packit Service 82fcde
  test -n "$enable_debug_configure" &&
Packit Service 82fcde
  echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
Packit Service 82fcde
Packit Service 82fcde
  for implies_file in Implies Implies-before Implies-after; do
Packit Service 82fcde
    implies_type=`echo $implies_file | sed s/-/_/`
Packit Service 82fcde
    eval ${implies_type}=
Packit Service 82fcde
    if test -f $xsrcdir$name/$implies_file; then
Packit Service 82fcde
      # Collect more names from the `Implies' file (removing comments).
Packit Service 82fcde
      implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/$implies_file`"
Packit Service 82fcde
      for x in $implied_candidate; do
Packit Service 82fcde
	found=no
Packit Service 82fcde
	if test -d $xsrcdir$name_base/$x; then
Packit Service 82fcde
	  eval "${implies_type}=\"\$${implies_type} \$name_base/\$x\""
Packit Service 82fcde
	  found=yes
Packit Service 82fcde
	fi
Packit Service 82fcde
	try="sysdeps/$x"
Packit Service 82fcde
	try_srcdir=$srcdir/
Packit Service 82fcde
	test -n "$enable_debug_configure" &&
Packit Service 82fcde
	 echo "[DEBUG]: $name $implies_file $x try() {$try_srcdir}$try" >&2
Packit Service 82fcde
	if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
Packit Service 82fcde
	then
Packit Service 82fcde
	  eval "${implies_type}=\"\$${implies_type} \$try\""
Packit Service 82fcde
	  found=yes
Packit Service 82fcde
	fi
Packit Service 82fcde
	if test $found = no; then
Packit Service 82fcde
	  AC_MSG_WARN($name/$implies_file specifies nonexistent $x)
Packit Service 82fcde
	fi
Packit Service 82fcde
      done
Packit Service 82fcde
    fi
Packit Service 82fcde
  done
Packit Service 82fcde
Packit Service 82fcde
  # Add NAME to the list of names.
Packit Service 82fcde
  names="$names $name"
Packit Service 82fcde
Packit Service 82fcde
  # Find the parent of NAME, using the empty string if it has none.
Packit Service 82fcde
changequote(,)dnl
Packit Service 82fcde
  parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
Packit Service 82fcde
changequote([,])dnl
Packit Service 82fcde
Packit Service 82fcde
  test -n "$enable_debug_configure" &&
Packit Service 82fcde
    echo "[DEBUG]: $name Implies='$Implies' rest='$*' parent='$parent' \
Packit Service 82fcde
Implies_before='$Implies_before' Implies_after='$Implies_after'" >&2
Packit Service 82fcde
Packit Service 82fcde
  # Add the names implied by NAME, and NAME's parent (if it has one), to
Packit Service 82fcde
  # the list of names to be processed (the argument list).  We prepend the
Packit Service 82fcde
  # implied names to the list and append the parent.  We want implied
Packit Service 82fcde
  # directories to come before further directories inferred from the
Packit Service 82fcde
  # configuration components; this ensures that for sysv4, unix/common
Packit Service 82fcde
  # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
Packit Service 82fcde
  # after sysv4).
Packit Service 82fcde
  sysnames="`echo $Implies $* $Implies_before $parent $Implies_after`"
Packit Service 82fcde
  test -n "$sysnames" && set $sysnames
Packit Service 82fcde
done
Packit Service 82fcde
Packit Service 82fcde
# Add the default directories.
Packit Service 82fcde
default_sysnames="sysdeps/generic"
Packit Service 82fcde
sysnames="$names $default_sysnames"
Packit Service 82fcde
AC_SUBST(sysnames)
Packit Service 82fcde
# The other names were emitted during the scan.
Packit Service 82fcde
AC_MSG_RESULT($default_sysnames)
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
### Locate tools.
Packit Service 82fcde
Packit Service 82fcde
AC_PROG_INSTALL
Packit Service 82fcde
if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
Packit Service 82fcde
  # The makefiles need to use a different form to find it in $srcdir.
Packit Service 82fcde
  INSTALL='\$(..)./scripts/install-sh -c'
Packit Service 82fcde
fi
Packit Service 82fcde
AC_PROG_LN_S
Packit Service 82fcde
Packit Service 82fcde
LIBC_PROG_BINUTILS
Packit Service 82fcde
Packit Service 82fcde
# Accept binutils 2.25 or newer.
Packit Service 82fcde
AC_CHECK_PROG_VER(AS, $AS, --version,
Packit Service 82fcde
		  [GNU assembler.* \([0-9]*\.[0-9.]*\)],
Packit Service 82fcde
		  [2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*],
Packit Service 82fcde
		  AS=: critic_missing="$critic_missing as")
Packit Service 82fcde
Packit Service 82fcde
if test -n "`$LD --version | sed -n 's/^GNU \(gold\).*$/\1/p'`"; then
Packit Service 82fcde
  # Accept gold 1.14 or higher
Packit Service 82fcde
  AC_CHECK_PROG_VER(LD, $LD, --version,
Packit Service 82fcde
		    [GNU gold.* \([0-9][0-9]*\.[0-9.]*\)],
Packit Service 82fcde
		    [1.1[4-9]*|1.[2-9][0-9]*|1.1[0-9][0-9]*|[2-9].*|[1-9][0-9]*],
Packit Service 82fcde
		    LD=: critic_missing="$critic_missing GNU gold")
Packit Service 82fcde
else
Packit Service 82fcde
  AC_CHECK_PROG_VER(LD, $LD, --version,
Packit Service 82fcde
		    [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
Packit Service 82fcde
		    [2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*],
Packit Service 82fcde
		    LD=: critic_missing="$critic_missing GNU ld")
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
# These programs are version sensitive.
Packit Service 82fcde
AC_CHECK_TOOL_PREFIX
Packit Service 82fcde
AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
Packit Service 82fcde
  [GNU Make[^0-9]*\([0-9][0-9.]*\)],
Packit Service 82fcde
  [[4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make")
Packit Service 82fcde
Packit Service 82fcde
AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
Packit Service 82fcde
  [GNU gettext.* \([0-9]*\.[0-9.]*\)],
Packit Service 82fcde
  [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
Packit Service 82fcde
  MSGFMT=: aux_missing="$aux_missing msgfmt")
Packit Service 82fcde
AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
Packit Service 82fcde
  [GNU texinfo.* \([0-9][0-9.]*\)],
Packit Service 82fcde
  [4.[7-9]*|4.[1-9][0-9]*|[5-9].*],
Packit Service 82fcde
  MAKEINFO=: aux_missing="$aux_missing makeinfo")
Packit Service 82fcde
AC_CHECK_PROG_VER(SED, sed, --version,
Packit Service 82fcde
  [GNU sed[^0-9]* \([0-9]*\.[0-9.]*\)],
Packit Service 82fcde
  [3.0[2-9]*|3.[1-9]*|[4-9]*],
Packit Service 82fcde
  SED=: aux_missing="$aux_missing sed")
Packit Service 82fcde
AC_CHECK_PROG_VER(AWK, gawk, --version,
Packit Service 82fcde
  [GNU Awk[^0-9]*\([0-9][0-9.]*\)],
Packit Service 82fcde
  [3.1.[2-9]*|3.[2-9]*|[4-9]*], critic_missing="$critic_missing gawk")
Packit Service 82fcde
AC_CHECK_PROG_VER(BISON, bison, --version,
Packit Service 82fcde
  [bison (GNU Bison) \([0-9]*\.[0-9.]*\)],
Packit Service 82fcde
  [2.7*|[3-9].*|[1-9][0-9]*], critic_missing="$critic_missing bison")
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK([if $CC is sufficient to build libc], libc_cv_compiler_ok, [
Packit Service 82fcde
AC_TRY_COMPILE([], [
Packit Service 82fcde
#if !defined __GNUC__ || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 9)
Packit Service 82fcde
#error insufficient compiler
Packit Service 82fcde
#endif],
Packit Service 82fcde
	       [libc_cv_compiler_ok=yes],
Packit Service 82fcde
	       [libc_cv_compiler_ok=no])])
Packit Service 82fcde
AS_IF([test $libc_cv_compiler_ok != yes],
Packit Service 82fcde
      [critic_missing="$critic_missing compiler"])
Packit Service 82fcde
Packit Service 82fcde
AC_CHECK_TOOL(NM, nm, false)
Packit Service 82fcde
Packit Service 82fcde
if test "x$maintainer" = "xyes"; then
Packit Service 82fcde
  AC_CHECK_PROGS(AUTOCONF, autoconf, no)
Packit Service 82fcde
  case "x$AUTOCONF" in
Packit Service 82fcde
  xno|x|x:) AUTOCONF=no ;;
Packit Service 82fcde
  *)
Packit Service 82fcde
    AC_CACHE_CHECK(dnl
Packit Service 82fcde
  whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
Packit Service 82fcde
    if (cd $srcdir; $AUTOCONF $ACFLAGS configure.ac > /dev/null 2>&1;; then
Packit Service 82fcde
      libc_cv_autoconf_works=yes
Packit Service 82fcde
    else
Packit Service 82fcde
      libc_cv_autoconf_works=no
Packit Service 82fcde
    fi])
Packit Service 82fcde
    test $libc_cv_autoconf_works = yes || AUTOCONF=no
Packit Service 82fcde
    ;;
Packit Service 82fcde
  esac
Packit Service 82fcde
  if test "x$AUTOCONF" = xno; then
Packit Service 82fcde
    aux_missing="$aux_missing autoconf"
Packit Service 82fcde
  fi
Packit Service 82fcde
else
Packit Service 82fcde
  AUTOCONF=no
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
# Check for python3 if available, or else python.
Packit Service 82fcde
AC_CHECK_PROGS(PYTHON_PROG, python3 python,no)
Packit Service 82fcde
case "x$PYTHON_PROG" in
Packit Service 82fcde
xno|x|x:) PYTHON_PROG=no ;;
Packit Service 82fcde
*) ;;
Packit Service 82fcde
esac
Packit Service 82fcde
Packit Service 82fcde
if test "x$PYTHON_PROG" = xno; then
Packit Service 82fcde
  aux_missing="$aux_missing python"
Packit Service 82fcde
else
Packit Service 82fcde
  PYTHON="$PYTHON_PROG -B"
Packit Service 82fcde
  AC_SUBST(PYTHON)
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
test -n "$critic_missing" && AC_MSG_ERROR([
Packit Service 82fcde
*** These critical programs are missing or too old:$critic_missing
Packit Service 82fcde
*** Check the INSTALL file for required versions.])
Packit Service 82fcde
Packit Service 82fcde
test -n "$aux_missing" && AC_MSG_WARN([
Packit Service 82fcde
*** These auxiliary programs are missing or incompatible versions:$aux_missing
Packit Service 82fcde
*** some features or tests will be disabled.
Packit Service 82fcde
*** Check the INSTALL file for required versions.])
Packit Service 82fcde
Packit Service 82fcde
# if using special system headers, find out the compiler's sekrit
Packit Service 82fcde
# header directory and add that to the list.  NOTE: Only does the right
Packit Service 82fcde
# thing on a system that doesn't need fixincludes.  (Not presently a problem.)
Packit Service 82fcde
if test -n "$sysheaders"; then
Packit Service 82fcde
  SYSINCLUDES=-nostdinc
Packit Service 82fcde
  for d in include include-fixed; do
Packit Service 82fcde
    i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
Packit Service 82fcde
    SYSINCLUDES="$SYSINCLUDES -isystem $i"
Packit Service 82fcde
  done
Packit Service 82fcde
  SYSINCLUDES="$SYSINCLUDES \
Packit Service 82fcde
-isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
Packit Service 82fcde
  if test -n "$CXX"; then
Packit Service 82fcde
    CXX_SYSINCLUDES=
Packit Service 82fcde
    for cxxheaders in `$CXX -v -S -x c++ /dev/null -o /dev/null 2>&1 \
Packit Service 82fcde
    | sed -n -e '1,/#include/d' -e 's/^ \(\/.*\/[cg]++\)/\1/p'`; do
Packit Service 82fcde
      test "x$cxxheaders" != x &&
Packit Service 82fcde
      CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders"
Packit Service 82fcde
    done
Packit Service 82fcde
  fi
Packit Service 82fcde
fi
Packit Service 82fcde
AC_SUBST(SYSINCLUDES)
Packit Service 82fcde
AC_SUBST(CXX_SYSINCLUDES)
Packit Service 82fcde
Packit Service 82fcde
# Obtain some C++ header file paths.  This is used to make a local
Packit Service 82fcde
# copy of those headers in Makerules.
Packit Service 82fcde
if test -n "$CXX"; then
Packit Service 82fcde
  find_cxx_header () {
Packit Service 82fcde
    echo "#include <$1>" | $CXX -M -MP -x c++ - 2>/dev/null \
Packit Service 82fcde
	 | sed -n "\,$1:,{s/:\$//;p}"
Packit Service 82fcde
  }
Packit Service 82fcde
  CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
Packit Service 82fcde
  CXX_CMATH_HEADER="$(find_cxx_header cmath)"
Packit Service 82fcde
  CXX_BITS_STD_ABS_H="$(find_cxx_header bits/std_abs.h)"
Packit Service 82fcde
fi
Packit Service 82fcde
AC_SUBST(CXX_CSTDLIB_HEADER)
Packit Service 82fcde
AC_SUBST(CXX_CMATH_HEADER)
Packit Service 82fcde
AC_SUBST(CXX_BITS_STD_ABS_H)
Packit Service 82fcde
Packit Service 82fcde
# Test if LD_LIBRARY_PATH contains the notation for the current directory
Packit Service 82fcde
# since this would lead to problems installing/building glibc.
Packit Service 82fcde
# LD_LIBRARY_PATH contains the current directory if one of the following
Packit Service 82fcde
# is true:
Packit Service 82fcde
# - one of the terminals (":" and ";") is the first or last sign
Packit Service 82fcde
# - two terminals occur directly after each other
Packit Service 82fcde
# - the path contains an element with a dot in it
Packit Service 82fcde
AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
Packit Service 82fcde
changequote(,)dnl
Packit Service 82fcde
case ${LD_LIBRARY_PATH} in
Packit Service 82fcde
  [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
Packit Service 82fcde
    ld_library_path_setting="contains current directory"
Packit Service 82fcde
    ;;
Packit Service 82fcde
  *)
Packit Service 82fcde
    ld_library_path_setting="ok"
Packit Service 82fcde
    ;;
Packit Service 82fcde
esac
Packit Service 82fcde
changequote([,])dnl
Packit Service 82fcde
AC_MSG_RESULT($ld_library_path_setting)
Packit Service 82fcde
if test "$ld_library_path_setting" != "ok"; then
Packit Service 82fcde
AC_MSG_ERROR([
Packit Service 82fcde
*** LD_LIBRARY_PATH shouldn't contain the current directory when
Packit Service 82fcde
*** building glibc. Please change the environment variable
Packit Service 82fcde
*** and run configure again.])
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
AC_PATH_PROG(BASH_SHELL, bash, no)
Packit Service 82fcde
Packit Service 82fcde
AC_PATH_PROG(PERL, perl, no)
Packit Service 82fcde
if test "$PERL" != no &&
Packit Service 82fcde
   (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
Packit Service 82fcde
  PERL=no
Packit Service 82fcde
fi
Packit Service 82fcde
AC_PATH_PROG(INSTALL_INFO, install-info, no,
Packit Service 82fcde
	     $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
Packit Service 82fcde
cat > conftest.s <
Packit Service 82fcde
.text
Packit Service 82fcde
foo:
Packit Service 82fcde
.set glibc_conftest_frobozz,foo
Packit Service 82fcde
.globl glibc_conftest_frobozz
Packit Service 82fcde
EOF
Packit Service 82fcde
# The alpha-dec-osf1 assembler gives only a warning for `.set'
Packit Service 82fcde
# (but it doesn't work), so we must do a linking check to be sure.
Packit Service 82fcde
cat > conftest1.c <<\EOF
Packit Service 82fcde
extern int glibc_conftest_frobozz;
Packit Service 82fcde
void _start() { glibc_conftest_frobozz = 1; }
Packit Service 82fcde
EOF
Packit Service 82fcde
if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
Packit Service 82fcde
	    -nostartfiles -nostdlib $no_ssp \
Packit Service 82fcde
	    -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
Packit Service 82fcde
  libc_cv_asm_set_directive=yes
Packit Service 82fcde
else
Packit Service 82fcde
  libc_cv_asm_set_directive=no
Packit Service 82fcde
fi
Packit Service 82fcde
rm -f conftest*])
Packit Service 82fcde
if test $libc_cv_asm_set_directive = yes; then
Packit Service 82fcde
  AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(linker support for protected data symbol,
Packit Service 82fcde
	       libc_cv_protected_data,
Packit Service 82fcde
	       [cat > conftest.c <
Packit Service 82fcde
		int bar __attribute__ ((visibility ("protected"))) = 1;
Packit Service 82fcde
EOF
Packit Service 82fcde
		libc_cv_protected_data=no
Packit Service 82fcde
		if AC_TRY_COMMAND(${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -o conftest.so); then
Packit Service 82fcde
		  cat > conftest.c <
Packit Service 82fcde
		  extern int bar;
Packit Service 82fcde
		  int main (void) { return bar; }
Packit Service 82fcde
EOF
Packit Service 82fcde
		  if AC_TRY_COMMAND(${CC-cc} -nostdlib -nostartfiles $no_ssp conftest.c -o conftest conftest.so); then
Packit Service 82fcde
		    libc_cv_protected_data=yes
Packit Service 82fcde
		  fi
Packit Service 82fcde
		fi
Packit Service 82fcde
		rm -f conftest.*
Packit Service 82fcde
	       ])
Packit Service 82fcde
AC_SUBST(libc_cv_protected_data)
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(linker support for INSERT in linker script,
Packit Service 82fcde
	       libc_cv_insert,
Packit Service 82fcde
	       [cat > conftest.c <
Packit Service 82fcde
		const int __attribute__ ((section(".bar"))) bar = 0x12345678;
Packit Service 82fcde
		int test (void) { return bar; }
Packit Service 82fcde
EOF
Packit Service 82fcde
		cat > conftest.t <
Packit Service 82fcde
		SECTIONS
Packit Service 82fcde
		{
Packit Service 82fcde
		  .bar : { *(.bar) }
Packit Service 82fcde
		}
Packit Service 82fcde
		INSERT AFTER .rela.dyn;
Packit Service 82fcde
EOF
Packit Service 82fcde
		libc_cv_insert=no
Packit Service 82fcde
		if AC_TRY_COMMAND([${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -Wl,-T,conftest.t -o conftest.so]); then
Packit Service 82fcde
		  libc_cv_insert=yes
Packit Service 82fcde
		fi
Packit Service 82fcde
		rm -f conftest.*
Packit Service 82fcde
	       ])
Packit Service 82fcde
AC_SUBST(libc_cv_insert)
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(for broken __attribute__((alias())),
Packit Service 82fcde
	       libc_cv_broken_alias_attribute,
Packit Service 82fcde
	       [cat > conftest.c <
Packit Service 82fcde
	       extern int foo (int x) __asm ("xyzzy");
Packit Service 82fcde
	       int bar (int x) { return x; }
Packit Service 82fcde
	       extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
Packit Service 82fcde
	       extern int dfoo;
Packit Service 82fcde
	       extern __typeof (dfoo) dfoo __asm ("abccb");
Packit Service 82fcde
	       int dfoo = 1;
Packit Service 82fcde
EOF
Packit Service 82fcde
	       libc_cv_broken_alias_attribute=yes
Packit Service 82fcde
	       if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
Packit Service 82fcde
		 if grep 'xyzzy' conftest.s >/dev/null &&
Packit Service 82fcde
		    grep 'abccb' conftest.s >/dev/null; then
Packit Service 82fcde
		   libc_cv_broken_alias_attribute=no
Packit Service 82fcde
		 fi
Packit Service 82fcde
	       fi
Packit Service 82fcde
	       rm -f conftest.c conftest.s
Packit Service 82fcde
	       ])
Packit Service 82fcde
if test $libc_cv_broken_alias_attribute = yes; then
Packit Service 82fcde
  AC_MSG_ERROR(working alias attribute support required)
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
Packit Service 82fcde
	       libc_cv_have_sdata_section,
Packit Service 82fcde
	       [echo "int i;" > conftest.c
Packit Service 82fcde
		libc_cv_have_sdata_section=no
Packit Service 82fcde
		if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
Packit Service 82fcde
		   | grep '\.sdata' >/dev/null; then
Packit Service 82fcde
		  libc_cv_have_sdata_section=yes
Packit Service 82fcde
		fi
Packit Service 82fcde
		rm -f conftest.c conftest.so
Packit Service 82fcde
	       ])
Packit Service 82fcde
if test $libc_cv_have_sdata_section = yes; then
Packit Service 82fcde
  AC_DEFINE(HAVE_SDATA_SECTION)
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(whether to use .ctors/.dtors header and trailer,
Packit Service 82fcde
	       libc_cv_ctors_header, [dnl
Packit Service 82fcde
  libc_cv_ctors_header=yes
Packit Service 82fcde
  LIBC_TRY_LINK_STATIC([
Packit Service 82fcde
__attribute__ ((constructor)) void ctor (void) { asm (""); }
Packit Service 82fcde
__attribute__ ((destructor))  void dtor (void) { asm (""); }
Packit Service 82fcde
],
Packit Service 82fcde
	      [dnl
Packit Service 82fcde
      AS_IF([$READELF -WS conftest$ac_exeext | $AWK '
Packit Service 82fcde
	{ gsub(/\@<:@ */, "@<:@") }
Packit Service 82fcde
	$2 == ".ctors" || $2 == ".dtors" {
Packit Service 82fcde
	  size = strtonum("0x" $6)
Packit Service 82fcde
	  align = strtonum("0x" $NF)
Packit Service 82fcde
	  seen@<:@$2@:>@ = 1
Packit Service 82fcde
	  stub@<:@$2@:>@ = size == align * 2
Packit Service 82fcde
	}
Packit Service 82fcde
	END {
Packit Service 82fcde
	  ctors_ok = !seen@<:@".ctors"@:>@ || stub@<:@".ctors"@:>@
Packit Service 82fcde
	  dtors_ok = !seen@<:@".dtors"@:>@ || stub@<:@".dtors"@:>@
Packit Service 82fcde
	  exit ((ctors_ok && dtors_ok) ? 0 : 1)
Packit Service 82fcde
	}
Packit Service 82fcde
      '], [libc_cv_ctors_header=no])
Packit Service 82fcde
    ], [dnl
Packit Service 82fcde
      AC_MSG_ERROR([missing __attribute__ ((constructor)) support??])
Packit Service 82fcde
    ])
Packit Service 82fcde
])
Packit Service 82fcde
if test $libc_cv_ctors_header = no; then
Packit Service 82fcde
  AC_DEFINE(NO_CTORS_DTORS_SECTIONS)
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(for libunwind-support in compiler,
Packit Service 82fcde
	       libc_cv_cc_with_libunwind, [
Packit Service 82fcde
  cat > conftest.c <
Packit Service 82fcde
int main (void) { return 0; }
Packit Service 82fcde
EOF
Packit Service 82fcde
  if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
Packit Service 82fcde
     conftest.c -v 2>&1 >/dev/null | grep ' -lunwind ' >/dev/null; then
Packit Service 82fcde
    libc_cv_cc_with_libunwind=yes
Packit Service 82fcde
  else
Packit Service 82fcde
    libc_cv_cc_with_libunwind=no
Packit Service 82fcde
  fi
Packit Service 82fcde
  rm -f conftest*])
Packit Service 82fcde
AC_SUBST(libc_cv_cc_with_libunwind)
Packit Service 82fcde
if test $libc_cv_cc_with_libunwind = yes; then
Packit Service 82fcde
  AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
ASFLAGS_config=
Packit Service 82fcde
AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
Packit Service 82fcde
	       libc_cv_as_noexecstack, [dnl
Packit Service 82fcde
cat > conftest.c <
Packit Service 82fcde
void foo (void) { }
Packit Service 82fcde
EOF
Packit Service 82fcde
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
Packit Service 82fcde
		   -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
Packit Service 82fcde
   && grep .note.GNU-stack conftest.s >/dev/null \
Packit Service 82fcde
   && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
Packit Service 82fcde
		      -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
Packit Service 82fcde
then
Packit Service 82fcde
  libc_cv_as_noexecstack=yes
Packit Service 82fcde
else
Packit Service 82fcde
  libc_cv_as_noexecstack=no
Packit Service 82fcde
fi
Packit Service 82fcde
rm -f conftest*])
Packit Service 82fcde
if test $libc_cv_as_noexecstack = yes; then
Packit Service 82fcde
  ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
Packit Service 82fcde
fi
Packit Service 82fcde
AC_SUBST(ASFLAGS_config)
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(for -z combreloc,
Packit Service 82fcde
	       libc_cv_z_combreloc, [dnl
Packit Service 82fcde
cat > conftest.c <
Packit Service 82fcde
extern int bar (int);
Packit Service 82fcde
extern int mumble;
Packit Service 82fcde
int foo (void) { return bar (mumble); }
Packit Service 82fcde
EOF
Packit Service 82fcde
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
Packit Service 82fcde
			-fPIC -shared $no_ssp -o conftest.so conftest.c
Packit Service 82fcde
			-nostdlib -nostartfiles
Packit Service 82fcde
			-Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
Packit Service 82fcde
then
Packit Service 82fcde
dnl The following test is a bit weak.  We must use a tool which can test
Packit Service 82fcde
dnl cross-platform since the gcc used can be a cross compiler.  Without
Packit Service 82fcde
dnl introducing new options this is not easily doable.  Instead use a tool
Packit Service 82fcde
dnl which always is cross-platform: readelf.  To detect whether -z combreloc
Packit Service 82fcde
dnl look for a section named .rel.dyn or .rela.dyn.
Packit Service 82fcde
  if $READELF -S conftest.so | grep -E '.rela?.dyn' > /dev/null; then
Packit Service 82fcde
    libc_cv_z_combreloc=yes
Packit Service 82fcde
  else
Packit Service 82fcde
    libc_cv_z_combreloc=no
Packit Service 82fcde
  fi
Packit Service 82fcde
else
Packit Service 82fcde
  libc_cv_z_combreloc=no
Packit Service 82fcde
fi
Packit Service 82fcde
rm -f conftest*])
Packit Service 82fcde
if test "$libc_cv_z_combreloc" = yes; then
Packit Service 82fcde
  AC_DEFINE(HAVE_Z_COMBRELOC)
Packit Service 82fcde
fi
Packit Service 82fcde
AC_SUBST(libc_cv_z_combreloc)
Packit Service 82fcde
Packit Service 82fcde
LIBC_LINKER_FEATURE([-z execstack], [-Wl,-z,execstack],
Packit Service 82fcde
		    [libc_cv_z_execstack=yes], [libc_cv_z_execstack=no])
Packit Service 82fcde
AC_SUBST(libc_cv_z_execstack)
Packit Service 82fcde
Packit Service 82fcde
LIBC_LINKER_FEATURE([--no-dynamic-linker],
Packit Service 82fcde
		    [-Wl,--no-dynamic-linker],
Packit Service 82fcde
		    [libc_cv_no_dynamic_linker=yes],
Packit Service 82fcde
		    [libc_cv_no_dynamic_linker=no])
Packit Service 82fcde
LIBC_CONFIG_VAR([have-no-dynamic-linker], [$libc_cv_no_dynamic_linker])
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(for -static-pie, libc_cv_static_pie, [dnl
Packit Service 82fcde
LIBC_TRY_CC_OPTION([-static-pie],
Packit Service 82fcde
		   [libc_cv_static_pie=yes],
Packit Service 82fcde
		   [libc_cv_static_pie=no])
Packit Service 82fcde
])
Packit Service 82fcde
LIBC_CONFIG_VAR([have-static-pie], [$libc_cv_static_pie])
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
Packit Service 82fcde
LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no])
Packit Service 82fcde
])
Packit Service 82fcde
Packit Service 82fcde
AC_SUBST(libc_cv_fpie)
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(for --hash-style option,
Packit Service 82fcde
	       libc_cv_hashstyle, [dnl
Packit Service 82fcde
cat > conftest.c <
Packit Service 82fcde
int _start (void) { return 42; }
Packit Service 82fcde
EOF
Packit Service 82fcde
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
Packit Service 82fcde
			    -fPIC -shared -o conftest.so conftest.c
Packit Service 82fcde
			    -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
Packit Service 82fcde
then
Packit Service 82fcde
  libc_cv_hashstyle=yes
Packit Service 82fcde
else
Packit Service 82fcde
  libc_cv_hashstyle=no
Packit Service 82fcde
fi
Packit Service 82fcde
rm -f conftest*])
Packit Service 82fcde
AC_SUBST(libc_cv_hashstyle)
Packit Service 82fcde
Packit Service 82fcde
# The linker's default -shared behavior is good enough if it
Packit Service 82fcde
# does these things that our custom linker scripts ensure that
Packit Service 82fcde
# all allocated NOTE sections come first.
Packit Service 82fcde
if test "$use_default_link" = default; then
Packit Service 82fcde
  AC_CACHE_CHECK([for sufficient default -shared layout],
Packit Service 82fcde
		  libc_cv_use_default_link, [dnl
Packit Service 82fcde
  libc_cv_use_default_link=no
Packit Service 82fcde
  cat > conftest.s <<\EOF
Packit Service 82fcde
	  .section .note.a,"a",%note
Packit Service 82fcde
	  .balign 4
Packit Service 82fcde
	  .long 4,4,9
Packit Service 82fcde
	  .string "GNU"
Packit Service 82fcde
	  .string "foo"
Packit Service 82fcde
	  .section .note.b,"a",%note
Packit Service 82fcde
	  .balign 4
Packit Service 82fcde
	  .long 4,4,9
Packit Service 82fcde
	  .string "GNU"
Packit Service 82fcde
	  .string "bar"
Packit Service 82fcde
EOF
Packit Service 82fcde
  if AC_TRY_COMMAND([dnl
Packit Service 82fcde
  ${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD]) &&
Packit Service 82fcde
       ac_try=`$READELF -S conftest.so | sed -n \
Packit Service 82fcde
	 ['${x;p;}
Packit Service 82fcde
	  s/^ *\[ *[1-9][0-9]*\]  *\([^ ][^ ]*\)  *\([^ ][^ ]*\) .*$/\2 \1/
Packit Service 82fcde
	  t a
Packit Service 82fcde
	  b
Packit Service 82fcde
	  : a
Packit Service 82fcde
	  H']`
Packit Service 82fcde
  then
Packit Service 82fcde
    libc_seen_a=no libc_seen_b=no
Packit Service 82fcde
    set -- $ac_try
Packit Service 82fcde
    while test $# -ge 2 -a "$1" = NOTE; do
Packit Service 82fcde
      case "$2" in
Packit Service 82fcde
      .note.a) libc_seen_a=yes ;;
Packit Service 82fcde
      .note.b) libc_seen_b=yes ;;
Packit Service 82fcde
      esac
Packit Service 82fcde
      shift 2
Packit Service 82fcde
    done
Packit Service 82fcde
    case "$libc_seen_a$libc_seen_b" in
Packit Service 82fcde
    yesyes)
Packit Service 82fcde
      libc_cv_use_default_link=yes
Packit Service 82fcde
      ;;
Packit Service 82fcde
    *)
Packit Service 82fcde
      echo >&AS_MESSAGE_LOG_FD "\
Packit Service 82fcde
$libc_seen_a$libc_seen_b from:
Packit Service 82fcde
$ac_try"
Packit Service 82fcde
      ;;
Packit Service 82fcde
    esac
Packit Service 82fcde
  fi
Packit Service 82fcde
  rm -f conftest*])
Packit Service 82fcde
  use_default_link=$libc_cv_use_default_link
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(for GLOB_DAT reloc,
Packit Service 82fcde
	       libc_cv_has_glob_dat, [dnl
Packit Service 82fcde
cat > conftest.c <
Packit Service 82fcde
extern int mumble;
Packit Service 82fcde
int foo (void) { return mumble; }
Packit Service 82fcde
EOF
Packit Service 82fcde
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
Packit Service 82fcde
			-fPIC -shared -o conftest.so conftest.c
Packit Service 82fcde
			-nostdlib -nostartfiles $no_ssp
Packit Service 82fcde
			1>&AS_MESSAGE_LOG_FD])
Packit Service 82fcde
then
Packit Service 82fcde
dnl look for GLOB_DAT relocation.
Packit Service 82fcde
  if $READELF -rW conftest.so | grep '_GLOB_DAT' > /dev/null; then
Packit Service 82fcde
    libc_cv_has_glob_dat=yes
Packit Service 82fcde
  else
Packit Service 82fcde
    libc_cv_has_glob_dat=no
Packit Service 82fcde
  fi
Packit Service 82fcde
else
Packit Service 82fcde
  libc_cv_has_glob_dat=no
Packit Service 82fcde
fi
Packit Service 82fcde
rm -f conftest*])
Packit Service 82fcde
AC_SUBST(libc_cv_has_glob_dat)
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(linker output format, libc_cv_output_format, [dnl
Packit Service 82fcde
if libc_cv_output_format=`
Packit Service 82fcde
${CC-cc} -nostartfiles -nostdlib $no_ssp -Wl,--print-output-format 2>&AS_MESSAGE_LOG_FD`
Packit Service 82fcde
then
Packit Service 82fcde
  :
Packit Service 82fcde
else
Packit Service 82fcde
  libc_cv_output_format=
Packit Service 82fcde
fi
Packit Service 82fcde
test -n "$libc_cv_output_format" || libc_cv_output_format=unknown])
Packit Service 82fcde
AC_SUBST(libc_cv_output_format)
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl
Packit Service 82fcde
cat > conftest.c <
Packit Service 82fcde
int foo;
Packit Service 82fcde
EOF
Packit Service 82fcde
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-anchors
Packit Service 82fcde
			    conftest.c 1>&AS_MESSAGE_LOG_FD])
Packit Service 82fcde
then
Packit Service 82fcde
  libc_cv_fno_toplevel_reorder=yes
Packit Service 82fcde
else
Packit Service 82fcde
  libc_cv_fno_toplevel_reorder=no
Packit Service 82fcde
fi
Packit Service 82fcde
rm -f conftest*])
Packit Service 82fcde
if test $libc_cv_fno_toplevel_reorder = yes; then
Packit Service 82fcde
  fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
Packit Service 82fcde
else
Packit Service 82fcde
  fno_unit_at_a_time=-fno-unit-at-a-time
Packit Service 82fcde
fi
Packit Service 82fcde
AC_SUBST(fno_unit_at_a_time)
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK([for -mtls-dialect=gnu2], libc_cv_mtls_dialect_gnu2,
Packit Service 82fcde
[dnl
Packit Service 82fcde
cat > conftest.c <
Packit Service 82fcde
__thread int i;
Packit Service 82fcde
void foo (void)
Packit Service 82fcde
{
Packit Service 82fcde
  i = 10;
Packit Service 82fcde
}
Packit Service 82fcde
EOF
Packit Service 82fcde
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fPIC -mtls-dialect=gnu2
Packit Service 82fcde
		   conftest.c 1>&AS_MESSAGE_LOG_FD])
Packit Service 82fcde
then
Packit Service 82fcde
  libc_cv_mtls_dialect_gnu2=yes
Packit Service 82fcde
else
Packit Service 82fcde
  libc_cv_mtls_dialect_gnu2=no
Packit Service 82fcde
fi
Packit Service 82fcde
rm -f conftest*])
Packit Service 82fcde
AC_SUBST(libc_cv_mtls_dialect_gnu2)
Packit Service 82fcde
LIBC_CONFIG_VAR([have-mtls-dialect-gnu2], [$libc_cv_mtls_dialect_gnu2])
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(whether cc puts quotes around section names,
Packit Service 82fcde
	       libc_cv_have_section_quotes,
Packit Service 82fcde
	       [cat > conftest.c <
Packit Service 82fcde
		static const int foo
Packit Service 82fcde
		__attribute__ ((section ("bar"))) = 1;
Packit Service 82fcde
EOF
Packit Service 82fcde
		if ${CC-cc} -S conftest.c -o conftest.s; then
Packit Service 82fcde
		  if grep '\.section.*"bar"' conftest.s >/dev/null; then
Packit Service 82fcde
		    libc_cv_have_section_quotes=yes
Packit Service 82fcde
		  else
Packit Service 82fcde
		    libc_cv_have_section_quotes=no
Packit Service 82fcde
		  fi
Packit Service 82fcde
		else
Packit Service 82fcde
		  libc_cv_have_section_quotes=unknown
Packit Service 82fcde
		fi
Packit Service 82fcde
		rm -f conftest.{c,s}
Packit Service 82fcde
		])
Packit Service 82fcde
if test $libc_cv_have_section_quotes = yes; then
Packit Service 82fcde
  AC_DEFINE(HAVE_SECTION_QUOTES)
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
Packit Service 82fcde
cat > conftest.c <<\EOF
Packit Service 82fcde
void zero (void *x)
Packit Service 82fcde
{
Packit Service 82fcde
  __builtin_memset (x, 0, 1000);
Packit Service 82fcde
}
Packit Service 82fcde
EOF
Packit Service 82fcde
dnl
Packit Service 82fcde
if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | grep -F "memset" > /dev/null]);
Packit Service 82fcde
then
Packit Service 82fcde
  libc_cv_gcc_builtin_memset=no
Packit Service 82fcde
else
Packit Service 82fcde
  libc_cv_gcc_builtin_memset=yes
Packit Service 82fcde
fi
Packit Service 82fcde
rm -f conftest* ])
Packit Service 82fcde
if test "$libc_cv_gcc_builtin_memset" = yes ; then
Packit Service 82fcde
  AC_DEFINE(HAVE_BUILTIN_MEMSET)
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
Packit Service 82fcde
cat > conftest.c <<\EOF
Packit Service 82fcde
extern char *strstr (const char *, const char *) __asm ("my_strstr");
Packit Service 82fcde
char *foo (const char *a, const char *b)
Packit Service 82fcde
{
Packit Service 82fcde
  return __builtin_strstr (a, b);
Packit Service 82fcde
}
Packit Service 82fcde
EOF
Packit Service 82fcde
dnl
Packit Service 82fcde
if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | grep -F "my_strstr" > /dev/null]);
Packit Service 82fcde
then
Packit Service 82fcde
  libc_cv_gcc_builtin_redirection=yes
Packit Service 82fcde
else
Packit Service 82fcde
  libc_cv_gcc_builtin_redirection=no
Packit Service 82fcde
fi
Packit Service 82fcde
rm -f conftest* ])
Packit Service 82fcde
if test "$libc_cv_gcc_builtin_redirection" = no; then
Packit Service 82fcde
  AC_MSG_ERROR([support for the symbol redirection needed])
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
dnl Determine how to disable generation of FMA instructions.
Packit Service 82fcde
AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
Packit Service 82fcde
	       libc_cv_cc_nofma, [dnl
Packit Service 82fcde
libc_cv_cc_nofma=
Packit Service 82fcde
for opt in -ffp-contract=off -mno-fused-madd; do
Packit Service 82fcde
  LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
Packit Service 82fcde
done])
Packit Service 82fcde
AC_SUBST(libc_cv_cc_nofma)
Packit Service 82fcde
Packit Service 82fcde
if test -n "$submachine"; then
Packit Service 82fcde
  AC_CACHE_CHECK([for compiler option for CPU variant],
Packit Service 82fcde
		 libc_cv_cc_submachine, [dnl
Packit Service 82fcde
  libc_cv_cc_submachine=no
Packit Service 82fcde
  for opt in "-march=$submachine" "-mcpu=$submachine"; do
Packit Service 82fcde
    LIBC_TRY_CC_OPTION([$opt], [
Packit Service 82fcde
      libc_cv_cc_submachine="$opt"
Packit Service 82fcde
      break], [])
Packit Service 82fcde
  done])
Packit Service 82fcde
  if test "x$libc_cv_cc_submachine" = xno; then
Packit Service 82fcde
    AC_MSG_ERROR([${CC-cc} does not support $submachine])
Packit Service 82fcde
  fi
Packit Service 82fcde
fi
Packit Service 82fcde
AC_SUBST(libc_cv_cc_submachine)
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(if $CC accepts -fno-tree-loop-distribute-patterns with \
Packit Service 82fcde
__attribute__ ((__optimize__)), libc_cv_cc_loop_to_function, [dnl
Packit Service 82fcde
cat > conftest.c <
Packit Service 82fcde
void
Packit Service 82fcde
__attribute__ ((__optimize__ ("-fno-tree-loop-distribute-patterns")))
Packit Service 82fcde
foo (void) {}
Packit Service 82fcde
EOF
Packit Service 82fcde
libc_cv_cc_loop_to_function=no
Packit Service 82fcde
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c])
Packit Service 82fcde
then
Packit Service 82fcde
  libc_cv_cc_loop_to_function=yes
Packit Service 82fcde
fi
Packit Service 82fcde
rm -f conftest*])
Packit Service 82fcde
if test $libc_cv_cc_loop_to_function = yes; then
Packit Service 82fcde
  AC_DEFINE(HAVE_CC_INHIBIT_LOOP_TO_LIBCALL)
Packit Service 82fcde
fi
Packit Service 82fcde
AC_SUBST(libc_cv_cc_loop_to_function)
Packit Service 82fcde
Packit Service 82fcde
dnl Check whether we have the gd library available.
Packit Service 82fcde
AC_MSG_CHECKING(for libgd)
Packit Service 82fcde
if test "$with_gd" != "no"; then
Packit Service 82fcde
  old_CFLAGS="$CFLAGS"
Packit Service 82fcde
  CFLAGS="$CFLAGS $libgd_include"
Packit Service 82fcde
  old_LDFLAGS="$LDFLAGS"
Packit Service 82fcde
  LDFLAGS="$LDFLAGS $libgd_ldflags"
Packit Service 82fcde
  old_LIBS="$LIBS"
Packit Service 82fcde
  LIBS="$LIBS -lgd -lpng -lz -lm"
Packit Service 82fcde
  AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
Packit Service 82fcde
  CFLAGS="$old_CFLAGS"
Packit Service 82fcde
  LDFLAGS="$old_LDFLAGS"
Packit Service 82fcde
  LIBS="$old_LIBS"
Packit Service 82fcde
else
Packit Service 82fcde
  LIBGD=no
Packit Service 82fcde
fi
Packit Service 82fcde
AC_MSG_RESULT($LIBGD)
Packit Service 82fcde
AC_SUBST(LIBGD)
Packit Service 82fcde
Packit Service 82fcde
# SELinux detection
Packit Service 82fcde
if test x$with_selinux = xno ; then
Packit Service 82fcde
  have_selinux=no;
Packit Service 82fcde
else
Packit Service 82fcde
  # See if we have the SELinux library
Packit Service 82fcde
  AC_CHECK_LIB(selinux, is_selinux_enabled,
Packit Service 82fcde
	       have_selinux=yes, have_selinux=no)
Packit Service 82fcde
  if test x$with_selinux = xyes ; then
Packit Service 82fcde
    if test x$have_selinux = xno ; then
Packit Service 82fcde
      AC_MSG_ERROR([SELinux explicitly required, but SELinux library not found])
Packit Service 82fcde
    fi
Packit Service 82fcde
  fi
Packit Service 82fcde
fi
Packit Service 82fcde
# Check if we're building with SELinux support.
Packit Service 82fcde
if test "x$have_selinux" = xyes; then
Packit Service 82fcde
  AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
Packit Service 82fcde
Packit Service 82fcde
  # See if we have the libaudit library
Packit Service 82fcde
  AC_CHECK_LIB(audit, audit_log_user_avc_message,
Packit Service 82fcde
	       have_libaudit=yes, have_libaudit=no)
Packit Service 82fcde
  if test "x$have_libaudit" = xyes; then
Packit Service 82fcde
    AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
Packit Service 82fcde
  fi
Packit Service 82fcde
  AC_SUBST(have_libaudit)
Packit Service 82fcde
Packit Service 82fcde
  # See if we have the libcap library
Packit Service 82fcde
  AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
Packit Service 82fcde
  if test "x$have_libcap" = xyes; then
Packit Service 82fcde
    AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
Packit Service 82fcde
  fi
Packit Service 82fcde
  AC_SUBST(have_libcap)
Packit Service 82fcde
fi
Packit Service 82fcde
AC_SUBST(have_selinux)
Packit Service 82fcde
Packit Service 82fcde
CPPUNDEFS=
Packit Service 82fcde
dnl Check for silly hacked compilers predefining _FORTIFY_SOURCE.
Packit Service 82fcde
dnl Since we are building the implementations of the fortified functions here,
Packit Service 82fcde
dnl having the macro defined interacts very badly.
Packit Service 82fcde
AC_CACHE_CHECK([for _FORTIFY_SOURCE predefine], libc_cv_predef_fortify_source,
Packit Service 82fcde
[AC_TRY_COMPILE([], [
Packit Service 82fcde
#ifdef _FORTIFY_SOURCE
Packit Service 82fcde
# error bogon
Packit Service 82fcde
#endif],
Packit Service 82fcde
		[libc_cv_predef_fortify_source=no],
Packit Service 82fcde
		[libc_cv_predef_fortify_source=yes])])
Packit Service 82fcde
if test $libc_cv_predef_fortify_source = yes; then
Packit Service 82fcde
  CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE"
Packit Service 82fcde
fi
Packit Service 82fcde
AC_SUBST(CPPUNDEFS)
Packit Service 82fcde
Packit Service 82fcde
# Some linkers on some architectures support __ehdr_start but with
Packit Service 82fcde
# bugs.  Make sure usage of it does not create relocations in the
Packit Service 82fcde
# output (as the linker should resolve them all for us).
Packit Service 82fcde
AC_CACHE_CHECK([whether the linker provides working __ehdr_start],
Packit Service 82fcde
	       libc_cv_ehdr_start, [
Packit Service 82fcde
old_CFLAGS="$CFLAGS"
Packit Service 82fcde
old_LDFLAGS="$LDFLAGS"
Packit Service 82fcde
old_LIBS="$LIBS"
Packit Service 82fcde
CFLAGS="$CFLAGS -fPIC"
Packit Service 82fcde
LDFLAGS="$LDFLAGS -nostdlib -nostartfiles -shared $no_ssp"
Packit Service 82fcde
LIBS=
Packit Service 82fcde
AC_LINK_IFELSE([AC_LANG_SOURCE([
Packit Service 82fcde
typedef struct {
Packit Service 82fcde
  char foo;
Packit Service 82fcde
  long val;
Packit Service 82fcde
} Ehdr;
Packit Service 82fcde
extern const Ehdr __ehdr_start __attribute__ ((visibility ("hidden")));
Packit Service 82fcde
long ehdr (void) { return __ehdr_start.val; }
Packit Service 82fcde
])],
Packit Service 82fcde
	       [if $READELF -r conftest | grep -F __ehdr_start >/dev/null; then
Packit Service 82fcde
		  libc_cv_ehdr_start=broken
Packit Service 82fcde
		else
Packit Service 82fcde
		  libc_cv_ehdr_start=yes
Packit Service 82fcde
		fi], [libc_cv_ehdr_start=no])
Packit Service 82fcde
CFLAGS="$old_CFLAGS"
Packit Service 82fcde
LDFLAGS="$old_LDFLAGS"
Packit Service 82fcde
LIBS="$old_LIBS"
Packit Service 82fcde
])
Packit Service 82fcde
if test "$libc_cv_ehdr_start" = yes; then
Packit Service 82fcde
  AC_DEFINE([HAVE_EHDR_START])
Packit Service 82fcde
elif test "$libc_cv_ehdr_start" = broken; then
Packit Service 82fcde
  AC_MSG_WARN([linker is broken -- you should upgrade])
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK(for __builtin_trap with no external dependencies,
Packit Service 82fcde
	       libc_cv_builtin_trap, [dnl
Packit Service 82fcde
libc_cv_builtin_trap=no
Packit Service 82fcde
AC_TRY_COMPILE([], [__builtin_trap ()], [
Packit Service 82fcde
libc_undefs=`$NM -u conftest.o |
Packit Service 82fcde
  LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \
Packit Service 82fcde
    2>&AS_MESSAGE_LOG_FD` || {
Packit Service 82fcde
  AC_MSG_ERROR([confusing output from $NM -u])
Packit Service 82fcde
}
Packit Service 82fcde
echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'"
Packit Service 82fcde
if test -z "$libc_undefs"; then
Packit Service 82fcde
  libc_cv_builtin_trap=yes
Packit Service 82fcde
fi])])
Packit Service 82fcde
if test $libc_cv_builtin_trap = yes; then
Packit Service 82fcde
  AC_DEFINE([HAVE_BUILTIN_TRAP])
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
dnl C++ feature tests.
Packit Service 82fcde
AC_LANG_PUSH([C++])
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK([whether the C++ compiler supports thread_local],
Packit Service 82fcde
	       libc_cv_cxx_thread_local, [
Packit Service 82fcde
old_CXXFLAGS="$CXXFLAGS"
Packit Service 82fcde
CXXFLAGS="$CXXFLAGS -std=gnu++11"
Packit Service 82fcde
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
Packit Service 82fcde
#include <thread>
Packit Service 82fcde
Packit Service 82fcde
// Compiler support.
Packit Service 82fcde
struct S
Packit Service 82fcde
{
Packit Service 82fcde
  S ();
Packit Service 82fcde
  ~S ();
Packit Service 82fcde
};
Packit Service 82fcde
thread_local S s;
Packit Service 82fcde
S * get () { return &s; }
Packit Service 82fcde
Packit Service 82fcde
// libstdc++ support.
Packit Service 82fcde
#ifndef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL
Packit Service 82fcde
#error __cxa_thread_atexit_impl not supported
Packit Service 82fcde
#endif
Packit Service 82fcde
])],
Packit Service 82fcde
	       [libc_cv_cxx_thread_local=yes],
Packit Service 82fcde
	       [libc_cv_cxx_thread_local=no])
Packit Service 82fcde
CXXFLAGS="$old_CXXFLAGS"
Packit Service 82fcde
])
Packit Service 82fcde
AC_SUBST(libc_cv_cxx_thread_local)
Packit Service 82fcde
Packit Service 82fcde
AC_LANG_POP([C++])
Packit Service 82fcde
dnl End of C++ feature tests.
Packit Service 82fcde
Packit Service 82fcde
### End of automated tests.
Packit Service 82fcde
### Now run sysdeps configure fragments.
Packit Service 82fcde
Packit Service 82fcde
# They also can set these variables.
Packit Service 82fcde
use_ldconfig=no
Packit Service 82fcde
ldd_rewrite_script=no
Packit Service 82fcde
libc_cv_sysconfdir=$sysconfdir
Packit Service 82fcde
libc_cv_localstatedir=$localstatedir
Packit Service 82fcde
libc_cv_gcc_unwind_find_fde=no
Packit Service 82fcde
libc_cv_idn=no
Packit Service 82fcde
Packit Service 82fcde
# Iterate over all the sysdep directories we will use, running their
Packit Service 82fcde
# configure fragments.
Packit Service 82fcde
for dir in $sysnames; do
Packit Service 82fcde
  case $dir in
Packit Service 82fcde
    /*) dest=$dir ;;
Packit Service 82fcde
    *)  dest=$srcdir/$dir ;;
Packit Service 82fcde
  esac
Packit Service 82fcde
  if test -r $dest/configure; then
Packit Service 82fcde
    AC_MSG_RESULT(running configure fragment for $dir)
Packit Service 82fcde
    . $dest/configure
Packit Service 82fcde
  fi
Packit Service 82fcde
done
Packit Service 82fcde
Packit Service 82fcde
if test x"$build_mathvec" = xnotset; then
Packit Service 82fcde
  build_mathvec=no
Packit Service 82fcde
fi
Packit Service 82fcde
LIBC_CONFIG_VAR([build-mathvec], [$build_mathvec])
Packit Service 82fcde
Packit Service 82fcde
AC_SUBST(libc_extra_cflags)
Packit Service 82fcde
AC_SUBST(libc_extra_cppflags)
Packit Service 82fcde
Packit Service 82fcde
if test x$libc_cv_gcc_unwind_find_fde = xyes; then
Packit Service 82fcde
  AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
Packit Service 82fcde
fi
Packit Service 82fcde
AC_SUBST(libc_cv_gcc_unwind_find_fde)
Packit Service 82fcde
Packit Service 82fcde
# A sysdeps configure fragment can reset this if IFUNC is not actually
Packit Service 82fcde
# usable even though the assembler knows how to generate the symbol type.
Packit Service 82fcde
if test x"$libc_cv_ld_gnu_indirect_function" = xyes; then
Packit Service 82fcde
  AC_DEFINE(HAVE_IFUNC)
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
if test x"$libc_cv_gcc_indirect_function" = xyes; then
Packit Service 82fcde
  AC_DEFINE(HAVE_GCC_IFUNC)
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
# This is far from the AC_ARG_ENABLE that sets it so that a sysdeps
Packit Service 82fcde
# configure fragment can override the value to prevent this AC_DEFINE.
Packit Service 82fcde
AC_SUBST(use_nscd)
Packit Service 82fcde
if test "x$use_nscd" != xno; then
Packit Service 82fcde
  AC_DEFINE([USE_NSCD])
Packit Service 82fcde
fi
Packit Service 82fcde
if test "x$build_nscd" = xdefault; then
Packit Service 82fcde
  build_nscd=$use_nscd
Packit Service 82fcde
fi
Packit Service 82fcde
Packit Service 82fcde
AC_SUBST(libc_cv_slibdir)
Packit Service 82fcde
AC_SUBST(libc_cv_rtlddir)
Packit Service 82fcde
AC_SUBST(libc_cv_complocaledir)
Packit Service 82fcde
AC_SUBST(libc_cv_sysconfdir)
Packit Service 82fcde
AC_SUBST(libc_cv_localstatedir)
Packit Service 82fcde
AC_SUBST(libc_cv_rootsbindir)
Packit Service 82fcde
Packit Service 82fcde
if test x$use_ldconfig = xyes; then
Packit Service 82fcde
  AC_DEFINE(USE_LDCONFIG)
Packit Service 82fcde
fi
Packit Service 82fcde
AC_SUBST(use_ldconfig)
Packit Service 82fcde
AC_SUBST(ldd_rewrite_script)
Packit Service 82fcde
Packit Service 82fcde
AC_SUBST(static)
Packit Service 82fcde
AC_SUBST(shared)
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
Packit Service 82fcde
[libc_cv_pic_default=yes
Packit Service 82fcde
cat > conftest.c <
Packit Service 82fcde
#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
Packit Service 82fcde
# error PIC is default.
Packit Service 82fcde
#endif
Packit Service 82fcde
EOF
Packit Service 82fcde
if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
Packit Service 82fcde
  libc_cv_pic_default=no
Packit Service 82fcde
fi
Packit Service 82fcde
rm -f conftest.*])
Packit Service 82fcde
AC_SUBST(libc_cv_pic_default)
Packit Service 82fcde
Packit Service 82fcde
AC_CACHE_CHECK([whether -fPIE is default], libc_cv_cc_pie_default,
Packit Service 82fcde
[libc_cv_cc_pie_default=yes
Packit Service 82fcde
cat > conftest.c <
Packit Service 82fcde
#if defined __PIE__ || defined __pie__ || defined PIE || defined pie
Packit Service 82fcde
# error PIE is default.
Packit Service 82fcde
#endif
Packit Service 82fcde
EOF
Packit Service 82fcde
if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
Packit Service 82fcde
  libc_cv_cc_pie_default=no
Packit Service 82fcde
fi
Packit Service 82fcde
rm -f conftest.*])
Packit Service 82fcde
libc_cv_pie_default=$libc_cv_cc_pie_default
Packit Service 82fcde
AC_SUBST(libc_cv_cc_pie_default)
Packit Service 82fcde
AC_SUBST(libc_cv_pie_default)
Packit Service 82fcde
Packit Service 82fcde
# Set the `multidir' variable by grabbing the variable from the compiler.
Packit Service 82fcde
# We do it once and save the result in a generated makefile.
Packit Service 82fcde
libc_cv_multidir=`${CC-cc} $CFLAGS $CPPFLAGS -print-multi-directory`
Packit Service 82fcde
AC_SUBST(libc_cv_multidir)
Packit Service 82fcde
Packit Service 82fcde
if test "$static_pie" = yes; then
Packit Service 82fcde
  # The linker must support --no-dynamic-linker.
Packit Service 82fcde
  if test "$libc_cv_no_dynamic_linker" != yes; then
Packit Service 82fcde
    AC_MSG_ERROR([linker support for --no-dynamic-linker needed])
Packit Service 82fcde
  fi
Packit Service 82fcde
  # Default to PIE.
Packit Service 82fcde
  libc_cv_pie_default=yes
Packit Service 82fcde
  AC_DEFINE(ENABLE_STATIC_PIE)
Packit Service 82fcde
fi
Packit Service 82fcde
LIBC_CONFIG_VAR([enable-static-pie], [$static_pie])
Packit Service 82fcde
Packit Service 82fcde
AC_SUBST(profile)
Packit Service 82fcde
AC_SUBST(static_nss)
Packit Service 82fcde
Packit Service 82fcde
AC_SUBST(DEFINES)
Packit Service 82fcde
Packit Service 82fcde
dnl See sysdeps/mach/configure.ac for this variable.
Packit Service 82fcde
AC_SUBST(mach_interface_list)
Packit Service 82fcde
Packit Service 82fcde
VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
Packit Service 82fcde
RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
Packit Service 82fcde
AC_SUBST(VERSION)
Packit Service 82fcde
AC_SUBST(RELEASE)
Packit Service 82fcde
Packit Service 82fcde
AC_CONFIG_FILES([config.make Makefile])
Packit Service 82fcde
AC_CONFIG_COMMANDS([default],[[
Packit Service 82fcde
case $CONFIG_FILES in *config.make*)
Packit Service 82fcde
echo "$config_vars" >> config.make;;
Packit Service 82fcde
esac
Packit Service 82fcde
test -d bits || mkdir bits]],[[config_vars='$config_vars']])
Packit Service 82fcde
AC_OUTPUT