Always do locking when iterating over list of streams (bug 15142)
[glibc.git] / configure.ac
blob4b83ae5a0975dccff8e95c772193664e03477983
1 dnl Process this file with autoconf to produce a configure script.
2 dnl Note we do not use AC_PREREQ here!  See aclocal.m4 for what we use instead.
3 AC_INIT([GNU C Library], [(see version.h)], [http://sourceware.org/bugzilla/], [glibc])
4 AC_CONFIG_SRCDIR([include/features.h])
5 AC_CONFIG_HEADERS([config.h])
6 AC_CONFIG_AUX_DIR([scripts])
8 ACX_PKGVERSION([GNU libc])
9 ACX_BUGURL([http://www.gnu.org/software/libc/bugs.html])
10 AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"],
11                    [Package description])
12 AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"],
13                    [Bug reporting address])
15 # Glibc should not depend on any header files
16 AC_DEFUN([_AC_INCLUDES_DEFAULT_REQUIREMENTS],
17   [m4_divert_text([DEFAULTS],
18     [ac_includes_default='/* none */'])])
20 # We require GCC, and by default use its preprocessor.  Override AC_PROG_CPP
21 # here to work around the Autoconf issue discussed in
22 # <http://sourceware.org/ml/libc-alpha/2013-01/msg00721.html>.
23 AC_DEFUN([AC_PROG_CPP],
24 [AC_REQUIRE([AC_PROG_CC])dnl
25 AC_ARG_VAR([CPP],      [C preprocessor])dnl
26 _AC_ARG_VAR_CPPFLAGS()dnl
27 # On Suns, sometimes $CPP names a directory.
28 if test -n "$CPP" && test -d "$CPP"; then
29   CPP=
31 if test -z "$CPP"; then
32   CPP="$CC -E"
34 AC_SUBST(CPP)dnl
35 ])# AC_PROG_CPP
37 # We require GCC.  Override _AC_PROG_CC_C89 here to work around the Autoconf
38 # issue discussed in
39 # <http://sourceware.org/ml/libc-alpha/2013-01/msg00757.html>.
40 AC_DEFUN([_AC_PROG_CC_C89], [[$1]])
42 dnl This is here so we can set $subdirs directly based on configure fragments.
43 AC_CONFIG_SUBDIRS()
45 AC_CANONICAL_HOST
47 AC_PROG_CC
48 if test $host != $build; then
49   AC_CHECK_PROGS(BUILD_CC, gcc cc)
51 AC_SUBST(cross_compiling)
52 AC_PROG_CPP
53 AC_CHECK_TOOL(READELF, readelf, false)
55 # We need the C++ compiler only for testing.
56 AC_PROG_CXX
57 # It's useless to us if it can't link programs (e.g. missing -lstdc++).
58 AC_CACHE_CHECK([whether $CXX can link programs], libc_cv_cxx_link_ok, [dnl
59 AC_LANG_PUSH([C++])
60 # Default, dynamic case.
61 AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
62                [libc_cv_cxx_link_ok=yes],
63                [libc_cv_cxx_link_ok=no])
64 # Static case.
65 old_LDFLAGS="$LDFLAGS"
66 LDFLAGS="$LDFLAGS -static"
67 AC_LINK_IFELSE([AC_LANG_SOURCE([
68 #include <iostream>
70 int
71 main()
73   std::cout << "Hello, world!";
74   return 0;
76 ])],
77                [],
78                [libc_cv_cxx_link_ok=no])
79 LDFLAGS="$old_LDFLAGS"
80 AC_LANG_POP([C++])])
81 AS_IF([test $libc_cv_cxx_link_ok != yes], [CXX=])
83 if test "`cd $srcdir; pwd -P`" = "`pwd -P`"; then
84   AC_MSG_ERROR([you must configure in a separate build directory])
87 # This will get text that should go into config.make.
88 config_vars=
90 # Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
91 AC_ARG_WITH([gd],
92             AC_HELP_STRING([--with-gd=DIR],
93                            [find libgd include dir and library with prefix DIR]),
94             [dnl
95 case "$with_gd" in
96 yes|''|no) ;;
97 *) libgd_include="-I$withval/include"
98    libgd_ldflags="-L$withval/lib" ;;
99 esac
101 AC_ARG_WITH([gd-include],
102             AC_HELP_STRING([--with-gd-include=DIR],
103                            [find libgd include files in DIR]),
104             [dnl
105 case "$with_gd_include" in
106 ''|no) ;;
107 *) libgd_include="-I$withval" ;;
108 esac
110 AC_ARG_WITH([gd-lib],
111             AC_HELP_STRING([--with-gd-lib=DIR],
112                            [find libgd library files in DIR]),
113             [dnl
114 case "$with_gd_lib" in
115 ''|no) ;;
116 *) libgd_ldflags="-L$withval" ;;
117 esac
120 if test -n "$libgd_include"; then
121   config_vars="$config_vars
122 CFLAGS-memusagestat.c = $libgd_include"
124 if test -n "$libgd_ldflags"; then
125   config_vars="$config_vars
126 libgd-LDFLAGS = $libgd_ldflags"
129 dnl Arguments to specify presence of other packages/features.
130 AC_ARG_WITH([fp],
131             AC_HELP_STRING([--with-fp],
132                            [if using floating-point hardware @<:@default=yes@:>@]),
133             [with_fp=$withval],
134             [with_fp=yes])
135 AC_SUBST(with_fp)
136 AC_ARG_WITH([binutils],
137             AC_HELP_STRING([--with-binutils=PATH],
138                            [specify location of binutils (as and ld)]),
139             [path_binutils=$withval],
140             [path_binutils=''])
141 AC_ARG_WITH([selinux],
142             AC_HELP_STRING([--with-selinux],
143                            [if building with SELinux support]),
144             [with_selinux=$withval],
145             [with_selinux=auto])
147 AC_ARG_WITH([headers],
148             AC_HELP_STRING([--with-headers=PATH],
149                            [location of system headers to use
150                             (for example /usr/src/linux/include)
151                             @<:@default=compiler default@:>@]),
152             [sysheaders=$withval],
153             [sysheaders=''])
154 AC_SUBST(sysheaders)
156 AC_SUBST(use_default_link)
157 AC_ARG_WITH([default-link],
158             AC_HELP_STRING([--with-default-link],
159                            [do not use explicit linker scripts]),
160             [use_default_link=$withval],
161             [use_default_link=default])
163 AC_ARG_ENABLE([sanity-checks],
164               AC_HELP_STRING([--disable-sanity-checks],
165                              [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
166               [enable_sanity=$enableval],
167               [enable_sanity=yes])
169 AC_ARG_ENABLE([shared],
170               AC_HELP_STRING([--enable-shared],
171                              [build shared library @<:@default=yes if GNU ld@:>@]),
172               [shared=$enableval],
173               [shared=yes])
174 AC_ARG_ENABLE([profile],
175               AC_HELP_STRING([--enable-profile],
176                              [build profiled library @<:@default=no@:>@]),
177               [profile=$enableval],
178               [profile=no])
179 AC_ARG_ENABLE([timezone-tools],
180               AC_HELP_STRING([--disable-timezone-tools],
181                              [do not install timezone tools @<:@default=install@:>@]),
182               [enable_timezone_tools=$enableval],
183               [enable_timezone_tools=yes])
184 AC_SUBST(enable_timezone_tools)
186 AC_ARG_ENABLE([hardcoded-path-in-tests],
187               AC_HELP_STRING([--enable-hardcoded-path-in-tests],
188                              [hardcode newly built glibc path in tests @<:@default=no@:>@]),
189               [hardcoded_path_in_tests=$enableval],
190               [hardcoded_path_in_tests=no])
191 AC_SUBST(hardcoded_path_in_tests)
193 AC_ARG_ENABLE([stackguard-randomization],
194               AC_HELP_STRING([--enable-stackguard-randomization],
195                              [initialize __stack_chk_guard canary with a random number at program start]),
196               [enable_stackguard_randomize=$enableval],
197               [enable_stackguard_randomize=no])
198 if test "$enable_stackguard_randomize" = yes; then
199   AC_DEFINE(ENABLE_STACKGUARD_RANDOMIZE)
202 AC_ARG_ENABLE([lock-elision],
203               AC_HELP_STRING([--enable-lock-elision[=yes/no]],
204                              [Enable lock elision for pthread mutexes by default]),
205               [enable_lock_elision=$enableval],
206               [enable_lock_elision=no])
207 AC_SUBST(enable_lock_elision)
208 if test "$enable_lock_elision" = yes ; then
209   AC_DEFINE(ENABLE_LOCK_ELISION)
212 dnl Generic infrastructure for drop-in additions to libc.
213 AC_ARG_ENABLE([add-ons],
214               AC_HELP_STRING([--enable-add-ons@<:@=DIRS...@:>@],
215                              [configure and build add-ons in DIR1,DIR2,...
216                               search for add-ons if no parameter given]),
217                              , [enable_add_ons=yes])
219 AC_ARG_ENABLE([hidden-plt],
220               AC_HELP_STRING([--disable-hidden-plt],
221                              [do not hide internal function calls to avoid PLT]),
222               [hidden=$enableval],
223               [hidden=yes])
224 if test "x$hidden" = xno; then
225   AC_DEFINE(NO_HIDDEN)
228 AC_ARG_ENABLE([bind-now],
229               AC_HELP_STRING([--enable-bind-now],
230                              [disable lazy relocations in DSOs]),
231               [bindnow=$enableval],
232               [bindnow=no])
233 AC_SUBST(bindnow)
234 if test "x$bindnow" = xyes; then
235   AC_DEFINE(BIND_NOW)
238 dnl Build glibc with -fstack-protector, -fstack-protector-all, or
239 dnl -fstack-protector-strong.
240 AC_ARG_ENABLE([stack-protector],
241               AC_HELP_STRING([--enable-stack-protector=@<:@yes|no|all|strong@:>@],
242                              [Use -fstack-protector[-all|-strong] to detect glibc buffer overflows]),
243               [enable_stack_protector=$enableval],
244               [enable_stack_protector=no])
245 case "$enable_stack_protector" in
246 all|yes|no|strong) ;;
247 *) AC_MSG_ERROR([Not a valid argument for --enable-stack-protector: \"$enable_stack_protector\"]);;
248 esac
250 dnl On some platforms we cannot use dynamic loading.  We must provide
251 dnl static NSS modules.
252 AC_ARG_ENABLE([static-nss],
253               AC_HELP_STRING([--enable-static-nss],
254                              [build static NSS modules @<:@default=no@:>@]),
255               [static_nss=$enableval],
256               [static_nss=no])
257 dnl Enable static NSS also if we build no shared objects.
258 if test x"$static_nss" = xyes || test x"$shared" = xno; then
259   static_nss=yes
260   AC_DEFINE(DO_STATIC_NSS)
263 AC_ARG_ENABLE([force-install],
264               AC_HELP_STRING([--disable-force-install],
265                              [don't force installation of files from this package, even if they are older than the installed files]),
266               [force_install=$enableval],
267               [force_install=yes])
268 AC_SUBST(force_install)
270 AC_ARG_ENABLE([maintainer-mode],
271               AC_HELP_STRING([--enable-maintainer-mode],
272                              [enable make rules and dependencies not useful (and sometimes confusing) to the casual installer]),
273               [maintainer=$enableval],
274               [maintainer=no])
276 dnl On some platforms we allow dropping compatibility with all kernel
277 dnl versions.
278 AC_ARG_ENABLE([kernel],
279               AC_HELP_STRING([--enable-kernel=VERSION],
280                              [compile for compatibility with kernel not older than VERSION]),
281               [minimum_kernel=$enableval],
282               [])
283 dnl Prevent unreasonable values.
284 if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
285   # Better nothing than this.
286   minimum_kernel=""
287 else
288   if test "$minimum_kernel" = current; then
289     minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
290   fi
293 dnl For the development we sometimes want gcc to issue even more warnings.
294 dnl This is not the default since many of the extra warnings are not
295 dnl appropriate.
296 AC_ARG_ENABLE([all-warnings],
297               AC_HELP_STRING([--enable-all-warnings],
298                              [enable all useful warnings gcc can issue]),
299               [all_warnings=$enableval],
300               [])
301 AC_SUBST(all_warnings)
303 AC_ARG_ENABLE([werror],
304               AC_HELP_STRING([--disable-werror],
305                              [do not build with -Werror]),
306               [enable_werror=$enableval],
307               [enable_werror=yes])
308 AC_SUBST(enable_werror)
310 AC_ARG_ENABLE([multi-arch],
311               AC_HELP_STRING([--enable-multi-arch],
312                              [enable single DSO with optimizations for multiple architectures]),
313               [multi_arch=$enableval],
314               [multi_arch=default])
316 AC_ARG_ENABLE([experimental-malloc],
317               AC_HELP_STRING([--disable-experimental-malloc],
318                              [disable experimental malloc features]),
319               [experimental_malloc=$enableval],
320               [experimental_malloc=yes])
321 AC_SUBST(experimental_malloc)
323 AC_ARG_ENABLE([nss-crypt],
324               AC_HELP_STRING([--enable-nss-crypt],
325                              [enable libcrypt to use nss]),
326               [nss_crypt=$enableval],
327               [nss_crypt=no])
328 if test x$nss_crypt = xyes; then
329   nss_includes=-I$(nss-config --includedir 2>/dev/null)
330   if test $? -ne 0; then
331     AC_MSG_ERROR([cannot find include directory with nss-config])
332   fi
333   nspr_includes=-I$(nspr-config --includedir 2>/dev/null)
334   if test $? -ne 0; then
335     AC_MSG_ERROR([cannot find include directory with nspr-config])
336   fi
337   old_CFLAGS="$CFLAGS"
338   CFLAGS="$CFLAGS $nss_includes $nspr_includes"
339   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
340 #include <hasht.h>
341 #include <nsslowhash.h>
342 void f (void) { NSSLOW_Init (); }])],
343              libc_cv_nss_crypt=yes,
344              AC_MSG_ERROR([
345 cannot find NSS headers with lowlevel hash function interfaces]))
346   old_LIBS="$LIBS"
347   old_LDFLAGS="$LDFLAGS"
348   LIBS="$LIBS -lfreebl3"
349   AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
350 #include <hasht.h>
351 #include <nsslowhash.h>],
352                                   [NSSLOW_Init();])],
353                  libc_cv_nss_crypt=yes,
354                  AC_MSG_ERROR([
355 cannot link program using lowlevel NSS hash functions]))
356   # Check to see if there is a static NSS cryptographic library.
357   # If there isn't then we can't link anything with libcrypt.a,
358   # and that might mean disabling some static tests.
359   LDFLAGS="$LDFLAGS -static"
360   AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
361 #include <hasht.h>
362 #include <nsslowhash.h>],
363                                   [NSSLOW_Init();])],
364                  libc_cv_static_nss_crypt=yes,
365                  libc_cv_static_nss_crypt=no)
366   LDFLAGS="$old_LDFLAGS"
367   CFLAGS="$old_CFLAGS"
368   LIBS="$old_LIBS"
369 else
370   libc_cv_nss_crypt=no
371   libc_cv_static_nss_crypt=no
373 AC_SUBST(libc_cv_nss_crypt)
374 AC_SUBST(libc_cv_static_nss_crypt)
377 AC_ARG_ENABLE([obsolete-rpc],
378               AC_HELP_STRING([--enable-obsolete-rpc],
379                              [build and install the obsolete RPC code for link-time usage]),
380               [link_obsolete_rpc=$enableval],
381               [link_obsolete_rpc=no])
382 AC_SUBST(link_obsolete_rpc)
384 if test "$link_obsolete_rpc" = yes; then
385   AC_DEFINE(LINK_OBSOLETE_RPC)
388 AC_ARG_ENABLE([obsolete-nsl],
389               AC_HELP_STRING([--enable-obsolete-nsl],
390                              [build and install the obsolete libnsl library and depending NSS modules]),
391               [build_obsolete_nsl=$enableval],
392               [build_obsolete_nsl=no])
393 AC_SUBST(build_obsolete_nsl)
395 if test "$build_obsolete_nsl" = yes; then
396   AC_DEFINE(LINK_OBSOLETE_NSL)
399 AC_ARG_ENABLE([systemtap],
400               [AS_HELP_STRING([--enable-systemtap],
401                [enable systemtap static probe points @<:@default=no@:>@])],
402               [systemtap=$enableval],
403               [systemtap=no])
404 if test "x$systemtap" != xno; then
405   AC_CACHE_CHECK([for systemtap static probe support], libc_cv_sdt, [dnl
406   old_CFLAGS="$CFLAGS"
407   CFLAGS="-std=gnu11 $CFLAGS"
408   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <sys/sdt.h>
409 void foo (int i, void *p)
411   asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) ""
412        :: STAP_PROBE_ASM_OPERANDS (2, i, p));
413 }]])], [libc_cv_sdt=yes], [libc_cv_sdt=no])
414   CFLAGS="$old_CFLAGS"])
415   if test $libc_cv_sdt = yes; then
416     AC_DEFINE([USE_STAP_PROBE])
417   elif test "x$systemtap" != xauto; then
418     AC_MSG_FAILURE([systemtap support needs sys/sdt.h with asm support])
419   fi
422 AC_ARG_ENABLE([build-nscd],
423               [AS_HELP_STRING([--disable-build-nscd],
424                [disable building and installing the nscd daemon])],
425               [build_nscd=$enableval],
426               [build_nscd=default])
427 AC_SUBST(build_nscd)
429 # Note the use of $use_nscd is near the bottom of the file.
430 AC_ARG_ENABLE([nscd],
431               [AS_HELP_STRING([--disable-nscd],
432                [library functions will not contact the nscd daemon])],
433               [use_nscd=$enableval],
434               [use_nscd=yes])
436 AC_ARG_ENABLE([pt_chown],
437               [AS_HELP_STRING([--enable-pt_chown],
438                [Enable building and installing pt_chown])],
439               [build_pt_chown=$enableval],
440               [build_pt_chown=no])
441 AC_SUBST(build_pt_chown)
442 if test "$build_pt_chown" = yes; then
443   AC_DEFINE(HAVE_PT_CHOWN)
446 AC_ARG_ENABLE([tunables],
447               [AS_HELP_STRING([--enable-tunables],
448                [Enable tunables support. Known values are 'yes', 'no' and 'valstring'])],
449               [have_tunables=$enableval],
450               [have_tunables=yes])
451 AC_SUBST(have_tunables)
452 if test "$have_tunables" = yes; then
453   AC_DEFINE(HAVE_TUNABLES)
456 # The abi-tags file uses a fairly simplistic model for name recognition that
457 # can't distinguish i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a
458 # $host_os of `gnu*' here to be `gnu-gnu*' just so that it can tell.
459 # This doesn't get used much beyond that, so it's fairly safe.
460 case "$host_os" in
461 linux*)
462   ;;
463 gnu*)
464   host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
465   ;;
466 esac
468 AC_ARG_ENABLE([mathvec],
469               [AS_HELP_STRING([--enable-mathvec],
470               [Enable building and installing mathvec @<:@default depends on architecture@:>@])],
471               [build_mathvec=$enableval],
472               [build_mathvec=notset])
474 # We keep the original values in `$config_*' and never modify them, so we
475 # can write them unchanged into config.make.  Everything else uses
476 # $machine, $vendor, and $os, and changes them whenever convenient.
477 config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
479 # Don't allow vendor == "unknown"
480 test "$config_vendor" = unknown && config_vendor=
481 config_os="`echo $config_os | sed 's/^unknown-//'`"
483 # Some configurations imply other options.
484 elf=yes
486 # The configure fragment of an add-on port can modify these to supplement
487 # or override the table in the case statement below.  No fragment should
488 # ever change the config_* variables, however.
489 machine=$config_machine
490 vendor=$config_vendor
491 os=$config_os
492 base_os=''
494 submachine=
495 AC_ARG_WITH([cpu],
496             AS_HELP_STRING([--with-cpu=CPU], [select code for CPU variant]),
497             [dnl
498   case "$withval" in
499   yes|'') AC_MSG_ERROR([--with-cpu requires an argument]) ;;
500   no) ;;
501   *) submachine="$withval" ;;
502   esac
505 # An preconfigure script can set this when it wants to disable the sanity
506 # check below.
507 libc_config_ok=no
509 dnl Let sysdeps/*/preconfigure act here, like they can in add-ons.
510 LIBC_PRECONFIGURE([$srcdir], [for sysdeps])
512 dnl Having this here, though empty, makes sure that if add-ons' fragments
513 dnl do AC_CONFIG_SUBDIRS([some-dir]), which just sets $subdirs, then
514 dnl our AC_OUTPUT will actually use it.
515 AC_CONFIG_SUBDIRS()
517 case "$enable_add_ons" in
518 ''|no) add_ons= ;;
519 yes|'*')
520  add_ons=`cd $srcdir && ls -d 2> /dev/null */configure */sysdeps |
521           sed 's@/[[^/]]*$@@' | sort | uniq`
522          add_ons_automatic=yes
523          ;;
524 *) add_ons=`echo "$enable_add_ons" | sed 's/,/ /g'`
525        add_ons_automatic=no ;;
526 esac
528 configured_add_ons=
529 add_ons_sfx=
530 add_ons_pfx=
531 if test x"$add_ons" != x; then
532   for f in $add_ons; do
533     # Some sanity checks
534     case "$f" in
535     crypt)
536       AC_MSG_ERROR([
537 *** It seems that you're using an old \`crypt' add-on.  crypt is now
538 *** part of glibc and using the old add-on will not work with this
539 *** release.  Start again with fresh sources and without the old
540 *** \`crypt' add-on.])
541     ;;
542     localedata)
543       AC_MSG_ERROR([
544 *** It seems that you're using an old \`localedata' add-on.  localedata
545 *** is now part of glibc and using the old add-on will not work with
546 *** this release.  Start again with fresh sources and without the old
547 *** \`localedata' add-on.])
548     ;;
549     esac
550   done
552   # Now source each add-on's configure fragment.
553   # The fragments can use $srcdir/$libc_add_on to find themselves,
554   # and test $add_ons_automatic to see if they were explicitly requested.
555   # A fragment can clear (or even change) $libc_add_on to affect
556   # whether it goes into the list to be actually used in the build.
557   use_add_ons=
558   for libc_add_on in $add_ons; do
559     # Test whether such a directory really exists.
560     # It can be absolute, or relative to $srcdir, or relative to the build dir.
561     case "$libc_add_on" in
562     /*)
563       libc_add_on_srcdir=$libc_add_on
564       ;;
565     *)
566       test -d "$srcdir/$libc_add_on" || {
567         if test -d "$libc_add_on"; then
568           libc_add_on="`pwd`/$libc_add_on"
569         else
570           AC_MSG_ERROR(add-on directory \"$libc_add_on\" does not exist)
571         fi
572       }
573       libc_add_on_srcdir=$srcdir/$libc_add_on
574       ;;
575     esac
577     libc_add_on_frag=$libc_add_on_srcdir/configure
578     libc_add_on_canonical=
579     libc_add_on_config_subdirs=
580     if test -r "$libc_add_on_frag"; then
581       AC_MSG_NOTICE(running configure fragment for add-on $libc_add_on)
582       libc_add_on_canonical=unknown
583       libc_add_on_subdirs=
584       . "$libc_add_on_frag"
585       test -z "$libc_add_on" || {
586         configured_add_ons="$configured_add_ons $libc_add_on"
587         if test "x$libc_add_on_canonical" = xunknown; then
588           AC_MSG_ERROR(fragment must set \$libc_add_on_canonical)
589         fi
590         for d in $libc_add_on_subdirs; do
591           case "$libc_add_on" in
592           /*) subdir_srcdir="$libc_add_on" ;;
593           *) subdir_srcdir="\$(..)$libc_add_on" ;;
594           esac
595           case "$d" in
596           .)
597             d="${libc_add_on_canonical:-$libc_add_on}"
598             ;;
599           /*)
600             subdir_srcdir="$d"
601             ;;
602           *)
603             subdir_srcdir="$subdir_srcdir/$d"
604             ;;
605           esac
606           d=`echo "$d" | sed 's@/*$@@;s@^.*/@@'`
607           add_on_subdirs="$add_on_subdirs $d"
608           test "$subdir_srcdir" = "\$(..)$d" || config_vars="$config_vars
609 $d-srcdir = $subdir_srcdir"
610         done
611         for d in $libc_add_on_config_subdirs; do
612           case "$d" in
613           /*) AC_MSG_ERROR(dnl
614 fragment uses absolute path in \$libc_add_on_config_subdirs) ;;
615           esac
616           if test ! -d "$libc_add_on_srcdir/$d"; then
617             AC_MSG_ERROR(fragment wants to configure missing directory $d)
618           fi
619           case "$libc_add_on" in
620           /*) AC_MSG_ERROR(dnl
621 relative path required for add-on using \$libc_add_on_config_subdirs) ;;
622           esac
623           subdirs="$subdirs $libc_add_on/$d"
624         done
625       }
626     fi
627     if test -n "$libc_add_on"; then
628       LIBC_PRECONFIGURE([$libc_add_on_srcdir], [add-on $libc_add_on for])
629       use_add_ons="$use_add_ons $libc_add_on"
630       add_ons_pfx="$add_ons_pfx $libc_add_on/"
631       test -z "$libc_add_on_canonical" ||
632       add_ons_sfx="$add_ons_sfx /$libc_add_on_canonical"
633     fi
634   done
635   # Use echo to strip excess whitespace.
636   add_ons="`echo $use_add_ons`"
638 AC_SUBST(add_ons)
639 AC_SUBST(add_on_subdirs)
643 ### By using the undocumented --enable-hacker-mode option for configure
644 ### one can skip this test to make the configuration not fail for unsupported
645 ### platforms.
647 if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
648   case "$machine-$host_os" in
649   *-linux* | *-gnu*)
650     ;;
651   *)
652     AC_MSG_ERROR([
653 *** The GNU C library is currently unavailable for this platform.
654 *** If you are interested in seeing glibc on this platform visit
655 *** the "How to submit a new port" in the wiki:
656 ***   https://sourceware.org/glibc/wiki/#Development
657 *** and join the community!])
658     ;;
659   esac
662 # Set base_machine if not set by a preconfigure fragment.
663 test -n "$base_machine" || base_machine=$machine
664 AC_SUBST(base_machine)
666 AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
667 LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector],
668                    [libc_cv_ssp=yes],
669                    [libc_cv_ssp=no])
672 AC_CACHE_CHECK(for -fstack-protector-strong, libc_cv_ssp_strong, [dnl
673 LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector-strong],
674                    [libc_cv_ssp_strong=yes],
675                    [libc_cv_ssp_strong=no])
678 AC_CACHE_CHECK(for -fstack-protector-all, libc_cv_ssp_all, [dnl
679 LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector-all],
680                    [libc_cv_ssp_all=yes],
681                    [libc_cv_ssp_all=no])
684 stack_protector=
685 no_stack_protector=
686 if test "$libc_cv_ssp" = yes; then
687   no_stack_protector="-fno-stack-protector -DSTACK_PROTECTOR_LEVEL=0"
688   AC_DEFINE(HAVE_CC_NO_STACK_PROTECTOR)
691 if test "$enable_stack_protector" = yes && test "$libc_cv_ssp" = yes; then
692   stack_protector="-fstack-protector"
693   AC_DEFINE(STACK_PROTECTOR_LEVEL, 1)
694 elif test "$enable_stack_protector" = all && test "$libc_cv_ssp_all" = yes; then
695   stack_protector="-fstack-protector-all"
696   AC_DEFINE(STACK_PROTECTOR_LEVEL, 2)
697 elif test "$enable_stack_protector" = strong && test "$libc_cv_ssp_strong" = yes; then
698   stack_protector="-fstack-protector-strong"
699   AC_DEFINE(STACK_PROTECTOR_LEVEL, 3)
700 else
701   stack_protector="-fno-stack-protector"
702   AC_DEFINE(STACK_PROTECTOR_LEVEL, 0)
704 AC_SUBST(libc_cv_ssp)
705 AC_SUBST(stack_protector)
706 AC_SUBST(no_stack_protector)
708 if test -n "$stack_protector"; then
709   dnl Don't run configure tests with stack-protection on, to avoid problems with
710   dnl bootstrapping.
711   no_ssp=-fno-stack-protector
712 else
713   no_ssp=
715   if test "$enable_stack_protector" != no; then
716     AC_MSG_ERROR([--enable-stack-protector=$enable_stack_protector specified, but specified level of stack protection is not supported by the compiler.])
717   fi
720 # For the multi-arch option we need support in the assembler & linker.
721 AC_CACHE_CHECK([for assembler and linker STT_GNU_IFUNC support],
722                libc_cv_ld_gnu_indirect_function, [dnl
723 cat > conftest.S <<EOF
724 .type foo,%gnu_indirect_function
725 foo:
726 .globl _start
727 _start:
728 .globl __start
729 __start:
730 .data
731 #ifdef _LP64
732 .quad foo
733 #else
734 .long foo
735 #endif
737 libc_cv_ld_gnu_indirect_function=no
738 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
739             -nostartfiles -nostdlib $no_ssp \
740             -o conftest conftest.S 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
741   # Do a link to see if the backend supports IFUNC relocs.
742   $READELF -r conftest 1>&AS_MESSAGE_LOG_FD
743   LC_ALL=C $READELF -r conftest | grep 'no relocations' >/dev/null || {
744     libc_cv_ld_gnu_indirect_function=yes
745   }
747 rm -f conftest*])
749 # Check if gcc supports attribute ifunc as it is used in libc_ifunc macro.
750 AC_CACHE_CHECK([for gcc attribute ifunc support],
751                libc_cv_gcc_indirect_function, [dnl
752 cat > conftest.c <<EOF
753 extern int func (int);
754 int used_func (int a)
756   return a;
758 static void *resolver ()
760   return &used_func;
762 extern __typeof (func) func __attribute__ ((ifunc ("resolver")));
764 libc_cv_gcc_indirect_function=no
765 if ${CC-cc} -c conftest.c -o conftest.o 1>&AS_MESSAGE_LOG_FD \
766    2>&AS_MESSAGE_LOG_FD ; then
767   if $READELF -s conftest.o | grep IFUNC >/dev/null 2>&AS_MESSAGE_LOG_FD; then
768     libc_cv_gcc_indirect_function=yes
769   fi
771 rm -f conftest*])
773 if test x"$libc_cv_ld_gnu_indirect_function" != xyes; then
774   if test x"$multi_arch" = xyes; then
775     AC_MSG_ERROR([--enable-multi-arch support requires assembler and linker support])
776   else
777     multi_arch=no
778   fi
780 if test x"$libc_cv_gcc_indirect_function" != xyes &&
781    test x"$multi_arch" = xyes; then
782   AC_MSG_WARN([--enable-multi-arch support recommends a gcc with gnu-indirect-function support.
783 Please use a gcc which supports it by default or configure gcc with --enable-gnu-indirect-function])
785 multi_arch_d=
786 if test x"$multi_arch" != xno; then
787   multi_arch_d=/multiarch
790 # Compute the list of sysdep directories for this configuration.
791 # This can take a while to compute.
792 sysdep_dir=$srcdir/sysdeps
793 AC_MSG_CHECKING(sysdep dirs)
794 dnl We need to use [ and ] for other purposes for a while now.
795 changequote(,)dnl
796 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
797 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
799 test "x$base_os" != x || case "$os" in
800 gnu*)
801   base_os=mach/hurd ;;
802 linux*)
803   base_os=unix/sysv ;;
804 esac
806 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
807 tail=$os
808 ostry=$os
809 while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
810   ostry="$ostry /$o"
811   tail=$o
812 done
813 o=`echo $tail | sed 's/[0-9]*$//'`
814 if test $o != $tail; then
815   ostry="$ostry /$o"
817 # For linux-gnu, try linux-gnu, then linux.
818 o=`echo $tail | sed 's/-.*$//'`
819 if test $o != $tail; then
820   ostry="$ostry /$o"
823 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
824 base=
825 tail=$base_os
826 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
827   set $b
828   base="$base /$1"
829   tail="$2"
830 done
832 # For sparc/sparc32, try sparc/sparc32 and then sparc.
833 mach=
834 tail=$machine${submachine:+/$submachine}
835 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
836   set $m
837   # Prepend the machine's FPU directory unless --without-fp.
838   if test "$with_fp" = yes; then
839     maybe_fpu=/fpu
840   else
841     maybe_fpu=/nofpu
842   fi
843   # For each machine term, try it with and then without /multiarch.
844   for try_fpu in $maybe_fpu ''; do
845     for try_multi in $multi_arch_d ''; do
846       mach="$mach /$1$try_fpu$try_multi"
847     done
848   done
849   tail="$2"
850 done
852 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
853 changequote([,])dnl
855 # Find what sysdep directories exist.
856 sysnames_add_ons=
857 sysnames=
858 for b in $base ''; do
859   for m0 in $mach ''; do
860     for v in /$vendor ''; do
861       test "$v" = / && continue
862       for o in /$ostry ''; do
863         test "$o" = / && continue
864         for m in $mach ''; do
865           for d in $add_ons_pfx ''; do
866             for a in $add_ons_sfx ''; do
867               try_suffix="$m0$b$v$o$m"
868               if test -n "$try_suffix"; then
869                 try_srcdir="${srcdir}/"
870                 case "$d" in
871                 /*) try_srcdir= ;;
872                 esac
873                 try="${d}sysdeps$try_suffix$a"
874                 test -n "$enable_debug_configure" &&
875                 echo "$0 [DEBUG]: try $try" >&2
876                 if test -d "$try_srcdir$try"; then
877                   sysnames="$sysnames $try"
878                   { test -n "$o" || test -n "$b"; } && os_used=t
879                   { test -n "$m" || test -n "$m0"; } && machine_used=t
880                   case x${m0:-$m} in
881                   x*/$submachine) submachine_used=t ;;
882                   esac
883                   if test -n "$d"; then
884                     case "$sysnames_add_ons" in
885                     *" $d "*) ;;
886                     *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
887                     esac
888                   fi
889                 fi
890               fi
891             done
892           done
893         done
894       done
895     done
896   done
897 done
899 # If the assembler supports gnu_indirect_function symbol type and the
900 # architecture supports multi-arch, we enable multi-arch by default.
901 case $sysnames_add_ons$sysnames in
902 *"$multi_arch_d"*)
903   ;;
905   test x"$multi_arch" = xdefault && multi_arch=no
906   ;;
907 esac
908 if test x"$multi_arch" != xno; then
909   AC_DEFINE(USE_MULTIARCH)
911 AC_SUBST(multi_arch)
913 if test -z "$os_used" && test "$os" != none; then
914   AC_MSG_ERROR(Operating system $os is not supported.)
916 if test -z "$machine_used" && test "$machine" != none; then
917   AC_MSG_ERROR(The $machine is not supported.)
919 if test -z "$submachine_used" && test -n "$submachine"; then
920   AC_MSG_ERROR(The $submachine subspecies of $host_cpu is not supported.)
922 AC_SUBST(submachine)
924 # We have now validated the configuration.
926 # Expand the list of system names into a full list of directories
927 # from each element's parent name and Implies file (if present).
928 set $sysnames
929 names=
930 while test $# -gt 0; do
931   name=$1
932   shift
934   case " $names " in *" $name "*)
935     # Already in the list.
936     continue
937   esac
939   # Report each name as we discover it, so there is no long pause in output.
940   echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
942   name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
944   case $name in
945     /*) xsrcdir= ;;
946     *)  xsrcdir=$srcdir/ ;;
947   esac
948   test -n "$enable_debug_configure" &&
949   echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
951   for implies_file in Implies Implies-before Implies-after; do
952     implies_type=`echo $implies_file | sed s/-/_/`
953     eval ${implies_type}=
954     if test -f $xsrcdir$name/$implies_file; then
955       # Collect more names from the `Implies' file (removing comments).
956       implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/$implies_file`"
957       for x in $implied_candidate; do
958         found=no
959         if test -d $xsrcdir$name_base/$x; then
960           eval "${implies_type}=\"\$${implies_type} \$name_base/\$x\""
961           found=yes
962         fi
963         for d in $add_ons_pfx ''; do
964           try="${d}sysdeps/$x"
965           case $d in
966            /*) try_srcdir= ;;
967            *) try_srcdir=$srcdir/ ;;
968           esac
969           test -n "$enable_debug_configure" &&
970            echo "[DEBUG]: $name $implies_file $x try($d) {$try_srcdir}$try" >&2
971           if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
972           then
973             eval "${implies_type}=\"\$${implies_type} \$try\""
974             found=yes
975             case "$sysnames_add_ons" in
976             *" $d "*) ;;
977             *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
978             esac
979           fi
980         done
981         if test $found = no; then
982           AC_MSG_WARN($name/$implies_file specifies nonexistent $x)
983         fi
984       done
985     fi
986   done
988   # Add NAME to the list of names.
989   names="$names $name"
991   # Find the parent of NAME, using the empty string if it has none.
992 changequote(,)dnl
993   parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
994 changequote([,])dnl
996   test -n "$enable_debug_configure" &&
997     echo "[DEBUG]: $name Implies='$Implies' rest='$*' parent='$parent' \
998 Implies_before='$Implies_before' Implies_after='$Implies_after'" >&2
1000   # Add the names implied by NAME, and NAME's parent (if it has one), to
1001   # the list of names to be processed (the argument list).  We prepend the
1002   # implied names to the list and append the parent.  We want implied
1003   # directories to come before further directories inferred from the
1004   # configuration components; this ensures that for sysv4, unix/common
1005   # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
1006   # after sysv4).
1007   sysnames="`echo $Implies $* $Implies_before $parent $Implies_after`"
1008   test -n "$sysnames" && set $sysnames
1009 done
1011 # Add the default directories.
1012 default_sysnames="sysdeps/generic"
1013 sysnames="$names $default_sysnames"
1014 AC_SUBST(sysnames)
1015 # The other names were emitted during the scan.
1016 AC_MSG_RESULT($default_sysnames)
1018 # Collect the list of add-ons that supply partial sysdeps trees.
1019 sysdeps_add_ons=
1020 for add_on in $add_ons; do
1021   case "$add_on" in
1022   /*) xsrcdir= ;;
1023   *) xsrcdir="$srcdir/" ;;
1024   esac
1026   test -d "$xsrcdir$add_on/sysdeps" || {
1027     case "$configured_add_ons " in
1028     *" $add_on "*) ;;
1029     *|'')
1030       AC_MSG_ERROR(add-on $add_on has no configure fragment or sysdeps tree)
1031       ;;
1032     esac
1033     continue
1034   }
1036   sysdeps_add_ons="$sysdeps_add_ons $add_on"
1037   case "$sysnames_add_ons" in
1038   *" $add_on/ "*) ;;
1039   *|'')
1040     AC_MSG_WARN(add-on $add_on contributed no sysdeps directories)
1041     continue ;;
1042   esac
1044   found=no
1045   for d in $sysnames; do
1046     case "$d" in
1047     $add_on/sysdeps/*) ;;
1048     *) continue ;;
1049     esac
1050     (cd "$xsrcdir$d" && for f in *[[!~]]; do
1051        case "$f" in
1052        sys|bits)
1053          for ff in $f/*.h; do
1054            test -d "$ff" || { test -e "$ff" && exit 88; }
1055          done
1056          ;;
1057        *)
1058          test -d "$f" || { test -e "$f" && exit 88; }
1059          ;;
1060        esac
1061      done)
1062     if test $? -eq 88; then
1063       found=yes
1064       break
1065     fi
1066   done
1067   if test $found = no; then
1068     AC_MSG_WARN(add-on $add_on contributed no useful sysdeps directories)
1069   fi
1070 done
1071 AC_SUBST(sysdeps_add_ons)
1074 ### Locate tools.
1076 AC_PROG_INSTALL
1077 if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
1078   # The makefiles need to use a different form to find it in $srcdir.
1079   INSTALL='\$(..)./scripts/install-sh -c'
1081 AC_PROG_LN_S
1083 LIBC_PROG_BINUTILS
1085 # Accept binutils 2.25 or newer.
1086 AC_CHECK_PROG_VER(AS, $AS, --version,
1087                   [GNU assembler.* \([0-9]*\.[0-9.]*\)],
1088                   [2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*],
1089                   AS=: critic_missing="$critic_missing as")
1091 if test -n "`$LD --version | sed -n 's/^GNU \(gold\).*$/\1/p'`"; then
1092   # Accept gold 1.14 or higher
1093   AC_CHECK_PROG_VER(LD, $LD, --version,
1094                     [GNU gold.* \([0-9][0-9]*\.[0-9.]*\)],
1095                     [1.1[4-9]*|1.[2-9][0-9]*|1.1[0-9][0-9]*|[2-9].*|[1-9][0-9]*],
1096                     LD=: critic_missing="$critic_missing GNU gold")
1097 else
1098   AC_CHECK_PROG_VER(LD, $LD, --version,
1099                     [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
1100                     [2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*],
1101                     LD=: critic_missing="$critic_missing GNU ld")
1104 # These programs are version sensitive.
1105 AC_CHECK_TOOL_PREFIX
1106 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
1107   [GNU Make[^0-9]*\([0-9][0-9.]*\)],
1108   [3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make")
1110 AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
1111   [GNU gettext.* \([0-9]*\.[0-9.]*\)],
1112   [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
1113   MSGFMT=: aux_missing="$aux_missing msgfmt")
1114 AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
1115   [GNU texinfo.* \([0-9][0-9.]*\)],
1116   [4.[7-9]*|4.[1-9][0-9]*|[5-9].*],
1117   MAKEINFO=: aux_missing="$aux_missing makeinfo")
1118 AC_CHECK_PROG_VER(SED, sed, --version,
1119   [GNU sed[^0-9]* \([0-9]*\.[0-9.]*\)],
1120   [3.0[2-9]*|3.[1-9]*|[4-9]*],
1121   SED=: aux_missing="$aux_missing sed")
1122 AC_CHECK_PROG_VER(AWK, gawk, --version,
1123   [GNU Awk[^0-9]*\([0-9][0-9.]*\)],
1124   [3.1.[2-9]*|3.[2-9]*|[4-9]*], critic_missing="$critic_missing gawk")
1126 AC_CACHE_CHECK([if $CC is sufficient to build libc], libc_cv_compiler_ok, [
1127 AC_TRY_COMPILE([], [
1128 #if !defined __GNUC__ || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 9)
1129 #error insufficient compiler
1130 #endif],
1131                [libc_cv_compiler_ok=yes],
1132                [libc_cv_compiler_ok=no])])
1133 AS_IF([test $libc_cv_compiler_ok != yes],
1134       [critic_missing="$critic_missing compiler"])
1136 AC_CHECK_TOOL(NM, nm, false)
1138 if test "x$maintainer" = "xyes"; then
1139   AC_CHECK_PROGS(AUTOCONF, autoconf, no)
1140   case "x$AUTOCONF" in
1141   xno|x|x:) AUTOCONF=no ;;
1142   *)
1143     AC_CACHE_CHECK(dnl
1144   whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
1145     if (cd $srcdir; $AUTOCONF $ACFLAGS configure.ac > /dev/null 2>&1); then
1146       libc_cv_autoconf_works=yes
1147     else
1148       libc_cv_autoconf_works=no
1149     fi])
1150     test $libc_cv_autoconf_works = yes || AUTOCONF=no
1151     ;;
1152   esac
1153   if test "x$AUTOCONF" = xno; then
1154     aux_missing="$aux_missing autoconf"
1155   fi
1156 else
1157   AUTOCONF=no
1160 # Check for python3 if available, or else python.
1161 AC_CHECK_PROGS(PYTHON_PROG, python3 python,no)
1162 case "x$PYTHON_PROG" in
1163 xno|x|x:) PYTHON_PROG=no ;;
1164 *) ;;
1165 esac
1167 if test "x$PYTHON_PROG" = xno; then
1168   aux_missing="$aux_missing python"
1169 else
1170   PYTHON="$PYTHON_PROG -B"
1171   AC_SUBST(PYTHON)
1174 test -n "$critic_missing" && AC_MSG_ERROR([
1175 *** These critical programs are missing or too old:$critic_missing
1176 *** Check the INSTALL file for required versions.])
1178 test -n "$aux_missing" && AC_MSG_WARN([
1179 *** These auxiliary programs are missing or incompatible versions:$aux_missing
1180 *** some features or tests will be disabled.
1181 *** Check the INSTALL file for required versions.])
1183 # if using special system headers, find out the compiler's sekrit
1184 # header directory and add that to the list.  NOTE: Only does the right
1185 # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
1186 if test -n "$sysheaders"; then
1187   SYSINCLUDES=-nostdinc
1188   for d in include include-fixed; do
1189     i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
1190     SYSINCLUDES="$SYSINCLUDES -isystem $i"
1191   done
1192   SYSINCLUDES="$SYSINCLUDES \
1193 -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
1194   if test -n "$CXX"; then
1195     CXX_SYSINCLUDES=
1196     for cxxheaders in `$CXX -v -S -x c++ /dev/null -o /dev/null 2>&1 \
1197     | sed -n -e '1,/#include/d' -e 's/^ \(\/.*\/[cg]++\)/\1/p'`; do
1198       test "x$cxxheaders" != x &&
1199       CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders"
1200     done
1201   fi
1203 AC_SUBST(SYSINCLUDES)
1204 AC_SUBST(CXX_SYSINCLUDES)
1206 # Obtain some C++ header file paths.  This is used to make a local
1207 # copy of those headers in Makerules.
1208 if test -n "$CXX"; then
1209   find_cxx_header () {
1210     echo "#include <$1>" | $CXX -M -MP -x c++ - 2>/dev/null \
1211          | sed -n "\,$1:,{s/:\$//;p}"
1212   }
1213   CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
1214   CXX_CMATH_HEADER="$(find_cxx_header cmath)"
1215   CXX_BITS_STD_ABS_H="$(find_cxx_header bits/std_abs.h)"
1217 AC_SUBST(CXX_CSTDLIB_HEADER)
1218 AC_SUBST(CXX_CMATH_HEADER)
1219 AC_SUBST(CXX_BITS_STD_ABS_H)
1221 # Test if LD_LIBRARY_PATH contains the notation for the current directory
1222 # since this would lead to problems installing/building glibc.
1223 # LD_LIBRARY_PATH contains the current directory if one of the following
1224 # is true:
1225 # - one of the terminals (":" and ";") is the first or last sign
1226 # - two terminals occur directly after each other
1227 # - the path contains an element with a dot in it
1228 AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
1229 changequote(,)dnl
1230 case ${LD_LIBRARY_PATH} in
1231   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
1232     ld_library_path_setting="contains current directory"
1233     ;;
1234   *)
1235     ld_library_path_setting="ok"
1236     ;;
1237 esac
1238 changequote([,])dnl
1239 AC_MSG_RESULT($ld_library_path_setting)
1240 if test "$ld_library_path_setting" != "ok"; then
1241 AC_MSG_ERROR([
1242 *** LD_LIBRARY_PATH shouldn't contain the current directory when
1243 *** building glibc. Please change the environment variable
1244 *** and run configure again.])
1247 AC_PATH_PROG(BASH_SHELL, bash, no)
1249 AC_PATH_PROG(PERL, perl, no)
1250 if test "$PERL" != no &&
1251    (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
1252   PERL=no
1254 AC_PATH_PROG(INSTALL_INFO, install-info, no,
1255              $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
1256 AC_CHECK_PROG_VER(BISON, bison, --version,
1257                   [bison (GNU Bison) \([0-9]*\.[0-9.]*\)],
1258                   [2.7*|[3-9].*|[1-9][0-9]*],
1259                   BISON=no)
1261 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
1262 cat > conftest.s <<EOF
1263 .text
1264 foo:
1265 .set glibc_conftest_frobozz,foo
1266 .globl glibc_conftest_frobozz
1268 # The alpha-dec-osf1 assembler gives only a warning for `.set'
1269 # (but it doesn't work), so we must do a linking check to be sure.
1270 cat > conftest1.c <<\EOF
1271 extern int glibc_conftest_frobozz;
1272 void _start() { glibc_conftest_frobozz = 1; }
1274 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1275             -nostartfiles -nostdlib $no_ssp \
1276             -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1277   libc_cv_asm_set_directive=yes
1278 else
1279   libc_cv_asm_set_directive=no
1281 rm -f conftest*])
1282 if test $libc_cv_asm_set_directive = yes; then
1283   AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
1286 AC_CACHE_CHECK(linker support for protected data symbol,
1287                libc_cv_protected_data,
1288                [cat > conftest.c <<EOF
1289                 int bar __attribute__ ((visibility ("protected"))) = 1;
1291                 libc_cv_protected_data=no
1292                 if AC_TRY_COMMAND(${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -o conftest.so); then
1293                   cat > conftest.c <<EOF
1294                   extern int bar;
1295                   int main (void) { return bar; }
1297                   if AC_TRY_COMMAND(${CC-cc} -nostdlib -nostartfiles $no_ssp conftest.c -o conftest conftest.so); then
1298                     libc_cv_protected_data=yes
1299                   fi
1300                 fi
1301                 rm -f conftest.*
1302                ])
1303 AC_SUBST(libc_cv_protected_data)
1305 AC_CACHE_CHECK(linker support for INSERT in linker script,
1306                libc_cv_insert,
1307                [cat > conftest.c <<EOF
1308                 const int __attribute__ ((section(".bar"))) bar = 0x12345678;
1309                 int test (void) { return bar; }
1311                 cat > conftest.t <<EOF
1312                 SECTIONS
1313                 {
1314                   .bar : { *(.bar) }
1315                 }
1316                 INSERT AFTER .rela.dyn;
1318                 libc_cv_insert=no
1319                 if AC_TRY_COMMAND([${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -Wl,-T,conftest.t -o conftest.so]); then
1320                   libc_cv_insert=yes
1321                 fi
1322                 rm -f conftest.*
1323                ])
1324 AC_SUBST(libc_cv_insert)
1326 AC_CACHE_CHECK(for broken __attribute__((alias())),
1327                libc_cv_broken_alias_attribute,
1328                [cat > conftest.c <<EOF
1329                extern int foo (int x) __asm ("xyzzy");
1330                int bar (int x) { return x; }
1331                extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1332                extern int dfoo;
1333                extern __typeof (dfoo) dfoo __asm ("abccb");
1334                int dfoo = 1;
1336                libc_cv_broken_alias_attribute=yes
1337                if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1338                  if grep 'xyzzy' conftest.s >/dev/null &&
1339                     grep 'abccb' conftest.s >/dev/null; then
1340                    libc_cv_broken_alias_attribute=no
1341                  fi
1342                fi
1343                rm -f conftest.c conftest.s
1344                ])
1345 if test $libc_cv_broken_alias_attribute = yes; then
1346   AC_MSG_ERROR(working alias attribute support required)
1349 AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1350                libc_cv_have_sdata_section,
1351                [echo "int i;" > conftest.c
1352                 libc_cv_have_sdata_section=no
1353                 if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1354                    | grep '\.sdata' >/dev/null; then
1355                   libc_cv_have_sdata_section=yes
1356                 fi
1357                 rm -f conftest.c conftest.so
1358                ])
1359 if test $libc_cv_have_sdata_section = yes; then
1360   AC_DEFINE(HAVE_SDATA_SECTION)
1363 AC_CACHE_CHECK(whether to use .ctors/.dtors header and trailer,
1364                libc_cv_ctors_header, [dnl
1365   libc_cv_ctors_header=yes
1366   LIBC_TRY_LINK_STATIC([
1367 __attribute__ ((constructor)) void ctor (void) { asm (""); }
1368 __attribute__ ((destructor))  void dtor (void) { asm (""); }
1370               [dnl
1371       AS_IF([$READELF -WS conftest$ac_exeext | $AWK '
1372         { gsub(/\@<:@ */, "@<:@") }
1373         $2 == ".ctors" || $2 == ".dtors" {
1374           size = strtonum("0x" $6)
1375           align = strtonum("0x" $NF)
1376           seen@<:@$2@:>@ = 1
1377           stub@<:@$2@:>@ = size == align * 2
1378         }
1379         END {
1380           ctors_ok = !seen@<:@".ctors"@:>@ || stub@<:@".ctors"@:>@
1381           dtors_ok = !seen@<:@".dtors"@:>@ || stub@<:@".dtors"@:>@
1382           exit ((ctors_ok && dtors_ok) ? 0 : 1)
1383         }
1384       '], [libc_cv_ctors_header=no])
1385     ], [dnl
1386       AC_MSG_ERROR([missing __attribute__ ((constructor)) support??])
1387     ])
1389 if test $libc_cv_ctors_header = no; then
1390   AC_DEFINE(NO_CTORS_DTORS_SECTIONS)
1393 AC_CACHE_CHECK(for libunwind-support in compiler,
1394                libc_cv_cc_with_libunwind, [
1395   cat > conftest.c <<EOF
1396 int main (void) { return 0; }
1398   if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
1399      conftest.c -v 2>&1 >/dev/null | grep ' -lunwind ' >/dev/null; then
1400     libc_cv_cc_with_libunwind=yes
1401   else
1402     libc_cv_cc_with_libunwind=no
1403   fi
1404   rm -f conftest*])
1405 AC_SUBST(libc_cv_cc_with_libunwind)
1406 if test $libc_cv_cc_with_libunwind = yes; then
1407   AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
1410 ASFLAGS_config=
1411 AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1412                libc_cv_as_noexecstack, [dnl
1413 cat > conftest.c <<EOF
1414 void foo (void) { }
1416 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1417                    -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
1418    && grep .note.GNU-stack conftest.s >/dev/null \
1419    && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
1420                       -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1421 then
1422   libc_cv_as_noexecstack=yes
1423 else
1424   libc_cv_as_noexecstack=no
1426 rm -f conftest*])
1427 if test $libc_cv_as_noexecstack = yes; then
1428   ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1430 AC_SUBST(ASFLAGS_config)
1432 AC_CACHE_CHECK(for -z combreloc,
1433                libc_cv_z_combreloc, [dnl
1434 cat > conftest.c <<EOF
1435 extern int bar (int);
1436 extern int mumble;
1437 int foo (void) { return bar (mumble); }
1439 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1440                         -fPIC -shared $no_ssp -o conftest.so conftest.c
1441                         -nostdlib -nostartfiles
1442                         -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
1443 then
1444 dnl The following test is a bit weak.  We must use a tool which can test
1445 dnl cross-platform since the gcc used can be a cross compiler.  Without
1446 dnl introducing new options this is not easily doable.  Instead use a tool
1447 dnl which always is cross-platform: readelf.  To detect whether -z combreloc
1448 dnl look for a section named .rel.dyn or .rela.dyn.
1449   if $READELF -S conftest.so | grep -E '.rela?.dyn' > /dev/null; then
1450     libc_cv_z_combreloc=yes
1451   else
1452     libc_cv_z_combreloc=no
1453   fi
1454 else
1455   libc_cv_z_combreloc=no
1457 rm -f conftest*])
1458 if test "$libc_cv_z_combreloc" = yes; then
1459   AC_DEFINE(HAVE_Z_COMBRELOC)
1461 AC_SUBST(libc_cv_z_combreloc)
1463 LIBC_LINKER_FEATURE([-z execstack], [-Wl,-z,execstack],
1464                     [libc_cv_z_execstack=yes], [libc_cv_z_execstack=no])
1465 AC_SUBST(libc_cv_z_execstack)
1467 AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
1468 LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no])
1471 AC_SUBST(libc_cv_fpie)
1473 AC_CACHE_CHECK(for --hash-style option,
1474                libc_cv_hashstyle, [dnl
1475 cat > conftest.c <<EOF
1476 int _start (void) { return 42; }
1478 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
1479                             -fPIC -shared -o conftest.so conftest.c
1480                             -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
1481 then
1482   libc_cv_hashstyle=yes
1483 else
1484   libc_cv_hashstyle=no
1486 rm -f conftest*])
1487 AC_SUBST(libc_cv_hashstyle)
1489 # The linker's default -shared behavior is good enough if it
1490 # does these things that our custom linker scripts ensure that
1491 # all allocated NOTE sections come first.
1492 if test "$use_default_link" = default; then
1493   AC_CACHE_CHECK([for sufficient default -shared layout],
1494                   libc_cv_use_default_link, [dnl
1495   libc_cv_use_default_link=no
1496   cat > conftest.s <<\EOF
1497           .section .note.a,"a",%note
1498           .balign 4
1499           .long 4,4,9
1500           .string "GNU"
1501           .string "foo"
1502           .section .note.b,"a",%note
1503           .balign 4
1504           .long 4,4,9
1505           .string "GNU"
1506           .string "bar"
1508   if AC_TRY_COMMAND([dnl
1509   ${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD]) &&
1510        ac_try=`$READELF -S conftest.so | sed -n \
1511          ['${x;p;}
1512           s/^ *\[ *[1-9][0-9]*\]  *\([^ ][^ ]*\)  *\([^ ][^ ]*\) .*$/\2 \1/
1513           t a
1514           b
1515           : a
1516           H']`
1517   then
1518     libc_seen_a=no libc_seen_b=no
1519     set -- $ac_try
1520     while test $# -ge 2 -a "$1" = NOTE; do
1521       case "$2" in
1522       .note.a) libc_seen_a=yes ;;
1523       .note.b) libc_seen_b=yes ;;
1524       esac
1525       shift 2
1526     done
1527     case "$libc_seen_a$libc_seen_b" in
1528     yesyes)
1529       libc_cv_use_default_link=yes
1530       ;;
1531     *)
1532       echo >&AS_MESSAGE_LOG_FD "\
1533 $libc_seen_a$libc_seen_b from:
1534 $ac_try"
1535       ;;
1536     esac
1537   fi
1538   rm -f conftest*])
1539   use_default_link=$libc_cv_use_default_link
1542 AC_CACHE_CHECK(for GLOB_DAT reloc,
1543                libc_cv_has_glob_dat, [dnl
1544 cat > conftest.c <<EOF
1545 extern int mumble;
1546 int foo (void) { return mumble; }
1548 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1549                         -fPIC -shared -o conftest.so conftest.c
1550                         -nostdlib -nostartfiles $no_ssp
1551                         1>&AS_MESSAGE_LOG_FD])
1552 then
1553 dnl look for GLOB_DAT relocation.
1554   if $READELF -rW conftest.so | grep '_GLOB_DAT' > /dev/null; then
1555     libc_cv_has_glob_dat=yes
1556   else
1557     libc_cv_has_glob_dat=no
1558   fi
1559 else
1560   libc_cv_has_glob_dat=no
1562 rm -f conftest*])
1563 AC_SUBST(libc_cv_has_glob_dat)
1565 AC_CACHE_CHECK(linker output format, libc_cv_output_format, [dnl
1566 if libc_cv_output_format=`
1567 ${CC-cc} -nostartfiles -nostdlib $no_ssp -Wl,--print-output-format 2>&AS_MESSAGE_LOG_FD`
1568 then
1569   :
1570 else
1571   libc_cv_output_format=
1573 test -n "$libc_cv_output_format" || libc_cv_output_format=unknown])
1574 AC_SUBST(libc_cv_output_format)
1576 AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl
1577 cat > conftest.c <<EOF
1578 int foo;
1580 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-anchors
1581                             conftest.c 1>&AS_MESSAGE_LOG_FD])
1582 then
1583   libc_cv_fno_toplevel_reorder=yes
1584 else
1585   libc_cv_fno_toplevel_reorder=no
1587 rm -f conftest*])
1588 if test $libc_cv_fno_toplevel_reorder = yes; then
1589   fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
1590 else
1591   fno_unit_at_a_time=-fno-unit-at-a-time
1593 AC_SUBST(fno_unit_at_a_time)
1595 AC_CACHE_CHECK([for -mtls-dialect=gnu2], libc_cv_mtls_dialect_gnu2,
1596 [dnl
1597 cat > conftest.c <<EOF
1598 __thread int i;
1599 void foo (void)
1601   i = 10;
1604 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fPIC -mtls-dialect=gnu2
1605                    conftest.c 1>&AS_MESSAGE_LOG_FD])
1606 then
1607   libc_cv_mtls_dialect_gnu2=yes
1608 else
1609   libc_cv_mtls_dialect_gnu2=no
1611 rm -f conftest*])
1612 AC_SUBST(libc_cv_mtls_dialect_gnu2)
1613 LIBC_CONFIG_VAR([have-mtls-dialect-gnu2], [$libc_cv_mtls_dialect_gnu2])
1615 AC_CACHE_CHECK(whether cc puts quotes around section names,
1616                libc_cv_have_section_quotes,
1617                [cat > conftest.c <<EOF
1618                 static const int foo
1619                 __attribute__ ((section ("bar"))) = 1;
1621                 if ${CC-cc} -S conftest.c -o conftest.s; then
1622                   if grep '\.section.*"bar"' conftest.s >/dev/null; then
1623                     libc_cv_have_section_quotes=yes
1624                   else
1625                     libc_cv_have_section_quotes=no
1626                   fi
1627                 else
1628                   libc_cv_have_section_quotes=unknown
1629                 fi
1630                 rm -f conftest.{c,s}
1631                 ])
1632 if test $libc_cv_have_section_quotes = yes; then
1633   AC_DEFINE(HAVE_SECTION_QUOTES)
1636 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1637 cat > conftest.c <<\EOF
1638 void zero (void *x)
1640   __builtin_memset (x, 0, 1000);
1644 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | grep -F "memset" > /dev/null]);
1645 then
1646   libc_cv_gcc_builtin_memset=no
1647 else
1648   libc_cv_gcc_builtin_memset=yes
1650 rm -f conftest* ])
1651 if test "$libc_cv_gcc_builtin_memset" = yes ; then
1652   AC_DEFINE(HAVE_BUILTIN_MEMSET)
1655 AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1656 cat > conftest.c <<\EOF
1657 extern char *strstr (const char *, const char *) __asm ("my_strstr");
1658 char *foo (const char *a, const char *b)
1660   return __builtin_strstr (a, b);
1664 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | grep -F "my_strstr" > /dev/null]);
1665 then
1666   libc_cv_gcc_builtin_redirection=yes
1667 else
1668   libc_cv_gcc_builtin_redirection=no
1670 rm -f conftest* ])
1671 if test "$libc_cv_gcc_builtin_redirection" = no; then
1672   AC_MSG_ERROR([support for the symbol redirection needed])
1675 dnl Determine how to disable generation of FMA instructions.
1676 AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
1677                libc_cv_cc_nofma, [dnl
1678 libc_cv_cc_nofma=
1679 for opt in -ffp-contract=off -mno-fused-madd; do
1680   LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
1681 done])
1682 AC_SUBST(libc_cv_cc_nofma)
1684 if test -n "$submachine"; then
1685   AC_CACHE_CHECK([for compiler option for CPU variant],
1686                  libc_cv_cc_submachine, [dnl
1687   libc_cv_cc_submachine=no
1688   for opt in "-march=$submachine" "-mcpu=$submachine"; do
1689     LIBC_TRY_CC_OPTION([$opt], [
1690       libc_cv_cc_submachine="$opt"
1691       break], [])
1692   done])
1693   if test "x$libc_cv_cc_submachine" = xno; then
1694     AC_MSG_ERROR([${CC-cc} does not support $submachine])
1695   fi
1697 AC_SUBST(libc_cv_cc_submachine)
1699 AC_CACHE_CHECK(if $CC accepts -fno-tree-loop-distribute-patterns with \
1700 __attribute__ ((__optimize__)), libc_cv_cc_loop_to_function, [dnl
1701 cat > conftest.c <<EOF
1702 void
1703 __attribute__ ((__optimize__ ("-fno-tree-loop-distribute-patterns")))
1704 foo (void) {}
1706 libc_cv_cc_loop_to_function=no
1707 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c])
1708 then
1709   libc_cv_cc_loop_to_function=yes
1711 rm -f conftest*])
1712 if test $libc_cv_cc_loop_to_function = yes; then
1713   AC_DEFINE(HAVE_CC_INHIBIT_LOOP_TO_LIBCALL)
1715 AC_SUBST(libc_cv_cc_loop_to_function)
1717 dnl Check whether we have the gd library available.
1718 AC_MSG_CHECKING(for libgd)
1719 if test "$with_gd" != "no"; then
1720   old_CFLAGS="$CFLAGS"
1721   CFLAGS="$CFLAGS $libgd_include"
1722   old_LDFLAGS="$LDFLAGS"
1723   LDFLAGS="$LDFLAGS $libgd_ldflags"
1724   old_LIBS="$LIBS"
1725   LIBS="$LIBS -lgd -lpng -lz -lm"
1726   AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1727   CFLAGS="$old_CFLAGS"
1728   LDFLAGS="$old_LDFLAGS"
1729   LIBS="$old_LIBS"
1730 else
1731   LIBGD=no
1733 AC_MSG_RESULT($LIBGD)
1734 AC_SUBST(LIBGD)
1736 # SELinux detection
1737 if test x$with_selinux = xno ; then
1738   have_selinux=no;
1739 else
1740   # See if we have the SELinux library
1741   AC_CHECK_LIB(selinux, is_selinux_enabled,
1742                have_selinux=yes, have_selinux=no)
1743   if test x$with_selinux = xyes ; then
1744     if test x$have_selinux = xno ; then
1745       AC_MSG_ERROR([SELinux explicitly required, but SELinux library not found])
1746     fi
1747   fi
1749 # Check if we're building with SELinux support.
1750 if test "x$have_selinux" = xyes; then
1751   AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
1753   # See if we have the libaudit library
1754   AC_CHECK_LIB(audit, audit_log_user_avc_message,
1755                have_libaudit=yes, have_libaudit=no)
1756   if test "x$have_libaudit" = xyes; then
1757     AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
1758   fi
1759   AC_SUBST(have_libaudit)
1761   # See if we have the libcap library
1762   AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
1763   if test "x$have_libcap" = xyes; then
1764     AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
1765   fi
1766   AC_SUBST(have_libcap)
1768 AC_SUBST(have_selinux)
1770 CPPUNDEFS=
1771 dnl Check for silly hacked compilers predefining _FORTIFY_SOURCE.
1772 dnl Since we are building the implementations of the fortified functions here,
1773 dnl having the macro defined interacts very badly.
1774 AC_CACHE_CHECK([for _FORTIFY_SOURCE predefine], libc_cv_predef_fortify_source,
1775 [AC_TRY_COMPILE([], [
1776 #ifdef _FORTIFY_SOURCE
1777 # error bogon
1778 #endif],
1779                 [libc_cv_predef_fortify_source=no],
1780                 [libc_cv_predef_fortify_source=yes])])
1781 if test $libc_cv_predef_fortify_source = yes; then
1782   CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE"
1784 AC_SUBST(CPPUNDEFS)
1786 # Some linkers on some architectures support __ehdr_start but with
1787 # bugs.  Make sure usage of it does not create relocations in the
1788 # output (as the linker should resolve them all for us).
1789 AC_CACHE_CHECK([whether the linker provides working __ehdr_start],
1790                libc_cv_ehdr_start, [
1791 old_CFLAGS="$CFLAGS"
1792 old_LDFLAGS="$LDFLAGS"
1793 old_LIBS="$LIBS"
1794 CFLAGS="$CFLAGS -fPIC"
1795 LDFLAGS="$LDFLAGS -nostdlib -nostartfiles -shared $no_ssp"
1796 LIBS=
1797 AC_LINK_IFELSE([AC_LANG_SOURCE([
1798 typedef struct {
1799   char foo;
1800   long val;
1801 } Ehdr;
1802 extern const Ehdr __ehdr_start __attribute__ ((visibility ("hidden")));
1803 long ehdr (void) { return __ehdr_start.val; }
1804 ])],
1805                [if $READELF -r conftest | grep -F __ehdr_start >/dev/null; then
1806                   libc_cv_ehdr_start=broken
1807                 else
1808                   libc_cv_ehdr_start=yes
1809                 fi], [libc_cv_ehdr_start=no])
1810 CFLAGS="$old_CFLAGS"
1811 LDFLAGS="$old_LDFLAGS"
1812 LIBS="$old_LIBS"
1814 if test "$libc_cv_ehdr_start" = yes; then
1815   AC_DEFINE([HAVE_EHDR_START])
1816 elif test "$libc_cv_ehdr_start" = broken; then
1817   AC_MSG_WARN([linker is broken -- you should upgrade])
1820 AC_CACHE_CHECK(for __builtin_trap with no external dependencies,
1821                libc_cv_builtin_trap, [dnl
1822 libc_cv_builtin_trap=no
1823 AC_TRY_COMPILE([], [__builtin_trap ()], [
1824 libc_undefs=`$NM -u conftest.o |
1825   LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \
1826     2>&AS_MESSAGE_LOG_FD` || {
1827   AC_MSG_ERROR([confusing output from $NM -u])
1829 echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'"
1830 if test -z "$libc_undefs"; then
1831   libc_cv_builtin_trap=yes
1832 fi])])
1833 if test $libc_cv_builtin_trap = yes; then
1834   AC_DEFINE([HAVE_BUILTIN_TRAP])
1837 dnl C++ feature tests.
1838 AC_LANG_PUSH([C++])
1840 AC_CACHE_CHECK([whether the C++ compiler supports thread_local],
1841                libc_cv_cxx_thread_local, [
1842 old_CXXFLAGS="$CXXFLAGS"
1843 CXXFLAGS="$CXXFLAGS -std=gnu++11"
1844 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1845 #include <thread>
1847 // Compiler support.
1848 struct S
1850   S ();
1851   ~S ();
1853 thread_local S s;
1854 S * get () { return &s; }
1856 // libstdc++ support.
1857 #ifndef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL
1858 #error __cxa_thread_atexit_impl not supported
1859 #endif
1860 ])],
1861                [libc_cv_cxx_thread_local=yes],
1862                [libc_cv_cxx_thread_local=no])
1863 CXXFLAGS="$old_CXXFLAGS"
1865 AC_SUBST(libc_cv_cxx_thread_local)
1867 AC_LANG_POP([C++])
1868 dnl End of C++ feature tests.
1870 ### End of automated tests.
1871 ### Now run sysdeps configure fragments.
1873 # They also can set these variables.
1874 use_ldconfig=no
1875 ldd_rewrite_script=no
1876 libc_cv_sysconfdir=$sysconfdir
1877 libc_cv_localstatedir=$localstatedir
1878 libc_cv_gcc_unwind_find_fde=no
1879 libc_cv_idn=no
1881 # Iterate over all the sysdep directories we will use, running their
1882 # configure fragments.
1883 for dir in $sysnames; do
1884   case $dir in
1885     /*) dest=$dir ;;
1886     *)  dest=$srcdir/$dir ;;
1887   esac
1888   if test -r $dest/configure; then
1889     AC_MSG_RESULT(running configure fragment for $dir)
1890     . $dest/configure
1891   fi
1892 done
1894 if test x"$build_mathvec" = xnotset; then
1895   build_mathvec=no
1897 LIBC_CONFIG_VAR([build-mathvec], [$build_mathvec])
1899 AC_SUBST(libc_extra_cflags)
1900 AC_SUBST(libc_extra_cppflags)
1902 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
1903   AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
1905 AC_SUBST(libc_cv_gcc_unwind_find_fde)
1907 # A sysdeps configure fragment can reset this if IFUNC is not actually
1908 # usable even though the assembler knows how to generate the symbol type.
1909 if test x"$libc_cv_ld_gnu_indirect_function" = xyes; then
1910   AC_DEFINE(HAVE_IFUNC)
1913 if test x"$libc_cv_gcc_indirect_function" = xyes; then
1914   AC_DEFINE(HAVE_GCC_IFUNC)
1917 # This is far from the AC_ARG_ENABLE that sets it so that a sysdeps
1918 # configure fragment can override the value to prevent this AC_DEFINE.
1919 AC_SUBST(use_nscd)
1920 if test "x$use_nscd" != xno; then
1921   AC_DEFINE([USE_NSCD])
1923 if test "x$build_nscd" = xdefault; then
1924   build_nscd=$use_nscd
1927 AC_SUBST(libc_cv_slibdir)
1928 AC_SUBST(libc_cv_rtlddir)
1929 AC_SUBST(libc_cv_complocaledir)
1930 AC_SUBST(libc_cv_sysconfdir)
1931 AC_SUBST(libc_cv_localstatedir)
1932 AC_SUBST(libc_cv_rootsbindir)
1934 if test x$use_ldconfig = xyes; then
1935   AC_DEFINE(USE_LDCONFIG)
1937 AC_SUBST(use_ldconfig)
1938 AC_SUBST(ldd_rewrite_script)
1940 AC_SUBST(static)
1941 AC_SUBST(shared)
1943 AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
1944 [libc_cv_pic_default=yes
1945 cat > conftest.c <<EOF
1946 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
1947 # error PIC is default.
1948 #endif
1950 if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
1951   libc_cv_pic_default=no
1953 rm -f conftest.*])
1954 AC_SUBST(libc_cv_pic_default)
1956 AC_CACHE_CHECK([whether -fPIE is default], libc_cv_pie_default,
1957 [libc_cv_pie_default=yes
1958 cat > conftest.c <<EOF
1959 #if defined __PIE__ || defined __pie__ || defined PIE || defined pie
1960 # error PIE is default.
1961 #endif
1963 if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
1964   libc_cv_pie_default=no
1966 rm -f conftest.*])
1967 AC_SUBST(libc_cv_pie_default)
1969 AC_SUBST(profile)
1970 AC_SUBST(static_nss)
1972 AC_SUBST(DEFINES)
1974 dnl See sysdeps/mach/configure.ac for this variable.
1975 AC_SUBST(mach_interface_list)
1977 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
1978 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
1979 AC_SUBST(VERSION)
1980 AC_SUBST(RELEASE)
1982 AC_CONFIG_FILES([config.make Makefile])
1983 AC_CONFIG_COMMANDS([default],[[
1984 case $CONFIG_FILES in *config.make*)
1985 echo "$config_vars" >> config.make;;
1986 esac
1987 test -d bits || mkdir bits]],[[config_vars='$config_vars']])
1988 AC_OUTPUT