1 dnl Process this file with autoconf to produce a configure script.
2 AC_PREREQ(2.53)dnl dnl Minimum Autoconf version required.
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 dnl This is here so we can set $subdirs directly based on configure fragments.
14 if test $host != $build; then
15 AC_CHECK_PROGS(BUILD_CC, gcc cc)
17 AC_SUBST(cross_compiling)
19 # We need the C++ compiler only for testing.
22 if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then
23 AC_MSG_ERROR([you must configure in a separate build directory])
26 # This will get text that should go into config.make.
29 # Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
31 AC_HELP_STRING([--with-gd=DIR],
32 [find libgd include dir and library with prefix DIR]),
36 *) libgd_include="-I$withval/include"
37 libgd_ldflags="-L$withval/lib" ;;
40 AC_ARG_WITH([gd-include],
41 AC_HELP_STRING([--with-gd-include=DIR],
42 [find libgd include files in DIR]),
44 case "$with_gd_include" in
46 *) libgd_include="-I$withval" ;;
50 AC_HELP_STRING([--with-gd-lib=DIR],
51 [find libgd library files in DIR]),
53 case "$with_gd_lib" in
55 *) libgd_ldflags="-L$withval" ;;
59 if test -n "$libgd_include"; then
60 config_vars="$config_vars
61 CFLAGS-memusagestat.c = $libgd_include"
63 if test -n "$libgd_ldflags"; then
64 config_vars="$config_vars
65 libgd-LDFLAGS = $libgd_ldflags"
68 dnl Arguments to specify presence of other packages/features.
70 AC_HELP_STRING([--with-fp],
71 [if using floating-point hardware @<:@default=yes@:>@]),
75 AC_ARG_WITH([binutils],
76 AC_HELP_STRING([--with-binutils=PATH],
77 [specify location of binutils (as and ld)]),
78 [path_binutils=$withval],
81 AC_HELP_STRING([--with-elf],
82 [if using the ELF object format]),
85 AC_ARG_WITH([selinux],
86 AC_HELP_STRING([--with-selinux],
87 [if building with SELinux support]),
88 [with_selinux=$withval],
91 AC_HELP_STRING([--with-xcoff],
92 [if using the XCOFF object format]),
96 AC_ARG_WITH([headers],
97 AC_HELP_STRING([--with-headers=PATH],
98 [location of system headers to use
99 (for example /usr/src/linux/include)
100 @<:@default=compiler default@:>@]),
101 [sysheaders=$withval],
104 AC_SUBST(use_default_link)
105 AC_ARG_WITH([default-link],
106 AC_HELP_STRING([--with-default-link],
107 [do not use explicit linker scripts]),
108 [use_default_link=$withval],
109 [use_default_link=default])
111 AC_ARG_ENABLE([sanity-checks],
112 AC_HELP_STRING([--disable-sanity-checks],
113 [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
114 [enable_sanity=$enableval],
117 AC_SUBST(enable_check_abi)
118 AC_ARG_ENABLE([check-abi],
119 AC_HELP_STRING([--enable-check-abi],
120 [do "make check-abi" in "make check" (no/warn/yes)
121 @<:@default=no@:>@]),
122 [enable_check_abi=$enableval],
123 [enable_check_abi=no])
125 dnl Arguments to enable or disable building the static, shared, profiled,
126 dnl and -fomit-frame-pointer libraries.
127 dnl I've disabled this for now since we cannot build glibc without static
128 dnl libraries built in the moment.
129 dnl AC_ARG_ENABLE([static],
130 dnl AC_HELP_STRING([--enable-static],
131 dnl [build static library @<:@default=yes@:>@]),
132 dnl [static=$enableval],
135 AC_ARG_ENABLE([shared],
136 AC_HELP_STRING([--enable-shared],
137 [build shared library @<:@default=yes if GNU ld & ELF@:>@]),
140 AC_ARG_ENABLE([profile],
141 AC_HELP_STRING([--enable-profile],
142 [build profiled library @<:@default=no@:>@]),
143 [profile=$enableval],
145 AC_ARG_ENABLE([omitfp],
146 AC_HELP_STRING([--enable-omitfp],
147 [build undebuggable optimized library @<:@default=no@:>@]),
150 AC_ARG_ENABLE([bounded],
151 AC_HELP_STRING([--enable-bounded],
152 [build with runtime bounds checking @<:@default=no@:>@]),
153 [bounded=$enableval],
155 AC_ARG_ENABLE([versioning],
156 AC_HELP_STRING([--disable-versioning],
157 [do not include versioning information in the library objects @<:@default=yes if supported@:>@]),
158 [enable_versioning=$enableval],
159 [enable_versioning=yes])
161 AC_ARG_ENABLE([oldest-abi],
162 AC_HELP_STRING([--enable-oldest-abi=ABI],
163 [configure the oldest ABI supported @<:@e.g. 2.2@:>@ @<:@default=glibc default@:>@]),
164 [oldest_abi=$enableval],
166 if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
169 AC_DEFINE_UNQUOTED(GLIBC_OLDEST_ABI, "$oldest_abi")
173 AC_ARG_ENABLE([stackguard-randomization],
174 AC_HELP_STRING([--enable-stackguard-randomization],
175 [initialize __stack_chk_guard canary with a random number at program start]),
176 [enable_stackguard_randomize=$enableval],
177 [enable_stackguard_randomize=no])
178 if test "$enable_stackguard_randomize" = yes; then
179 AC_DEFINE(ENABLE_STACKGUARD_RANDOMIZE)
182 dnl Generic infrastructure for drop-in additions to libc.
183 AC_ARG_ENABLE([add-ons],
184 AC_HELP_STRING([--enable-add-ons@<:@=DIRS...@:>@],
185 [configure and build add-ons in DIR1,DIR2,...
186 search for add-ons if no parameter given]),
187 , [enable_add_ons=yes])
189 AC_ARG_ENABLE([hidden-plt],
190 AC_HELP_STRING([--disable-hidden-plt],
191 [do not hide internal function calls to avoid PLT]),
194 if test "x$hidden" = xno; then
198 AC_ARG_ENABLE([bind-now],
199 AC_HELP_STRING([--enable-bind-now],
200 [disable lazy relocations in DSOs]),
201 [bindnow=$enableval],
205 dnl On some platforms we cannot use dynamic loading. We must provide
206 dnl static NSS modules.
207 AC_ARG_ENABLE([static-nss],
208 AC_HELP_STRING([--enable-static-nss],
209 [build static NSS modules @<:@default=no@:>@]),
210 [static_nss=$enableval],
212 dnl Enable static NSS also if we build no shared objects.
213 if test x"$static_nss" = xyes || test x"$shared" = xno; then
215 AC_DEFINE(DO_STATIC_NSS)
218 AC_ARG_ENABLE([force-install],
219 AC_HELP_STRING([--disable-force-install],
220 [don't force installation of files from this package, even if they are older than the installed files]),
221 [force_install=$enableval],
223 AC_SUBST(force_install)
225 dnl On some platforms we allow dropping compatibility with all kernel
227 AC_ARG_ENABLE([kernel],
228 AC_HELP_STRING([--enable-kernel=VERSION],
229 [compile for compatibility with kernel not older than VERSION]),
230 [minimum_kernel=$enableval],
232 dnl Prevent unreasonable values.
233 if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
234 # Better nothing than this.
237 if test "$minimum_kernel" = current; then
238 minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
242 dnl For the development we sometimes want gcc to issue even more warnings.
243 dnl This is not the default since many of the extra warnings are not
245 AC_ARG_ENABLE([all-warnings],
246 AC_HELP_STRING([--enable-all-warnings],
247 [enable all useful warnings gcc can issue]),
248 [all_warnings=$enableval],
250 AC_SUBST(all_warnings)
252 AC_ARG_ENABLE([multi-arch],
253 AC_HELP_STRING([--enable-multi-arch],
254 [enable single DSO with optimizations for multiple architectures]),
255 [multi_arch=$enableval],
256 [multi_arch=default])
258 AC_ARG_ENABLE([nss-crypt],
259 AC_HELP_STRING([--enable-nss-crypt],
260 [enable libcrypt to use nss]),
261 [nss_crypt=$enableval],
263 if test x$nss_crypt = xyes; then
264 nss_includes=-I$(nss-config --includedir 2>/dev/null)
265 if test $? -ne 0; then
266 AC_MSG_ERROR([cannot find include directory with nss-config])
269 CFLAGS="$CFLAGS $nss_includes"
270 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
272 #include <nsslowhash.h>
273 void f (void) { NSSLOW_Init (); }])],
274 libc_cv_nss_crypt=yes,
276 cannot find NSS headers with lowlevel hash function interfaces]))
278 LIBS="$LIBS -lfreebl3"
279 AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
281 #include <nsslowhash.h>],
283 libc_cv_nss_crypt=yes,
285 cannot link program using lowlevel NSS hash functions]))
291 AC_SUBST(libc_cv_nss_crypt)
293 # The way shlib-versions is used to generate soversions.mk uses a
294 # fairly simplistic model for name recognition that can't distinguish
295 # i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os
296 # of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
297 # tell. This doesn't get used much beyond that, so it's fairly safe.
302 host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
306 # We keep the original values in `$config_*' and never modify them, so we
307 # can write them unchanged into config.make. Everything else uses
308 # $machine, $vendor, and $os, and changes them whenever convenient.
309 config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
311 # Don't allow vendor == "unknown"
312 test "$config_vendor" = unknown && config_vendor=
313 config_os="`echo $config_os | sed 's/^unknown-//'`"
315 # Some configurations imply other options.
317 # i586-linuxaout is mangled into i586-pc-linux-gnuaout
318 linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
320 gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*)
321 # These systems (almost) always use the ELF format.
325 # These systems are always xcoff
331 # The configure fragment of an add-on port can modify these to supplement
332 # or override the table in the case statement below. No fragment should
333 # ever change the config_* variables, however.
334 machine=$config_machine
335 vendor=$config_vendor
339 # config.guess on some IBM machines says `rs6000' instead of `powerpc'.
341 if test "$machine" = rs6000; then
345 # Braindead PowerPC box with absolutely no FPU.
346 case "$machine-$host_os" in
354 AS_HELP_STRING([--with-cpu=CPU], [select code for CPU variant]),
357 yes|'') AC_MSG_ERROR([--with-cpu requires an argument]) ;;
359 *) submachine="$withval" ;;
363 # An add-on can set this when it wants to disable the sanity check below.
366 dnl Having this here, though empty, makes sure that if add-ons' fragments
367 dnl do AC_CONFIG_SUBDIRS([some-dir]), which just sets $subdirs, then
368 dnl our AC_OUTPUT will actually use it.
371 case "$enable_add_ons" in
374 add_ons=`cd $srcdir && ls -d 2> /dev/null */configure */sysdeps |
375 sed 's@/[[^/]]*$@@' | sort | uniq`
376 add_ons_automatic=yes
378 *) add_ons=`echo "$enable_add_ons" | sed 's/,/ /g'`
379 add_ons_automatic=no ;;
385 if test x"$add_ons" != x; then
386 for f in $add_ons; do
391 *** It seems that you're using an old \`crypt' add-on. crypt is now
392 *** part of glibc and using the old add-on will not work with this
393 *** release. Start again with fresh sources and without the old
394 *** \`crypt' add-on.])
398 *** It seems that you're using an old \`localedata' add-on. localedata
399 *** is now part of glibc and using the old add-on will not work with
400 *** this release. Start again with fresh sources and without the old
401 *** \`localedata' add-on.])
406 # Now source each add-on's configure fragment.
407 # The fragments can use $srcdir/$libc_add_on to find themselves,
408 # and test $add_ons_automatic to see if they were explicitly requested.
409 # A fragment can clear (or even change) $libc_add_on to affect
410 # whether it goes into the list to be actually used in the build.
412 for libc_add_on in $add_ons; do
413 # Test whether such a directory really exists.
414 # It can be absolute, or relative to $srcdir, or relative to the build dir.
415 case "$libc_add_on" in
417 libc_add_on_srcdir=$libc_add_on
420 test -d "$srcdir/$libc_add_on" || {
421 if test -d "$libc_add_on"; then
422 libc_add_on="`pwd`/$libc_add_on"
424 AC_MSG_ERROR(add-on directory \"$libc_add_on\" does not exist)
427 libc_add_on_srcdir=$srcdir/$libc_add_on
431 libc_add_on_frag=$libc_add_on_srcdir/configure
432 libc_add_on_canonical=
433 libc_add_on_config_subdirs=
434 if test -r "$libc_add_on_frag"; then
435 AC_MSG_NOTICE(running configure fragment for add-on $libc_add_on)
436 libc_add_on_canonical=unknown
438 . "$libc_add_on_frag"
439 test -z "$libc_add_on" || {
440 configured_add_ons="$configured_add_ons $libc_add_on"
441 if test "x$libc_add_on_canonical" = xunknown; then
442 AC_MSG_ERROR(fragment must set \$libc_add_on_canonical)
444 for d in $libc_add_on_subdirs; do
445 case "$libc_add_on" in
446 /*) subdir_srcdir="$libc_add_on" ;;
447 *) subdir_srcdir="\$(..)$libc_add_on" ;;
451 d="${libc_add_on_canonical:-$libc_add_on}"
457 subdir_srcdir="$subdir_srcdir/$d"
460 d=`echo "$d" | sed 's@/*$@@;s@^.*/@@'`
461 add_on_subdirs="$add_on_subdirs $d"
462 test "$subdir_srcdir" = "\$(..)$d" || config_vars="$config_vars
463 $d-srcdir = $subdir_srcdir"
465 for d in $libc_add_on_config_subdirs; do
468 fragment uses absolute path in \$libc_add_on_config_subdirs) ;;
470 if test ! -d "$libc_add_on_srcdir/$d"; then
471 AC_MSG_ERROR(fragment wants to configure missing directory $d)
473 case "$libc_add_on" in
475 relative path required for add-on using \$libc_add_on_config_subdirs) ;;
477 subdirs="$subdirs $libc_add_on/$d"
481 if test -n "$libc_add_on"; then
482 if frags=`ls -d $libc_add_on_srcdir/sysdeps/*/preconfigure 2> /dev/null`
484 AC_MSG_CHECKING(add-on $libc_add_on for preconfigure fragments)
485 for frag in $frags; do
486 name=`echo "$frag" | sed 's@/[[^/]]*$@@;s@^.*/@@'`
487 echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
492 use_add_ons="$use_add_ons $libc_add_on"
493 add_ons_pfx="$add_ons_pfx $libc_add_on/"
494 test -z "$libc_add_on_canonical" ||
495 add_ons_sfx="$add_ons_sfx /$libc_add_on_canonical"
498 # Use echo to strip excess whitespace.
499 add_ons="`echo $use_add_ons`"
502 AC_SUBST(add_on_subdirs)
506 ### I put this here to prevent those annoying emails from people who cannot
507 ### read and try to compile glibc on unsupported platforms. --drepper
509 ### By using the undocumented --enable-hacker-mode option for configure
510 ### one can skip this test to make the configuration not fail for unsupported
513 if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
514 case "$machine-$host_os" in
515 *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*)
518 echo "*** The GNU C library is currently not available for this platform."
519 echo "*** So far nobody cared to port it and if there is no volunteer it"
520 echo "*** might never happen. So, if you have interest to see glibc on"
521 echo "*** this platform visit"
522 echo "*** http://www.gnu.org/software/libc/porting.html"
523 echo "*** and join the group of porters"
529 dnl We need to use [ and ] for other purposes for a while now.
531 # Expand the configuration machine name into a subdirectory by architecture
532 # type and particular chip. If an add-on configure fragment already set
533 # base_machine, we don't change it.
534 test -n "$base_machine" || case "$machine" in
535 a29k | am29000) base_machine=a29k machine=a29k ;;
536 c3[012]) base_machine=cx0 machine=cx0/c30 ;;
537 c4[04]) base_machine=cx0 machine=cx0/c40 ;;
538 i[34567]86) base_machine=i386 machine=i386/$machine ;;
539 ia64) base_machine=ia64 machine=ia64 ;;
540 m88???) base_machine=m88k machine=m88k/$machine ;;
541 m88k) base_machine=m88k machine=m88k/m88100 ;;
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 ;;
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 ;;
557 base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v ;;
559 base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v2 ;;
561 base_machine=sparc machine=sparc/sparc64 ;;
563 base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
565 base_machine=sparc machine=sparc/sparc64/sparcv9v ;;
567 base_machine=sparc machine=sparc/sparc64/sparcv9v2 ;;
568 *) base_machine=$machine ;;
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.
578 AC_CACHE_CHECK([for assembler gnu_indirect_function symbol type support],
579 libc_cv_asm_gnu_indirect_function, [dnl
580 cat > conftest.s <<EOF
581 .type foo,%gnu_indirect_function
583 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD;
585 libc_cv_asm_gnu_indirect_function=yes
587 libc_cv_asm_gnu_indirect_function=no
591 AC_MSG_CHECKING(whether .text pseudo-op must be used)
592 AC_CACHE_VAL(libc_cv_dot_text, [dnl
593 cat > conftest.s <<EOF
597 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
598 libc_cv_dot_text=.text
601 if test -z "$libc_cv_dot_text"; then
607 AC_CACHE_CHECK(for assembler global-symbol directive,
608 libc_cv_asm_global_directive, [dnl
609 libc_cv_asm_global_directive=UNKNOWN
610 for ac_globl in .globl .global .EXPORT; do
611 cat > conftest.s <<EOF
616 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
617 libc_cv_asm_global_directive=${ac_globl}
620 test $libc_cv_asm_global_directive != UNKNOWN && break
622 if test $libc_cv_asm_global_directive = UNKNOWN; then
623 AC_MSG_ERROR(cannot determine asm global directive)
625 AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
628 AC_CACHE_CHECK(for assembler .type directive prefix,
629 libc_cv_asm_type_prefix, [dnl
630 libc_cv_asm_type_prefix=no
631 for ac_try_prefix in '@' '%' '#'; do
632 cat > conftest.s <<EOF
634 ${libc_cv_asm_global_directive} foo
635 .type foo, ${ac_try_prefix}object
640 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
641 libc_cv_asm_type_prefix=${ac_try_prefix}
644 test "x$libc_cv_asm_type_prefix" != xno && break
646 if test "x$libc_cv_asm_type_prefix" != xno; then
647 AC_DEFINE_UNQUOTED(ASM_TYPE_DIRECTIVE_PREFIX, ${libc_cv_asm_type_prefix})
650 if test x"$libc_cv_asm_gnu_indirect_function" != xyes -a x"$libc_cv_asm_type_prefix" = xno; then
651 if test x"$multi_arch" = xyes; then
652 AC_MSG_ERROR([--enable-multi-arch support requires assembler and linker support])
657 if test x"$multi_arch" != xno; then
658 multi_arch_d=/multiarch
661 # Compute the list of sysdep directories for this configuration.
662 # This can take a while to compute.
663 sysdep_dir=$srcdir/sysdeps
664 AC_MSG_CHECKING(sysdep dirs)
665 dnl We need to use [ and ] for other purposes for a while now.
667 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
668 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
670 test "x$base_os" != x || case "$os" in
673 netbsd* | 386bsd* | freebsd* | bsdi*)
674 base_os=unix/bsd/bsd4.4 ;;
675 osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
677 sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
680 base_os=unix/sysv/irix6/$os ;;
682 base_os=unix/sysv/sysv4 ;;
684 base_os=unix/sysv/hpux/$os ;;
686 base_os=unix/sysv/aix/aix4.3 ;;
688 base_os=standalone ;;
691 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
694 while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
698 o=`echo $tail | sed 's/[0-9]*$//'`
699 if test $o != $tail; then
702 # For linux-gnu, try linux-gnu, then linux.
703 o=`echo $tail | sed 's/-.*$//'`
704 if test $o != $tail; then
708 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
711 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
717 # For sparc/sparc32, try sparc/sparc32 and then sparc.
719 tail=$machine${submachine:+/$submachine}
720 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
722 # Prepend the machine's FPU directory unless --without-fp.
723 if test "$with_fp" = yes; then
726 mach="$mach /$1/nofpu"
732 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
735 # Find what sysdep directories exist.
738 for b in $base ''; do
739 for m0 in $mach ''; do
740 for v in /$vendor ''; do
741 test "$v" = / && continue
742 for o in /$ostry ''; do
743 test "$o" = / && continue
744 for m in $multi_arch_d $mach ''; do
745 for d in $add_ons_pfx ''; do
746 for a in $add_ons_sfx ''; do
747 if test -n "$m0$m0sub$b$v$o$m$msub"; then
748 try_srcdir="${srcdir}/"
752 try="${d}sysdeps$m0$m0sub$b$v$o$m$msub$a"
753 test -n "$enable_debug_configure" &&
754 echo "$0 [DEBUG]: try $try" >&2
755 if test -d "$try_srcdir$try"; then
756 sysnames="$sysnames $try"
757 { test -n "$o" || test -n "$b"; } && os_used=t
758 { test -n "$m" || test -n "$m0"; } && machine_used=t
760 x*/$submachine) submachine_used=t ;;
762 if test -n "$d"; then
763 case "$sysnames_add_ons" in
765 *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
778 # If the assembler supports gnu_indirect_function symbol type and the
779 # architecture supports multi-arch, we enable multi-arch by default.
780 case $sysnames_add_ons$sysnames in
784 test x"$multi_arch" = xdefault && multi_arch=no
787 if test x"$multi_arch" != xno; then
788 AC_DEFINE(USE_MULTIARCH)
792 if test -z "$os_used" && test "$os" != none; then
793 AC_MSG_ERROR(Operating system $os is not supported.)
795 if test -z "$machine_used" && test "$machine" != none; then
796 AC_MSG_ERROR(The $machine is not supported.)
798 if test -z "$submachine_used" && test -n "$submachine"; then
799 AC_MSG_ERROR(The $submachine subspecies of $host_cpu is not supported.)
803 # We have now validated the configuration.
806 # If using ELF, look for an `elf' subdirectory of each machine directory.
807 # We prepend these rather than inserting them whereever the machine appears
808 # because things specified by the machine's ELF ABI should override
809 # OS-specific things, and should always be the same for any OS on the
810 # machine (otherwise what's the point of an ABI?).
811 if test "$elf" = yes; then
813 for d in $add_ons_pfx ''; do
815 if test -d $srcdir/${d}sysdeps$m/elf; then
816 elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
820 sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
824 # Expand the list of system names into a full list of directories
825 # from each element's parent name and Implies file (if present).
828 while test $# -gt 0; do
832 case " $names " in *" $name "*)
833 # Already in the list.
837 # Report each name as we discover it, so there is no long pause in output.
838 echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
840 name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
844 *) xsrcdir=$srcdir/ ;;
846 test -n "$enable_debug_configure" &&
847 echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
849 if test -f $xsrcdir$name/Implies; then
850 # Collect more names from the `Implies' file (removing comments).
851 implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
853 for x in $implied_candidate; do
855 if test -d $xsrcdir$name_base/$x; then
856 implied="$implied $name_base/$x";
859 for d in $add_ons_pfx ''; do
863 *) try_srcdir=$srcdir/ ;;
865 test -n "$enable_debug_configure" &&
866 echo "[DEBUG]: $name implied $x try($d) {$try_srcdir}$try" >&2
867 if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
869 implied="$implied $try"
871 case "$sysnames_add_ons" in
873 *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
877 if test $found = no; then
878 AC_MSG_WARN($name/Implies specifies nonexistent $x)
885 # Add NAME to the list of names.
888 # Find the parent of NAME, using the empty string if it has none.
890 parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
893 # Add the names implied by NAME, and NAME's parent (if it has one), to
894 # the list of names to be processed (the argument list). We prepend the
895 # implied names to the list and append the parent. We want implied
896 # directories to come before further directories inferred from the
897 # configuration components; this ensures that for sysv4, unix/common
898 # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
900 sysnames="`echo $implied $* $parent`"
901 test -n "$sysnames" && set $sysnames
904 # Add the default directories.
905 default_sysnames=sysdeps/generic
906 if test "$elf" = yes; then
907 default_sysnames="sysdeps/generic/elf $default_sysnames"
909 sysnames="$names $default_sysnames"
911 # The other names were emitted during the scan.
912 AC_MSG_RESULT($default_sysnames)
914 # Collect the list of add-ons that supply partial sysdeps trees.
916 for add_on in $add_ons; do
919 *) xsrcdir="$srcdir/" ;;
922 test -d "$xsrcdir$add_on/sysdeps" || {
923 case "$configured_add_ons " in
926 AC_MSG_ERROR(add-on $add_on has no configure fragment or sysdeps tree)
932 sysdeps_add_ons="$sysdeps_add_ons $add_on"
933 case "$sysnames_add_ons" in
936 AC_MSG_WARN(add-on $add_on contributed no sysdeps directories)
941 for d in $sysnames; do
943 $add_on/sysdeps/*) ;;
946 (cd "$xsrcdir$d" && for f in *[[!~]]; do
950 test -d "$ff" || { test -e "$ff" && exit 88; }
954 test -d "$f" || { test -e "$f" && exit 88; }
958 if test $? -eq 88; then
963 if test $found = no; then
964 AC_MSG_WARN(add-on $add_on contributed no useful sysdeps directories)
967 AC_SUBST(sysdeps_add_ons)
973 if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
974 # The makefiles need to use a different form to find it in $srcdir.
975 INSTALL='\$(..)./scripts/install-sh -c'
980 AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
982 # Accept binutils 2.13 or newer.
983 AC_CHECK_PROG_VER(AS, $AS, --version,
984 [GNU assembler.* \([0-9]*\.[0-9.]*\)],
985 [2.1[3-9]*|2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], AS=: critic_missing="$critic_missing as")
986 AC_CHECK_PROG_VER(LD, $LD, --version,
987 [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
988 [2.1[3-9]*|2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], LD=: critic_missing="$critic_missing ld")
990 # We need the physical current working directory. We cannot use the
991 # "pwd -P" shell builtin since that's not portable. Instead we try to
992 # find a pwd binary. Note that assigning to the PWD environment
993 # variable might have some interesting side effects, so we don't do
995 AC_PATH_PROG(PWD_P, pwd, no)
996 if test "$PWD_P" = no; then
997 AC_MSG_ERROR(*** A pwd binary could not be found.)
1000 # These programs are version sensitive.
1001 AC_CHECK_TOOL_PREFIX
1002 AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
1003 [version \([egcygnustpi-]*[0-9.]*\)], [3.4* | 4.[0-9]* ],
1004 critic_missing="$critic_missing gcc")
1005 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
1006 [GNU Make[^0-9]*\([0-9][0-9.]*\)],
1007 [3.79* | 3.[89]*], critic_missing="$critic_missing make")
1009 AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
1010 [GNU gettext.* \([0-9]*\.[0-9.]*\)],
1011 [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
1012 MSGFMT=: aux_missing="$aux_missing msgfmt")
1013 AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
1014 [GNU texinfo.* \([0-9][0-9.]*\)],
1016 MAKEINFO=: aux_missing="$aux_missing makeinfo")
1017 AC_CHECK_PROG_VER(SED, sed, --version,
1018 [GNU sed version \([0-9]*\.[0-9.]*\)],
1019 [3.0[2-9]*|3.[1-9]*|[4-9]*],
1020 SED=: aux_missing="$aux_missing sed")
1022 AC_CHECK_TOOL(READELF, readelf, false)
1024 AC_CHECK_PROGS(AUTOCONF, autoconf, no)
1025 case "x$AUTOCONF" in
1026 xno|x|x:) AUTOCONF=no ;;
1029 whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
1030 if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
1031 libc_cv_autoconf_works=yes
1033 libc_cv_autoconf_works=no
1035 test $libc_cv_autoconf_works = yes || AUTOCONF=no
1038 if test "x$AUTOCONF" = xno; then
1039 aux_missing="$aux_missing autoconf"
1042 test -n "$critic_missing" && AC_MSG_ERROR([
1043 *** These critical programs are missing or too old:$critic_missing
1044 *** Check the INSTALL file for required versions.])
1046 test -n "$aux_missing" && AC_MSG_WARN([
1047 *** These auxiliary programs are missing or incompatible versions:$aux_missing
1048 *** some features will be disabled.
1049 *** Check the INSTALL file for required versions.])
1051 # if using special system headers, find out the compiler's sekrit
1052 # header directory and add that to the list. NOTE: Only does the right
1053 # thing on a system that doesn't need fixincludes. (Not presently a problem.)
1054 if test -n "$sysheaders"; then
1055 SYSINCLUDES=-nostdinc
1056 for d in include include-fixed; do
1057 i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
1058 SYSINCLUDES="$SYSINCLUDES -isystem $i"
1060 SYSINCLUDES="$SYSINCLUDES \
1061 -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
1062 if test -n "$CXX"; then
1064 cxxversion=`$CXX -dumpversion 2>&AS_MESSAGE_LOG_FD` &&
1065 cxxmachine=`$CXX -dumpmachine 2>&AS_MESSAGE_LOG_FD` &&
1066 for d in include "$cxxmachine/include"; do
1067 i=../../../../$d/c++/$cxxversion
1068 cxxheaders=`$CXX -print-file-name="$i"` &&
1069 test "x$cxxheaders" != x && test "x$i" != "x$cxxheaders" &&
1070 CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders \
1071 -isystem $cxxheaders/$cxxmachine -isystem $cxxheaders/backward"
1075 AC_SUBST(SYSINCLUDES)
1076 AC_SUBST(CXX_SYSINCLUDES)
1078 # ranlib is never necessary on Linux and Hurd systems
1081 # Test if LD_LIBRARY_PATH contains the notation for the current directory
1082 # since this would lead to problems installing/building glibc.
1083 # LD_LIBRARY_PATH contains the current directory if one of the following
1085 # - one of the terminals (":" and ";") is the first or last sign
1086 # - two terminals occur directly after each other
1087 # - the path contains an element with a dot in it
1088 AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
1090 case ${LD_LIBRARY_PATH} in
1091 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
1092 ld_library_path_setting="contains current directory"
1095 ld_library_path_setting="ok"
1099 AC_MSG_RESULT($ld_library_path_setting)
1100 if test "$ld_library_path_setting" != "ok"; then
1102 *** LD_LIBRARY_PATH shouldn't contain the current directory when
1103 *** building glibc. Please change the environment variable
1104 *** and run configure again.])
1107 AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
1108 if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
1109 libc_cv_gcc_static_libgcc=
1111 libc_cv_gcc_static_libgcc=-static-libgcc
1113 AC_SUBST(libc_cv_gcc_static_libgcc)
1115 AC_PATH_PROG(BASH_SHELL, bash, no)
1116 if test "$BASH_SHELL" != no &&
1117 $BASH_SHELL -c 'test "$BASH_VERSINFO" \
1118 && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
1119 libc_cv_have_bash2=yes
1121 libc_cv_have_bash2=no
1123 AC_SUBST(libc_cv_have_bash2)
1125 dnl We need a ksh compatible shell for tzselect.
1126 if test "$BASH_SHELL" = no; then
1127 AC_PATH_PROG(KSH, ksh, no)
1128 if test "$KSH" = no; then
1131 libc_cv_have_ksh=yes
1136 libc_cv_have_ksh=yes
1138 AC_SUBST(libc_cv_have_ksh)
1141 AC_PATH_PROG(PERL, perl, no)
1142 if test "$PERL" != no &&
1143 (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
1146 AC_PATH_PROG(INSTALL_INFO, install-info, no,
1147 $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
1148 AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
1150 AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
1151 echo '#include <stddef.h>
1152 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
1153 if eval "$ac_cpp conftest.c 2>/dev/null" \
1154 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
1155 libc_cv_signed_size_t=no
1157 libc_cv_signed_size_t=yes
1160 if test $libc_cv_signed_size_t = yes; then
1161 dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
1162 cat >> confdefs.h <<\EOF
1163 #undef __SIZE_TYPE__
1164 #define __SIZE_TYPE__ unsigned
1168 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
1170 [#define __need_size_t
1171 #define __need_wchar_t
1174 #include <stddef.h>], [size_t size; wchar_t wchar;
1176 #error stddef.h ignored __need_*
1178 if (&size == NULL || &wchar == NULL) abort ();],
1179 libc_cv_friendly_stddef=yes,
1180 libc_cv_friendly_stddef=no)])
1181 if test $libc_cv_friendly_stddef = yes; then
1182 config_vars="$config_vars
1183 override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
1186 AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
1187 libc_cv_need_minus_P, [dnl
1188 cat > conftest.S <<EOF
1189 #include "confdefs.h"
1190 /* Nothing whatsoever. */
1192 if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
1193 libc_cv_need_minus_P=no
1195 libc_cv_need_minus_P=yes
1198 if test $libc_cv_need_minus_P = yes; then
1199 config_vars="$config_vars
1200 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
1203 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
1204 cat > conftest.s <<EOF
1207 .set glibc_conftest_frobozz,foo
1208 $libc_cv_asm_global_directive glibc_conftest_frobozz
1210 # The alpha-dec-osf1 assembler gives only a warning for `.set'
1211 # (but it doesn't work), so we must do a linking check to be sure.
1212 cat > conftest1.c <<\EOF
1213 extern int glibc_conftest_frobozz;
1214 void _start() { glibc_conftest_frobozz = 1; }
1216 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1217 -nostartfiles -nostdlib \
1218 -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1219 libc_cv_asm_set_directive=yes
1221 libc_cv_asm_set_directive=no
1224 if test $libc_cv_asm_set_directive = yes; then
1225 AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
1228 AC_CACHE_CHECK(for assembler gnu_unique_object symbol type,
1229 libc_cv_asm_unique_object, [dnl
1230 cat > conftest.s <<EOF
1233 .type _sym, ${libc_cv_asm_type_prefix}gnu_unique_object
1235 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1236 libc_cv_asm_unique_object=yes
1238 libc_cv_asm_unique_object=no
1241 if test $libc_cv_asm_unique_object = yes; then
1242 AC_DEFINE(HAVE_ASM_UNIQUE_OBJECT)
1245 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
1246 [cat > conftest.s <<EOF
1249 .symver _sym,sym@VERS
1251 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1252 libc_cv_asm_symver_directive=yes
1254 libc_cv_asm_symver_directive=no
1257 AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
1258 if test $libc_cv_asm_symver_directive = yes; then
1259 cat > conftest.s <<EOF
1262 .symver _sym,sym@VERS
1264 cat > conftest.map <<EOF
1273 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1274 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
1275 -o conftest.so conftest.o
1276 -nostartfiles -nostdlib
1277 -Wl,--version-script,conftest.map
1278 1>&AS_MESSAGE_LOG_FD]);
1280 libc_cv_ld_version_script_option=yes
1282 libc_cv_ld_version_script_option=no
1285 libc_cv_ld_version_script_option=no
1288 libc_cv_ld_version_script_option=no
1291 if test $shared != no &&
1292 test $libc_cv_asm_symver_directive = yes &&
1293 test $libc_cv_ld_version_script_option = yes &&
1294 test $enable_versioning = yes; then
1296 AC_DEFINE(DO_VERSIONING)
1300 AC_SUBST(VERSIONING)
1302 if test $elf = yes && test $shared != no && test $VERSIONING = no; then
1304 *** WARNING: You should not compile GNU libc without versioning. Not using
1305 *** versioning will introduce incompatibilities so that old binaries
1306 *** will not run anymore.
1307 *** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
1309 if test $elf = yes; then
1310 AC_CACHE_CHECK(for .previous assembler directive,
1311 libc_cv_asm_previous_directive, [dnl
1312 cat > conftest.s <<EOF
1313 .section foo_section
1316 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1317 libc_cv_asm_previous_directive=yes
1319 libc_cv_asm_previous_directive=no
1322 if test $libc_cv_asm_previous_directive = yes; then
1323 AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
1325 AC_CACHE_CHECK(for .popsection assembler directive,
1326 libc_cv_asm_popsection_directive, [dnl
1327 cat > conftest.s <<EOF
1328 .pushsection foo_section
1331 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1332 libc_cv_asm_popsection_directive=yes
1334 libc_cv_asm_popsection_directive=no
1337 if test $libc_cv_asm_popsection_directive = yes; then
1338 AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
1341 AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1342 libc_cv_asm_protected_directive, [dnl
1343 cat > conftest.s <<EOF
1349 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1350 libc_cv_asm_protected_directive=yes
1352 AC_MSG_ERROR(assembler support for symbol visibility is required)
1356 if test $libc_cv_asm_protected_directive = yes; then
1357 AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
1358 libc_cv_visibility_attribute,
1359 [cat > conftest.c <<EOF
1360 int foo __attribute__ ((visibility ("hidden"))) = 1;
1361 int bar __attribute__ ((visibility ("protected"))) = 1;
1363 libc_cv_visibility_attribute=no
1364 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1365 if grep '\.hidden.*foo' conftest.s >/dev/null; then
1366 if grep '\.protected.*bar' conftest.s >/dev/null; then
1367 libc_cv_visibility_attribute=yes
1371 rm -f conftest.{c,s}
1373 if test $libc_cv_visibility_attribute != yes; then
1374 AC_MSG_ERROR(compiler support for visibility attribute is required)
1378 if test $libc_cv_visibility_attribute = yes; then
1379 AC_CACHE_CHECK(for broken __attribute__((visibility())),
1380 libc_cv_broken_visibility_attribute,
1381 [cat > conftest.c <<EOF
1383 int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1384 int bar (int x) { return x; }
1386 libc_cv_broken_visibility_attribute=yes
1387 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1389 if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
1391 libc_cv_broken_visibility_attribute=no
1394 rm -f conftest.c conftest.s
1396 if test $libc_cv_broken_visibility_attribute = yes; then
1397 AC_MSG_ERROR(working compiler support for visibility attribute is required)
1401 AC_CACHE_CHECK(for broken __attribute__((alias())),
1402 libc_cv_broken_alias_attribute,
1403 [cat > conftest.c <<EOF
1404 extern int foo (int x) __asm ("xyzzy");
1405 int bar (int x) { return x; }
1406 extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1408 extern __typeof (dfoo) dfoo __asm ("abccb");
1411 libc_cv_broken_alias_attribute=yes
1412 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1413 if grep 'xyzzy' conftest.s >/dev/null &&
1414 grep 'abccb' conftest.s >/dev/null; then
1415 libc_cv_broken_alias_attribute=no
1418 rm -f conftest.c conftest.s
1420 if test $libc_cv_broken_alias_attribute = yes; then
1421 AC_MSG_ERROR(working alias attribute support required)
1424 if test $libc_cv_visibility_attribute = yes; then
1425 AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1426 libc_cv_have_sdata_section,
1427 [echo "int i;" > conftest.c
1428 libc_cv_have_sdata_section=no
1429 if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1430 | grep '\.sdata' >/dev/null; then
1431 libc_cv_have_sdata_section=yes
1433 rm -f conftest.c conftest.so
1435 if test $libc_cv_have_sdata_section = yes; then
1436 AC_DEFINE(HAVE_SDATA_SECTION)
1440 AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1441 libc_cv_initfini_array, [dnl
1442 cat > conftest.c <<EOF
1443 int _start (void) { return 0; }
1444 int __start (void) { return 0; }
1445 int foo (void) { return 1; }
1446 int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
1448 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c
1449 -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
1451 if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
1452 libc_cv_initfini_array=yes
1454 libc_cv_initfini_array=no
1457 libc_cv_initfini_array=no
1460 if test $libc_cv_initfini_array != yes; then
1461 AC_MSG_ERROR([Need linker with .init_array/.fini_array support.])
1464 AC_CACHE_CHECK(whether to use .ctors/.dtors header and trailer,
1465 libc_cv_ctors_header, [dnl
1466 libc_cv_ctors_header=yes
1468 __attribute__ ((constructor)) void ctor (void) { puts("ctor"); }
1469 __attribute__ ((destructor)) void dtor (void) { puts("dtor"); }
1472 AS_IF([$READELF -WS conftest$ac_exeext | $AWK '
1473 { gsub(/\@<:@ */, "@<:@") }
1474 $2 == ".ctors" || $2 == ".dtors" {
1475 size = strtonum("0x" $6)
1476 align = strtonum("0x" $NF)
1478 stub@<:@$2@:>@ = size == align * 2
1481 ctors_ok = !seen@<:@".ctors"@:>@ || stub@<:@".ctors"@:>@
1482 dtors_ok = !seen@<:@".dtors"@:>@ || stub@<:@".dtors"@:>@
1483 exit ((ctors_ok && dtors_ok) ? 0 : 1)
1485 '], [libc_cv_ctors_header=no])
1487 AC_MSG_ERROR([missing __attribute__ ((constructor)) support??])
1490 if test $libc_cv_ctors_header = no; then
1491 AC_DEFINE(NO_CTORS_DTORS_SECTIONS)
1494 AC_CACHE_CHECK(for libunwind-support in compiler,
1495 libc_cv_cc_with_libunwind, [
1496 cat > conftest.c <<EOF
1497 int main (void) { return 0; }
1499 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
1500 conftest.c -v 2>&1 >/dev/null | grep -q " -lunwind "; then
1501 libc_cv_cc_with_libunwind=yes
1503 libc_cv_cc_with_libunwind=no
1506 AC_SUBST(libc_cv_cc_with_libunwind)
1507 if test $libc_cv_cc_with_libunwind = yes; then
1508 AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
1511 AC_CACHE_CHECK(for -z nodelete option,
1512 libc_cv_z_nodelete, [dnl
1513 cat > conftest.c <<EOF
1514 int _start (void) { return 42; }
1516 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1517 -fPIC -shared -o conftest.so conftest.c
1518 -nostartfiles -nostdlib
1519 -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
1521 libc_cv_z_nodelete=yes
1523 AC_MSG_ERROR(linker with -z nodelete support required)
1527 AC_CACHE_CHECK(for -z nodlopen option,
1528 libc_cv_z_nodlopen, [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 -nostartfiles -nostdlib
1535 -Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
1537 libc_cv_z_nodlopen=yes
1539 AC_MSG_ERROR(linker with -z nodlopen support required)
1543 AC_CACHE_CHECK(for -z initfirst option,
1544 libc_cv_z_initfirst, [dnl
1545 cat > conftest.c <<EOF
1546 int _start (void) { return 42; }
1548 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1549 -fPIC -shared -o conftest.so conftest.c
1550 -nostartfiles -nostdlib
1551 -Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
1553 libc_cv_z_initfirst=yes
1555 AC_MSG_ERROR(linker with -z initfirst support required)
1559 # Add-on fragments can set these for other machines.
1560 libc_commonpagesize=${libc_commonpagesize:-no}
1561 libc_relro_required=${libc_relro_required:-no}
1562 case "$base_machine" in
1563 i[[34567]]86 | x86_64 | powerpc* | s390*)
1564 libc_commonpagesize=0x1000
1565 libc_relro_required=yes
1568 libc_commonpagesize=0x2000
1569 libc_relro_required=yes
1572 libc_commonpagesize=0x4000
1575 libc_commonpagesize=0x10000
1576 libc_relro_required=yes
1580 if test $libc_commonpagesize != no; then
1581 AC_CACHE_CHECK(for -z relro option,
1582 libc_cv_z_relro, [dnl
1584 AC_LANG_CONFTEST([AC_LANG_SOURCE([[
1585 int _start (void) { return 42; }
1586 extern void _exit (int);
1587 /* Since these pointers are const, they should go in rodata.
1588 Since they refer to functions that have to be resolved by
1589 dynamic linking, they should instead go in RELRO data. */
1590 const void *const relro[] = { &_start, &_exit, 0 };
1591 /* GNU ld fails to produce RELRO data when it's very small and there is no
1592 normal writable data following it, or if only uninitialized (.bss) data
1593 follows it, or only very small writable data. */
1594 int data[0x10000] = { 1, };
1596 cat > conftest.awk <<\EOF
1599 commonpagesize = strtonum(commonpagesize)
1601 { print "LINE:", $0 > "/dev/stderr" }
1603 vaddr = strtonum($3)
1604 memsz = strtonum($6)
1606 printf "vaddr %#x memsz %#x end %#x commonpagesize %#x\n", \
1607 vaddr, memsz, end, commonpagesize > "/dev/stderr"
1608 result = (end % commonpagesize == 0) ? "yes" : "broken"
1610 END { print result }
1612 AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1613 -fPIC -shared -o conftest.so conftest.c
1614 -nostartfiles -nostdlib
1615 -Wl,-z,relro 1>&AS_MESSAGE_LOG_FD]) &&
1616 AC_TRY_COMMAND([$READELF -Wl conftest.so > conftest.ph]) &&
1618 $AWK -v commonpagesize=$libc_commonpagesize -f conftest.awk
1619 conftest.ph > conftest.cps
1621 libc_cv_z_relro=`cat conftest.cps 2>&AS_MESSAGE_LOG_FD`
1623 if { test "x$libc_relro_required" = xyes &&
1624 test "x$libc_cv_z_relro" != xyes
1627 AC_MSG_ERROR(linker with -z relro support required)
1630 AC_MSG_WARN([missing architecture parameter to check for working -z relro])
1633 AC_CACHE_CHECK(for -Bgroup option,
1634 libc_cv_Bgroup, [dnl
1635 cat > conftest.c <<EOF
1636 int _start (void) { return 42; }
1638 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1639 -fPIC -shared -o conftest.so conftest.c
1640 -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1647 AC_SUBST(libc_cv_Bgroup)
1649 AC_CACHE_CHECK(for libgcc_s suffix,
1650 libc_cv_libgcc_s_suffix, [dnl
1651 cat > conftest.c <<EOF
1652 int main (void) { return 0; }
1655 libc_cv_libgcc_s_suffix=`${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1656 -fPIC -shared -shared-libgcc -o conftest.so \
1657 conftest.c -v 2>&1 >/dev/null \
1658 | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'`
1661 AC_SUBST(libc_cv_libgcc_s_suffix)
1663 AC_CACHE_CHECK(for --as-needed option,
1664 libc_cv_as_needed, [dnl
1665 cat > conftest.c <<EOF
1666 int main (void) { return 0; }
1668 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1669 -fPIC -shared -o conftest.so conftest.c
1670 -lgcc_s$libc_cv_libgcc_s_suffix -Wl,--as-needed
1671 -nostdlib 1>&AS_MESSAGE_LOG_FD])
1673 libc_cv_as_needed=yes
1675 libc_cv_as_needed=no
1678 AC_SUBST(libc_cv_as_needed)
1681 AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1682 libc_cv_as_noexecstack, [dnl
1683 cat > conftest.c <<EOF
1686 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1687 -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
1688 && grep -q .note.GNU-stack conftest.s \
1689 && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
1690 -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1692 libc_cv_as_noexecstack=yes
1694 libc_cv_as_noexecstack=no
1697 if test $libc_cv_as_noexecstack = yes; then
1698 ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1700 AC_SUBST(ASFLAGS_config)
1702 AC_CACHE_CHECK(for -z combreloc,
1703 libc_cv_z_combreloc, [dnl
1704 cat > conftest.c <<EOF
1705 extern int bar (int);
1707 int foo (void) { return bar (mumble); }
1709 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1710 -fPIC -shared -o conftest.so conftest.c
1711 -nostdlib -nostartfiles
1712 -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
1714 dnl The following test is a bit weak. We must use a tool which can test
1715 dnl cross-platform since the gcc used can be a cross compiler. Without
1716 dnl introducing new options this is not easily doable. Instead use a tool
1717 dnl which always is cross-platform: readelf. To detect whether -z combreloc
1718 dnl look for a section named .rel.dyn.
1719 if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1720 libc_cv_z_combreloc=yes
1722 libc_cv_z_combreloc=no
1725 libc_cv_z_combreloc=no
1728 if test "$libc_cv_z_combreloc" = yes; then
1729 AC_DEFINE(HAVE_Z_COMBRELOC)
1731 AC_SUBST(libc_cv_z_combreloc)
1733 AC_CACHE_CHECK(for -z execstack,
1734 libc_cv_z_execstack, [dnl
1735 cat > conftest.c <<EOF
1736 int _start (void) { return 42; }
1738 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1739 -fPIC -shared -o conftest.so conftest.c
1740 -Wl,-z,execstack -nostdlib
1741 1>&AS_MESSAGE_LOG_FD])
1743 libc_cv_z_execstack=yes
1745 libc_cv_z_execstack=no
1748 AC_SUBST(libc_cv_z_execstack)
1750 AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
1751 cat > conftest.c <<EOF
1753 main () { return 0;}
1755 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fpie
1756 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1764 AC_SUBST(libc_cv_fpie)
1766 AC_CACHE_CHECK(for --hash-style option,
1767 libc_cv_hashstyle, [dnl
1768 cat > conftest.c <<EOF
1769 int _start (void) { return 42; }
1771 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1772 -fPIC -shared -o conftest.so conftest.c
1773 -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
1775 libc_cv_hashstyle=yes
1777 libc_cv_hashstyle=no
1780 AC_SUBST(libc_cv_hashstyle)
1782 # The linker's default -shared behavior is good enough if it
1783 # does these things that our custom linker scripts ensure that
1784 # all allocated NOTE sections come first.
1785 if test "$use_default_link" = default; then
1786 AC_CACHE_CHECK([for sufficient default -shared layout],
1787 libc_cv_use_default_link, [dnl
1788 libc_cv_use_default_link=no
1789 cat > conftest.s <<\EOF
1790 .section .note.a,"a",%note
1795 .section .note.b,"a",%note
1801 if AC_TRY_COMMAND([dnl
1802 ${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD]) &&
1803 ac_try=`$READELF -S conftest.so | sed -n \
1805 s/^ *\[ *[1-9][0-9]*\] *\([^ ][^ ]*\) *\([^ ][^ ]*\) .*$/\2 \1/
1811 libc_seen_a=no libc_seen_b=no
1813 while test $# -ge 2 -a "$1" = NOTE; do
1815 .note.a) libc_seen_a=yes ;;
1816 .note.b) libc_seen_b=yes ;;
1820 case "$libc_seen_a$libc_seen_b" in
1822 libc_cv_use_default_link=yes
1825 echo >&AS_MESSAGE_LOG_FD "\
1826 $libc_seen_a$libc_seen_b from:
1832 use_default_link=$libc_cv_use_default_link
1836 AC_CACHE_CHECK(linker output format, libc_cv_output_format, [dnl
1837 if libc_cv_output_format=`
1838 ${CC-cc} -nostartfiles -nostdlib -Wl,--print-output-format 2>&AS_MESSAGE_LOG_FD`
1842 libc_cv_output_format=
1844 test -n "$libc_cv_output_format" || libc_cv_output_format=unknown])
1845 AC_SUBST(libc_cv_output_format)
1847 AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl
1848 cat > conftest.c <<EOF
1851 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-anchors
1852 conftest.c 1>&AS_MESSAGE_LOG_FD])
1854 libc_cv_fno_toplevel_reorder=yes
1856 libc_cv_fno_toplevel_reorder=no
1859 if test $libc_cv_fno_toplevel_reorder = yes; then
1860 fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
1862 fno_unit_at_a_time=-fno-unit-at-a-time
1864 AC_SUBST(fno_unit_at_a_time)
1866 AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
1867 cat > conftest.c <<EOF
1869 main () { return 0;}
1871 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Werror -fstack-protector
1872 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1879 AC_SUBST(libc_cv_ssp)
1881 AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl
1882 cat > conftest.c <<EOF
1884 #ifdef __GNUC_GNU_INLINE__
1885 main () { return 0;}
1890 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -std=gnu99 -fgnu89-inline
1891 -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD])
1893 libc_cv_gnu89_inline=yes
1895 libc_cv_gnu89_inline=no
1898 if test $libc_cv_gnu89_inline = yes; then
1899 gnu89_inline=-fgnu89-inline
1903 AC_SUBST(gnu89_inline)
1905 if test $elf != yes; then
1906 AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
1907 [AC_TRY_COMPILE(, [asm (".section .init");
1908 asm (".section .fini");
1909 asm ("${libc_cv_dot_text}");],
1910 libc_cv_have_initfini=yes,
1911 libc_cv_have_initfini=no)])
1912 AC_SUBST(libc_cv_have_initfini)dnl
1913 if test $libc_cv_have_initfini = yes; then
1914 AC_DEFINE(HAVE_INITFINI)
1918 if test $elf = yes; then
1919 AC_CACHE_CHECK(whether cc puts quotes around section names,
1920 libc_cv_have_section_quotes,
1921 [cat > conftest.c <<EOF
1922 static const int foo
1923 __attribute__ ((section ("bar"))) = 1;
1925 if ${CC-cc} -S conftest.c -o conftest.s; then
1926 if grep '\.section.*"bar"' conftest.s >/dev/null; then
1927 libc_cv_have_section_quotes=yes
1929 libc_cv_have_section_quotes=no
1932 libc_cv_have_section_quotes=unknown
1934 rm -f conftest.{c,s}
1936 if test $libc_cv_have_section_quotes = yes; then
1937 AC_DEFINE(HAVE_SECTION_QUOTES)
1941 dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
1942 AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
1943 [cat > conftest.$ac_ext <<EOF
1944 dnl This sometimes fails to find confdefs.h, for some reason.
1945 dnl [#]line $LINENO "[$]0"
1946 [#]line $LINENO "configure"
1947 #include "confdefs.h"
1948 void underscore_test(void) {
1951 if AC_TRY_EVAL(ac_compile); then
1952 if grep _underscore_test conftest* >/dev/null; then
1953 ifelse([$1], , :, [rm -f conftest*
1956 ifelse([$2], , , [rm -f conftest*
1960 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
1961 cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
1962 ifelse([$2], , , [rm -f conftest*
1967 if test $elf = yes; then
1968 libc_cv_asm_underscores=no
1970 if test $ac_cv_prog_cc_works = yes; then
1971 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1972 [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
1973 libc_cv_asm_underscores=yes,
1974 libc_cv_asm_underscores=no)])
1976 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1977 [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
1978 libc_cv_asm_underscores=no)])
1981 if test $libc_cv_asm_underscores = no; then
1982 AC_DEFINE(NO_UNDERSCORES)
1985 if test $elf = yes; then
1986 libc_cv_weak_symbols=yes
1989 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1991 cat > conftest.s <<EOF
1993 ${libc_cv_asm_global_directive} foo
1996 .weak bar; bar = foo
1998 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1999 libc_cv_asm_weak_directive=yes
2001 libc_cv_asm_weak_directive=no
2005 if test $libc_cv_asm_weak_directive = no; then
2006 AC_CACHE_CHECK(for assembler .weakext directive,
2007 libc_cv_asm_weakext_directive,
2009 cat > conftest.s <<EOF
2011 ${libc_cv_asm_global_directive} foo
2015 ${libc_cv_asm_global_directive} baz
2018 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
2019 libc_cv_asm_weakext_directive=yes
2021 libc_cv_asm_weakext_directive=no
2027 if test $libc_cv_asm_weak_directive = yes; then
2028 AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
2029 elif test $libc_cv_asm_weakext_directive = yes; then
2030 AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
2033 AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
2035 sparc/sparc64*) cfi_offset=2047;;
2038 cat > conftest.s <<EOF
2040 .type func,%function
2044 .cfi_rel_offset 1, $cfi_offset
2047 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
2048 libc_cv_asm_cfi_directives=yes
2050 libc_cv_asm_cfi_directives=no
2053 if test $libc_cv_asm_cfi_directives = yes; then
2054 AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
2057 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
2058 cat > conftest.c <<\EOF
2063 dnl No \ in command here because it ends up inside ''.
2064 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
2065 -nostdlib -nostartfiles -Wl,--no-whole-archive
2066 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
2067 libc_cv_ld_no_whole_archive=yes
2069 libc_cv_ld_no_whole_archive=no
2072 if test $libc_cv_ld_no_whole_archive = no; then
2073 AC_MSG_ERROR([support for --no-whole-archive is needed])
2076 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
2077 cat > conftest.c <<\EOF
2082 dnl No \ in command here because it ends up inside ''.
2083 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
2084 -nostdlib -nostartfiles -fexceptions
2085 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
2086 libc_cv_gcc_exceptions=yes
2088 libc_cv_gcc_exceptions=no
2091 if test $libc_cv_gcc_exceptions = yes; then
2092 exceptions=-fexceptions
2094 AC_SUBST(exceptions)dnl
2096 if test "$host_cpu" = powerpc ; then
2097 # Check for a bug present in at least versions 2.8.x of GCC
2098 # and versions 1.0.x of EGCS.
2099 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
2100 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
2101 libc_cv_c_asmcr0_bug='no',
2102 libc_cv_c_asmcr0_bug='yes')])
2103 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
2104 AC_DEFINE(BROKEN_PPC_ASM_CR0)
2108 dnl Check whether compiler understands __builtin_expect.
2109 AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
2110 [cat > conftest.c <<EOF
2111 #line $LINENO "configure"
2114 a = __builtin_expect (a, 10);
2115 return a == 10 ? 0 : 1;
2118 dnl No \ in command here because it ends up inside ''.
2119 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
2120 -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
2121 libc_cv_gcc_builtin_expect=yes
2123 libc_cv_gcc_builtin_expect=no
2126 if test "$libc_cv_gcc_builtin_expect" = no; then
2127 AC_MSG_ERROR([support for __builtin_expect needed])
2130 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
2131 cat > conftest.c <<\EOF
2134 __builtin_memset (x, 0, 1000);
2138 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
2140 libc_cv_gcc_builtin_memset=no
2142 libc_cv_gcc_builtin_memset=yes
2145 if test "$libc_cv_gcc_builtin_memset" = yes ; then
2146 AC_DEFINE(HAVE_BUILTIN_MEMSET)
2149 AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
2150 cat > conftest.c <<\EOF
2151 extern char *strstr (const char *, const char *) __asm ("my_strstr");
2152 char *foo (const char *a, const char *b)
2154 return __builtin_strstr (a, b);
2158 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
2160 libc_cv_gcc_builtin_redirection=yes
2162 libc_cv_gcc_builtin_redirection=no
2165 if test "$libc_cv_gcc_builtin_redirection" = no; then
2166 AC_MSG_ERROR([support for the symbol redirection needed])
2169 dnl Check whether the compiler supports the __thread keyword.
2170 AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
2171 [cat > conftest.c <<\EOF
2172 __thread int a = 42;
2174 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
2175 libc_cv_gcc___thread=yes
2177 libc_cv_gcc___thread=no
2180 if test "$libc_cv_gcc___thread" = no; then
2181 AC_MSG_ERROR([support for the __thread keyword is required])
2184 dnl Check whether the compiler supports the tls_model attribute.
2185 AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
2186 cat > conftest.c <<\EOF
2187 extern __thread int a __attribute__((tls_model ("initial-exec")));
2189 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
2190 libc_cv_gcc_tls_model_attr=yes
2192 libc_cv_gcc_tls_model_attr=no
2195 if test "$libc_cv_gcc_tls_model_attr" = no; then
2196 AC_MSG_ERROR([support for the tls_model attribute is required])
2199 if test -n "$submachine"; then
2200 AC_CACHE_CHECK([for compiler option for CPU variant],
2201 libc_cv_cc_submachine, [dnl
2202 libc_cv_cc_submachine=no
2203 for opt in "-march=$submachine" "-mcpu=$submachine"; do
2204 if AC_TRY_COMMAND([${CC-cc} $opt -xc /dev/null -S -o /dev/null]); then
2205 libc_cv_cc_submachine="$opt"
2209 if test "x$libc_cv_cc_submachine" = xno; then
2210 AC_MSG_ERROR([${CC-cc} does not support $submachine])
2213 AC_SUBST(libc_cv_cc_submachine)
2215 dnl Check whether we have the gd library available.
2216 AC_MSG_CHECKING(for libgd)
2217 if test "$with_gd" != "no"; then
2218 old_CFLAGS="$CFLAGS"
2219 CFLAGS="$CFLAGS $libgd_include"
2220 old_LDFLAGS="$LDFLAGS"
2221 LDFLAGS="$LDFLAGS $libgd_ldflags"
2223 LIBS="$LIBS -lgd -lpng -lz -lm"
2224 AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
2225 CFLAGS="$old_CFLAGS"
2226 LDFLAGS="$old_LDFLAGS"
2231 AC_MSG_RESULT($LIBGD)
2235 if test x$with_selinux = xno ; then
2238 # See if we have the SELinux library
2239 AC_CHECK_LIB(selinux, is_selinux_enabled,
2240 have_selinux=yes, have_selinux=no)
2241 # See if we have the SELinux header with the NSCD permissions in it.
2242 if test x$have_selinux = xyes ; then
2243 AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h])
2244 AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
2245 [#ifdef NSCD__SHMEMHOST
2248 #error NSCD__SHMEMHOST not defined
2250 have_selinux=yes, have_selinux=no)
2251 AC_MSG_RESULT($have_selinux)
2254 if test x$with_selinux = xyes ; then
2255 if test x$have_selinux = xno ; then
2256 AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found])
2260 # Check if we're building with SELinux support.
2261 if test "x$have_selinux" = xyes; then
2262 AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
2264 # See if we have the libaudit library
2265 AC_CHECK_LIB(audit, audit_log_user_avc_message,
2266 have_libaudit=yes, have_libaudit=no)
2267 if test "x$have_libaudit" = xyes; then
2268 AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
2270 AC_SUBST(have_libaudit)
2272 # See if we have the libcap library
2273 AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
2274 if test "x$have_libcap" = xyes; then
2275 AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
2277 AC_SUBST(have_libcap)
2279 AC_SUBST(have_selinux)
2281 dnl check for the size of 'long double'.
2282 AC_CHECK_SIZEOF(long double, 0)
2283 sizeof_long_double=$ac_cv_sizeof_long_double
2284 AC_SUBST(sizeof_long_double)
2286 ### End of automated tests.
2287 ### Now run sysdeps configure fragments.
2289 # They also can set these variables.
2291 ldd_rewrite_script=no
2292 libc_cv_sysconfdir=$sysconfdir
2293 libc_cv_gcc_unwind_find_fde=no
2296 # Iterate over all the sysdep directories we will use, running their
2297 # configure fragments.
2298 for dir in $sysnames; do
2301 *) dest=$srcdir/$dir ;;
2303 if test -r $dest/configure; then
2304 AC_MSG_RESULT(running configure fragment for $dir)
2309 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
2310 AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
2312 AC_SUBST(libc_cv_gcc_unwind_find_fde)
2314 # Test for old glibc 2.0.x headers so that they can be removed properly
2315 # Search only in includedir.
2316 AC_MSG_CHECKING(for old glibc 2.0.x headers)
2317 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
2319 old_glibc_headers=yes
2321 old_glibc_headers=no
2323 AC_MSG_RESULT($old_glibc_headers)
2324 if test ${old_glibc_headers} = yes; then
2325 AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
2326 AC_MSG_WARN(*** be removed.)
2328 AC_SUBST(old_glibc_headers)
2330 AC_SUBST(libc_cv_slibdir)
2331 AC_SUBST(libc_cv_localedir)
2332 AC_SUBST(libc_cv_sysconfdir)
2333 AC_SUBST(libc_cv_rootsbindir)
2334 AC_SUBST(libc_cv_forced_unwind)
2336 dnl sysdeps/CPU/configure.in checks set this via arch-specific asm tests
2337 AC_SUBST(libc_cv_cpp_asm_debuginfo)
2338 AC_SUBST(libc_cv_cc_sse4)
2339 AC_SUBST(libc_cv_cc_avx)
2340 AC_SUBST(libc_cv_cc_novzeroupper)
2341 AC_SUBST(libc_cv_cc_fma4)
2342 AC_SUBST(libc_cv_as_i686)
2344 AC_SUBST(use_ldconfig)
2345 AC_SUBST(ldd_rewrite_script)
2347 AC_SUBST(elf) AC_SUBST(xcoff)
2348 if test $elf = yes; then
2351 if test $xcoff = yes; then
2352 AC_DEFINE(HAVE_XCOFF)
2357 if test $shared = default; then
2361 AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
2362 [libc_cv_pic_default=yes
2363 cat > conftest.c <<EOF
2364 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
2365 # error PIC is default.
2368 if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
2369 libc_cv_pic_default=no
2372 AC_SUBST(libc_cv_pic_default)
2377 AC_SUBST(static_nss)
2378 AC_SUBST(nopic_initfini)
2382 dnl See sysdeps/mach/configure.in for this variable.
2383 AC_SUBST(mach_interface_list)
2385 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
2388 config_makefile=Makefile
2391 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
2392 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
2396 AC_CONFIG_FILES([config.make ${config_makefile}])
2397 AC_CONFIG_COMMANDS([default],[[
2398 case $CONFIG_FILES in *config.make*)
2399 echo "$config_vars" >> config.make;;
2401 test -d bits || mkdir bits]],[[config_vars='$config_vars']])