[aarch64] Add an ASIMD variant of strlen for falkor
[glibc.git] / configure.ac
blob014e09a5d58d102d208ddfaa192d844b1792d94f
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)], [https://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 # <https://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 # <https://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([binutils],
131             AC_HELP_STRING([--with-binutils=PATH],
132                            [specify location of binutils (as and ld)]),
133             [path_binutils=$withval],
134             [path_binutils=''])
135 AC_ARG_WITH([selinux],
136             AC_HELP_STRING([--with-selinux],
137                            [if building with SELinux support]),
138             [with_selinux=$withval],
139             [with_selinux=auto])
141 AC_ARG_WITH([headers],
142             AC_HELP_STRING([--with-headers=PATH],
143                            [location of system headers to use
144                             (for example /usr/src/linux/include)
145                             @<:@default=compiler default@:>@]),
146             [sysheaders=$withval],
147             [sysheaders=''])
148 AC_SUBST(sysheaders)
150 AC_SUBST(use_default_link)
151 AC_ARG_WITH([default-link],
152             AC_HELP_STRING([--with-default-link],
153                            [do not use explicit linker scripts]),
154             [use_default_link=$withval],
155             [use_default_link=default])
157 AC_ARG_ENABLE([sanity-checks],
158               AC_HELP_STRING([--disable-sanity-checks],
159                              [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
160               [enable_sanity=$enableval],
161               [enable_sanity=yes])
163 AC_ARG_ENABLE([shared],
164               AC_HELP_STRING([--enable-shared],
165                              [build shared library @<:@default=yes if GNU ld@:>@]),
166               [shared=$enableval],
167               [shared=yes])
168 AC_ARG_ENABLE([profile],
169               AC_HELP_STRING([--enable-profile],
170                              [build profiled library @<:@default=no@:>@]),
171               [profile=$enableval],
172               [profile=no])
173 AC_ARG_ENABLE([static-pie],
174               AC_HELP_STRING([--enable-static-pie],
175                              [enable static PIE support and use it in the testsuite @<:@default=no@:>@]),
176               [static_pie=$enableval],
177               [static_pie=no])
178 AC_ARG_ENABLE([timezone-tools],
179               AC_HELP_STRING([--disable-timezone-tools],
180                              [do not install timezone tools @<:@default=install@:>@]),
181               [enable_timezone_tools=$enableval],
182               [enable_timezone_tools=yes])
183 AC_SUBST(enable_timezone_tools)
185 AC_ARG_ENABLE([hardcoded-path-in-tests],
186               AC_HELP_STRING([--enable-hardcoded-path-in-tests],
187                              [hardcode newly built glibc path in tests @<:@default=no@:>@]),
188               [hardcoded_path_in_tests=$enableval],
189               [hardcoded_path_in_tests=no])
190 AC_SUBST(hardcoded_path_in_tests)
192 AC_ARG_ENABLE([stackguard-randomization],
193               AC_HELP_STRING([--enable-stackguard-randomization],
194                              [initialize __stack_chk_guard canary with a random number at program start]),
195               [enable_stackguard_randomize=$enableval],
196               [enable_stackguard_randomize=no])
197 if test "$enable_stackguard_randomize" = yes; then
198   AC_DEFINE(ENABLE_STACKGUARD_RANDOMIZE)
201 AC_ARG_ENABLE([hidden-plt],
202               AC_HELP_STRING([--disable-hidden-plt],
203                              [do not hide internal function calls to avoid PLT]),
204               [hidden=$enableval],
205               [hidden=yes])
206 if test "x$hidden" = xno; then
207   AC_DEFINE(NO_HIDDEN)
210 AC_ARG_ENABLE([bind-now],
211               AC_HELP_STRING([--enable-bind-now],
212                              [disable lazy relocations in DSOs]),
213               [bindnow=$enableval],
214               [bindnow=no])
215 AC_SUBST(bindnow)
216 if test "x$bindnow" = xyes; then
217   AC_DEFINE(BIND_NOW)
220 dnl Build glibc with -fstack-protector, -fstack-protector-all, or
221 dnl -fstack-protector-strong.
222 AC_ARG_ENABLE([stack-protector],
223               AC_HELP_STRING([--enable-stack-protector=@<:@yes|no|all|strong@:>@],
224                              [Use -fstack-protector[-all|-strong] to detect glibc buffer overflows]),
225               [enable_stack_protector=$enableval],
226               [enable_stack_protector=no])
227 case "$enable_stack_protector" in
228 all|yes|no|strong) ;;
229 *) AC_MSG_ERROR([Not a valid argument for --enable-stack-protector: \"$enable_stack_protector\"]);;
230 esac
232 dnl On some platforms we cannot use dynamic loading.  We must provide
233 dnl static NSS modules.
234 AC_ARG_ENABLE([static-nss],
235               AC_HELP_STRING([--enable-static-nss],
236                              [build static NSS modules @<:@default=no@:>@]),
237               [static_nss=$enableval],
238               [static_nss=no])
239 dnl Enable static NSS also if we build no shared objects.
240 if test x"$static_nss" = xyes || test x"$shared" = xno; then
241   static_nss=yes
242   AC_DEFINE(DO_STATIC_NSS)
245 AC_ARG_ENABLE([force-install],
246               AC_HELP_STRING([--disable-force-install],
247                              [don't force installation of files from this package, even if they are older than the installed files]),
248               [force_install=$enableval],
249               [force_install=yes])
250 AC_SUBST(force_install)
252 AC_ARG_ENABLE([maintainer-mode],
253               AC_HELP_STRING([--enable-maintainer-mode],
254                              [enable make rules and dependencies not useful (and sometimes confusing) to the casual installer]),
255               [maintainer=$enableval],
256               [maintainer=no])
258 dnl On some platforms we allow dropping compatibility with all kernel
259 dnl versions.
260 AC_ARG_ENABLE([kernel],
261               AC_HELP_STRING([--enable-kernel=VERSION],
262                              [compile for compatibility with kernel not older than VERSION]),
263               [minimum_kernel=$enableval],
264               [])
265 dnl Prevent unreasonable values.
266 if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
267   # Better nothing than this.
268   minimum_kernel=""
269 else
270   if test "$minimum_kernel" = current; then
271     minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
272   fi
275 dnl For the development we sometimes want gcc to issue even more warnings.
276 dnl This is not the default since many of the extra warnings are not
277 dnl appropriate.
278 AC_ARG_ENABLE([all-warnings],
279               AC_HELP_STRING([--enable-all-warnings],
280                              [enable all useful warnings gcc can issue]),
281               [all_warnings=$enableval],
282               [])
283 AC_SUBST(all_warnings)
285 AC_ARG_ENABLE([werror],
286               AC_HELP_STRING([--disable-werror],
287                              [do not build with -Werror]),
288               [enable_werror=$enableval],
289               [enable_werror=yes])
290 AC_SUBST(enable_werror)
292 AC_ARG_ENABLE([multi-arch],
293               AC_HELP_STRING([--enable-multi-arch],
294                              [enable single DSO with optimizations for multiple architectures]),
295               [multi_arch=$enableval],
296               [multi_arch=default])
298 AC_ARG_ENABLE([experimental-malloc],
299               AC_HELP_STRING([--disable-experimental-malloc],
300                              [disable experimental malloc features]),
301               [experimental_malloc=$enableval],
302               [experimental_malloc=yes])
303 AC_SUBST(experimental_malloc)
305 AC_ARG_ENABLE([crypt],
306               AC_HELP_STRING([--disable-crypt],
307                              [do not build nor install the passphrase hashing library, libcrypt]),
308               [build_crypt=$enableval],
309               [build_crypt=yes])
310 AC_SUBST(build_crypt)
312 AC_ARG_ENABLE([nss-crypt],
313               AC_HELP_STRING([--enable-nss-crypt],
314                              [enable libcrypt to use nss]),
315               [nss_crypt=$enableval],
316               [nss_crypt=no])
317 if test x$build_libcrypt = xno && test x$nss_crypt = xyes; then
318   AC_MSG_WARN([--enable-nss-crypt has no effect when libcrypt is disabled])
319   nss_crypt=no
321 if test x$nss_crypt = xyes; then
322   nss_includes=-I$(nss-config --includedir 2>/dev/null)
323   if test $? -ne 0; then
324     AC_MSG_ERROR([cannot find include directory with nss-config])
325   fi
326   nspr_includes=-I$(nspr-config --includedir 2>/dev/null)
327   if test $? -ne 0; then
328     AC_MSG_ERROR([cannot find include directory with nspr-config])
329   fi
330   old_CFLAGS="$CFLAGS"
331   CFLAGS="$CFLAGS $nss_includes $nspr_includes"
332   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
333 #include <hasht.h>
334 #include <nsslowhash.h>
335 void f (void) { NSSLOW_Init (); }])],
336              libc_cv_nss_crypt=yes,
337              AC_MSG_ERROR([
338 cannot find NSS headers with lowlevel hash function interfaces]))
339   old_LIBS="$LIBS"
340   old_LDFLAGS="$LDFLAGS"
341   LIBS="$LIBS -lfreebl3"
342   AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
343 #include <hasht.h>
344 #include <nsslowhash.h>],
345                                   [NSSLOW_Init();])],
346                  libc_cv_nss_crypt=yes,
347                  AC_MSG_ERROR([
348 cannot link program using lowlevel NSS hash functions]))
349   # Check to see if there is a static NSS cryptographic library.
350   # If there isn't then we can't link anything with libcrypt.a,
351   # and that might mean disabling some static tests.
352   LDFLAGS="$LDFLAGS -static"
353   AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
354 #include <hasht.h>
355 #include <nsslowhash.h>],
356                                   [NSSLOW_Init();])],
357                  libc_cv_static_nss_crypt=yes,
358                  libc_cv_static_nss_crypt=no)
359   LDFLAGS="$old_LDFLAGS"
360   CFLAGS="$old_CFLAGS"
361   LIBS="$old_LIBS"
362 else
363   libc_cv_nss_crypt=no
364   libc_cv_static_nss_crypt=no
366 AC_SUBST(libc_cv_nss_crypt)
367 AC_SUBST(libc_cv_static_nss_crypt)
370 AC_ARG_ENABLE([obsolete-rpc],
371               AC_HELP_STRING([--enable-obsolete-rpc],
372                              [build and install the obsolete RPC code for link-time usage]),
373               [link_obsolete_rpc=$enableval],
374               [link_obsolete_rpc=no])
375 AC_SUBST(link_obsolete_rpc)
377 if test "$link_obsolete_rpc" = yes; then
378   AC_DEFINE(LINK_OBSOLETE_RPC)
381 AC_ARG_ENABLE([obsolete-nsl],
382               AC_HELP_STRING([--enable-obsolete-nsl],
383                              [build and install the obsolete libnsl library and depending NSS modules]),
384               [build_obsolete_nsl=$enableval],
385               [build_obsolete_nsl=no])
386 AC_SUBST(build_obsolete_nsl)
388 if test "$build_obsolete_nsl" = yes; then
389   AC_DEFINE(LINK_OBSOLETE_NSL)
392 AC_ARG_ENABLE([systemtap],
393               [AS_HELP_STRING([--enable-systemtap],
394                [enable systemtap static probe points @<:@default=no@:>@])],
395               [systemtap=$enableval],
396               [systemtap=no])
397 if test "x$systemtap" != xno; then
398   AC_CACHE_CHECK([for systemtap static probe support], libc_cv_sdt, [dnl
399   old_CFLAGS="$CFLAGS"
400   CFLAGS="-std=gnu11 $CFLAGS"
401   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <sys/sdt.h>
402 void foo (int i, void *p)
404   asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) ""
405        :: STAP_PROBE_ASM_OPERANDS (2, i, p));
406 }]])], [libc_cv_sdt=yes], [libc_cv_sdt=no])
407   CFLAGS="$old_CFLAGS"])
408   if test $libc_cv_sdt = yes; then
409     AC_DEFINE([USE_STAP_PROBE])
410   elif test "x$systemtap" != xauto; then
411     AC_MSG_FAILURE([systemtap support needs sys/sdt.h with asm support])
412   fi
415 AC_ARG_ENABLE([build-nscd],
416               [AS_HELP_STRING([--disable-build-nscd],
417                [disable building and installing the nscd daemon])],
418               [build_nscd=$enableval],
419               [build_nscd=default])
420 AC_SUBST(build_nscd)
422 # Note the use of $use_nscd is near the bottom of the file.
423 AC_ARG_ENABLE([nscd],
424               [AS_HELP_STRING([--disable-nscd],
425                [library functions will not contact the nscd daemon])],
426               [use_nscd=$enableval],
427               [use_nscd=yes])
429 AC_ARG_ENABLE([pt_chown],
430               [AS_HELP_STRING([--enable-pt_chown],
431                [Enable building and installing pt_chown])],
432               [build_pt_chown=$enableval],
433               [build_pt_chown=no])
434 AC_SUBST(build_pt_chown)
435 if test "$build_pt_chown" = yes; then
436   AC_DEFINE(HAVE_PT_CHOWN)
439 AC_ARG_ENABLE([tunables],
440               [AS_HELP_STRING([--enable-tunables],
441                [Enable tunables support. Known values are 'yes', 'no' and 'valstring'])],
442               [have_tunables=$enableval],
443               [have_tunables=yes])
444 AC_SUBST(have_tunables)
445 if test "$have_tunables" = yes; then
446   AC_DEFINE(HAVE_TUNABLES)
449 # The abi-tags file uses a fairly simplistic model for name recognition that
450 # can't distinguish i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a
451 # $host_os of `gnu*' here to be `gnu-gnu*' just so that it can tell.
452 # This doesn't get used much beyond that, so it's fairly safe.
453 case "$host_os" in
454 linux*)
455   ;;
456 gnu*)
457   host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
458   ;;
459 esac
461 AC_ARG_ENABLE([mathvec],
462               [AS_HELP_STRING([--enable-mathvec],
463               [Enable building and installing mathvec @<:@default depends on architecture@:>@])],
464               [build_mathvec=$enableval],
465               [build_mathvec=notset])
467 AC_ARG_ENABLE([cet],
468               AC_HELP_STRING([--enable-cet],
469                              [enable Intel Control-flow Enforcement Technology (CET), x86 only]),
470               [enable_cet=$enableval],
471               [enable_cet=no])
473 # We keep the original values in `$config_*' and never modify them, so we
474 # can write them unchanged into config.make.  Everything else uses
475 # $machine, $vendor, and $os, and changes them whenever convenient.
476 config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
478 # Don't allow vendor == "unknown"
479 test "$config_vendor" = unknown && config_vendor=
480 config_os="`echo $config_os | sed 's/^unknown-//'`"
482 # Some configurations imply other options.
483 elf=yes
485 # The configure fragment of a port can modify these to supplement
486 # or override the table in the case statement below.  No fragment should
487 # ever change the config_* variables, however.
488 machine=$config_machine
489 vendor=$config_vendor
490 os=$config_os
491 base_os=''
493 submachine=
494 AC_ARG_WITH([cpu],
495             AS_HELP_STRING([--with-cpu=CPU], [select code for CPU variant]),
496             [dnl
497   case "$withval" in
498   yes|'') AC_MSG_ERROR([--with-cpu requires an argument]) ;;
499   no) ;;
500   *) submachine="$withval" ;;
501   esac
504 # An preconfigure script can set this when it wants to disable the sanity
505 # check below.
506 libc_config_ok=no
508 # A preconfigure script for a system that may or may not use fpu
509 # sysdeps directories sets this to a preprocessor conditional for
510 # whether to use such directories.
511 with_fp_cond=1
513 dnl Let sysdeps/*/preconfigure act here.
514 LIBC_PRECONFIGURE([$srcdir], [for sysdeps])
518 ### By using the undocumented --enable-hacker-mode option for configure
519 ### one can skip this test to make the configuration not fail for unsupported
520 ### platforms.
522 if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
523   case "$machine-$host_os" in
524   *-linux* | *-gnu*)
525     ;;
526   *)
527     AC_MSG_ERROR([
528 *** The GNU C library is currently unavailable for this platform.
529 *** If you are interested in seeing glibc on this platform visit
530 *** the "How to submit a new port" in the wiki:
531 ***   https://sourceware.org/glibc/wiki/#Development
532 *** and join the community!])
533     ;;
534   esac
537 # Set base_machine if not set by a preconfigure fragment.
538 test -n "$base_machine" || base_machine=$machine
539 AC_SUBST(base_machine)
541 # Determine whether to use fpu or nofpu sysdeps directories.
542 AC_CACHE_CHECK([for use of fpu sysdeps directories],
543                libc_cv_with_fp, [dnl
544 cat > conftest.c <<EOF
545 #if $with_fp_cond
546 int dummy;
547 #else
548 # error "no hardware floating point"
549 #endif
551 libc_cv_with_fp=no
552 if ${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c -o conftest.s \
553    1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
554   libc_cv_with_fp=yes
556 rm -f conftest*])
557 AC_SUBST(libc_cv_with_fp)
559 AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
560 LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector],
561                    [libc_cv_ssp=yes],
562                    [libc_cv_ssp=no])
565 AC_CACHE_CHECK(for -fstack-protector-strong, libc_cv_ssp_strong, [dnl
566 LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector-strong],
567                    [libc_cv_ssp_strong=yes],
568                    [libc_cv_ssp_strong=no])
571 AC_CACHE_CHECK(for -fstack-protector-all, libc_cv_ssp_all, [dnl
572 LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector-all],
573                    [libc_cv_ssp_all=yes],
574                    [libc_cv_ssp_all=no])
577 stack_protector=
578 no_stack_protector=
579 if test "$libc_cv_ssp" = yes; then
580   no_stack_protector="-fno-stack-protector -DSTACK_PROTECTOR_LEVEL=0"
581   AC_DEFINE(HAVE_CC_NO_STACK_PROTECTOR)
584 if test "$enable_stack_protector" = yes && test "$libc_cv_ssp" = yes; then
585   stack_protector="-fstack-protector"
586   AC_DEFINE(STACK_PROTECTOR_LEVEL, 1)
587 elif test "$enable_stack_protector" = all && test "$libc_cv_ssp_all" = yes; then
588   stack_protector="-fstack-protector-all"
589   AC_DEFINE(STACK_PROTECTOR_LEVEL, 2)
590 elif test "$enable_stack_protector" = strong && test "$libc_cv_ssp_strong" = yes; then
591   stack_protector="-fstack-protector-strong"
592   AC_DEFINE(STACK_PROTECTOR_LEVEL, 3)
593 else
594   stack_protector="-fno-stack-protector"
595   AC_DEFINE(STACK_PROTECTOR_LEVEL, 0)
597 AC_SUBST(libc_cv_ssp)
598 AC_SUBST(stack_protector)
599 AC_SUBST(no_stack_protector)
601 if test -n "$stack_protector"; then
602   dnl Don't run configure tests with stack-protection on, to avoid problems with
603   dnl bootstrapping.
604   no_ssp=-fno-stack-protector
605 else
606   no_ssp=
608   if test "$enable_stack_protector" != no; then
609     AC_MSG_ERROR([--enable-stack-protector=$enable_stack_protector specified, but specified level of stack protection is not supported by the compiler.])
610   fi
613 # For the multi-arch option we need support in the assembler & linker.
614 AC_CACHE_CHECK([for assembler and linker STT_GNU_IFUNC support],
615                libc_cv_ld_gnu_indirect_function, [dnl
616 cat > conftest.S <<EOF
617 .type foo,%gnu_indirect_function
618 foo:
619 .globl _start
620 _start:
621 .globl __start
622 __start:
623 .data
624 #ifdef _LP64
625 .quad foo
626 #else
627 .long foo
628 #endif
630 libc_cv_ld_gnu_indirect_function=no
631 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
632             -nostartfiles -nostdlib $no_ssp \
633             -o conftest conftest.S 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
634   # Do a link to see if the backend supports IFUNC relocs.
635   $READELF -r conftest 1>&AS_MESSAGE_LOG_FD
636   LC_ALL=C $READELF -r conftest | grep 'no relocations' >/dev/null || {
637     libc_cv_ld_gnu_indirect_function=yes
638   }
640 rm -f conftest*])
642 # Check if gcc supports attribute ifunc as it is used in libc_ifunc macro.
643 AC_CACHE_CHECK([for gcc attribute ifunc support],
644                libc_cv_gcc_indirect_function, [dnl
645 cat > conftest.c <<EOF
646 extern int func (int);
647 int used_func (int a)
649   return a;
651 static void *resolver ()
653   return &used_func;
655 extern __typeof (func) func __attribute__ ((ifunc ("resolver")));
657 libc_cv_gcc_indirect_function=no
658 if ${CC-cc} -c conftest.c -o conftest.o 1>&AS_MESSAGE_LOG_FD \
659    2>&AS_MESSAGE_LOG_FD ; then
660   if $READELF -s conftest.o | grep IFUNC >/dev/null 2>&AS_MESSAGE_LOG_FD; then
661     libc_cv_gcc_indirect_function=yes
662   fi
664 rm -f conftest*])
666 # Check if gcc warns about alias for function with incompatible types.
667 AC_CACHE_CHECK([if compiler warns about alias for function with incompatible types],
668                libc_cv_gcc_incompatible_alias, [dnl
669 cat > conftest.c <<EOF
670 int __redirect_foo (const void *s, int c);
672 __typeof (__redirect_foo) *foo_impl (void) __asm__ ("foo");
673 __typeof (__redirect_foo) *foo_impl (void)
675   return 0;
678 extern __typeof (__redirect_foo) foo_alias __attribute__ ((alias ("foo")));
680 libc_cv_gcc_incompatible_alias=yes
681 if ${CC-cc} -Werror -c conftest.c -o conftest.o 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
682   libc_cv_gcc_incompatible_alias=no
684 rm -f conftest*])
686 if test x"$libc_cv_ld_gnu_indirect_function" != xyes; then
687   if test x"$multi_arch" = xyes; then
688     AC_MSG_ERROR([--enable-multi-arch support requires assembler and linker support])
689   else
690     multi_arch=no
691   fi
693 if test x"$libc_cv_gcc_indirect_function" != xyes; then
694   # GCC 8+ emits a warning for alias with incompatible types and it might
695   # fail to build ifunc resolvers aliases to either weak or internal
696   # symbols.  Disables multiarch build in this case.
697   if test x"$libc_cv_gcc_incompatible_alias" == xyes; then
698     AC_MSG_WARN([gcc emits a warning for alias between functions of incompatible types])
699     if test x"$multi_arch" = xyes; then
700       AC_MSG_ERROR([--enable-multi-arch support requires a gcc with gnu-indirect-function support])
701     fi
702     AC_MSG_WARN([Multi-arch is disabled.])
703     multi_arch=no
704   elif test x"$multi_arch" = xyes; then
705     AC_MSG_WARN([--enable-multi-arch support recommends a gcc with gnu-indirect-function support.
706 Please use a gcc which supports it by default or configure gcc with --enable-gnu-indirect-function])
707   fi
709 multi_arch_d=
710 if test x"$multi_arch" != xno; then
711   multi_arch_d=/multiarch
714 # Compute the list of sysdep directories for this configuration.
715 # This can take a while to compute.
716 sysdep_dir=$srcdir/sysdeps
717 AC_MSG_CHECKING(sysdep dirs)
718 dnl We need to use [ and ] for other purposes for a while now.
719 changequote(,)dnl
720 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
721 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
723 test "x$base_os" != x || case "$os" in
724 gnu*)
725   base_os=mach/hurd ;;
726 linux*)
727   base_os=unix/sysv ;;
728 esac
730 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
731 tail=$os
732 ostry=$os
733 while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
734   ostry="$ostry /$o"
735   tail=$o
736 done
737 o=`echo $tail | sed 's/[0-9]*$//'`
738 if test $o != $tail; then
739   ostry="$ostry /$o"
741 # For linux-gnu, try linux-gnu, then linux.
742 o=`echo $tail | sed 's/-.*$//'`
743 if test $o != $tail; then
744   ostry="$ostry /$o"
747 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
748 base=
749 tail=$base_os
750 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
751   set $b
752   base="$base /$1"
753   tail="$2"
754 done
756 # For sparc/sparc32, try sparc/sparc32 and then sparc.
757 mach=
758 tail=$machine${submachine:+/$submachine}
759 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
760   set $m
761   # Prepend the machine's FPU directory unless --without-fp.
762   if test "$libc_cv_with_fp" = yes; then
763     maybe_fpu=/fpu
764   else
765     maybe_fpu=/nofpu
766   fi
767   # For each machine term, try it with and then without /multiarch.
768   for try_fpu in $maybe_fpu ''; do
769     for try_multi in $multi_arch_d ''; do
770       mach="$mach /$1$try_fpu$try_multi"
771     done
772   done
773   tail="$2"
774 done
776 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
777 changequote([,])dnl
779 # Find what sysdep directories exist.
780 sysnames=
781 for b in $base ''; do
782   for m0 in $mach ''; do
783     for v in /$vendor ''; do
784       test "$v" = / && continue
785       for o in /$ostry ''; do
786         test "$o" = / && continue
787         for m in $mach ''; do
788           try_suffix="$m0$b$v$o$m"
789           if test -n "$try_suffix"; then
790             try_srcdir="${srcdir}/"
791             try="sysdeps$try_suffix"
792             test -n "$enable_debug_configure" &&
793             echo "$0 [DEBUG]: try $try" >&2
794             if test -d "$try_srcdir$try"; then
795               sysnames="$sysnames $try"
796               { test -n "$o" || test -n "$b"; } && os_used=t
797               { test -n "$m" || test -n "$m0"; } && machine_used=t
798               case x${m0:-$m} in
799               x*/$submachine) submachine_used=t ;;
800               esac
801             fi
802           fi
803         done
804       done
805     done
806   done
807 done
809 # If the assembler supports gnu_indirect_function symbol type and the
810 # architecture supports multi-arch, we enable multi-arch by default.
811 case $sysnames in
812 *"$multi_arch_d"*)
813   ;;
815   test x"$multi_arch" = xdefault && multi_arch=no
816   ;;
817 esac
818 if test x"$multi_arch" != xno; then
819   AC_DEFINE(USE_MULTIARCH)
821 AC_SUBST(multi_arch)
823 if test -z "$os_used" && test "$os" != none; then
824   AC_MSG_ERROR(Operating system $os is not supported.)
826 if test -z "$machine_used" && test "$machine" != none; then
827   AC_MSG_ERROR(The $machine is not supported.)
829 if test -z "$submachine_used" && test -n "$submachine"; then
830   AC_MSG_ERROR(The $submachine subspecies of $host_cpu is not supported.)
832 AC_SUBST(submachine)
834 # We have now validated the configuration.
836 # Expand the list of system names into a full list of directories
837 # from each element's parent name and Implies file (if present).
838 set $sysnames
839 names=
840 while test $# -gt 0; do
841   name=$1
842   shift
844   case " $names " in *" $name "*)
845     # Already in the list.
846     continue
847   esac
849   # Report each name as we discover it, so there is no long pause in output.
850   echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
852   name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
854   case $name in
855     /*) xsrcdir= ;;
856     *)  xsrcdir=$srcdir/ ;;
857   esac
858   test -n "$enable_debug_configure" &&
859   echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
861   for implies_file in Implies Implies-before Implies-after; do
862     implies_type=`echo $implies_file | sed s/-/_/`
863     eval ${implies_type}=
864     if test -f $xsrcdir$name/$implies_file; then
865       # Collect more names from the `Implies' file (removing comments).
866       implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/$implies_file`"
867       for x in $implied_candidate; do
868         found=no
869         if test -d $xsrcdir$name_base/$x; then
870           eval "${implies_type}=\"\$${implies_type} \$name_base/\$x\""
871           found=yes
872         fi
873         try="sysdeps/$x"
874         try_srcdir=$srcdir/
875         test -n "$enable_debug_configure" &&
876          echo "[DEBUG]: $name $implies_file $x try() {$try_srcdir}$try" >&2
877         if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
878         then
879           eval "${implies_type}=\"\$${implies_type} \$try\""
880           found=yes
881         fi
882         if test $found = no; then
883           AC_MSG_WARN($name/$implies_file specifies nonexistent $x)
884         fi
885       done
886     fi
887   done
889   # Add NAME to the list of names.
890   names="$names $name"
892   # Find the parent of NAME, using the empty string if it has none.
893 changequote(,)dnl
894   parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
895 changequote([,])dnl
897   test -n "$enable_debug_configure" &&
898     echo "[DEBUG]: $name Implies='$Implies' rest='$*' parent='$parent' \
899 Implies_before='$Implies_before' Implies_after='$Implies_after'" >&2
901   # Add the names implied by NAME, and NAME's parent (if it has one), to
902   # the list of names to be processed (the argument list).  We prepend the
903   # implied names to the list and append the parent.  We want implied
904   # directories to come before further directories inferred from the
905   # configuration components; this ensures that for sysv4, unix/common
906   # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
907   # after sysv4).
908   sysnames="`echo $Implies $* $Implies_before $parent $Implies_after`"
909   test -n "$sysnames" && set $sysnames
910 done
912 # Add the default directories.
913 default_sysnames="sysdeps/generic"
914 sysnames="$names $default_sysnames"
915 AC_SUBST(sysnames)
916 # The other names were emitted during the scan.
917 AC_MSG_RESULT($default_sysnames)
920 ### Locate tools.
922 AC_PROG_INSTALL
923 if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
924   # The makefiles need to use a different form to find it in $srcdir.
925   INSTALL='\$(..)./scripts/install-sh -c'
927 AC_PROG_LN_S
929 LIBC_PROG_BINUTILS
931 # Accept binutils 2.25 or newer.
932 AC_CHECK_PROG_VER(AS, $AS, --version,
933                   [GNU assembler.* \([0-9]*\.[0-9.]*\)],
934                   [2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*],
935                   AS=: critic_missing="$critic_missing as")
937 if test -n "`$LD --version | sed -n 's/^GNU \(gold\).*$/\1/p'`"; then
938   # Accept gold 1.14 or higher
939   AC_CHECK_PROG_VER(LD, $LD, --version,
940                     [GNU gold.* \([0-9][0-9]*\.[0-9.]*\)],
941                     [1.1[4-9]*|1.[2-9][0-9]*|1.1[0-9][0-9]*|[2-9].*|[1-9][0-9]*],
942                     LD=: critic_missing="$critic_missing GNU gold")
943 else
944   AC_CHECK_PROG_VER(LD, $LD, --version,
945                     [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
946                     [2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*],
947                     LD=: critic_missing="$critic_missing GNU ld")
950 # These programs are version sensitive.
951 AC_CHECK_TOOL_PREFIX
952 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
953   [GNU Make[^0-9]*\([0-9][0-9.]*\)],
954   [[4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make")
956 AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
957   [GNU gettext.* \([0-9]*\.[0-9.]*\)],
958   [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
959   MSGFMT=: aux_missing="$aux_missing msgfmt")
960 AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
961   [GNU texinfo.* \([0-9][0-9.]*\)],
962   [4.[7-9]*|4.[1-9][0-9]*|[5-9].*],
963   MAKEINFO=: aux_missing="$aux_missing makeinfo")
964 AC_CHECK_PROG_VER(SED, sed, --version,
965   [GNU sed[^0-9]* \([0-9]*\.[0-9.]*\)],
966   [3.0[2-9]*|3.[1-9]*|[4-9]*],
967   SED=: aux_missing="$aux_missing sed")
968 AC_CHECK_PROG_VER(AWK, gawk, --version,
969   [GNU Awk[^0-9]*\([0-9][0-9.]*\)],
970   [3.1.[2-9]*|3.[2-9]*|[4-9]*], critic_missing="$critic_missing gawk")
971 AC_CHECK_PROG_VER(BISON, bison, --version,
972   [bison (GNU Bison) \([0-9]*\.[0-9.]*\)],
973   [2.7*|[3-9].*|[1-9][0-9]*], critic_missing="$critic_missing bison")
975 AC_CACHE_CHECK([if $CC is sufficient to build libc], libc_cv_compiler_ok, [
976 AC_TRY_COMPILE([], [
977 #if !defined __GNUC__ || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 9)
978 #error insufficient compiler
979 #endif],
980                [libc_cv_compiler_ok=yes],
981                [libc_cv_compiler_ok=no])])
982 AS_IF([test $libc_cv_compiler_ok != yes],
983       [critic_missing="$critic_missing compiler"])
985 AC_CHECK_TOOL(NM, nm, false)
987 if test "x$maintainer" = "xyes"; then
988   AC_CHECK_PROGS(AUTOCONF, autoconf, no)
989   case "x$AUTOCONF" in
990   xno|x|x:) AUTOCONF=no ;;
991   *)
992     AC_CACHE_CHECK(dnl
993   whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
994     if (cd $srcdir; $AUTOCONF $ACFLAGS configure.ac > /dev/null 2>&1); then
995       libc_cv_autoconf_works=yes
996     else
997       libc_cv_autoconf_works=no
998     fi])
999     test $libc_cv_autoconf_works = yes || AUTOCONF=no
1000     ;;
1001   esac
1002   if test "x$AUTOCONF" = xno; then
1003     aux_missing="$aux_missing autoconf"
1004   fi
1005 else
1006   AUTOCONF=no
1009 # Check for python3 if available, or else python.
1010 AC_CHECK_PROGS(PYTHON_PROG, python3 python,no)
1011 case "x$PYTHON_PROG" in
1012 xno|x|x:) PYTHON_PROG=no ;;
1013 *) ;;
1014 esac
1016 if test "x$PYTHON_PROG" = xno; then
1017   aux_missing="$aux_missing python"
1018 else
1019   PYTHON="$PYTHON_PROG -B"
1020   AC_SUBST(PYTHON)
1023 test -n "$critic_missing" && AC_MSG_ERROR([
1024 *** These critical programs are missing or too old:$critic_missing
1025 *** Check the INSTALL file for required versions.])
1027 test -n "$aux_missing" && AC_MSG_WARN([
1028 *** These auxiliary programs are missing or incompatible versions:$aux_missing
1029 *** some features or tests will be disabled.
1030 *** Check the INSTALL file for required versions.])
1032 # if using special system headers, find out the compiler's sekrit
1033 # header directory and add that to the list.  NOTE: Only does the right
1034 # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
1035 if test -n "$sysheaders"; then
1036   SYSINCLUDES=-nostdinc
1037   for d in include include-fixed; do
1038     i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
1039     SYSINCLUDES="$SYSINCLUDES -isystem $i"
1040   done
1041   SYSINCLUDES="$SYSINCLUDES \
1042 -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
1043   if test -n "$CXX"; then
1044     CXX_SYSINCLUDES=
1045     for cxxheaders in `$CXX -v -S -x c++ /dev/null -o /dev/null 2>&1 \
1046     | sed -n -e '1,/#include/d' -e 's/^ \(\/.*\/[cg]++\)/\1/p'`; do
1047       test "x$cxxheaders" != x &&
1048       CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders"
1049     done
1050   fi
1052 AC_SUBST(SYSINCLUDES)
1053 AC_SUBST(CXX_SYSINCLUDES)
1055 # Obtain some C++ header file paths.  This is used to make a local
1056 # copy of those headers in Makerules.
1057 if test -n "$CXX"; then
1058   find_cxx_header () {
1059     echo "#include <$1>" | $CXX -M -MP -x c++ - 2>/dev/null \
1060          | sed -n "\,$1:,{s/:\$//;p}"
1061   }
1062   CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
1063   CXX_CMATH_HEADER="$(find_cxx_header cmath)"
1064   CXX_BITS_STD_ABS_H="$(find_cxx_header bits/std_abs.h)"
1066 AC_SUBST(CXX_CSTDLIB_HEADER)
1067 AC_SUBST(CXX_CMATH_HEADER)
1068 AC_SUBST(CXX_BITS_STD_ABS_H)
1070 # Test if LD_LIBRARY_PATH contains the notation for the current directory
1071 # since this would lead to problems installing/building glibc.
1072 # LD_LIBRARY_PATH contains the current directory if one of the following
1073 # is true:
1074 # - one of the terminals (":" and ";") is the first or last sign
1075 # - two terminals occur directly after each other
1076 # - the path contains an element with a dot in it
1077 AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
1078 changequote(,)dnl
1079 case ${LD_LIBRARY_PATH} in
1080   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
1081     ld_library_path_setting="contains current directory"
1082     ;;
1083   *)
1084     ld_library_path_setting="ok"
1085     ;;
1086 esac
1087 changequote([,])dnl
1088 AC_MSG_RESULT($ld_library_path_setting)
1089 if test "$ld_library_path_setting" != "ok"; then
1090 AC_MSG_ERROR([
1091 *** LD_LIBRARY_PATH shouldn't contain the current directory when
1092 *** building glibc. Please change the environment variable
1093 *** and run configure again.])
1096 AC_PATH_PROG(BASH_SHELL, bash, no)
1098 AC_PATH_PROG(PERL, perl, no)
1099 if test "$PERL" != no &&
1100    (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
1101   PERL=no
1103 AC_PATH_PROG(INSTALL_INFO, install-info, no,
1104              $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
1106 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
1107 cat > conftest.s <<EOF
1108 .text
1109 foo:
1110 .set glibc_conftest_frobozz,foo
1111 .globl glibc_conftest_frobozz
1113 # The alpha-dec-osf1 assembler gives only a warning for `.set'
1114 # (but it doesn't work), so we must do a linking check to be sure.
1115 cat > conftest1.c <<\EOF
1116 extern int glibc_conftest_frobozz;
1117 void _start() { glibc_conftest_frobozz = 1; }
1119 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1120             -nostartfiles -nostdlib $no_ssp \
1121             -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1122   libc_cv_asm_set_directive=yes
1123 else
1124   libc_cv_asm_set_directive=no
1126 rm -f conftest*])
1127 if test $libc_cv_asm_set_directive = yes; then
1128   AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
1131 AC_CACHE_CHECK(linker support for protected data symbol,
1132                libc_cv_protected_data,
1133                [cat > conftest.c <<EOF
1134                 int bar __attribute__ ((visibility ("protected"))) = 1;
1136                 libc_cv_protected_data=no
1137                 if AC_TRY_COMMAND(${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -o conftest.so); then
1138                   cat > conftest.c <<EOF
1139                   extern int bar;
1140                   int main (void) { return bar; }
1142                   if AC_TRY_COMMAND(${CC-cc} -nostdlib -nostartfiles $no_ssp conftest.c -o conftest conftest.so); then
1143                     libc_cv_protected_data=yes
1144                   fi
1145                 fi
1146                 rm -f conftest.*
1147                ])
1148 AC_SUBST(libc_cv_protected_data)
1150 AC_CACHE_CHECK(linker support for INSERT in linker script,
1151                libc_cv_insert,
1152                [cat > conftest.c <<EOF
1153                 const int __attribute__ ((section(".bar"))) bar = 0x12345678;
1154                 int test (void) { return bar; }
1156                 cat > conftest.t <<EOF
1157                 SECTIONS
1158                 {
1159                   .bar : { *(.bar) }
1160                 }
1161                 INSERT AFTER .rela.dyn;
1163                 libc_cv_insert=no
1164                 if AC_TRY_COMMAND([${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -Wl,-T,conftest.t -o conftest.so]); then
1165                   libc_cv_insert=yes
1166                 fi
1167                 rm -f conftest.*
1168                ])
1169 AC_SUBST(libc_cv_insert)
1171 AC_CACHE_CHECK(for broken __attribute__((alias())),
1172                libc_cv_broken_alias_attribute,
1173                [cat > conftest.c <<EOF
1174                extern int foo (int x) __asm ("xyzzy");
1175                int bar (int x) { return x; }
1176                extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1177                extern int dfoo;
1178                extern __typeof (dfoo) dfoo __asm ("abccb");
1179                int dfoo = 1;
1181                libc_cv_broken_alias_attribute=yes
1182                if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1183                  if grep 'xyzzy' conftest.s >/dev/null &&
1184                     grep 'abccb' conftest.s >/dev/null; then
1185                    libc_cv_broken_alias_attribute=no
1186                  fi
1187                fi
1188                rm -f conftest.c conftest.s
1189                ])
1190 if test $libc_cv_broken_alias_attribute = yes; then
1191   AC_MSG_ERROR(working alias attribute support required)
1194 AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1195                libc_cv_have_sdata_section,
1196                [echo "int i;" > conftest.c
1197                 libc_cv_have_sdata_section=no
1198                 if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1199                    | grep '\.sdata' >/dev/null; then
1200                   libc_cv_have_sdata_section=yes
1201                 fi
1202                 rm -f conftest.c conftest.so
1203                ])
1204 if test $libc_cv_have_sdata_section = yes; then
1205   AC_DEFINE(HAVE_SDATA_SECTION)
1208 AC_CACHE_CHECK(whether to use .ctors/.dtors header and trailer,
1209                libc_cv_ctors_header, [dnl
1210   libc_cv_ctors_header=yes
1211   LIBC_TRY_LINK_STATIC([
1212 __attribute__ ((constructor)) void ctor (void) { asm (""); }
1213 __attribute__ ((destructor))  void dtor (void) { asm (""); }
1215               [dnl
1216       AS_IF([$READELF -WS conftest$ac_exeext | $AWK '
1217         { gsub(/\@<:@ */, "@<:@") }
1218         $2 == ".ctors" || $2 == ".dtors" {
1219           size = strtonum("0x" $6)
1220           align = strtonum("0x" $NF)
1221           seen@<:@$2@:>@ = 1
1222           stub@<:@$2@:>@ = size == align * 2
1223         }
1224         END {
1225           ctors_ok = !seen@<:@".ctors"@:>@ || stub@<:@".ctors"@:>@
1226           dtors_ok = !seen@<:@".dtors"@:>@ || stub@<:@".dtors"@:>@
1227           exit ((ctors_ok && dtors_ok) ? 0 : 1)
1228         }
1229       '], [libc_cv_ctors_header=no])
1230     ], [dnl
1231       AC_MSG_ERROR([missing __attribute__ ((constructor)) support??])
1232     ])
1234 if test $libc_cv_ctors_header = no; then
1235   AC_DEFINE(NO_CTORS_DTORS_SECTIONS)
1238 AC_CACHE_CHECK(for libunwind-support in compiler,
1239                libc_cv_cc_with_libunwind, [
1240   cat > conftest.c <<EOF
1241 int main (void) { return 0; }
1243   if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
1244      conftest.c -v 2>&1 >/dev/null | grep ' -lunwind ' >/dev/null; then
1245     libc_cv_cc_with_libunwind=yes
1246   else
1247     libc_cv_cc_with_libunwind=no
1248   fi
1249   rm -f conftest*])
1250 AC_SUBST(libc_cv_cc_with_libunwind)
1251 if test $libc_cv_cc_with_libunwind = yes; then
1252   AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
1255 ASFLAGS_config=
1256 AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1257                libc_cv_as_noexecstack, [dnl
1258 cat > conftest.c <<EOF
1259 void foo (void) { }
1261 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1262                    -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
1263    && grep .note.GNU-stack conftest.s >/dev/null \
1264    && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
1265                       -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1266 then
1267   libc_cv_as_noexecstack=yes
1268 else
1269   libc_cv_as_noexecstack=no
1271 rm -f conftest*])
1272 if test $libc_cv_as_noexecstack = yes; then
1273   ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1275 AC_SUBST(ASFLAGS_config)
1277 AC_CACHE_CHECK(for -z combreloc,
1278                libc_cv_z_combreloc, [dnl
1279 cat > conftest.c <<EOF
1280 extern int bar (int);
1281 extern int mumble;
1282 int foo (void) { return bar (mumble); }
1284 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1285                         -fPIC -shared $no_ssp -o conftest.so conftest.c
1286                         -nostdlib -nostartfiles
1287                         -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
1288 then
1289 dnl The following test is a bit weak.  We must use a tool which can test
1290 dnl cross-platform since the gcc used can be a cross compiler.  Without
1291 dnl introducing new options this is not easily doable.  Instead use a tool
1292 dnl which always is cross-platform: readelf.  To detect whether -z combreloc
1293 dnl look for a section named .rel.dyn or .rela.dyn.
1294   if $READELF -S conftest.so | grep -E '.rela?.dyn' > /dev/null; then
1295     libc_cv_z_combreloc=yes
1296   else
1297     libc_cv_z_combreloc=no
1298   fi
1299 else
1300   libc_cv_z_combreloc=no
1302 rm -f conftest*])
1303 if test "$libc_cv_z_combreloc" = yes; then
1304   AC_DEFINE(HAVE_Z_COMBRELOC)
1306 AC_SUBST(libc_cv_z_combreloc)
1308 LIBC_LINKER_FEATURE([-z execstack], [-Wl,-z,execstack],
1309                     [libc_cv_z_execstack=yes], [libc_cv_z_execstack=no])
1310 AC_SUBST(libc_cv_z_execstack)
1312 LIBC_LINKER_FEATURE([--no-dynamic-linker],
1313                     [-Wl,--no-dynamic-linker],
1314                     [libc_cv_no_dynamic_linker=yes],
1315                     [libc_cv_no_dynamic_linker=no])
1316 LIBC_CONFIG_VAR([have-no-dynamic-linker], [$libc_cv_no_dynamic_linker])
1318 AC_CACHE_CHECK(for -static-pie, libc_cv_static_pie, [dnl
1319 LIBC_TRY_CC_OPTION([-static-pie],
1320                    [libc_cv_static_pie=yes],
1321                    [libc_cv_static_pie=no])
1323 LIBC_CONFIG_VAR([have-static-pie], [$libc_cv_static_pie])
1325 AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
1326 LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no])
1329 AC_SUBST(libc_cv_fpie)
1331 AC_CACHE_CHECK(for --hash-style option,
1332                libc_cv_hashstyle, [dnl
1333 cat > conftest.c <<EOF
1334 int _start (void) { return 42; }
1336 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
1337                             -fPIC -shared -o conftest.so conftest.c
1338                             -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
1339 then
1340   libc_cv_hashstyle=yes
1341 else
1342   libc_cv_hashstyle=no
1344 rm -f conftest*])
1345 AC_SUBST(libc_cv_hashstyle)
1347 # The linker's default -shared behavior is good enough if it
1348 # does these things that our custom linker scripts ensure that
1349 # all allocated NOTE sections come first.
1350 if test "$use_default_link" = default; then
1351   AC_CACHE_CHECK([for sufficient default -shared layout],
1352                   libc_cv_use_default_link, [dnl
1353   libc_cv_use_default_link=no
1354   cat > conftest.s <<\EOF
1355           .section .note.a,"a",%note
1356           .balign 4
1357           .long 4,4,9
1358           .string "GNU"
1359           .string "foo"
1360           .section .note.b,"a",%note
1361           .balign 4
1362           .long 4,4,9
1363           .string "GNU"
1364           .string "bar"
1366   if AC_TRY_COMMAND([dnl
1367   ${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD]) &&
1368        ac_try=`$READELF -S conftest.so | sed -n \
1369          ['${x;p;}
1370           s/^ *\[ *[1-9][0-9]*\]  *\([^ ][^ ]*\)  *\([^ ][^ ]*\) .*$/\2 \1/
1371           t a
1372           b
1373           : a
1374           H']`
1375   then
1376     libc_seen_a=no libc_seen_b=no
1377     set -- $ac_try
1378     while test $# -ge 2 -a "$1" = NOTE; do
1379       case "$2" in
1380       .note.a) libc_seen_a=yes ;;
1381       .note.b) libc_seen_b=yes ;;
1382       esac
1383       shift 2
1384     done
1385     case "$libc_seen_a$libc_seen_b" in
1386     yesyes)
1387       libc_cv_use_default_link=yes
1388       ;;
1389     *)
1390       echo >&AS_MESSAGE_LOG_FD "\
1391 $libc_seen_a$libc_seen_b from:
1392 $ac_try"
1393       ;;
1394     esac
1395   fi
1396   rm -f conftest*])
1397   use_default_link=$libc_cv_use_default_link
1400 AC_CACHE_CHECK(for GLOB_DAT reloc,
1401                libc_cv_has_glob_dat, [dnl
1402 cat > conftest.c <<EOF
1403 extern int mumble;
1404 int foo (void) { return mumble; }
1406 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1407                         -fPIC -shared -o conftest.so conftest.c
1408                         -nostdlib -nostartfiles $no_ssp
1409                         1>&AS_MESSAGE_LOG_FD])
1410 then
1411 dnl look for GLOB_DAT relocation.
1412   if $READELF -rW conftest.so | grep '_GLOB_DAT' > /dev/null; then
1413     libc_cv_has_glob_dat=yes
1414   else
1415     libc_cv_has_glob_dat=no
1416   fi
1417 else
1418   libc_cv_has_glob_dat=no
1420 rm -f conftest*])
1421 AC_SUBST(libc_cv_has_glob_dat)
1423 AC_CACHE_CHECK(linker output format, libc_cv_output_format, [dnl
1424 if libc_cv_output_format=`
1425 ${CC-cc} -nostartfiles -nostdlib $no_ssp -Wl,--print-output-format 2>&AS_MESSAGE_LOG_FD`
1426 then
1427   :
1428 else
1429   libc_cv_output_format=
1431 test -n "$libc_cv_output_format" || libc_cv_output_format=unknown])
1432 AC_SUBST(libc_cv_output_format)
1434 AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl
1435 cat > conftest.c <<EOF
1436 int foo;
1438 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-anchors
1439                             conftest.c 1>&AS_MESSAGE_LOG_FD])
1440 then
1441   libc_cv_fno_toplevel_reorder=yes
1442 else
1443   libc_cv_fno_toplevel_reorder=no
1445 rm -f conftest*])
1446 if test $libc_cv_fno_toplevel_reorder = yes; then
1447   fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
1448 else
1449   fno_unit_at_a_time=-fno-unit-at-a-time
1451 AC_SUBST(fno_unit_at_a_time)
1453 AC_CACHE_CHECK([for -mtls-dialect=gnu2], libc_cv_mtls_dialect_gnu2,
1454 [dnl
1455 cat > conftest.c <<EOF
1456 __thread int i;
1457 void foo (void)
1459   i = 10;
1462 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fPIC -mtls-dialect=gnu2
1463                    conftest.c 1>&AS_MESSAGE_LOG_FD])
1464 then
1465   libc_cv_mtls_dialect_gnu2=yes
1466 else
1467   libc_cv_mtls_dialect_gnu2=no
1469 rm -f conftest*])
1470 AC_SUBST(libc_cv_mtls_dialect_gnu2)
1471 LIBC_CONFIG_VAR([have-mtls-dialect-gnu2], [$libc_cv_mtls_dialect_gnu2])
1473 AC_CACHE_CHECK(whether cc puts quotes around section names,
1474                libc_cv_have_section_quotes,
1475                [cat > conftest.c <<EOF
1476                 static const int foo
1477                 __attribute__ ((section ("bar"))) = 1;
1479                 if ${CC-cc} -S conftest.c -o conftest.s; then
1480                   if grep '\.section.*"bar"' conftest.s >/dev/null; then
1481                     libc_cv_have_section_quotes=yes
1482                   else
1483                     libc_cv_have_section_quotes=no
1484                   fi
1485                 else
1486                   libc_cv_have_section_quotes=unknown
1487                 fi
1488                 rm -f conftest.{c,s}
1489                 ])
1490 if test $libc_cv_have_section_quotes = yes; then
1491   AC_DEFINE(HAVE_SECTION_QUOTES)
1494 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1495 cat > conftest.c <<\EOF
1496 void zero (void *x)
1498   __builtin_memset (x, 0, 1000);
1502 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | grep -F "memset" > /dev/null]);
1503 then
1504   libc_cv_gcc_builtin_memset=no
1505 else
1506   libc_cv_gcc_builtin_memset=yes
1508 rm -f conftest* ])
1509 if test "$libc_cv_gcc_builtin_memset" = yes ; then
1510   AC_DEFINE(HAVE_BUILTIN_MEMSET)
1513 AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1514 cat > conftest.c <<\EOF
1515 extern char *strstr (const char *, const char *) __asm ("my_strstr");
1516 char *foo (const char *a, const char *b)
1518   return __builtin_strstr (a, b);
1522 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | grep -F "my_strstr" > /dev/null]);
1523 then
1524   libc_cv_gcc_builtin_redirection=yes
1525 else
1526   libc_cv_gcc_builtin_redirection=no
1528 rm -f conftest* ])
1529 if test "$libc_cv_gcc_builtin_redirection" = no; then
1530   AC_MSG_ERROR([support for the symbol redirection needed])
1533 dnl Determine how to disable generation of FMA instructions.
1534 AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
1535                libc_cv_cc_nofma, [dnl
1536 libc_cv_cc_nofma=
1537 for opt in -ffp-contract=off -mno-fused-madd; do
1538   LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
1539 done])
1540 AC_SUBST(libc_cv_cc_nofma)
1542 if test -n "$submachine"; then
1543   AC_CACHE_CHECK([for compiler option for CPU variant],
1544                  libc_cv_cc_submachine, [dnl
1545   libc_cv_cc_submachine=no
1546   for opt in "-march=$submachine" "-mcpu=$submachine"; do
1547     LIBC_TRY_CC_OPTION([$opt], [
1548       libc_cv_cc_submachine="$opt"
1549       break], [])
1550   done])
1551   if test "x$libc_cv_cc_submachine" = xno; then
1552     AC_MSG_ERROR([${CC-cc} does not support $submachine])
1553   fi
1555 AC_SUBST(libc_cv_cc_submachine)
1557 AC_CACHE_CHECK(if $CC accepts -fno-tree-loop-distribute-patterns with \
1558 __attribute__ ((__optimize__)), libc_cv_cc_loop_to_function, [dnl
1559 cat > conftest.c <<EOF
1560 void
1561 __attribute__ ((__optimize__ ("-fno-tree-loop-distribute-patterns")))
1562 foo (void) {}
1564 libc_cv_cc_loop_to_function=no
1565 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c])
1566 then
1567   libc_cv_cc_loop_to_function=yes
1569 rm -f conftest*])
1570 if test $libc_cv_cc_loop_to_function = yes; then
1571   AC_DEFINE(HAVE_CC_INHIBIT_LOOP_TO_LIBCALL)
1573 AC_SUBST(libc_cv_cc_loop_to_function)
1575 dnl Check whether we have the gd library available.
1576 AC_MSG_CHECKING(for libgd)
1577 if test "$with_gd" != "no"; then
1578   old_CFLAGS="$CFLAGS"
1579   CFLAGS="$CFLAGS $libgd_include"
1580   old_LDFLAGS="$LDFLAGS"
1581   LDFLAGS="$LDFLAGS $libgd_ldflags"
1582   old_LIBS="$LIBS"
1583   LIBS="$LIBS -lgd -lpng -lz -lm"
1584   AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1585   CFLAGS="$old_CFLAGS"
1586   LDFLAGS="$old_LDFLAGS"
1587   LIBS="$old_LIBS"
1588 else
1589   LIBGD=no
1591 AC_MSG_RESULT($LIBGD)
1592 AC_SUBST(LIBGD)
1594 # SELinux detection
1595 if test x$with_selinux = xno ; then
1596   have_selinux=no;
1597 else
1598   # See if we have the SELinux library
1599   AC_CHECK_LIB(selinux, is_selinux_enabled,
1600                have_selinux=yes, have_selinux=no)
1601   if test x$with_selinux = xyes ; then
1602     if test x$have_selinux = xno ; then
1603       AC_MSG_ERROR([SELinux explicitly required, but SELinux library not found])
1604     fi
1605   fi
1607 # Check if we're building with SELinux support.
1608 if test "x$have_selinux" = xyes; then
1609   AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
1611   # See if we have the libaudit library
1612   AC_CHECK_LIB(audit, audit_log_user_avc_message,
1613                have_libaudit=yes, have_libaudit=no)
1614   if test "x$have_libaudit" = xyes; then
1615     AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
1616   fi
1617   AC_SUBST(have_libaudit)
1619   # See if we have the libcap library
1620   AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
1621   if test "x$have_libcap" = xyes; then
1622     AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
1623   fi
1624   AC_SUBST(have_libcap)
1626 AC_SUBST(have_selinux)
1628 CPPUNDEFS=
1629 dnl Check for silly hacked compilers predefining _FORTIFY_SOURCE.
1630 dnl Since we are building the implementations of the fortified functions here,
1631 dnl having the macro defined interacts very badly.
1632 AC_CACHE_CHECK([for _FORTIFY_SOURCE predefine], libc_cv_predef_fortify_source,
1633 [AC_TRY_COMPILE([], [
1634 #ifdef _FORTIFY_SOURCE
1635 # error bogon
1636 #endif],
1637                 [libc_cv_predef_fortify_source=no],
1638                 [libc_cv_predef_fortify_source=yes])])
1639 if test $libc_cv_predef_fortify_source = yes; then
1640   CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE"
1642 AC_SUBST(CPPUNDEFS)
1644 # Some linkers on some architectures support __ehdr_start but with
1645 # bugs.  Make sure usage of it does not create relocations in the
1646 # output (as the linker should resolve them all for us).
1647 AC_CACHE_CHECK([whether the linker provides working __ehdr_start],
1648                libc_cv_ehdr_start, [
1649 old_CFLAGS="$CFLAGS"
1650 old_LDFLAGS="$LDFLAGS"
1651 old_LIBS="$LIBS"
1652 CFLAGS="$CFLAGS -fPIC"
1653 LDFLAGS="$LDFLAGS -nostdlib -nostartfiles -shared $no_ssp"
1654 LIBS=
1655 AC_LINK_IFELSE([AC_LANG_SOURCE([
1656 typedef struct {
1657   char foo;
1658   long val;
1659 } Ehdr;
1660 extern const Ehdr __ehdr_start __attribute__ ((visibility ("hidden")));
1661 long ehdr (void) { return __ehdr_start.val; }
1662 ])],
1663                [if $READELF -r conftest | grep -F __ehdr_start >/dev/null; then
1664                   libc_cv_ehdr_start=broken
1665                 else
1666                   libc_cv_ehdr_start=yes
1667                 fi], [libc_cv_ehdr_start=no])
1668 CFLAGS="$old_CFLAGS"
1669 LDFLAGS="$old_LDFLAGS"
1670 LIBS="$old_LIBS"
1672 if test "$libc_cv_ehdr_start" = yes; then
1673   AC_DEFINE([HAVE_EHDR_START])
1674 elif test "$libc_cv_ehdr_start" = broken; then
1675   AC_MSG_WARN([linker is broken -- you should upgrade])
1678 AC_CACHE_CHECK(for __builtin_trap with no external dependencies,
1679                libc_cv_builtin_trap, [dnl
1680 libc_cv_builtin_trap=no
1681 AC_TRY_COMPILE([], [__builtin_trap ()], [
1682 libc_undefs=`$NM -u conftest.o |
1683   LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \
1684     2>&AS_MESSAGE_LOG_FD` || {
1685   AC_MSG_ERROR([confusing output from $NM -u])
1687 echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'"
1688 if test -z "$libc_undefs"; then
1689   libc_cv_builtin_trap=yes
1690 fi])])
1691 if test $libc_cv_builtin_trap = yes; then
1692   AC_DEFINE([HAVE_BUILTIN_TRAP])
1695 dnl C++ feature tests.
1696 AC_LANG_PUSH([C++])
1698 AC_CACHE_CHECK([whether the C++ compiler supports thread_local],
1699                libc_cv_cxx_thread_local, [
1700 old_CXXFLAGS="$CXXFLAGS"
1701 CXXFLAGS="$CXXFLAGS -std=gnu++11"
1702 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1703 #include <thread>
1705 // Compiler support.
1706 struct S
1708   S ();
1709   ~S ();
1711 thread_local S s;
1712 S * get () { return &s; }
1714 // libstdc++ support.
1715 #ifndef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL
1716 #error __cxa_thread_atexit_impl not supported
1717 #endif
1718 ])],
1719                [libc_cv_cxx_thread_local=yes],
1720                [libc_cv_cxx_thread_local=no])
1721 CXXFLAGS="$old_CXXFLAGS"
1723 AC_SUBST(libc_cv_cxx_thread_local)
1725 AC_LANG_POP([C++])
1726 dnl End of C++ feature tests.
1728 ### End of automated tests.
1729 ### Now run sysdeps configure fragments.
1731 # They also can set these variables.
1732 use_ldconfig=no
1733 ldd_rewrite_script=no
1734 libc_cv_sysconfdir=$sysconfdir
1735 libc_cv_localstatedir=$localstatedir
1736 libc_cv_gcc_unwind_find_fde=no
1737 libc_cv_idn=no
1739 # Iterate over all the sysdep directories we will use, running their
1740 # configure fragments.
1741 for dir in $sysnames; do
1742   case $dir in
1743     /*) dest=$dir ;;
1744     *)  dest=$srcdir/$dir ;;
1745   esac
1746   if test -r $dest/configure; then
1747     AC_MSG_RESULT(running configure fragment for $dir)
1748     . $dest/configure
1749   fi
1750 done
1752 if test x"$build_mathvec" = xnotset; then
1753   build_mathvec=no
1755 LIBC_CONFIG_VAR([build-mathvec], [$build_mathvec])
1757 AC_SUBST(libc_extra_cflags)
1758 AC_SUBST(libc_extra_cppflags)
1760 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
1761   AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
1763 AC_SUBST(libc_cv_gcc_unwind_find_fde)
1765 # A sysdeps configure fragment can reset this if IFUNC is not actually
1766 # usable even though the assembler knows how to generate the symbol type.
1767 if test x"$libc_cv_ld_gnu_indirect_function" = xyes; then
1768   AC_DEFINE(HAVE_IFUNC)
1771 if test x"$libc_cv_gcc_indirect_function" = xyes; then
1772   AC_DEFINE(HAVE_GCC_IFUNC)
1775 # This is far from the AC_ARG_ENABLE that sets it so that a sysdeps
1776 # configure fragment can override the value to prevent this AC_DEFINE.
1777 AC_SUBST(use_nscd)
1778 if test "x$use_nscd" != xno; then
1779   AC_DEFINE([USE_NSCD])
1781 if test "x$build_nscd" = xdefault; then
1782   build_nscd=$use_nscd
1785 AC_SUBST(libc_cv_slibdir)
1786 AC_SUBST(libc_cv_rtlddir)
1787 AC_SUBST(libc_cv_complocaledir)
1788 AC_SUBST(libc_cv_sysconfdir)
1789 AC_SUBST(libc_cv_localstatedir)
1790 AC_SUBST(libc_cv_rootsbindir)
1792 if test x$use_ldconfig = xyes; then
1793   AC_DEFINE(USE_LDCONFIG)
1795 AC_SUBST(use_ldconfig)
1796 AC_SUBST(ldd_rewrite_script)
1798 AC_SUBST(static)
1799 AC_SUBST(shared)
1801 AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
1802 [libc_cv_pic_default=yes
1803 cat > conftest.c <<EOF
1804 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
1805 # error PIC is default.
1806 #endif
1808 if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
1809   libc_cv_pic_default=no
1811 rm -f conftest.*])
1812 AC_SUBST(libc_cv_pic_default)
1814 AC_CACHE_CHECK([whether -fPIE is default], libc_cv_cc_pie_default,
1815 [libc_cv_cc_pie_default=yes
1816 cat > conftest.c <<EOF
1817 #if defined __PIE__ || defined __pie__ || defined PIE || defined pie
1818 # error PIE is default.
1819 #endif
1821 if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
1822   libc_cv_cc_pie_default=no
1824 rm -f conftest.*])
1825 libc_cv_pie_default=$libc_cv_cc_pie_default
1826 AC_SUBST(libc_cv_cc_pie_default)
1827 AC_SUBST(libc_cv_pie_default)
1829 # Set the `multidir' variable by grabbing the variable from the compiler.
1830 # We do it once and save the result in a generated makefile.
1831 libc_cv_multidir=`${CC-cc} $CFLAGS $CPPFLAGS -print-multi-directory`
1832 AC_SUBST(libc_cv_multidir)
1834 if test "$static_pie" = yes; then
1835   # The linker must support --no-dynamic-linker.
1836   if test "$libc_cv_no_dynamic_linker" != yes; then
1837     AC_MSG_ERROR([linker support for --no-dynamic-linker needed])
1838   fi
1839   # Default to PIE.
1840   libc_cv_pie_default=yes
1841   AC_DEFINE(ENABLE_STATIC_PIE)
1843 LIBC_CONFIG_VAR([enable-static-pie], [$static_pie])
1845 AC_SUBST(profile)
1846 AC_SUBST(static_nss)
1848 AC_SUBST(DEFINES)
1850 dnl See sysdeps/mach/configure.ac for this variable.
1851 AC_SUBST(mach_interface_list)
1853 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
1854 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
1855 AC_SUBST(VERSION)
1856 AC_SUBST(RELEASE)
1858 AC_CONFIG_FILES([config.make Makefile])
1859 AC_CONFIG_COMMANDS([default],[[
1860 case $CONFIG_FILES in *config.make*)
1861 echo "$config_vars" >> config.make;;
1862 esac
1863 test -d bits || mkdir bits]],[[config_vars='$config_vars']])
1864 AC_OUTPUT