Check supported DF_1_XXX bits
[glibc.git] / configure.in
blob9decd7d24b4e0988cd839b9d211246f1d1ad9059
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 dnl This is here so we can set $subdirs directly based on configure fragments.
21 AC_CONFIG_SUBDIRS()
23 AC_CANONICAL_HOST
25 AC_PROG_CC
26 if test $host != $build; then
27   AC_CHECK_PROGS(BUILD_CC, gcc cc)
29 AC_SUBST(cross_compiling)
30 AC_PROG_CPP
31 # We need the C++ compiler only for testing.
32 AC_PROG_CXX
33 AC_CHECK_TOOL(READELF, readelf, false)
35 if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then
36   AC_MSG_ERROR([you must configure in a separate build directory])
39 # This will get text that should go into config.make.
40 config_vars=
42 # Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
43 AC_ARG_WITH([gd],
44             AC_HELP_STRING([--with-gd=DIR],
45                            [find libgd include dir and library with prefix DIR]),
46             [dnl
47 case "$with_gd" in
48 yes|''|no) ;;
49 *) libgd_include="-I$withval/include"
50    libgd_ldflags="-L$withval/lib" ;;
51 esac
53 AC_ARG_WITH([gd-include],
54             AC_HELP_STRING([--with-gd-include=DIR],
55                            [find libgd include files in DIR]),
56             [dnl
57 case "$with_gd_include" in
58 ''|no) ;;
59 *) libgd_include="-I$withval" ;;
60 esac
62 AC_ARG_WITH([gd-lib],
63             AC_HELP_STRING([--with-gd-lib=DIR],
64                            [find libgd library files in DIR]),
65             [dnl
66 case "$with_gd_lib" in
67 ''|no) ;;
68 *) libgd_ldflags="-L$withval" ;;
69 esac
72 if test -n "$libgd_include"; then
73   config_vars="$config_vars
74 CFLAGS-memusagestat.c = $libgd_include"
76 if test -n "$libgd_ldflags"; then
77   config_vars="$config_vars
78 libgd-LDFLAGS = $libgd_ldflags"
81 dnl Arguments to specify presence of other packages/features.
82 AC_ARG_WITH([fp],
83             AC_HELP_STRING([--with-fp],
84                            [if using floating-point hardware @<:@default=yes@:>@]),
85             [with_fp=$withval],
86             [with_fp=yes])
87 AC_SUBST(with_fp)
88 AC_ARG_WITH([binutils],
89             AC_HELP_STRING([--with-binutils=PATH],
90                            [specify location of binutils (as and ld)]),
91             [path_binutils=$withval],
92             [path_binutils=''])
93 AC_ARG_WITH([selinux],
94             AC_HELP_STRING([--with-selinux],
95                            [if building with SELinux support]),
96             [with_selinux=$withval],
97             [with_selinux=auto])
99 AC_ARG_WITH([headers],
100             AC_HELP_STRING([--with-headers=PATH],
101                            [location of system headers to use
102                             (for example /usr/src/linux/include)
103                             @<:@default=compiler default@:>@]),
104             [sysheaders=$withval],
105             [sysheaders=''])
106 AC_SUBST(sysheaders)
108 AC_SUBST(use_default_link)
109 AC_ARG_WITH([default-link],
110             AC_HELP_STRING([--with-default-link],
111                            [do not use explicit linker scripts]),
112             [use_default_link=$withval],
113             [use_default_link=default])
115 AC_ARG_ENABLE([sanity-checks],
116               AC_HELP_STRING([--disable-sanity-checks],
117                              [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
118               [enable_sanity=$enableval],
119               [enable_sanity=yes])
121 AC_ARG_ENABLE([shared],
122               AC_HELP_STRING([--enable-shared],
123                              [build shared library @<:@default=yes if GNU ld@:>@]),
124               [shared=$enableval],
125               [shared=yes])
126 AC_ARG_ENABLE([profile],
127               AC_HELP_STRING([--enable-profile],
128                              [build profiled library @<:@default=no@:>@]),
129               [profile=$enableval],
130               [profile=no])
131 AC_ARG_ENABLE([versioning],
132               AC_HELP_STRING([--disable-versioning],
133                              [do not include versioning information in the library objects @<:@default=yes if supported@:>@]),
134               [enable_versioning=$enableval],
135               [enable_versioning=yes])
137 AC_ARG_ENABLE([oldest-abi],
138               AC_HELP_STRING([--enable-oldest-abi=ABI],
139                              [configure the oldest ABI supported @<:@e.g. 2.2@:>@ @<:@default=glibc default@:>@]),
140               [oldest_abi=$enableval],
141               [oldest_abi=no])
142 if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
143   oldest_abi=default
144 else
145   AC_DEFINE_UNQUOTED(GLIBC_OLDEST_ABI, "$oldest_abi")
147 AC_SUBST(oldest_abi)
149 AC_ARG_ENABLE([stackguard-randomization],
150               AC_HELP_STRING([--enable-stackguard-randomization],
151                              [initialize __stack_chk_guard canary with a random number at program start]),
152               [enable_stackguard_randomize=$enableval],
153               [enable_stackguard_randomize=no])
154 if test "$enable_stackguard_randomize" = yes; then
155   AC_DEFINE(ENABLE_STACKGUARD_RANDOMIZE)
158 dnl Generic infrastructure for drop-in additions to libc.
159 AC_ARG_ENABLE([add-ons],
160               AC_HELP_STRING([--enable-add-ons@<:@=DIRS...@:>@],
161                              [configure and build add-ons in DIR1,DIR2,...
162                               search for add-ons if no parameter given]),
163                              , [enable_add_ons=yes])
165 AC_ARG_ENABLE([hidden-plt],
166               AC_HELP_STRING([--disable-hidden-plt],
167                              [do not hide internal function calls to avoid PLT]),
168               [hidden=$enableval],
169               [hidden=yes])
170 if test "x$hidden" = xno; then
171   AC_DEFINE(NO_HIDDEN)
174 AC_ARG_ENABLE([bind-now],
175               AC_HELP_STRING([--enable-bind-now],
176                              [disable lazy relocations in DSOs]),
177               [bindnow=$enableval],
178               [bindnow=no])
179 AC_SUBST(bindnow)
181 dnl On some platforms we cannot use dynamic loading.  We must provide
182 dnl static NSS modules.
183 AC_ARG_ENABLE([static-nss],
184               AC_HELP_STRING([--enable-static-nss],
185                              [build static NSS modules @<:@default=no@:>@]),
186               [static_nss=$enableval],
187               [static_nss=no])
188 dnl Enable static NSS also if we build no shared objects.
189 if test x"$static_nss" = xyes || test x"$shared" = xno; then
190   static_nss=yes
191   AC_DEFINE(DO_STATIC_NSS)
194 AC_ARG_ENABLE([force-install],
195               AC_HELP_STRING([--disable-force-install],
196                              [don't force installation of files from this package, even if they are older than the installed files]),
197               [force_install=$enableval],
198               [force_install=yes])
199 AC_SUBST(force_install)
201 dnl On some platforms we allow dropping compatibility with all kernel
202 dnl versions.
203 AC_ARG_ENABLE([kernel],
204               AC_HELP_STRING([--enable-kernel=VERSION],
205                              [compile for compatibility with kernel not older than VERSION]),
206               [minimum_kernel=$enableval],
207               [])
208 dnl Prevent unreasonable values.
209 if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
210   # Better nothing than this.
211   minimum_kernel=""
212 else
213   if test "$minimum_kernel" = current; then
214     minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
215   fi
218 dnl For the development we sometimes want gcc to issue even more warnings.
219 dnl This is not the default since many of the extra warnings are not
220 dnl appropriate.
221 AC_ARG_ENABLE([all-warnings],
222               AC_HELP_STRING([--enable-all-warnings],
223                              [enable all useful warnings gcc can issue]),
224               [all_warnings=$enableval],
225               [])
226 AC_SUBST(all_warnings)
228 AC_ARG_ENABLE([multi-arch],
229               AC_HELP_STRING([--enable-multi-arch],
230                              [enable single DSO with optimizations for multiple architectures]),
231               [multi_arch=$enableval],
232               [multi_arch=default])
234 AC_ARG_ENABLE([nss-crypt],
235               AC_HELP_STRING([--enable-nss-crypt],
236                              [enable libcrypt to use nss]),
237               [nss_crypt=$enableval],
238               [nss_crypt=no])
239 if test x$nss_crypt = xyes; then
240   nss_includes=-I$(nss-config --includedir 2>/dev/null)
241   if test $? -ne 0; then
242     AC_MSG_ERROR([cannot find include directory with nss-config])
243   fi
244   old_CFLAGS="$CFLAGS"
245   CFLAGS="$CFLAGS $nss_includes"
246   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
247 #include <hasht.h>
248 #include <nsslowhash.h>
249 void f (void) { NSSLOW_Init (); }])],
250              libc_cv_nss_crypt=yes,
251              AC_MSG_ERROR([
252 cannot find NSS headers with lowlevel hash function interfaces]))
253   old_LIBS="$LIBS"
254   LIBS="$LIBS -lfreebl3"
255   AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
256 #include <hasht.h>
257 #include <nsslowhash.h>],
258                                   [NSSLOW_Init();])],
259                  libc_cv_nss_crypt=yes,
260                  AC_MSG_ERROR([
261 cannot link program using lowlevel NSS hash functions]))
262   CFLAGS="$old_CFLAGS"
263   LIBS="$old_LIBS"
264 else
265   libc_cv_nss_crypt=no
267 AC_SUBST(libc_cv_nss_crypt)
270 AC_ARG_ENABLE([obsolete-rpc],
271               AC_HELP_STRING([--enable-obsolete-rpc],
272                              [build and install the obsolete RPC code for link-time usage]),
273               [link_obsolete_rpc=$enableval],
274               [link_obsolete_rpc=no])
275 AC_SUBST(link_obsolete_rpc)
277 if test "$link_obsolete_rpc" = yes; then
278   AC_DEFINE(LINK_OBSOLETE_RPC)
281 AC_ARG_ENABLE([systemtap],
282               [AS_HELP_STRING([--enable-systemtap],
283                [enable systemtap static probe points @<:@default=no@:>@])],
284               [systemtap=$enableval],
285               [systemtap=no])
286 if test "x$systemtap" != xno; then
287   AC_CACHE_CHECK([for systemtap static probe support], libc_cv_sdt, [dnl
288   old_CFLAGS="$CFLAGS"
289   CFLAGS="-std=gnu99 $CFLAGS"
290   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <sys/sdt.h>
291 void foo (int i, void *p)
293   asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) ""
294        :: STAP_PROBE_ASM_OPERANDS (2, i, p));
295 }]])], [libc_cv_sdt=yes], [libc_cv_sdt=no])
296   CFLAGS="$old_CFLAGS"])
297   if test $libc_cv_sdt = yes; then
298     AC_DEFINE([USE_STAP_PROBE])
299   elif test "x$systemtap" != xauto; then
300     AC_MSG_FAILURE([systemtap support needs sys/sdt.h with asm support])
301   fi
304 AC_ARG_ENABLE([build-nscd],
305               [AS_HELP_STRING([--disable-build-nscd],
306                [disable building and installing the nscd daemon])],
307               [build_nscd=$enableval],
308               [build_nscd=default])
309 AC_SUBST(build_nscd)
311 # Note the use of $use_nscd is near the bottom of the file.
312 AC_ARG_ENABLE([nscd],
313               [AS_HELP_STRING([--disable-nscd],
314                [library functions will not contact the nscd daemon])],
315               [use_nscd=$enableval],
316               [use_nscd=yes])
318 # The way shlib-versions is used to generate soversions.mk uses a
319 # fairly simplistic model for name recognition that can't distinguish
320 # i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a $host_os
321 # of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
322 # tell.  This doesn't get used much beyond that, so it's fairly safe.
323 case "$host_os" in
324 linux*)
325   ;;
326 gnu*)
327   host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
328   ;;
329 esac
331 # We keep the original values in `$config_*' and never modify them, so we
332 # can write them unchanged into config.make.  Everything else uses
333 # $machine, $vendor, and $os, and changes them whenever convenient.
334 config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
336 # Don't allow vendor == "unknown"
337 test "$config_vendor" = unknown && config_vendor=
338 config_os="`echo $config_os | sed 's/^unknown-//'`"
340 # Some configurations imply other options.
341 elf=yes
343 # The configure fragment of an add-on port can modify these to supplement
344 # or override the table in the case statement below.  No fragment should
345 # ever change the config_* variables, however.
346 machine=$config_machine
347 vendor=$config_vendor
348 os=$config_os
349 base_os=''
351 # config.guess on some IBM machines says `rs6000' instead of `powerpc'.
352 # Unify this here.
353 if test "$machine" = rs6000; then
354   machine="powerpc"
357 # Braindead PowerPC box with absolutely no FPU.
358 case "$machine-$host_os" in
359   powerpc*-*soft)
360     with_fp=no
361     ;;
362 esac
364 submachine=
365 AC_ARG_WITH([cpu],
366             AS_HELP_STRING([--with-cpu=CPU], [select code for CPU variant]),
367             [dnl
368   case "$withval" in
369   yes|'') AC_MSG_ERROR([--with-cpu requires an argument]) ;;
370   no) ;;
371   *) submachine="$withval" ;;
372   esac
375 dnl Let sysdeps/*/preconfigure act here, like they can in add-ons.
376 LIBC_PRECONFIGURE([$srcdir], [for sysdeps])
378 # An add-on can set this when it wants to disable the sanity check below.
379 libc_config_ok=no
381 dnl Having this here, though empty, makes sure that if add-ons' fragments
382 dnl do AC_CONFIG_SUBDIRS([some-dir]), which just sets $subdirs, then
383 dnl our AC_OUTPUT will actually use it.
384 AC_CONFIG_SUBDIRS()
386 case "$enable_add_ons" in
387 ''|no) add_ons= ;;
388 yes|'*')
389  add_ons=`cd $srcdir && ls -d 2> /dev/null */configure */sysdeps |
390           sed 's@/[[^/]]*$@@' | sort | uniq`
391          add_ons_automatic=yes
392          ;;
393 *) add_ons=`echo "$enable_add_ons" | sed 's/,/ /g'`
394        add_ons_automatic=no ;;
395 esac
397 configured_add_ons=
398 add_ons_sfx=
399 add_ons_pfx=
400 if test x"$add_ons" != x; then
401   for f in $add_ons; do
402     # Some sanity checks
403     case "$f" in
404     crypt)
405       AC_MSG_ERROR([
406 *** It seems that you're using an old \`crypt' add-on.  crypt is now
407 *** part of glibc and using the old add-on will not work with this
408 *** release.  Start again with fresh sources and without the old
409 *** \`crypt' add-on.])
410     ;;
411     localedata)
412       AC_MSG_ERROR([
413 *** It seems that you're using an old \`localedata' add-on.  localedata
414 *** is now part of glibc and using the old add-on will not work with
415 *** this release.  Start again with fresh sources and without the old
416 *** \`localedata' add-on.])
417     ;;
418     esac
419   done
421   # Now source each add-on's configure fragment.
422   # The fragments can use $srcdir/$libc_add_on to find themselves,
423   # and test $add_ons_automatic to see if they were explicitly requested.
424   # A fragment can clear (or even change) $libc_add_on to affect
425   # whether it goes into the list to be actually used in the build.
426   use_add_ons=
427   for libc_add_on in $add_ons; do
428     # Test whether such a directory really exists.
429     # It can be absolute, or relative to $srcdir, or relative to the build dir.
430     case "$libc_add_on" in
431     /*)
432       libc_add_on_srcdir=$libc_add_on
433       ;;
434     *)
435       test -d "$srcdir/$libc_add_on" || {
436         if test -d "$libc_add_on"; then
437           libc_add_on="`pwd`/$libc_add_on"
438         else
439           AC_MSG_ERROR(add-on directory \"$libc_add_on\" does not exist)
440         fi
441       }
442       libc_add_on_srcdir=$srcdir/$libc_add_on
443       ;;
444     esac
446     libc_add_on_frag=$libc_add_on_srcdir/configure
447     libc_add_on_canonical=
448     libc_add_on_config_subdirs=
449     if test -r "$libc_add_on_frag"; then
450       AC_MSG_NOTICE(running configure fragment for add-on $libc_add_on)
451       libc_add_on_canonical=unknown
452       libc_add_on_subdirs=
453       . "$libc_add_on_frag"
454       test -z "$libc_add_on" || {
455         configured_add_ons="$configured_add_ons $libc_add_on"
456         if test "x$libc_add_on_canonical" = xunknown; then
457           AC_MSG_ERROR(fragment must set \$libc_add_on_canonical)
458         fi
459         for d in $libc_add_on_subdirs; do
460           case "$libc_add_on" in
461           /*) subdir_srcdir="$libc_add_on" ;;
462           *) subdir_srcdir="\$(..)$libc_add_on" ;;
463           esac
464           case "$d" in
465           .)
466             d="${libc_add_on_canonical:-$libc_add_on}"
467             ;;
468           /*)
469             subdir_srcdir="$d"
470             ;;
471           *)
472             subdir_srcdir="$subdir_srcdir/$d"
473             ;;
474           esac
475           d=`echo "$d" | sed 's@/*$@@;s@^.*/@@'`
476           add_on_subdirs="$add_on_subdirs $d"
477           test "$subdir_srcdir" = "\$(..)$d" || config_vars="$config_vars
478 $d-srcdir = $subdir_srcdir"
479         done
480         for d in $libc_add_on_config_subdirs; do
481           case "$d" in
482           /*) AC_MSG_ERROR(dnl
483 fragment uses absolute path in \$libc_add_on_config_subdirs) ;;
484           esac
485           if test ! -d "$libc_add_on_srcdir/$d"; then
486             AC_MSG_ERROR(fragment wants to configure missing directory $d)
487           fi
488           case "$libc_add_on" in
489           /*) AC_MSG_ERROR(dnl
490 relative path required for add-on using \$libc_add_on_config_subdirs) ;;
491           esac
492           subdirs="$subdirs $libc_add_on/$d"
493         done
494       }
495     fi
496     if test -n "$libc_add_on"; then
497       LIBC_PRECONFIGURE([$libc_add_on_srcdir], [add-on $libc_add_on for])
498       use_add_ons="$use_add_ons $libc_add_on"
499       add_ons_pfx="$add_ons_pfx $libc_add_on/"
500       test -z "$libc_add_on_canonical" ||
501       add_ons_sfx="$add_ons_sfx /$libc_add_on_canonical"
502     fi
503   done
504   # Use echo to strip excess whitespace.
505   add_ons="`echo $use_add_ons`"
507 AC_SUBST(add_ons)
508 AC_SUBST(add_on_subdirs)
512 ### I put this here to prevent those annoying emails from people who cannot
513 ### read and try to compile glibc on unsupported platforms.  --drepper
515 ### By using the undocumented --enable-hacker-mode option for configure
516 ### one can skip this test to make the configuration not fail for unsupported
517 ### platforms.
519 if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
520   case "$machine-$host_os" in
521   *-linux* | *-gnu*)
522     ;;
523   *)
524     echo "*** The GNU C library is currently not available for this platform."
525     echo "*** So far nobody cared to port it and if there is no volunteer it"
526     echo "*** might never happen.  So, if you have interest to see glibc on"
527     echo "*** this platform visit"
528     echo "***   http://www.gnu.org/software/libc/porting.html"
529     echo "*** and join the group of porters"
530     exit 1
531     ;;
532   esac
535 dnl We need to use [ and ] for other purposes for a while now.
536 changequote(,)dnl
537 # Expand the configuration machine name into a subdirectory by architecture
538 # type and particular chip.  If an add-on configure fragment already set
539 # base_machine, we don't change it.
540 test -n "$base_machine" || case "$machine" in
541 i[34567]86)     base_machine=i386 machine=i386/$machine ;;
542 powerpc)        base_machine=powerpc machine=powerpc/powerpc32 ;;
543 powerpc64)      base_machine=powerpc machine=powerpc/powerpc64 ;;
544 s390)           base_machine=s390 machine=s390/s390-32 ;;
545 s390x)          base_machine=s390 machine=s390/s390-64 ;;
546 sh3*)           base_machine=sh machine=sh/sh3 ;;
547 sh4*)           base_machine=sh machine=sh/sh4 ;;
548 sparc | sparcv[67])
549                 base_machine=sparc machine=sparc/sparc32 ;;
550 sparcv8 | supersparc | hypersparc)
551                 base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
552 sparcv8plus | sparcv8plusa | sparcv9)
553                 base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
554 sparcv8plusb | sparcv9b)
555                 base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9b ;;
556 sparcv9v)
557                 base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v ;;
558 sparcv9v2)
559                 base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v2 ;;
560 sparc64)
561                 base_machine=sparc machine=sparc/sparc64 ;;
562 sparc64b)
563                 base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
564 sparc64v)
565                 base_machine=sparc machine=sparc/sparc64/sparcv9v ;;
566 sparc64v2)
567                 base_machine=sparc machine=sparc/sparc64/sparcv9v2 ;;
568 *)              base_machine=$machine ;;
569 esac
570 changequote([,])dnl
571 AC_SUBST(base_machine)
573 if test "$base_machine" = "i386"; then
574   AC_DEFINE(USE_REGPARMS)
577 # For the multi-arch option we need support in the assembler & linker.
578 AC_CACHE_CHECK([for assembler and linker STT_GNU_IFUNC support],
579                libc_cv_ld_gnu_indirect_function, [dnl
580 cat > conftest.S <<EOF
581 .type foo,%gnu_indirect_function
582 foo:
583 .globl _start
584 _start:
585 .globl __start
586 __start:
587 .data
588 #ifdef _LP64
589 .quad foo
590 #else
591 .long foo
592 #endif
594 libc_cv_ld_gnu_indirect_function=no
595 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
596             -nostartfiles -nostdlib \
597             -o conftest conftest.S 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
598   # Do a link to see if the backend supports IFUNC relocs.
599   $READELF -r conftest 1>&AS_MESSAGE_LOG_FD
600   LC_ALL=C $READELF -r conftest | grep 'no relocations' >/dev/null || {
601     libc_cv_ld_gnu_indirect_function=yes
602   }
604 rm -f conftest*])
606 AC_MSG_CHECKING(whether .text pseudo-op must be used)
607 AC_CACHE_VAL(libc_cv_dot_text, [dnl
608 cat > conftest.s <<EOF
609 .text
611 libc_cv_dot_text=
612 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
613   libc_cv_dot_text=.text
615 rm -f conftest*])
616 if test -z "$libc_cv_dot_text"; then
617   AC_MSG_RESULT(no)
618 else
619   AC_MSG_RESULT(yes)
622 if test x"$libc_cv_ld_gnu_indirect_function" != xyes; then
623   if test x"$multi_arch" = xyes; then
624     AC_MSG_ERROR([--enable-multi-arch support requires assembler and linker support])
625   else
626     multi_arch=no
627   fi
629 if test x"$multi_arch" != xno; then
630   multi_arch_d=/multiarch
633 # Compute the list of sysdep directories for this configuration.
634 # This can take a while to compute.
635 sysdep_dir=$srcdir/sysdeps
636 AC_MSG_CHECKING(sysdep dirs)
637 dnl We need to use [ and ] for other purposes for a while now.
638 changequote(,)dnl
639 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
640 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
642 test "x$base_os" != x || case "$os" in
643 gnu*)
644   base_os=mach/hurd ;;
645 linux*)
646   base_os=unix/sysv ;;
647 esac
649 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
650 tail=$os
651 ostry=$os
652 while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
653   ostry="$ostry /$o"
654   tail=$o
655 done
656 o=`echo $tail | sed 's/[0-9]*$//'`
657 if test $o != $tail; then
658   ostry="$ostry /$o"
660 # For linux-gnu, try linux-gnu, then linux.
661 o=`echo $tail | sed 's/-.*$//'`
662 if test $o != $tail; then
663   ostry="$ostry /$o"
666 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
667 base=
668 tail=$base_os
669 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
670   set $b
671   base="$base /$1"
672   tail="$2"
673 done
675 # For sparc/sparc32, try sparc/sparc32 and then sparc.
676 mach=
677 tail=$machine${submachine:+/$submachine}
678 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
679   set $m
680   # Prepend the machine's FPU directory unless --without-fp.
681   if test "$with_fp" = yes; then
682     mach="$mach /$1/fpu"
683   else
684     mach="$mach /$1/nofpu"
685   fi
686   mach="$mach /$1"
687   tail="$2"
688 done
690 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
691 changequote([,])dnl
693 # Find what sysdep directories exist.
694 sysnames_add_ons=
695 sysnames=
696 for b in $base ''; do
697   for m0 in $mach ''; do
698     for v in /$vendor ''; do
699       test "$v" = / && continue
700       for o in /$ostry ''; do
701         test "$o" = / && continue
702         for m in $multi_arch_d $mach ''; do
703           for d in $add_ons_pfx ''; do
704             for a in $add_ons_sfx ''; do
705               if test -n "$m0$m0sub$b$v$o$m$msub"; then
706                 try_srcdir="${srcdir}/"
707                 case "$d" in
708                 /*) try_srcdir= ;;
709                 esac
710                 try="${d}sysdeps$m0$m0sub$b$v$o$m$msub$a"
711                 test -n "$enable_debug_configure" &&
712                 echo "$0 [DEBUG]: try $try" >&2
713                 if test -d "$try_srcdir$try"; then
714                   sysnames="$sysnames $try"
715                   { test -n "$o" || test -n "$b"; } && os_used=t
716                   { test -n "$m" || test -n "$m0"; } && machine_used=t
717                   case x${m0:-$m} in
718                   x*/$submachine) submachine_used=t ;;
719                   esac
720                   if test -n "$d"; then
721                     case "$sysnames_add_ons" in
722                     *" $d "*) ;;
723                     *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
724                     esac
725                   fi
726                 fi
727               fi
728             done
729           done
730         done
731       done
732     done
733   done
734 done
736 # If the assembler supports gnu_indirect_function symbol type and the
737 # architecture supports multi-arch, we enable multi-arch by default.
738 case $sysnames_add_ons$sysnames in
739 *"$multi_arch_d"*)
740   ;;
742   test x"$multi_arch" = xdefault && multi_arch=no
743   ;;
744 esac
745 if test x"$multi_arch" != xno; then
746   AC_DEFINE(USE_MULTIARCH)
748 AC_SUBST(multi_arch)
750 if test -z "$os_used" && test "$os" != none; then
751   AC_MSG_ERROR(Operating system $os is not supported.)
753 if test -z "$machine_used" && test "$machine" != none; then
754   AC_MSG_ERROR(The $machine is not supported.)
756 if test -z "$submachine_used" && test -n "$submachine"; then
757   AC_MSG_ERROR(The $submachine subspecies of $host_cpu is not supported.)
759 AC_SUBST(submachine)
761 # We have now validated the configuration.
763 # Expand the list of system names into a full list of directories
764 # from each element's parent name and Implies file (if present).
765 set $sysnames
766 names=
767 while test $# -gt 0; do
768   name=$1
769   shift
771   case " $names " in *" $name "*)
772     # Already in the list.
773     continue
774   esac
776   # Report each name as we discover it, so there is no long pause in output.
777   echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
779   name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
781   case $name in
782     /*) xsrcdir= ;;
783     *)  xsrcdir=$srcdir/ ;;
784   esac
785   test -n "$enable_debug_configure" &&
786   echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
788   for implies_file in Implies Implies-before Implies-after; do
789     implies_type=`echo $implies_file | sed s/-/_/`
790     eval ${implies_type}=
791     if test -f $xsrcdir$name/$implies_file; then
792       # Collect more names from the `Implies' file (removing comments).
793       implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/$implies_file`"
794       for x in $implied_candidate; do
795         found=no
796         if test -d $xsrcdir$name_base/$x; then
797           eval "${implies_type}=\"\$${implies_type} \$name_base/\$x\""
798           found=yes
799         fi
800         for d in $add_ons_pfx ''; do
801           try="${d}sysdeps/$x"
802           case $d in
803            /*) try_srcdir= ;;
804            *) try_srcdir=$srcdir/ ;;
805           esac
806           test -n "$enable_debug_configure" &&
807            echo "[DEBUG]: $name $implies_file $x try($d) {$try_srcdir}$try" >&2
808           if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
809           then
810             eval "${implies_type}=\"\$${implies_type} \$try\""
811             found=yes
812             case "$sysnames_add_ons" in
813             *" $d "*) ;;
814             *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
815             esac
816           fi
817         done
818         if test $found = no; then
819           AC_MSG_WARN($name/$implies_file specifies nonexistent $x)
820         fi
821       done
822     fi
823   done
825   # Add NAME to the list of names.
826   names="$names $name"
828   # Find the parent of NAME, using the empty string if it has none.
829 changequote(,)dnl
830   parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
831 changequote([,])dnl
833   test -n "$enable_debug_configure" &&
834     echo "[DEBUG]: $name Implies='$Implies' rest='$*' parent='$parent' \
835 Implies_before='$Implies_before' Implies_after='$Implies_after'" >&2
837   # Add the names implied by NAME, and NAME's parent (if it has one), to
838   # the list of names to be processed (the argument list).  We prepend the
839   # implied names to the list and append the parent.  We want implied
840   # directories to come before further directories inferred from the
841   # configuration components; this ensures that for sysv4, unix/common
842   # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
843   # after sysv4).
844   sysnames="`echo $Implies $* $Implies_before $parent $Implies_after`"
845   test -n "$sysnames" && set $sysnames
846 done
848 # Add the default directories.
849 default_sysnames="sysdeps/generic"
850 sysnames="$names $default_sysnames"
851 AC_SUBST(sysnames)
852 # The other names were emitted during the scan.
853 AC_MSG_RESULT($default_sysnames)
855 # Collect the list of add-ons that supply partial sysdeps trees.
856 sysdeps_add_ons=
857 for add_on in $add_ons; do
858   case "$add_on" in
859   /*) xsrcdir= ;;
860   *) xsrcdir="$srcdir/" ;;
861   esac
863   test -d "$xsrcdir$add_on/sysdeps" || {
864     case "$configured_add_ons " in
865     *" $add_on "*) ;;
866     *|'')
867       AC_MSG_ERROR(add-on $add_on has no configure fragment or sysdeps tree)
868       ;;
869     esac
870     continue
871   }
873   sysdeps_add_ons="$sysdeps_add_ons $add_on"
874   case "$sysnames_add_ons" in
875   *" $add_on/ "*) ;;
876   *|'')
877     AC_MSG_WARN(add-on $add_on contributed no sysdeps directories)
878     continue ;;
879   esac
881   found=no
882   for d in $sysnames; do
883     case "$d" in
884     $add_on/sysdeps/*) ;;
885     *) continue ;;
886     esac
887     (cd "$xsrcdir$d" && for f in *[[!~]]; do
888        case "$f" in
889        sys|bits)
890          for ff in $f/*.h; do
891            test -d "$ff" || { test -e "$ff" && exit 88; }
892          done
893          ;;
894        *)
895          test -d "$f" || { test -e "$f" && exit 88; }
896          ;;
897        esac
898      done)
899     if test $? -eq 88; then
900       found=yes
901       break
902     fi
903   done
904   if test $found = no; then
905     AC_MSG_WARN(add-on $add_on contributed no useful sysdeps directories)
906   fi
907 done
908 AC_SUBST(sysdeps_add_ons)
911 ### Locate tools.
913 AC_PROG_INSTALL
914 if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
915   # The makefiles need to use a different form to find it in $srcdir.
916   INSTALL='\$(..)./scripts/install-sh -c'
918 AC_PROG_LN_S
920 LIBC_PROG_BINUTILS
921 AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
923 # Accept binutils 2.20 or newer.
924 AC_CHECK_PROG_VER(AS, $AS, --version,
925                   [GNU assembler.* \([0-9]*\.[0-9.]*\)],
926                   [2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], AS=: critic_missing="$critic_missing as")
927 AC_CHECK_PROG_VER(LD, $LD, --version,
928                   [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
929                   [2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], LD=: critic_missing="$critic_missing ld")
931 # These programs are version sensitive.
932 AC_CHECK_TOOL_PREFIX
933 AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
934   [version \([egcygnustpi-]*[0-9.]*\)], [4.[3-9].* | 4.[1-9][0-9].* | [5-9].* ],
935   critic_missing="$critic_missing gcc")
936 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
937   [GNU Make[^0-9]*\([0-9][0-9.]*\)],
938   [3.79* | 3.[89]*], critic_missing="$critic_missing make")
940 AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
941   [GNU gettext.* \([0-9]*\.[0-9.]*\)],
942   [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
943   MSGFMT=: aux_missing="$aux_missing msgfmt")
944 AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
945   [GNU texinfo.* \([0-9][0-9.]*\)],
946   [4.[5-9]*|4.[1-9][0-9]*|[5-9].*],
947   MAKEINFO=: aux_missing="$aux_missing makeinfo")
948 AC_CHECK_PROG_VER(SED, sed, --version,
949   [GNU sed[^0-9]* \([0-9]*\.[0-9.]*\)],
950   [3.0[2-9]*|3.[1-9]*|[4-9]*],
951   SED=: aux_missing="$aux_missing sed")
952 AC_CHECK_PROG_VER(AWK, gawk, --version,
953   [GNU Awk[^0-9]*\([0-9][0-9.]*\)],
954   [[3-9].*], critic_missing="$critic_missing gawk")
956 AC_CHECK_TOOL(NM, nm, false)
958 AC_CHECK_PROGS(AUTOCONF, autoconf, no)
959 case "x$AUTOCONF" in
960 xno|x|x:) AUTOCONF=no ;;
962   AC_CACHE_CHECK(dnl
963 whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
964   if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
965     libc_cv_autoconf_works=yes
966   else
967     libc_cv_autoconf_works=no
968   fi])
969   test $libc_cv_autoconf_works = yes || AUTOCONF=no
970   ;;
971 esac
972 if test "x$AUTOCONF" = xno; then
973   aux_missing="$aux_missing autoconf"
976 test -n "$critic_missing" && AC_MSG_ERROR([
977 *** These critical programs are missing or too old:$critic_missing
978 *** Check the INSTALL file for required versions.])
980 test -n "$aux_missing" && AC_MSG_WARN([
981 *** These auxiliary programs are missing or incompatible versions:$aux_missing
982 *** some features will be disabled.
983 *** Check the INSTALL file for required versions.])
985 # if using special system headers, find out the compiler's sekrit
986 # header directory and add that to the list.  NOTE: Only does the right
987 # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
988 if test -n "$sysheaders"; then
989   SYSINCLUDES=-nostdinc
990   for d in include include-fixed; do
991     i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
992     SYSINCLUDES="$SYSINCLUDES -isystem $i"
993   done
994   SYSINCLUDES="$SYSINCLUDES \
995 -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
996   if test -n "$CXX"; then
997     CXX_SYSINCLUDES=
998     cxxmachine=`$CXX -dumpmachine 2>&AS_MESSAGE_LOG_FD` &&
999     cxxheaders=`$CXX -v -S -x c++ /dev/null -o /dev/null 2>&1 \
1000         | sed -n -e '1,/#include/d' -e '/^ \//{p;q;}' | sed 's/ //'`
1001     test "x$cxxheaders" != x && test "x$i" != "x$cxxheaders" &&
1002     CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders \
1003 -isystem $cxxheaders/$cxxmachine -isystem $cxxheaders/backward"
1004   fi
1006 AC_SUBST(SYSINCLUDES)
1007 AC_SUBST(CXX_SYSINCLUDES)
1009 # Test if LD_LIBRARY_PATH contains the notation for the current directory
1010 # since this would lead to problems installing/building glibc.
1011 # LD_LIBRARY_PATH contains the current directory if one of the following
1012 # is true:
1013 # - one of the terminals (":" and ";") is the first or last sign
1014 # - two terminals occur directly after each other
1015 # - the path contains an element with a dot in it
1016 AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
1017 changequote(,)dnl
1018 case ${LD_LIBRARY_PATH} in
1019   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
1020     ld_library_path_setting="contains current directory"
1021     ;;
1022   *)
1023     ld_library_path_setting="ok"
1024     ;;
1025 esac
1026 changequote([,])dnl
1027 AC_MSG_RESULT($ld_library_path_setting)
1028 if test "$ld_library_path_setting" != "ok"; then
1029 AC_MSG_ERROR([
1030 *** LD_LIBRARY_PATH shouldn't contain the current directory when
1031 *** building glibc. Please change the environment variable
1032 *** and run configure again.])
1035 AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
1036 if $CC -v -static-libgcc 2>&1 | grep 'unrecognized option.*static-libgcc' >/dev/null; then
1037   libc_cv_gcc_static_libgcc=
1038 else
1039   libc_cv_gcc_static_libgcc=-static-libgcc
1040 fi])
1041 AC_SUBST(libc_cv_gcc_static_libgcc)
1043 AC_PATH_PROG(BASH_SHELL, bash, no)
1044 if test "$BASH_SHELL" != no &&
1045    $BASH_SHELL -c 'test "$BASH_VERSINFO" \
1046              && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
1047   libc_cv_have_bash2=yes
1048 else
1049   libc_cv_have_bash2=no
1051 AC_SUBST(libc_cv_have_bash2)
1053 dnl We need a ksh compatible shell for tzselect.
1054 if test "$BASH_SHELL" = no; then
1055   AC_PATH_PROG(KSH, ksh, no)
1056   if test "$KSH" = no; then
1057     libc_cv_have_ksh=no
1058   else
1059     libc_cv_have_ksh=yes
1060   fi
1061 else
1062   KSH="$BASH_SHELL"
1063   AC_SUBST(KSH)
1064   libc_cv_have_ksh=yes
1066 AC_SUBST(libc_cv_have_ksh)
1068 AC_PATH_PROG(PERL, perl, no)
1069 if test "$PERL" != no &&
1070    (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
1071   PERL=no
1073 AC_PATH_PROG(INSTALL_INFO, install-info, no,
1074              $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
1075 AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
1077 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
1078 AC_TRY_COMPILE(dnl
1079 [#define __need_size_t
1080 #define __need_wchar_t
1081 #include <stddef.h>
1082 #define __need_NULL
1083 #include <stddef.h>], [size_t size; wchar_t wchar;
1084 #ifdef offsetof
1085 #error stddef.h ignored __need_*
1086 #endif
1087 if (&size == NULL || &wchar == NULL) abort ();],
1088                libc_cv_friendly_stddef=yes,
1089                libc_cv_friendly_stddef=no)])
1090 if test $libc_cv_friendly_stddef = yes; then
1091   config_vars="$config_vars
1092 override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
1095 AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
1096                libc_cv_need_minus_P, [dnl
1097 cat > conftest.S <<EOF
1098 #include "confdefs.h"
1099 /* Nothing whatsoever.  */
1101 if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
1102   libc_cv_need_minus_P=no
1103 else
1104   libc_cv_need_minus_P=yes
1106 rm -f conftest*])
1107 if test $libc_cv_need_minus_P = yes; then
1108   config_vars="$config_vars
1109 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
1112 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
1113 cat > conftest.s <<EOF
1114 ${libc_cv_dot_text}
1115 foo:
1116 .set glibc_conftest_frobozz,foo
1117 .globl glibc_conftest_frobozz
1119 # The alpha-dec-osf1 assembler gives only a warning for `.set'
1120 # (but it doesn't work), so we must do a linking check to be sure.
1121 cat > conftest1.c <<\EOF
1122 extern int glibc_conftest_frobozz;
1123 void _start() { glibc_conftest_frobozz = 1; }
1125 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1126             -nostartfiles -nostdlib \
1127             -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1128   libc_cv_asm_set_directive=yes
1129 else
1130   libc_cv_asm_set_directive=no
1132 rm -f conftest*])
1133 if test $libc_cv_asm_set_directive = yes; then
1134   AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
1137 AC_CACHE_CHECK(for assembler gnu_unique_object symbol type,
1138                libc_cv_asm_unique_object, [dnl
1139 cat > conftest.s <<EOF
1140 ${libc_cv_dot_text}
1141 _sym:
1142 .type _sym, %gnu_unique_object
1144 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1145   libc_cv_asm_unique_object=yes
1146 else
1147   libc_cv_asm_unique_object=no
1149 rm -f conftest*])
1150 if test $libc_cv_asm_unique_object = yes; then
1151   AC_DEFINE(HAVE_ASM_UNIQUE_OBJECT)
1154 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
1155 [cat > conftest.s <<EOF
1156 ${libc_cv_dot_text}
1157 _sym:
1158 .symver _sym,sym@VERS
1160 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1161   libc_cv_asm_symver_directive=yes
1162 else
1163   libc_cv_asm_symver_directive=no
1165 rm -f conftest*])
1166 AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
1167 if test $libc_cv_asm_symver_directive = yes; then
1168   cat > conftest.s <<EOF
1169 ${libc_cv_dot_text}
1170 _sym:
1171 .symver _sym,sym@VERS
1173   cat > conftest.map <<EOF
1174 VERS_1 {
1175         global: sym;
1178 VERS_2 {
1179         global: sym;
1180 } VERS_1;
1182   if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1183     if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
1184                                 -o conftest.so conftest.o
1185                                 -nostartfiles -nostdlib
1186                                 -Wl,--version-script,conftest.map
1187                        1>&AS_MESSAGE_LOG_FD]);
1188     then
1189       libc_cv_ld_version_script_option=yes
1190     else
1191       libc_cv_ld_version_script_option=no
1192     fi
1193   else
1194     libc_cv_ld_version_script_option=no
1195   fi
1196 else
1197   libc_cv_ld_version_script_option=no
1199 rm -f conftest*])
1200 if test $shared != no &&
1201    test $libc_cv_asm_symver_directive = yes &&
1202    test $libc_cv_ld_version_script_option = yes &&
1203    test $enable_versioning = yes; then
1204   VERSIONING=yes
1205   AC_DEFINE(DO_VERSIONING)
1206 else
1207   VERSIONING=no
1209 AC_SUBST(VERSIONING)
1211 if test $shared != no && test $VERSIONING = no; then
1212   echo "\
1213 *** WARNING: You should not compile GNU libc without versioning. Not using
1214 *** versioning will introduce incompatibilities so that old binaries
1215 *** will not run anymore.
1216 *** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
1218 AC_CACHE_CHECK(for .previous assembler directive,
1219                libc_cv_asm_previous_directive, [dnl
1220 cat > conftest.s <<EOF
1221 .section foo_section
1222 .previous
1224 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1225   libc_cv_asm_previous_directive=yes
1226 else
1227   libc_cv_asm_previous_directive=no
1229 rm -f conftest*])
1230 if test $libc_cv_asm_previous_directive = yes; then
1231   AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
1232 else
1233   AC_CACHE_CHECK(for .popsection assembler directive,
1234                  libc_cv_asm_popsection_directive, [dnl
1235   cat > conftest.s <<EOF
1236 .pushsection foo_section
1237 .popsection
1239   if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1240     libc_cv_asm_popsection_directive=yes
1241   else
1242     libc_cv_asm_popsection_directive=no
1243   fi
1244   rm -f conftest*])
1245   if test $libc_cv_asm_popsection_directive = yes; then
1246     AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
1247   fi
1249 AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1250                libc_cv_asm_protected_directive, [dnl
1251 cat > conftest.s <<EOF
1252 .protected foo
1253 foo:
1254 .hidden bar
1255 bar:
1257 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1258   libc_cv_asm_protected_directive=yes
1259 else
1260   AC_MSG_ERROR(assembler support for symbol visibility is required)
1262 rm -f conftest*])
1264 if test $libc_cv_asm_protected_directive = yes; then
1265   AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
1266                  libc_cv_visibility_attribute,
1267                  [cat > conftest.c <<EOF
1268                   int foo __attribute__ ((visibility ("hidden"))) = 1;
1269                   int bar __attribute__ ((visibility ("protected"))) = 1;
1271                   libc_cv_visibility_attribute=no
1272                   if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1273                     if grep '\.hidden.*foo' conftest.s >/dev/null; then
1274                       if grep '\.protected.*bar' conftest.s >/dev/null; then
1275                         libc_cv_visibility_attribute=yes
1276                       fi
1277                     fi
1278                   fi
1279                   rm -f conftest.{c,s}
1280                  ])
1281   if test $libc_cv_visibility_attribute != yes; then
1282     AC_MSG_ERROR(compiler support for visibility attribute is required)
1283   fi
1286 if test $libc_cv_visibility_attribute = yes; then
1287   AC_CACHE_CHECK(for broken __attribute__((visibility())),
1288                  libc_cv_broken_visibility_attribute,
1289                  [cat > conftest.c <<EOF
1290                   int foo (int x);
1291                   int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1292                   int bar (int x) { return x; }
1294                   libc_cv_broken_visibility_attribute=yes
1295                   if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1296 changequote(,)dnl
1297                     if grep '\.hidden[  _]foo' conftest.s >/dev/null; then
1298 changequote([,])dnl
1299                       libc_cv_broken_visibility_attribute=no
1300                     fi
1301                   fi
1302                   rm -f conftest.c conftest.s
1303                  ])
1304   if test $libc_cv_broken_visibility_attribute = yes; then
1305     AC_MSG_ERROR(working compiler support for visibility attribute is required)
1306   fi
1309 AC_CACHE_CHECK(for broken __attribute__((alias())),
1310                libc_cv_broken_alias_attribute,
1311                [cat > conftest.c <<EOF
1312                extern int foo (int x) __asm ("xyzzy");
1313                int bar (int x) { return x; }
1314                extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1315                extern int dfoo;
1316                extern __typeof (dfoo) dfoo __asm ("abccb");
1317                int dfoo = 1;
1319                libc_cv_broken_alias_attribute=yes
1320                if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1321                  if grep 'xyzzy' conftest.s >/dev/null &&
1322                     grep 'abccb' conftest.s >/dev/null; then
1323                    libc_cv_broken_alias_attribute=no
1324                  fi
1325                fi
1326                rm -f conftest.c conftest.s
1327                ])
1328 if test $libc_cv_broken_alias_attribute = yes; then
1329   AC_MSG_ERROR(working alias attribute support required)
1332 if test $libc_cv_visibility_attribute = yes; then
1333   AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1334                  libc_cv_have_sdata_section,
1335                  [echo "int i;" > conftest.c
1336                   libc_cv_have_sdata_section=no
1337                   if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1338                      | grep '\.sdata' >/dev/null; then
1339                     libc_cv_have_sdata_section=yes
1340                   fi
1341                   rm -f conftest.c conftest.so
1342                  ])
1343   if test $libc_cv_have_sdata_section = yes; then
1344     AC_DEFINE(HAVE_SDATA_SECTION)
1345   fi
1348 AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1349                libc_cv_initfini_array, [dnl
1350 LIBC_TRY_LINK_STATIC([
1351 int foo (void) { return 1; }
1352 int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
1354   [if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
1355     libc_cv_initfini_array=yes
1356   else
1357     libc_cv_initfini_array=no
1358   fi],
1359   [libc_cv_initfini_array=no])
1361 if test $libc_cv_initfini_array != yes; then
1362   AC_MSG_ERROR([Need linker with .init_array/.fini_array support.])
1365 AC_CACHE_CHECK(whether to use .ctors/.dtors header and trailer,
1366                libc_cv_ctors_header, [dnl
1367   libc_cv_ctors_header=yes
1368   LIBC_TRY_LINK_STATIC([
1369 __attribute__ ((constructor)) void ctor (void) { asm (""); }
1370 __attribute__ ((destructor))  void dtor (void) { asm (""); }
1372               [dnl
1373       AS_IF([$READELF -WS conftest$ac_exeext | $AWK '
1374         { gsub(/\@<:@ */, "@<:@") }
1375         $2 == ".ctors" || $2 == ".dtors" {
1376           size = strtonum("0x" $6)
1377           align = strtonum("0x" $NF)
1378           seen@<:@$2@:>@ = 1
1379           stub@<:@$2@:>@ = size == align * 2
1380         }
1381         END {
1382           ctors_ok = !seen@<:@".ctors"@:>@ || stub@<:@".ctors"@:>@
1383           dtors_ok = !seen@<:@".dtors"@:>@ || stub@<:@".dtors"@:>@
1384           exit ((ctors_ok && dtors_ok) ? 0 : 1)
1385         }
1386       '], [libc_cv_ctors_header=no])
1387     ], [dnl
1388       AC_MSG_ERROR([missing __attribute__ ((constructor)) support??])
1389     ])
1391 if test $libc_cv_ctors_header = no; then
1392   AC_DEFINE(NO_CTORS_DTORS_SECTIONS)
1395 AC_CACHE_CHECK(for libunwind-support in compiler,
1396                libc_cv_cc_with_libunwind, [
1397   cat > conftest.c <<EOF
1398 int main (void) { return 0; }
1400   if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
1401      conftest.c -v 2>&1 >/dev/null | grep ' -lunwind ' >/dev/null; then
1402     libc_cv_cc_with_libunwind=yes
1403   else
1404     libc_cv_cc_with_libunwind=no
1405   fi
1406   rm -f conftest*])
1407 AC_SUBST(libc_cv_cc_with_libunwind)
1408 if test $libc_cv_cc_with_libunwind = yes; then
1409   AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
1412 AC_CACHE_CHECK(for -z nodelete option,
1413                libc_cv_z_nodelete, [dnl
1414 cat > conftest.c <<EOF
1415 int _start (void) { return 42; }
1417 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1418                    -fPIC -shared -o conftest.so conftest.c
1419                    -nostartfiles -nostdlib
1420                    -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
1421 then
1422   libc_cv_z_nodelete=yes
1423 else
1424   AC_MSG_ERROR(linker with -z nodelete support required)
1426 rm -f conftest*])
1428 AC_CACHE_CHECK(for -z nodlopen option,
1429                libc_cv_z_nodlopen, [dnl
1430 cat > conftest.c <<EOF
1431 int _start (void) { return 42; }
1433 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1434                         -fPIC -shared -o conftest.so conftest.c
1435                         -nostartfiles -nostdlib
1436                         -Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
1437 then
1438   libc_cv_z_nodlopen=yes
1439 else
1440   AC_MSG_ERROR(linker with -z nodlopen support required)
1442 rm -f conftest*])
1444 AC_CACHE_CHECK(for -z initfirst option,
1445                libc_cv_z_initfirst, [dnl
1446 cat > conftest.c <<EOF
1447 int _start (void) { return 42; }
1449 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1450                         -fPIC -shared -o conftest.so conftest.c
1451                         -nostartfiles -nostdlib
1452                         -Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
1453 then
1454   libc_cv_z_initfirst=yes
1455 else
1456   AC_MSG_ERROR(linker with -z initfirst support required)
1458 rm -f conftest*])
1460 # Add-on fragments can set these for other machines.
1461 libc_commonpagesize=${libc_commonpagesize:-no}
1462 libc_relro_required=${libc_relro_required:-no}
1463 case "$base_machine" in
1464   i[[34567]]86 | x86_64 | powerpc* | s390*)
1465     libc_commonpagesize=0x1000
1466     libc_relro_required=yes
1467     ;;
1468   sparc*)
1469     libc_commonpagesize=0x2000
1470     libc_relro_required=yes
1471     ;;
1472 esac
1474 if test $libc_commonpagesize != no; then
1475   AC_CACHE_CHECK(for -z relro option,
1476                  libc_cv_z_relro, [dnl
1477   libc_cv_z_relro=no
1478   AC_LANG_CONFTEST([AC_LANG_SOURCE([[
1479 int _start (void) { return 42; }
1480 extern void _exit (int);
1481 /* Since these pointers are const, they should go in rodata.
1482    Since they refer to functions that have to be resolved by
1483    dynamic linking, they should instead go in RELRO data.  */
1484 const void *const relro[] = { &_start, &_exit, 0 };
1485 /* GNU ld fails to produce RELRO data when it's very small and there is no
1486    normal writable data following it, or if only uninitialized (.bss) data
1487    follows it, or only very small writable data.  */
1488 int data[0x10000] = { 1, };
1489 ]])])
1490   cat > conftest.awk <<\EOF
1491 BEGIN {
1492   result = "no"
1493   commonpagesize = strtonum(commonpagesize)
1495 { print "LINE:", $0 > "/dev/stderr" }
1496 $1 == "GNU_RELRO" {
1497   vaddr = strtonum($3)
1498   memsz = strtonum($6)
1499   end = vaddr + memsz
1500   printf "vaddr %#x memsz %#x end %#x commonpagesize %#x\n", \
1501     vaddr, memsz, end, commonpagesize > "/dev/stderr"
1502   result = (end % commonpagesize == 0) ? "yes" : "broken"
1504 END { print result }
1506   AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1507                     -fPIC -shared -o conftest.so conftest.c
1508                     -nostartfiles -nostdlib
1509                     -Wl,-z,relro 1>&AS_MESSAGE_LOG_FD]) &&
1510   AC_TRY_COMMAND([$READELF -Wl conftest.so > conftest.ph]) &&
1511   AC_TRY_COMMAND([
1512       $AWK -v commonpagesize=$libc_commonpagesize -f conftest.awk
1513            conftest.ph > conftest.cps
1514     ]) &&
1515   libc_cv_z_relro=`cat conftest.cps 2>&AS_MESSAGE_LOG_FD`
1516   rm -f conftest*])
1517   if { test "x$libc_relro_required" = xyes &&
1518        test "x$libc_cv_z_relro" != xyes
1519      }
1520   then
1521     AC_MSG_ERROR(linker with -z relro support required)
1522   fi
1523 else
1524   AC_MSG_WARN([missing architecture parameter to check for working -z relro])
1527 AC_CACHE_CHECK(for -Bgroup option,
1528                libc_cv_Bgroup, [dnl
1529 cat > conftest.c <<EOF
1530 int _start (void) { return 42; }
1532 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1533                             -fPIC -shared -o conftest.so conftest.c
1534                             -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1535 then
1536   libc_cv_Bgroup=yes
1537 else
1538   libc_cv_Bgroup=no
1540 rm -f conftest*])
1541 AC_SUBST(libc_cv_Bgroup)
1543 ASFLAGS_config=
1544 AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1545                libc_cv_as_noexecstack, [dnl
1546 cat > conftest.c <<EOF
1547 void foo (void) { }
1549 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1550                    -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
1551    && grep .note.GNU-stack conftest.s >/dev/null \
1552    && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
1553                       -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1554 then
1555   libc_cv_as_noexecstack=yes
1556 else
1557   libc_cv_as_noexecstack=no
1559 rm -f conftest*])
1560 if test $libc_cv_as_noexecstack = yes; then
1561   ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1563 AC_SUBST(ASFLAGS_config)
1565 AC_CACHE_CHECK(for -z combreloc,
1566                libc_cv_z_combreloc, [dnl
1567 cat > conftest.c <<EOF
1568 extern int bar (int);
1569 extern int mumble;
1570 int foo (void) { return bar (mumble); }
1572 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1573                         -fPIC -shared -o conftest.so conftest.c
1574                         -nostdlib -nostartfiles
1575                         -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
1576 then
1577 dnl The following test is a bit weak.  We must use a tool which can test
1578 dnl cross-platform since the gcc used can be a cross compiler.  Without
1579 dnl introducing new options this is not easily doable.  Instead use a tool
1580 dnl which always is cross-platform: readelf.  To detect whether -z combreloc
1581 dnl look for a section named .rel.dyn.
1582   if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1583     libc_cv_z_combreloc=yes
1584   else
1585     libc_cv_z_combreloc=no
1586   fi
1587 else
1588   libc_cv_z_combreloc=no
1590 rm -f conftest*])
1591 if test "$libc_cv_z_combreloc" = yes; then
1592   AC_DEFINE(HAVE_Z_COMBRELOC)
1594 AC_SUBST(libc_cv_z_combreloc)
1596 AC_CACHE_CHECK(for -z execstack,
1597                libc_cv_z_execstack, [dnl
1598 cat > conftest.c <<EOF
1599 int _start (void) { return 42; }
1601 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1602                             -fPIC -shared -o conftest.so conftest.c
1603                             -Wl,-z,execstack -nostdlib
1604                             1>&AS_MESSAGE_LOG_FD])
1605 then
1606   libc_cv_z_execstack=yes
1607 else
1608   libc_cv_z_execstack=no
1610 rm -f conftest*])
1611 AC_SUBST(libc_cv_z_execstack)
1613 AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
1614 LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no])
1617 AC_SUBST(libc_cv_fpie)
1619 AC_CACHE_CHECK(for --hash-style option,
1620                libc_cv_hashstyle, [dnl
1621 cat > conftest.c <<EOF
1622 int _start (void) { return 42; }
1624 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1625                             -fPIC -shared -o conftest.so conftest.c
1626                             -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
1627 then
1628   libc_cv_hashstyle=yes
1629 else
1630   libc_cv_hashstyle=no
1632 rm -f conftest*])
1633 AC_SUBST(libc_cv_hashstyle)
1635 # The linker's default -shared behavior is good enough if it
1636 # does these things that our custom linker scripts ensure that
1637 # all allocated NOTE sections come first.
1638 if test "$use_default_link" = default; then
1639   AC_CACHE_CHECK([for sufficient default -shared layout],
1640                   libc_cv_use_default_link, [dnl
1641   libc_cv_use_default_link=no
1642   cat > conftest.s <<\EOF
1643           .section .note.a,"a",%note
1644           .balign 4
1645           .long 4,4,9
1646           .string "GNU"
1647           .string "foo"
1648           .section .note.b,"a",%note
1649           .balign 4
1650           .long 4,4,9
1651           .string "GNU"
1652           .string "bar"
1654   if AC_TRY_COMMAND([dnl
1655   ${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD]) &&
1656        ac_try=`$READELF -S conftest.so | sed -n \
1657          ['${x;p;}
1658           s/^ *\[ *[1-9][0-9]*\]  *\([^ ][^ ]*\)  *\([^ ][^ ]*\) .*$/\2 \1/
1659           t a
1660           b
1661           : a
1662           H']`
1663   then
1664     libc_seen_a=no libc_seen_b=no
1665     set -- $ac_try
1666     while test $# -ge 2 -a "$1" = NOTE; do
1667       case "$2" in
1668       .note.a) libc_seen_a=yes ;;
1669       .note.b) libc_seen_b=yes ;;
1670       esac
1671       shift 2
1672     done
1673     case "$libc_seen_a$libc_seen_b" in
1674     yesyes)
1675       libc_cv_use_default_link=yes
1676       ;;
1677     *)
1678       echo >&AS_MESSAGE_LOG_FD "\
1679 $libc_seen_a$libc_seen_b from:
1680 $ac_try"
1681       ;;
1682     esac
1683   fi
1684   rm -f conftest*])
1685   use_default_link=$libc_cv_use_default_link
1688 AC_CACHE_CHECK(linker output format, libc_cv_output_format, [dnl
1689 if libc_cv_output_format=`
1690 ${CC-cc} -nostartfiles -nostdlib -Wl,--print-output-format 2>&AS_MESSAGE_LOG_FD`
1691 then
1692   :
1693 else
1694   libc_cv_output_format=
1696 test -n "$libc_cv_output_format" || libc_cv_output_format=unknown])
1697 AC_SUBST(libc_cv_output_format)
1699 AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl
1700 cat > conftest.c <<EOF
1701 int foo;
1703 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-anchors
1704                             conftest.c 1>&AS_MESSAGE_LOG_FD])
1705 then
1706   libc_cv_fno_toplevel_reorder=yes
1707 else
1708   libc_cv_fno_toplevel_reorder=no
1710 rm -f conftest*])
1711 if test $libc_cv_fno_toplevel_reorder = yes; then
1712   fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
1713 else
1714   fno_unit_at_a_time=-fno-unit-at-a-time
1716 AC_SUBST(fno_unit_at_a_time)
1718 AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
1719 LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector],
1720                    [libc_cv_ssp=yes],
1721                    [libc_cv_ssp=no])
1723 AC_SUBST(libc_cv_ssp)
1725 AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl
1726 cat > conftest.c <<EOF
1727 int foo;
1728 #ifdef __GNUC_GNU_INLINE__
1729 main () { return 0;}
1730 #else
1731 #error
1732 #endif
1734 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -std=gnu99 -fgnu89-inline
1735                             -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD])
1736 then
1737   libc_cv_gnu89_inline=yes
1738 else
1739   libc_cv_gnu89_inline=no
1741 rm -f conftest*])
1742 if test $libc_cv_gnu89_inline = yes; then
1743   gnu89_inline=-fgnu89-inline
1744 else
1745   gnu89_inline=
1747 AC_SUBST(gnu89_inline)
1749 AC_CACHE_CHECK(whether cc puts quotes around section names,
1750                libc_cv_have_section_quotes,
1751                [cat > conftest.c <<EOF
1752                 static const int foo
1753                 __attribute__ ((section ("bar"))) = 1;
1755                 if ${CC-cc} -S conftest.c -o conftest.s; then
1756                   if grep '\.section.*"bar"' conftest.s >/dev/null; then
1757                     libc_cv_have_section_quotes=yes
1758                   else
1759                     libc_cv_have_section_quotes=no
1760                   fi
1761                 else
1762                   libc_cv_have_section_quotes=unknown
1763                 fi
1764                 rm -f conftest.{c,s}
1765                 ])
1766 if test $libc_cv_have_section_quotes = yes; then
1767   AC_DEFINE(HAVE_SECTION_QUOTES)
1770 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1771                [dnl
1772 cat > conftest.s <<EOF
1773 ${libc_cv_dot_text}
1774 .globl foo
1775 foo:
1776 .weak foo
1777 .weak bar; bar = foo
1779 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1780   libc_cv_asm_weak_directive=yes
1781 else
1782   libc_cv_asm_weak_directive=no
1784 rm -f conftest*])
1786 if test $libc_cv_asm_weak_directive = no; then
1787   AC_CACHE_CHECK(for assembler .weakext directive,
1788                  libc_cv_asm_weakext_directive,
1789                  [dnl
1790 cat > conftest.s <<EOF
1791 ${libc_cv_dot_text}
1792 .globl foo
1793 foo:
1794 .weakext bar foo
1795 .weakext baz
1796 .globl baz
1797 baz:
1799   if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1800     libc_cv_asm_weakext_directive=yes
1801   else
1802     libc_cv_asm_weakext_directive=no
1803   fi
1804   rm -f conftest*])
1806 fi # no .weak
1808 if test $libc_cv_asm_weak_directive = yes; then
1809   AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1810 elif test $libc_cv_asm_weakext_directive = yes; then
1811   AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1814 AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
1815 case $machine in
1816   sparc/sparc64*) cfi_offset=2047;;
1817   *) cfi_offset=0;;
1818 esac
1819 cat > conftest.s <<EOF
1820         .text
1821         .type   func,%function
1822 func:
1823         .cfi_startproc
1824         .cfi_remember_state
1825         .cfi_rel_offset 1, $cfi_offset
1826         .cfi_endproc
1828 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1829   libc_cv_asm_cfi_directives=yes
1830 else
1831   libc_cv_asm_cfi_directives=no
1833 rm -f conftest*])
1834 if test $libc_cv_asm_cfi_directives = yes; then
1835   AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
1838 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1839 cat > conftest.c <<\EOF
1840 _start () {}
1841 int __eh_pc;
1842 __throw () {}
1844 dnl No \ in command here because it ends up inside ''.
1845 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1846                             -nostdlib -nostartfiles -Wl,--no-whole-archive
1847                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1848   libc_cv_ld_no_whole_archive=yes
1849 else
1850   libc_cv_ld_no_whole_archive=no
1852 rm -f conftest*])
1853 if test $libc_cv_ld_no_whole_archive = no; then
1854   AC_MSG_ERROR([support for --no-whole-archive is needed])
1857 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1858 cat > conftest.c <<\EOF
1859 _start () {}
1860 int __eh_pc;
1861 __throw () {}
1863 dnl No \ in command here because it ends up inside ''.
1864 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1865                             -nostdlib -nostartfiles -fexceptions
1866                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1867   libc_cv_gcc_exceptions=yes
1868 else
1869   libc_cv_gcc_exceptions=no
1871 rm -f conftest*])
1872 if test $libc_cv_gcc_exceptions = yes; then
1873   exceptions=-fexceptions
1875 AC_SUBST(exceptions)dnl
1877 if test "$host_cpu" = powerpc ; then
1878 # Check for a bug present in at least versions 2.8.x of GCC
1879 # and versions 1.0.x of EGCS.
1880 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1881 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1882                libc_cv_c_asmcr0_bug='no',
1883                libc_cv_c_asmcr0_bug='yes')])
1884 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1885   AC_DEFINE(BROKEN_PPC_ASM_CR0)
1889 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1890 cat > conftest.c <<\EOF
1891 void zero (void *x)
1893   __builtin_memset (x, 0, 1000);
1897 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1898 then
1899   libc_cv_gcc_builtin_memset=no
1900 else
1901   libc_cv_gcc_builtin_memset=yes
1903 rm -f conftest* ])
1904 if test "$libc_cv_gcc_builtin_memset" = yes ; then
1905   AC_DEFINE(HAVE_BUILTIN_MEMSET)
1908 AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1909 cat > conftest.c <<\EOF
1910 extern char *strstr (const char *, const char *) __asm ("my_strstr");
1911 char *foo (const char *a, const char *b)
1913   return __builtin_strstr (a, b);
1917 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
1918 then
1919   libc_cv_gcc_builtin_redirection=yes
1920 else
1921   libc_cv_gcc_builtin_redirection=no
1923 rm -f conftest* ])
1924 if test "$libc_cv_gcc_builtin_redirection" = no; then
1925   AC_MSG_ERROR([support for the symbol redirection needed])
1928 dnl Check whether the compiler supports the __thread keyword.
1929 AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1930 [cat > conftest.c <<\EOF
1931 __thread int a = 42;
1933 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
1934   libc_cv_gcc___thread=yes
1935 else
1936   libc_cv_gcc___thread=no
1938 rm -f conftest*])
1939 if test "$libc_cv_gcc___thread" = no; then
1940   AC_MSG_ERROR([support for the __thread keyword is required])
1943 dnl Check whether the compiler supports the tls_model attribute.
1944 AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1945 cat > conftest.c <<\EOF
1946 extern __thread int a __attribute__((tls_model ("initial-exec")));
1948 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
1949   libc_cv_gcc_tls_model_attr=yes
1950 else
1951   libc_cv_gcc_tls_model_attr=no
1953 rm -f conftest*])
1954 if test "$libc_cv_gcc_tls_model_attr" = no; then
1955   AC_MSG_ERROR([support for the tls_model attribute is required])
1958 dnl Determine how to disable generation of FMA instructions.
1959 AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
1960                libc_cv_cc_nofma, [dnl
1961 libc_cv_cc_nofma=
1962 for opt in -ffp-contract=off -mno-fused-madd; do
1963   LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
1964 done])
1966 if test -n "$submachine"; then
1967   AC_CACHE_CHECK([for compiler option for CPU variant],
1968                  libc_cv_cc_submachine, [dnl
1969   libc_cv_cc_submachine=no
1970   for opt in "-march=$submachine" "-mcpu=$submachine"; do
1971     LIBC_TRY_CC_OPTION([$opt], [
1972       libc_cv_cc_submachine="$opt"
1973       break], [])
1974   done])
1975   if test "x$libc_cv_cc_submachine" = xno; then
1976     AC_MSG_ERROR([${CC-cc} does not support $submachine])
1977   fi
1979 AC_SUBST(libc_cv_cc_submachine)
1981 dnl Check whether we have the gd library available.
1982 AC_MSG_CHECKING(for libgd)
1983 if test "$with_gd" != "no"; then
1984   old_CFLAGS="$CFLAGS"
1985   CFLAGS="$CFLAGS $libgd_include"
1986   old_LDFLAGS="$LDFLAGS"
1987   LDFLAGS="$LDFLAGS $libgd_ldflags"
1988   old_LIBS="$LIBS"
1989   LIBS="$LIBS -lgd -lpng -lz -lm"
1990   AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1991   CFLAGS="$old_CFLAGS"
1992   LDFLAGS="$old_LDFLAGS"
1993   LIBS="$old_LIBS"
1994 else
1995   LIBGD=no
1997 AC_MSG_RESULT($LIBGD)
1998 AC_SUBST(LIBGD)
2000 # SELinux detection
2001 if test x$with_selinux = xno ; then
2002   have_selinux=no;
2003 else
2004   # See if we have the SELinux library
2005   AC_CHECK_LIB(selinux, is_selinux_enabled,
2006                have_selinux=yes, have_selinux=no)
2007   # See if we have the SELinux header with the NSCD permissions in it.
2008   if test x$have_selinux = xyes ; then
2009     AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h])
2010     AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
2011                     [#ifdef NSCD__SHMEMHOST
2012                      return 0;
2013                      #else
2014                      #error NSCD__SHMEMHOST not defined
2015                      #endif],
2016                     have_selinux=yes, have_selinux=no)
2017     AC_MSG_RESULT($have_selinux)
2018   fi
2020   if test x$with_selinux = xyes ; then
2021     if test x$have_selinux = xno ; then
2022       AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found])
2023     fi
2024   fi
2026 # Check if we're building with SELinux support.
2027 if test "x$have_selinux" = xyes; then
2028   AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
2030   # See if we have the libaudit library
2031   AC_CHECK_LIB(audit, audit_log_user_avc_message,
2032                have_libaudit=yes, have_libaudit=no)
2033   if test "x$have_libaudit" = xyes; then
2034     AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
2035   fi
2036   AC_SUBST(have_libaudit)
2038   # See if we have the libcap library
2039   AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
2040   if test "x$have_libcap" = xyes; then
2041     AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
2042   fi
2043   AC_SUBST(have_libcap)
2045 AC_SUBST(have_selinux)
2047 dnl check for the size of 'long double'.
2048 AC_CHECK_SIZEOF(long double, 0)
2049 sizeof_long_double=$ac_cv_sizeof_long_double
2050 AC_SUBST(sizeof_long_double)
2052 CPPUNDEFS=
2053 dnl Check for silly hacked compilers predefining _FORTIFY_SOURCE.
2054 dnl Since we are building the implementations of the fortified functions here,
2055 dnl having the macro defined interacts very badly.
2056 AC_CACHE_CHECK([for _FORTIFY_SOURCE predefine], libc_cv_predef_fortify_source,
2057 [AC_TRY_COMPILE([], [
2058 #ifdef _FORTIFY_SOURCE
2059 # error bogon
2060 #endif],
2061                 [libc_cv_predef_fortify_source=no],
2062                 [libc_cv_predef_fortify_source=yes])])
2063 if test $libc_cv_predef_fortify_source = yes; then
2064   CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE"
2066 AC_SUBST(CPPUNDEFS)
2068 dnl Check for silly hacked compilers inserting -fstack-protector.
2069 dnl This breaks badly for the early startup code we compile, since
2070 dnl the compiled code can refer to a magic machine-dependent location
2071 dnl for the canary value before we have sufficient setup for that to
2072 dnl work.  It's also questionable to build all of libc with this flag
2073 dnl even when you're doing that for most applications you build, since
2074 dnl libc's code is so heavily-used and performance-sensitive.  If we
2075 dnl ever really want to make that work, it should be enabled explicitly
2076 dnl in the libc build, not inherited from implicit compiler settings.
2077 AC_CACHE_CHECK([whether $CC implicitly enables -fstack-protector],
2078                libc_cv_predef_stack_protector, [
2079 AC_TRY_COMPILE([extern void foobar (char *);],
2080                [char large_array[2048]; foobar (large_array);], [
2081 libc_undefs=`$NM -u conftest.o |
2082   LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \
2083     2>&AS_MESSAGE_LOG_FD` || {
2084   AC_MSG_ERROR([confusing output from $NM -u])
2086 echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'"
2087 # On some architectures, there are architecture-specific undefined
2088 # symbols (resolved by the linker), so filter out unknown symbols.
2089 # This will fail to produce the correct result if the compiler
2090 # defaults to -fstack-protector but this produces an undefined symbol
2091 # other than __stack_chk_fail.  However, compilers like that have not
2092 # been encountered in practice.
2093 libc_undefs=`echo "$libc_undefs" | egrep '^(foobar|__stack_chk_fail)$'`
2094 case "$libc_undefs" in
2095 foobar) libc_cv_predef_stack_protector=no ;;
2096 '__stack_chk_fail
2097 foobar') libc_cv_predef_stack_protector=yes ;;
2098 *) AC_MSG_ERROR([unexpected symbols in test: $libc_undefs]) ;;
2099 esac],
2100                [AC_MSG_ERROR([test compilation failed])])
2102 libc_extra_cflags=
2103 if test $libc_cv_predef_stack_protector = yes; then
2104   libc_extra_cflags=-fno-stack-protector
2106 AC_SUBST(libc_extra_cflags)
2108 ### End of automated tests.
2109 ### Now run sysdeps configure fragments.
2111 # They also can set these variables.
2112 use_ldconfig=no
2113 ldd_rewrite_script=no
2114 libc_cv_sysconfdir=$sysconfdir
2115 libc_cv_localstatedir=$localstatedir
2116 libc_cv_gcc_unwind_find_fde=no
2117 libc_cv_idn=no
2119 # Iterate over all the sysdep directories we will use, running their
2120 # configure fragments.
2121 for dir in $sysnames; do
2122   case $dir in
2123     /*) dest=$dir ;;
2124     *)  dest=$srcdir/$dir ;;
2125   esac
2126   if test -r $dest/configure; then
2127     AC_MSG_RESULT(running configure fragment for $dir)
2128     . $dest/configure
2129   fi
2130 done
2132 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
2133   AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
2135 AC_SUBST(libc_cv_gcc_unwind_find_fde)
2137 # A sysdeps configure fragment can reset this if IFUNC is not actually
2138 # usable even though the assembler knows how to generate the symbol type.
2139 if test x"$libc_cv_ld_gnu_indirect_function" = xyes; then
2140   AC_DEFINE(HAVE_IFUNC)
2143 # This is far from the AC_ARG_ENABLE that sets it so that a sysdeps
2144 # configure fragment can override the value to prevent this AC_DEFINE.
2145 AC_SUBST(use_nscd)
2146 if test "x$use_nscd" != xno; then
2147   AC_DEFINE([USE_NSCD])
2149 if test "x$build_nscd" = xdefault; then
2150   build_nscd=$use_nscd
2153 # Test for old glibc 2.0.x headers so that they can be removed properly
2154 # Search only in includedir.
2155 AC_MSG_CHECKING(for old glibc 2.0.x headers)
2156 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
2157 then
2158   old_glibc_headers=yes
2159 else
2160   old_glibc_headers=no
2162 AC_MSG_RESULT($old_glibc_headers)
2163 if test ${old_glibc_headers} = yes; then
2164   AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
2165   AC_MSG_WARN(*** be removed.)
2167 AC_SUBST(old_glibc_headers)
2169 AC_SUBST(libc_cv_slibdir)
2170 AC_SUBST(libc_cv_localedir)
2171 AC_SUBST(libc_cv_sysconfdir)
2172 AC_SUBST(libc_cv_localstatedir)
2173 AC_SUBST(libc_cv_rootsbindir)
2174 AC_SUBST(libc_cv_forced_unwind)
2176 dnl sysdeps/CPU/configure.in checks set this via arch-specific asm tests
2177 AC_SUBST(libc_cv_cc_sse4)
2178 AC_SUBST(libc_cv_cc_avx)
2179 AC_SUBST(libc_cv_cc_sse2avx)
2180 AC_SUBST(libc_cv_cc_novzeroupper)
2181 AC_SUBST(libc_cv_cc_fma4)
2182 AC_SUBST(libc_cv_cc_nofma)
2183 AC_SUBST(libc_cv_as_i686)
2184 AC_SUBST(libc_cv_sparc_as_vis3)
2186 if test x$use_ldconfig = xyes; then
2187   AC_DEFINE(USE_LDCONFIG)
2189 AC_SUBST(use_ldconfig)
2190 AC_SUBST(ldd_rewrite_script)
2192 AC_SUBST(static)
2193 AC_SUBST(shared)
2195 AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
2196 [libc_cv_pic_default=yes
2197 cat > conftest.c <<EOF
2198 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
2199 # error PIC is default.
2200 #endif
2202 if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
2203   libc_cv_pic_default=no
2205 rm -f conftest.*])
2206 AC_SUBST(libc_cv_pic_default)
2208 AC_SUBST(profile)
2209 AC_SUBST(static_nss)
2211 AC_SUBST(DEFINES)
2213 dnl See sysdeps/mach/configure.in for this variable.
2214 AC_SUBST(mach_interface_list)
2216 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
2217 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
2218 AC_SUBST(VERSION)
2219 AC_SUBST(RELEASE)
2221 AC_CONFIG_FILES([config.make Makefile])
2222 AC_CONFIG_COMMANDS([default],[[
2223 case $CONFIG_FILES in *config.make*)
2224 echo "$config_vars" >> config.make;;
2225 esac
2226 test -d bits || mkdir bits]],[[config_vars='$config_vars']])
2227 AC_OUTPUT