Update powerpc libm-test ULPs
[glibc.git] / configure.in
bloba7f7198818cd6571e9d8cf33f7bc6755d029008a
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 LIBC_LINKER_FEATURE([-z nodelete], [-Wl,--enable-new-dtags,-z,nodelete],
1413                     [libc_cv_z_nodelete=yes],
1414                     [AC_MSG_ERROR(linker with -z nodelete support required)])
1416 LIBC_LINKER_FEATURE([-z nodlopen], [-Wl,--enable-new-dtags,-z,nodlopen],
1417                     [libc_cv_z_nodlopen=yes],
1418                     [AC_MSG_ERROR(linker with -z nodlopen support required)])
1420 LIBC_LINKER_FEATURE([-z initfirst], [-Wl,--enable-new-dtags,-z,initfirst],
1421                     [libc_cv_z_initfirst=yes],
1422                     [AC_MSG_ERROR(linker with -z initfirst support required)])
1424 # Add-on fragments can set these for other machines.
1425 libc_commonpagesize=${libc_commonpagesize:-no}
1426 libc_relro_required=${libc_relro_required:-no}
1427 case "$base_machine" in
1428   i[[34567]]86 | x86_64 | powerpc* | s390*)
1429     libc_commonpagesize=0x1000
1430     libc_relro_required=yes
1431     ;;
1432   sparc*)
1433     libc_commonpagesize=0x2000
1434     libc_relro_required=yes
1435     ;;
1436 esac
1438 if test $libc_commonpagesize != no; then
1439   AC_CACHE_CHECK(for -z relro option,
1440                  libc_cv_z_relro, [dnl
1441   libc_cv_z_relro=no
1442   AC_LANG_CONFTEST([AC_LANG_SOURCE([[
1443 int _start (void) { return 42; }
1444 extern void _exit (int);
1445 /* Since these pointers are const, they should go in rodata.
1446    Since they refer to functions that have to be resolved by
1447    dynamic linking, they should instead go in RELRO data.  */
1448 const void *const relro[] = { &_start, &_exit, 0 };
1449 /* GNU ld fails to produce RELRO data when it's very small and there is no
1450    normal writable data following it, or if only uninitialized (.bss) data
1451    follows it, or only very small writable data.  */
1452 int data[0x10000] = { 1, };
1453 ]])])
1454   cat > conftest.awk <<\EOF
1455 BEGIN {
1456   result = "no"
1457   commonpagesize = strtonum(commonpagesize)
1459 { print "LINE:", $0 > "/dev/stderr" }
1460 $1 == "GNU_RELRO" {
1461   vaddr = strtonum($3)
1462   memsz = strtonum($6)
1463   end = vaddr + memsz
1464   printf "vaddr %#x memsz %#x end %#x commonpagesize %#x\n", \
1465     vaddr, memsz, end, commonpagesize > "/dev/stderr"
1466   result = (end % commonpagesize == 0) ? "yes" : "broken"
1468 END { print result }
1470   AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1471                     -fPIC -shared -o conftest.so conftest.c
1472                     -nostartfiles -nostdlib
1473                     -Wl,-z,relro 1>&AS_MESSAGE_LOG_FD]) &&
1474   AC_TRY_COMMAND([$READELF -Wl conftest.so > conftest.ph]) &&
1475   AC_TRY_COMMAND([
1476       $AWK -v commonpagesize=$libc_commonpagesize -f conftest.awk
1477            conftest.ph > conftest.cps
1478     ]) &&
1479   libc_cv_z_relro=`cat conftest.cps 2>&AS_MESSAGE_LOG_FD`
1480   rm -f conftest*])
1481   if { test "x$libc_relro_required" = xyes &&
1482        test "x$libc_cv_z_relro" != xyes
1483      }
1484   then
1485     AC_MSG_ERROR(linker with -z relro support required)
1486   fi
1487 else
1488   AC_MSG_WARN([missing architecture parameter to check for working -z relro])
1491 AC_CACHE_CHECK(for -Bgroup option,
1492                libc_cv_Bgroup, [dnl
1493 cat > conftest.c <<EOF
1494 int _start (void) { return 42; }
1496 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1497                             -fPIC -shared -o conftest.so conftest.c
1498                             -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1499 then
1500   libc_cv_Bgroup=yes
1501 else
1502   libc_cv_Bgroup=no
1504 rm -f conftest*])
1505 AC_SUBST(libc_cv_Bgroup)
1507 ASFLAGS_config=
1508 AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1509                libc_cv_as_noexecstack, [dnl
1510 cat > conftest.c <<EOF
1511 void foo (void) { }
1513 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1514                    -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
1515    && grep .note.GNU-stack conftest.s >/dev/null \
1516    && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
1517                       -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1518 then
1519   libc_cv_as_noexecstack=yes
1520 else
1521   libc_cv_as_noexecstack=no
1523 rm -f conftest*])
1524 if test $libc_cv_as_noexecstack = yes; then
1525   ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1527 AC_SUBST(ASFLAGS_config)
1529 AC_CACHE_CHECK(for -z combreloc,
1530                libc_cv_z_combreloc, [dnl
1531 cat > conftest.c <<EOF
1532 extern int bar (int);
1533 extern int mumble;
1534 int foo (void) { return bar (mumble); }
1536 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1537                         -fPIC -shared -o conftest.so conftest.c
1538                         -nostdlib -nostartfiles
1539                         -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
1540 then
1541 dnl The following test is a bit weak.  We must use a tool which can test
1542 dnl cross-platform since the gcc used can be a cross compiler.  Without
1543 dnl introducing new options this is not easily doable.  Instead use a tool
1544 dnl which always is cross-platform: readelf.  To detect whether -z combreloc
1545 dnl look for a section named .rel.dyn.
1546   if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1547     libc_cv_z_combreloc=yes
1548   else
1549     libc_cv_z_combreloc=no
1550   fi
1551 else
1552   libc_cv_z_combreloc=no
1554 rm -f conftest*])
1555 if test "$libc_cv_z_combreloc" = yes; then
1556   AC_DEFINE(HAVE_Z_COMBRELOC)
1558 AC_SUBST(libc_cv_z_combreloc)
1560 LIBC_LINKER_FEATURE([-z execstack], [-Wl,-z,execstack],
1561                     [libc_cv_z_execstack=yes], [libc_cv_z_execstack=no])
1562 AC_SUBST(libc_cv_z_execstack)
1564 AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
1565 LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no])
1568 AC_SUBST(libc_cv_fpie)
1570 AC_CACHE_CHECK(for --hash-style option,
1571                libc_cv_hashstyle, [dnl
1572 cat > conftest.c <<EOF
1573 int _start (void) { return 42; }
1575 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1576                             -fPIC -shared -o conftest.so conftest.c
1577                             -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
1578 then
1579   libc_cv_hashstyle=yes
1580 else
1581   libc_cv_hashstyle=no
1583 rm -f conftest*])
1584 AC_SUBST(libc_cv_hashstyle)
1586 # The linker's default -shared behavior is good enough if it
1587 # does these things that our custom linker scripts ensure that
1588 # all allocated NOTE sections come first.
1589 if test "$use_default_link" = default; then
1590   AC_CACHE_CHECK([for sufficient default -shared layout],
1591                   libc_cv_use_default_link, [dnl
1592   libc_cv_use_default_link=no
1593   cat > conftest.s <<\EOF
1594           .section .note.a,"a",%note
1595           .balign 4
1596           .long 4,4,9
1597           .string "GNU"
1598           .string "foo"
1599           .section .note.b,"a",%note
1600           .balign 4
1601           .long 4,4,9
1602           .string "GNU"
1603           .string "bar"
1605   if AC_TRY_COMMAND([dnl
1606   ${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD]) &&
1607        ac_try=`$READELF -S conftest.so | sed -n \
1608          ['${x;p;}
1609           s/^ *\[ *[1-9][0-9]*\]  *\([^ ][^ ]*\)  *\([^ ][^ ]*\) .*$/\2 \1/
1610           t a
1611           b
1612           : a
1613           H']`
1614   then
1615     libc_seen_a=no libc_seen_b=no
1616     set -- $ac_try
1617     while test $# -ge 2 -a "$1" = NOTE; do
1618       case "$2" in
1619       .note.a) libc_seen_a=yes ;;
1620       .note.b) libc_seen_b=yes ;;
1621       esac
1622       shift 2
1623     done
1624     case "$libc_seen_a$libc_seen_b" in
1625     yesyes)
1626       libc_cv_use_default_link=yes
1627       ;;
1628     *)
1629       echo >&AS_MESSAGE_LOG_FD "\
1630 $libc_seen_a$libc_seen_b from:
1631 $ac_try"
1632       ;;
1633     esac
1634   fi
1635   rm -f conftest*])
1636   use_default_link=$libc_cv_use_default_link
1639 AC_CACHE_CHECK(linker output format, libc_cv_output_format, [dnl
1640 if libc_cv_output_format=`
1641 ${CC-cc} -nostartfiles -nostdlib -Wl,--print-output-format 2>&AS_MESSAGE_LOG_FD`
1642 then
1643   :
1644 else
1645   libc_cv_output_format=
1647 test -n "$libc_cv_output_format" || libc_cv_output_format=unknown])
1648 AC_SUBST(libc_cv_output_format)
1650 AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl
1651 cat > conftest.c <<EOF
1652 int foo;
1654 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-anchors
1655                             conftest.c 1>&AS_MESSAGE_LOG_FD])
1656 then
1657   libc_cv_fno_toplevel_reorder=yes
1658 else
1659   libc_cv_fno_toplevel_reorder=no
1661 rm -f conftest*])
1662 if test $libc_cv_fno_toplevel_reorder = yes; then
1663   fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
1664 else
1665   fno_unit_at_a_time=-fno-unit-at-a-time
1667 AC_SUBST(fno_unit_at_a_time)
1669 AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
1670 LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector],
1671                    [libc_cv_ssp=yes],
1672                    [libc_cv_ssp=no])
1674 AC_SUBST(libc_cv_ssp)
1676 AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl
1677 cat > conftest.c <<EOF
1678 int foo;
1679 #ifdef __GNUC_GNU_INLINE__
1680 main () { return 0;}
1681 #else
1682 #error
1683 #endif
1685 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -std=gnu99 -fgnu89-inline
1686                             -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD])
1687 then
1688   libc_cv_gnu89_inline=yes
1689 else
1690   libc_cv_gnu89_inline=no
1692 rm -f conftest*])
1693 if test $libc_cv_gnu89_inline = yes; then
1694   gnu89_inline=-fgnu89-inline
1695 else
1696   gnu89_inline=
1698 AC_SUBST(gnu89_inline)
1700 AC_CACHE_CHECK(whether cc puts quotes around section names,
1701                libc_cv_have_section_quotes,
1702                [cat > conftest.c <<EOF
1703                 static const int foo
1704                 __attribute__ ((section ("bar"))) = 1;
1706                 if ${CC-cc} -S conftest.c -o conftest.s; then
1707                   if grep '\.section.*"bar"' conftest.s >/dev/null; then
1708                     libc_cv_have_section_quotes=yes
1709                   else
1710                     libc_cv_have_section_quotes=no
1711                   fi
1712                 else
1713                   libc_cv_have_section_quotes=unknown
1714                 fi
1715                 rm -f conftest.{c,s}
1716                 ])
1717 if test $libc_cv_have_section_quotes = yes; then
1718   AC_DEFINE(HAVE_SECTION_QUOTES)
1721 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1722                [dnl
1723 cat > conftest.s <<EOF
1724 ${libc_cv_dot_text}
1725 .globl foo
1726 foo:
1727 .weak foo
1728 .weak bar; bar = foo
1730 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1731   libc_cv_asm_weak_directive=yes
1732 else
1733   libc_cv_asm_weak_directive=no
1735 rm -f conftest*])
1737 if test $libc_cv_asm_weak_directive = no; then
1738   AC_CACHE_CHECK(for assembler .weakext directive,
1739                  libc_cv_asm_weakext_directive,
1740                  [dnl
1741 cat > conftest.s <<EOF
1742 ${libc_cv_dot_text}
1743 .globl foo
1744 foo:
1745 .weakext bar foo
1746 .weakext baz
1747 .globl baz
1748 baz:
1750   if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1751     libc_cv_asm_weakext_directive=yes
1752   else
1753     libc_cv_asm_weakext_directive=no
1754   fi
1755   rm -f conftest*])
1757 fi # no .weak
1759 if test $libc_cv_asm_weak_directive = yes; then
1760   AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1761 elif test $libc_cv_asm_weakext_directive = yes; then
1762   AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1765 AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
1766 case $machine in
1767   sparc/sparc64*) cfi_offset=2047;;
1768   *) cfi_offset=0;;
1769 esac
1770 cat > conftest.s <<EOF
1771         .text
1772         .type   func,%function
1773 func:
1774         .cfi_startproc
1775         .cfi_remember_state
1776         .cfi_rel_offset 1, $cfi_offset
1777         .cfi_endproc
1779 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1780   libc_cv_asm_cfi_directives=yes
1781 else
1782   libc_cv_asm_cfi_directives=no
1784 rm -f conftest*])
1785 if test $libc_cv_asm_cfi_directives = yes; then
1786   AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
1789 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1790 cat > conftest.c <<\EOF
1791 _start () {}
1792 int __eh_pc;
1793 __throw () {}
1795 dnl No \ in command here because it ends up inside ''.
1796 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1797                             -nostdlib -nostartfiles -Wl,--no-whole-archive
1798                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1799   libc_cv_ld_no_whole_archive=yes
1800 else
1801   libc_cv_ld_no_whole_archive=no
1803 rm -f conftest*])
1804 if test $libc_cv_ld_no_whole_archive = no; then
1805   AC_MSG_ERROR([support for --no-whole-archive is needed])
1808 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1809 cat > conftest.c <<\EOF
1810 _start () {}
1811 int __eh_pc;
1812 __throw () {}
1814 dnl No \ in command here because it ends up inside ''.
1815 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1816                             -nostdlib -nostartfiles -fexceptions
1817                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1818   libc_cv_gcc_exceptions=yes
1819 else
1820   libc_cv_gcc_exceptions=no
1822 rm -f conftest*])
1823 if test $libc_cv_gcc_exceptions = yes; then
1824   exceptions=-fexceptions
1826 AC_SUBST(exceptions)dnl
1828 if test "$host_cpu" = powerpc ; then
1829 # Check for a bug present in at least versions 2.8.x of GCC
1830 # and versions 1.0.x of EGCS.
1831 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1832 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1833                libc_cv_c_asmcr0_bug='no',
1834                libc_cv_c_asmcr0_bug='yes')])
1835 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1836   AC_DEFINE(BROKEN_PPC_ASM_CR0)
1840 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1841 cat > conftest.c <<\EOF
1842 void zero (void *x)
1844   __builtin_memset (x, 0, 1000);
1848 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1849 then
1850   libc_cv_gcc_builtin_memset=no
1851 else
1852   libc_cv_gcc_builtin_memset=yes
1854 rm -f conftest* ])
1855 if test "$libc_cv_gcc_builtin_memset" = yes ; then
1856   AC_DEFINE(HAVE_BUILTIN_MEMSET)
1859 AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1860 cat > conftest.c <<\EOF
1861 extern char *strstr (const char *, const char *) __asm ("my_strstr");
1862 char *foo (const char *a, const char *b)
1864   return __builtin_strstr (a, b);
1868 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
1869 then
1870   libc_cv_gcc_builtin_redirection=yes
1871 else
1872   libc_cv_gcc_builtin_redirection=no
1874 rm -f conftest* ])
1875 if test "$libc_cv_gcc_builtin_redirection" = no; then
1876   AC_MSG_ERROR([support for the symbol redirection needed])
1879 dnl Check whether the compiler supports the __thread keyword.
1880 AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1881 [cat > conftest.c <<\EOF
1882 __thread int a = 42;
1884 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
1885   libc_cv_gcc___thread=yes
1886 else
1887   libc_cv_gcc___thread=no
1889 rm -f conftest*])
1890 if test "$libc_cv_gcc___thread" = no; then
1891   AC_MSG_ERROR([support for the __thread keyword is required])
1894 dnl Check whether the compiler supports the tls_model attribute.
1895 AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1896 cat > conftest.c <<\EOF
1897 extern __thread int a __attribute__((tls_model ("initial-exec")));
1899 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
1900   libc_cv_gcc_tls_model_attr=yes
1901 else
1902   libc_cv_gcc_tls_model_attr=no
1904 rm -f conftest*])
1905 if test "$libc_cv_gcc_tls_model_attr" = no; then
1906   AC_MSG_ERROR([support for the tls_model attribute is required])
1909 dnl Determine how to disable generation of FMA instructions.
1910 AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
1911                libc_cv_cc_nofma, [dnl
1912 libc_cv_cc_nofma=
1913 for opt in -ffp-contract=off -mno-fused-madd; do
1914   LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
1915 done])
1917 if test -n "$submachine"; then
1918   AC_CACHE_CHECK([for compiler option for CPU variant],
1919                  libc_cv_cc_submachine, [dnl
1920   libc_cv_cc_submachine=no
1921   for opt in "-march=$submachine" "-mcpu=$submachine"; do
1922     LIBC_TRY_CC_OPTION([$opt], [
1923       libc_cv_cc_submachine="$opt"
1924       break], [])
1925   done])
1926   if test "x$libc_cv_cc_submachine" = xno; then
1927     AC_MSG_ERROR([${CC-cc} does not support $submachine])
1928   fi
1930 AC_SUBST(libc_cv_cc_submachine)
1932 dnl Check whether we have the gd library available.
1933 AC_MSG_CHECKING(for libgd)
1934 if test "$with_gd" != "no"; then
1935   old_CFLAGS="$CFLAGS"
1936   CFLAGS="$CFLAGS $libgd_include"
1937   old_LDFLAGS="$LDFLAGS"
1938   LDFLAGS="$LDFLAGS $libgd_ldflags"
1939   old_LIBS="$LIBS"
1940   LIBS="$LIBS -lgd -lpng -lz -lm"
1941   AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1942   CFLAGS="$old_CFLAGS"
1943   LDFLAGS="$old_LDFLAGS"
1944   LIBS="$old_LIBS"
1945 else
1946   LIBGD=no
1948 AC_MSG_RESULT($LIBGD)
1949 AC_SUBST(LIBGD)
1951 # SELinux detection
1952 if test x$with_selinux = xno ; then
1953   have_selinux=no;
1954 else
1955   # See if we have the SELinux library
1956   AC_CHECK_LIB(selinux, is_selinux_enabled,
1957                have_selinux=yes, have_selinux=no)
1958   # See if we have the SELinux header with the NSCD permissions in it.
1959   if test x$have_selinux = xyes ; then
1960     AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h])
1961     AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
1962                     [#ifdef NSCD__SHMEMHOST
1963                      return 0;
1964                      #else
1965                      #error NSCD__SHMEMHOST not defined
1966                      #endif],
1967                     have_selinux=yes, have_selinux=no)
1968     AC_MSG_RESULT($have_selinux)
1969   fi
1971   if test x$with_selinux = xyes ; then
1972     if test x$have_selinux = xno ; then
1973       AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found])
1974     fi
1975   fi
1977 # Check if we're building with SELinux support.
1978 if test "x$have_selinux" = xyes; then
1979   AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
1981   # See if we have the libaudit library
1982   AC_CHECK_LIB(audit, audit_log_user_avc_message,
1983                have_libaudit=yes, have_libaudit=no)
1984   if test "x$have_libaudit" = xyes; then
1985     AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
1986   fi
1987   AC_SUBST(have_libaudit)
1989   # See if we have the libcap library
1990   AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
1991   if test "x$have_libcap" = xyes; then
1992     AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
1993   fi
1994   AC_SUBST(have_libcap)
1996 AC_SUBST(have_selinux)
1998 dnl check for the size of 'long double'.
1999 AC_CHECK_SIZEOF(long double, 0)
2000 sizeof_long_double=$ac_cv_sizeof_long_double
2001 AC_SUBST(sizeof_long_double)
2003 CPPUNDEFS=
2004 dnl Check for silly hacked compilers predefining _FORTIFY_SOURCE.
2005 dnl Since we are building the implementations of the fortified functions here,
2006 dnl having the macro defined interacts very badly.
2007 AC_CACHE_CHECK([for _FORTIFY_SOURCE predefine], libc_cv_predef_fortify_source,
2008 [AC_TRY_COMPILE([], [
2009 #ifdef _FORTIFY_SOURCE
2010 # error bogon
2011 #endif],
2012                 [libc_cv_predef_fortify_source=no],
2013                 [libc_cv_predef_fortify_source=yes])])
2014 if test $libc_cv_predef_fortify_source = yes; then
2015   CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE"
2017 AC_SUBST(CPPUNDEFS)
2019 dnl Check for silly hacked compilers inserting -fstack-protector.
2020 dnl This breaks badly for the early startup code we compile, since
2021 dnl the compiled code can refer to a magic machine-dependent location
2022 dnl for the canary value before we have sufficient setup for that to
2023 dnl work.  It's also questionable to build all of libc with this flag
2024 dnl even when you're doing that for most applications you build, since
2025 dnl libc's code is so heavily-used and performance-sensitive.  If we
2026 dnl ever really want to make that work, it should be enabled explicitly
2027 dnl in the libc build, not inherited from implicit compiler settings.
2028 AC_CACHE_CHECK([whether $CC implicitly enables -fstack-protector],
2029                libc_cv_predef_stack_protector, [
2030 AC_TRY_COMPILE([extern void foobar (char *);],
2031                [char large_array[2048]; foobar (large_array);], [
2032 libc_undefs=`$NM -u conftest.o |
2033   LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \
2034     2>&AS_MESSAGE_LOG_FD` || {
2035   AC_MSG_ERROR([confusing output from $NM -u])
2037 echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'"
2038 # On some architectures, there are architecture-specific undefined
2039 # symbols (resolved by the linker), so filter out unknown symbols.
2040 # This will fail to produce the correct result if the compiler
2041 # defaults to -fstack-protector but this produces an undefined symbol
2042 # other than __stack_chk_fail.  However, compilers like that have not
2043 # been encountered in practice.
2044 libc_undefs=`echo "$libc_undefs" | egrep '^(foobar|__stack_chk_fail)$'`
2045 case "$libc_undefs" in
2046 foobar) libc_cv_predef_stack_protector=no ;;
2047 '__stack_chk_fail
2048 foobar') libc_cv_predef_stack_protector=yes ;;
2049 *) AC_MSG_ERROR([unexpected symbols in test: $libc_undefs]) ;;
2050 esac],
2051                [AC_MSG_ERROR([test compilation failed])])
2053 libc_extra_cflags=
2054 if test $libc_cv_predef_stack_protector = yes; then
2055   libc_extra_cflags=-fno-stack-protector
2057 AC_SUBST(libc_extra_cflags)
2059 ### End of automated tests.
2060 ### Now run sysdeps configure fragments.
2062 # They also can set these variables.
2063 use_ldconfig=no
2064 ldd_rewrite_script=no
2065 libc_cv_sysconfdir=$sysconfdir
2066 libc_cv_localstatedir=$localstatedir
2067 libc_cv_gcc_unwind_find_fde=no
2068 libc_cv_idn=no
2070 # Iterate over all the sysdep directories we will use, running their
2071 # configure fragments.
2072 for dir in $sysnames; do
2073   case $dir in
2074     /*) dest=$dir ;;
2075     *)  dest=$srcdir/$dir ;;
2076   esac
2077   if test -r $dest/configure; then
2078     AC_MSG_RESULT(running configure fragment for $dir)
2079     . $dest/configure
2080   fi
2081 done
2083 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
2084   AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
2086 AC_SUBST(libc_cv_gcc_unwind_find_fde)
2088 # A sysdeps configure fragment can reset this if IFUNC is not actually
2089 # usable even though the assembler knows how to generate the symbol type.
2090 if test x"$libc_cv_ld_gnu_indirect_function" = xyes; then
2091   AC_DEFINE(HAVE_IFUNC)
2094 # This is far from the AC_ARG_ENABLE that sets it so that a sysdeps
2095 # configure fragment can override the value to prevent this AC_DEFINE.
2096 AC_SUBST(use_nscd)
2097 if test "x$use_nscd" != xno; then
2098   AC_DEFINE([USE_NSCD])
2100 if test "x$build_nscd" = xdefault; then
2101   build_nscd=$use_nscd
2104 # Test for old glibc 2.0.x headers so that they can be removed properly
2105 # Search only in includedir.
2106 AC_MSG_CHECKING(for old glibc 2.0.x headers)
2107 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
2108 then
2109   old_glibc_headers=yes
2110 else
2111   old_glibc_headers=no
2113 AC_MSG_RESULT($old_glibc_headers)
2114 if test ${old_glibc_headers} = yes; then
2115   AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
2116   AC_MSG_WARN(*** be removed.)
2118 AC_SUBST(old_glibc_headers)
2120 AC_SUBST(libc_cv_slibdir)
2121 AC_SUBST(libc_cv_localedir)
2122 AC_SUBST(libc_cv_sysconfdir)
2123 AC_SUBST(libc_cv_localstatedir)
2124 AC_SUBST(libc_cv_rootsbindir)
2125 AC_SUBST(libc_cv_forced_unwind)
2127 dnl sysdeps/CPU/configure.in checks set this via arch-specific asm tests
2128 AC_SUBST(libc_cv_cc_sse4)
2129 AC_SUBST(libc_cv_cc_avx)
2130 AC_SUBST(libc_cv_cc_sse2avx)
2131 AC_SUBST(libc_cv_cc_novzeroupper)
2132 AC_SUBST(libc_cv_cc_fma4)
2133 AC_SUBST(libc_cv_cc_nofma)
2134 AC_SUBST(libc_cv_as_i686)
2135 AC_SUBST(libc_cv_sparc_as_vis3)
2137 if test x$use_ldconfig = xyes; then
2138   AC_DEFINE(USE_LDCONFIG)
2140 AC_SUBST(use_ldconfig)
2141 AC_SUBST(ldd_rewrite_script)
2143 AC_SUBST(static)
2144 AC_SUBST(shared)
2146 AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
2147 [libc_cv_pic_default=yes
2148 cat > conftest.c <<EOF
2149 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
2150 # error PIC is default.
2151 #endif
2153 if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
2154   libc_cv_pic_default=no
2156 rm -f conftest.*])
2157 AC_SUBST(libc_cv_pic_default)
2159 AC_SUBST(profile)
2160 AC_SUBST(static_nss)
2162 AC_SUBST(DEFINES)
2164 dnl See sysdeps/mach/configure.in for this variable.
2165 AC_SUBST(mach_interface_list)
2167 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
2168 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
2169 AC_SUBST(VERSION)
2170 AC_SUBST(RELEASE)
2172 AC_CONFIG_FILES([config.make Makefile])
2173 AC_CONFIG_COMMANDS([default],[[
2174 case $CONFIG_FILES in *config.make*)
2175 echo "$config_vars" >> config.make;;
2176 esac
2177 test -d bits || mkdir bits]],[[config_vars='$config_vars']])
2178 AC_OUTPUT