1 dnl Process this file with autoconf to produce a configure script.
3 AC_PREREQ(2.53)dnl dnl Minimum Autoconf version required.
4 AC_INIT([GNU C Library], [(see version.h)], [glibc])
5 AC_CONFIG_SRCDIR([include/features.h])
6 AC_CONFIG_HEADERS([config.h])
7 AC_CONFIG_AUX_DIR([scripts])
9 dnl This is here so we can set $subdirs directly based on configure fragments.
15 if test $host != $build; then
16 AC_CHECK_PROGS(BUILD_CC, gcc cc)
18 AC_SUBST(cross_compiling)
20 # We need the C++ compiler only for testing.
23 if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then
24 AC_MSG_ERROR([you must configure in a separate build directory])
27 # This will get text that should go into config.make.
30 # Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
32 AC_HELP_STRING([--with-gd=DIR],
33 [find libgd include dir and library with prefix DIR]),
37 *) libgd_include="-I$withval/include"
38 libgd_ldflags="-L$withval/lib" ;;
41 AC_ARG_WITH([gd-include],
42 AC_HELP_STRING([--with-gd-include=DIR],
43 [find libgd include files in DIR]),
45 case "$with_gd_include" in
47 *) libgd_include="-I$withval" ;;
51 AC_HELP_STRING([--with-gd-lib=DIR],
52 [find libgd library files in DIR]),
54 case "$with_gd_lib" in
56 *) libgd_ldflags="-L$withval" ;;
60 if test -n "$libgd_include"; then
61 config_vars="$config_vars
62 CFLAGS-memusagestat.c = $libgd_include"
64 if test -n "$libgd_ldflags"; then
65 config_vars="$config_vars
66 libgd-LDFLAGS = $libgd_ldflags"
69 dnl Arguments to specify presence of other packages/features.
71 AC_HELP_STRING([--with-fp],
72 [if using floating-point hardware @<:@default=yes@:>@]),
76 AC_ARG_WITH([binutils],
77 AC_HELP_STRING([--with-binutils=PATH],
78 [specify location of binutils (as and ld)]),
79 [path_binutils=$withval],
82 AC_HELP_STRING([--with-elf],
83 [if using the ELF object format]),
86 AC_ARG_WITH([selinux],
87 AC_HELP_STRING([--with-selinux],
88 [if building with SELinux support]),
89 [with_selinux=$withval],
92 AC_HELP_STRING([--with-xcoff],
93 [if using the XCOFF object format]),
97 AC_HELP_STRING([--without-cvs],
98 [if CVS should not be used]),
101 if test "$with_cvs" = yes; then
102 if test -d $srcdir/CVS && grep :pserver: $srcdir/CVS/Root > /dev/null
109 AC_ARG_WITH([headers],
110 AC_HELP_STRING([--with-headers=PATH],
111 [location of system headers to use
112 (for example /usr/src/linux/include)
113 @<:@default=compiler default@:>@]),
114 [sysheaders=$withval],
117 AC_SUBST(use_default_link)
118 AC_ARG_WITH([default-link],
119 AC_HELP_STRING([--with-default-link],
120 [do not use explicit linker scripts
121 @<:@default=no@:>@]),
122 [use_default_link=$withval],
123 [use_default_link=no])
125 AC_ARG_ENABLE([sanity-checks],
126 AC_HELP_STRING([--disable-sanity-checks],
127 [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
128 [enable_sanity=$enableval],
131 AC_SUBST(enable_check_abi)
132 AC_ARG_ENABLE([check-abi],
133 AC_HELP_STRING([--enable-check-abi],
134 [do "make check-abi" in "make check" (no/warn/yes)
135 @<:@default=no@:>@]),
136 [enable_check_abi=$enableval],
137 [enable_check_abi=no])
139 dnl Arguments to enable or disable building the static, shared, profiled,
140 dnl and -fomit-frame-pointer libraries.
141 dnl I've disabled this for now since we cannot build glibc without static
142 dnl libraries built in the moment.
143 dnl AC_ARG_ENABLE([static],
144 dnl AC_HELP_STRING([--enable-static],
145 dnl [build static library @<:@default=yes@:>@]),
146 dnl [static=$enableval],
149 AC_ARG_ENABLE([shared],
150 AC_HELP_STRING([--enable-shared],
151 [build shared library @<:@default=yes if GNU ld & ELF@:>@]),
154 AC_ARG_ENABLE([profile],
155 AC_HELP_STRING([--enable-profile],
156 [build profiled library @<:@default=no@:>@]),
157 [profile=$enableval],
159 AC_ARG_ENABLE([omitfp],
160 AC_HELP_STRING([--enable-omitfp],
161 [build undebuggable optimized library @<:@default=no@:>@]),
164 AC_ARG_ENABLE([bounded],
165 AC_HELP_STRING([--enable-bounded],
166 [build with runtime bounds checking @<:@default=no@:>@]),
167 [bounded=$enableval],
169 AC_ARG_ENABLE([versioning],
170 AC_HELP_STRING([--disable-versioning],
171 [do not include versioning information in the library objects @<:@default=yes if supported@:>@]),
172 [enable_versioning=$enableval],
173 [enable_versioning=yes])
175 AC_ARG_ENABLE([oldest-abi],
176 AC_HELP_STRING([--enable-oldest-abi=ABI],
177 [configure the oldest ABI supported @<:@e.g. 2.2@:>@ @<:@default=glibc default@:>@]),
178 [oldest_abi=$enableval],
180 if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
183 AC_DEFINE_UNQUOTED(GLIBC_OLDEST_ABI, "$oldest_abi")
187 AC_ARG_ENABLE([stackguard-randomization],
188 AC_HELP_STRING([--enable-stackguard-randomization],
189 [initialize __stack_chk_guard canary with a random number at program start]),
190 [enable_stackguard_randomize=$enableval],
191 [enable_stackguard_randomize=no])
192 if test "$enable_stackguard_randomize" = yes; then
193 AC_DEFINE(ENABLE_STACKGUARD_RANDOMIZE)
196 dnl Generic infrastructure for drop-in additions to libc.
197 AC_ARG_ENABLE([add-ons],
198 AC_HELP_STRING([--enable-add-ons@<:@=DIRS...@:>@],
199 [configure and build add-ons in DIR1,DIR2,...
200 search for add-ons if no parameter given]),
201 , [enable_add_ons=yes])
203 dnl Let the user avoid using TLS. Don't know why but...
205 AC_HELP_STRING([--with-tls],
206 [enable support for TLS]),
210 AC_ARG_WITH([__thread],
211 AC_HELP_STRING([--without-__thread],
212 [do not use TLS features even when supporting them]),
213 [use__thread=$withval],
216 AC_ARG_ENABLE([hidden-plt],
217 AC_HELP_STRING([--disable-hidden-plt],
218 [do not hide internal function calls to avoid PLT]),
221 if test "x$hidden" = xno; then
225 AC_ARG_ENABLE([bind-now],
226 AC_HELP_STRING([--enable-bind-now],
227 [disable lazy relocations in DSOs]),
228 [bindnow=$enableval],
232 dnl On some platforms we cannot use dynamic loading. We must provide
233 dnl static NSS modules.
234 AC_ARG_ENABLE([static-nss],
235 AC_HELP_STRING([--enable-static-nss],
236 [build static NSS modules @<:@default=no@:>@]),
237 [static_nss=$enableval],
239 dnl Enable static NSS also if we build no shared objects.
240 if test x"$static_nss" = xyes || test x"$shared" = xno; then
242 AC_DEFINE(DO_STATIC_NSS)
245 AC_ARG_ENABLE([force-install],
246 AC_HELP_STRING([--disable-force-install],
247 [don't force installation of files from this package, even if they are older than the installed files]),
248 [force_install=$enableval],
250 AC_SUBST(force_install)
252 dnl On some platforms we allow dropping compatibility with all kernel
254 AC_ARG_ENABLE([kernel],
255 AC_HELP_STRING([--enable-kernel=VERSION],
256 [compile for compatibility with kernel not older than VERSION]),
257 [minimum_kernel=$enableval],
259 dnl Prevent unreasonable values.
260 if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
261 # Better nothing than this.
264 if test "$minimum_kernel" = current; then
265 minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
269 dnl For the development we sometimes want gcc to issue even more warnings.
270 dnl This is not the default since many of the extra warnings are not
272 AC_ARG_ENABLE([all-warnings],
273 AC_HELP_STRING([--enable-all-warnings],
274 [enable all useful warnings gcc can issue]),
275 [all_warnings=$enableval],
277 AC_SUBST(all_warnings)
279 AC_ARG_ENABLE([multi-arch],
280 AC_HELP_STRING([--enable-multi-arch],
281 [enable single DSO with optimizations for multiple architectures]),
282 [multi_arch=$enableval],
283 [multi_arch=default])
285 AC_ARG_ENABLE([nss-crypt],
286 AC_HELP_STRING([--enable-nss-crypt],
287 [enable libcrypt to use nss]),
288 [nss_crypt=$enableval],
290 if test x$nss_crypt = xyes; then
291 nss_includes=-I$(nss-config --includedir 2>/dev/null)
292 if test $? -ne 0; then
293 AC_MSG_ERROR([cannot find include directory with nss-config])
296 CFLAGS="$CFLAGS $nss_includes"
297 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
299 #include <nsslowhash.h>
300 void f (void) { NSSLOW_Init (); }])],
301 libc_cv_nss_crypt=yes,
303 cannot find NSS headers with lowlevel hash function interfaces]))
305 LIBS="$LIBS -lfreebl3"
306 AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
308 #include <nsslowhash.h>],
310 libc_cv_nss_crypt=yes,
312 cannot link program using lowlevel NSS hash functions]))
318 AC_SUBST(libc_cv_nss_crypt)
320 # The way shlib-versions is used to generate soversions.mk uses a
321 # fairly simplistic model for name recognition that can't distinguish
322 # i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os
323 # of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
324 # tell. This doesn't get used much beyond that, so it's fairly safe.
329 host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
333 # We keep the original values in `$config_*' and never modify them, so we
334 # can write them unchanged into config.make. Everything else uses
335 # $machine, $vendor, and $os, and changes them whenever convenient.
336 config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
338 # Don't allow vendor == "unknown"
339 test "$config_vendor" = unknown && config_vendor=
340 config_os="`echo $config_os | sed 's/^unknown-//'`"
342 # Some configurations imply other options.
344 # i586-linuxaout is mangled into i586-pc-linux-gnuaout
345 linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
347 gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*)
348 # These systems (almost) always use the ELF format.
352 # These systems are always xcoff
358 # The configure fragment of an add-on port can modify these to supplement
359 # or override the table in the case statement below. No fragment should
360 # ever change the config_* variables, however.
361 machine=$config_machine
362 vendor=$config_vendor
366 # config.guess on some IBM machines says `rs6000' instead of `powerpc'.
368 if test "$machine" = rs6000; then
372 # Braindead PowerPC box with absolutely no FPU.
373 case "$machine-$host_os" in
381 AS_HELP_STRING([--with-cpu=CPU], [select code for CPU variant]),
384 yes|'') AC_MSG_ERROR([--with-cpu requires an argument]) ;;
386 *) submachine="$withval" ;;
390 # An add-on can set this when it wants to disable the sanity check below.
393 dnl Having this here, though empty, makes sure that if add-ons' fragments
394 dnl do AC_CONFIG_SUBDIRS([some-dir]), which just sets $subdirs, then
395 dnl our AC_OUTPUT will actually use it.
398 case "$enable_add_ons" in
401 add_ons=`cd $srcdir && ls -d 2> /dev/null */configure */sysdeps |
402 sed 's@/[[^/]]*$@@' | sort | uniq`
403 add_ons_automatic=yes
405 *) add_ons=`echo "$enable_add_ons" | sed 's/,/ /g'`
406 add_ons_automatic=no ;;
412 if test x"$add_ons" != x; then
413 for f in $add_ons; do
418 *** It seems that you're using an old \`crypt' add-on. crypt is now
419 *** part of glibc and using the old add-on will not work with this
420 *** release. Start again with fresh sources and without the old
421 *** \`crypt' add-on.])
425 *** It seems that you're using an old \`localedata' add-on. localedata
426 *** is now part of glibc and using the old add-on will not work with
427 *** this release. Start again with fresh sources and without the old
428 *** \`localedata' add-on.])
433 # Now source each add-on's configure fragment.
434 # The fragments can use $srcdir/$libc_add_on to find themselves,
435 # and test $add_ons_automatic to see if they were explicitly requested.
436 # A fragment can clear (or even change) $libc_add_on to affect
437 # whether it goes into the list to be actually used in the build.
439 for libc_add_on in $add_ons; do
440 # Test whether such a directory really exists.
441 # It can be absolute, or relative to $srcdir, or relative to the build dir.
442 case "$libc_add_on" in
444 libc_add_on_srcdir=$libc_add_on
447 test -d "$srcdir/$libc_add_on" || {
448 if test -d "$libc_add_on"; then
449 libc_add_on="`pwd`/$libc_add_on"
451 AC_MSG_ERROR(add-on directory \"$libc_add_on\" does not exist)
454 libc_add_on_srcdir=$srcdir/$libc_add_on
458 libc_add_on_frag=$libc_add_on_srcdir/configure
459 libc_add_on_canonical=
460 libc_add_on_config_subdirs=
461 if test -r "$libc_add_on_frag"; then
462 AC_MSG_NOTICE(running configure fragment for add-on $libc_add_on)
463 libc_add_on_canonical=unknown
465 . "$libc_add_on_frag"
466 test -z "$libc_add_on" || {
467 configured_add_ons="$configured_add_ons $libc_add_on"
468 if test "x$libc_add_on_canonical" = xunknown; then
469 AC_MSG_ERROR(fragment must set \$libc_add_on_canonical)
471 for d in $libc_add_on_subdirs; do
472 case "$libc_add_on" in
473 /*) subdir_srcdir="$libc_add_on" ;;
474 *) subdir_srcdir="\$(..)$libc_add_on" ;;
478 d="${libc_add_on_canonical:-$libc_add_on}"
484 subdir_srcdir="$subdir_srcdir/$d"
487 d=`echo "$d" | sed 's@/*$@@;s@^.*/@@'`
488 add_on_subdirs="$add_on_subdirs $d"
489 test "$subdir_srcdir" = "\$(..)$d" || config_vars="$config_vars
490 $d-srcdir = $subdir_srcdir"
492 for d in $libc_add_on_config_subdirs; do
495 fragment uses absolute path in \$libc_add_on_config_subdirs) ;;
497 if test ! -d "$libc_add_on_srcdir/$d"; then
498 AC_MSG_ERROR(fragment wants to configure missing directory $d)
500 case "$libc_add_on" in
502 relative path required for add-on using \$libc_add_on_config_subdirs) ;;
504 subdirs="$subdirs $libc_add_on/$d"
508 if test -n "$libc_add_on"; then
509 if frags=`ls -d $libc_add_on_srcdir/sysdeps/*/preconfigure 2> /dev/null`
511 AC_MSG_CHECKING(add-on $libc_add_on for preconfigure fragments)
512 for frag in $frags; do
513 name=`echo "$frag" | sed 's@/[[^/]]*$@@;s@^.*/@@'`
514 echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
519 use_add_ons="$use_add_ons $libc_add_on"
520 add_ons_pfx="$add_ons_pfx $libc_add_on/"
521 test -z "$libc_add_on_canonical" ||
522 add_ons_sfx="$add_ons_sfx /$libc_add_on_canonical"
525 # Use echo to strip excess whitespace.
526 add_ons="`echo $use_add_ons`"
529 AC_SUBST(add_on_subdirs)
533 ### I put this here to prevent those annoying emails from people who cannot
534 ### read and try to compile glibc on unsupported platforms. --drepper
536 ### By using the undocumented --enable-hacker-mode option for configure
537 ### one can skip this test to make the configuration not fail for unsupported
540 if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
541 case "$machine-$host_os" in
542 *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*)
545 echo "*** The GNU C library is currently not available for this platform."
546 echo "*** So far nobody cared to port it and if there is no volunteer it"
547 echo "*** might never happen. So, if you have interest to see glibc on"
548 echo "*** this platform visit"
549 echo "*** http://www.gnu.org/software/libc/porting.html"
550 echo "*** and join the group of porters"
556 dnl We need to use [ and ] for other purposes for a while now.
558 # Expand the configuration machine name into a subdirectory by architecture
559 # type and particular chip. If an add-on configure fragment already set
560 # base_machine, we don't change it.
561 test -n "$base_machine" || case "$machine" in
562 a29k | am29000) base_machine=a29k machine=a29k ;;
563 c3[012]) base_machine=cx0 machine=cx0/c30 ;;
564 c4[04]) base_machine=cx0 machine=cx0/c40 ;;
565 i[34567]86) base_machine=i386 machine=i386/$machine ;;
566 ia64) base_machine=ia64 machine=ia64 ;;
567 m88???) base_machine=m88k machine=m88k/$machine ;;
568 m88k) base_machine=m88k machine=m88k/m88100 ;;
569 powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;;
570 powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;;
571 s390) base_machine=s390 machine=s390/s390-32 ;;
572 s390x) base_machine=s390 machine=s390/s390-64 ;;
573 sh3*) base_machine=sh machine=sh/sh3 ;;
574 sh4*) base_machine=sh machine=sh/sh4 ;;
576 base_machine=sparc machine=sparc/sparc32 ;;
577 sparcv8 | supersparc | hypersparc)
578 base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
579 sparcv8plus | sparcv8plusa | sparcv9)
580 base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
581 sparcv8plusb | sparcv9b)
582 base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9b ;;
584 base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v ;;
586 base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v2 ;;
588 base_machine=sparc machine=sparc/sparc64 ;;
590 base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
592 base_machine=sparc machine=sparc/sparc64/sparcv9v ;;
594 base_machine=sparc machine=sparc/sparc64/sparcv9v2 ;;
595 *) base_machine=$machine ;;
598 AC_SUBST(base_machine)
600 if test "$base_machine" = "i386"; then
601 AC_DEFINE(USE_REGPARMS)
604 # For the multi-arch option we need support in the assembler.
605 AC_CACHE_CHECK([for assembler gnu_indirect_function symbol type support],
606 libc_cv_asm_gnu_indirect_function, [dnl
607 cat > conftest.s <<EOF
608 .type foo,%gnu_indirect_function
610 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD;
612 libc_cv_asm_gnu_indirect_function=yes
614 libc_cv_asm_gnu_indirect_function=no
618 AC_MSG_CHECKING(whether .text pseudo-op must be used)
619 AC_CACHE_VAL(libc_cv_dot_text, [dnl
620 cat > conftest.s <<EOF
624 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
625 libc_cv_dot_text=.text
628 if test -z "$libc_cv_dot_text"; then
634 AC_CACHE_CHECK(for assembler global-symbol directive,
635 libc_cv_asm_global_directive, [dnl
636 libc_cv_asm_global_directive=UNKNOWN
637 for ac_globl in .globl .global .EXPORT; do
638 cat > conftest.s <<EOF
643 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
644 libc_cv_asm_global_directive=${ac_globl}
647 test $libc_cv_asm_global_directive != UNKNOWN && break
649 if test $libc_cv_asm_global_directive = UNKNOWN; then
650 AC_MSG_ERROR(cannot determine asm global directive)
652 AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
655 AC_CACHE_CHECK(for assembler .type directive prefix,
656 libc_cv_asm_type_prefix, [dnl
657 libc_cv_asm_type_prefix=no
658 for ac_try_prefix in '@' '%' '#'; do
659 cat > conftest.s <<EOF
661 ${libc_cv_asm_global_directive} foo
662 .type foo, ${ac_try_prefix}object
667 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
668 libc_cv_asm_type_prefix=${ac_try_prefix}
671 test "x$libc_cv_asm_type_prefix" != xno && break
673 if test "x$libc_cv_asm_type_prefix" != xno; then
674 AC_DEFINE_UNQUOTED(ASM_TYPE_DIRECTIVE_PREFIX, ${libc_cv_asm_type_prefix})
677 if test x"$libc_cv_asm_gnu_indirect_function" != xyes -a x"$libc_cv_asm_type_prefix" = xno; then
678 if test x"$multi_arch" = xyes; then
679 AC_MSG_ERROR([--enable-multi-arch support requires assembler and linker support])
684 if test x"$multi_arch" != xno; then
685 multi_arch_d=/multiarch
688 # Compute the list of sysdep directories for this configuration.
689 # This can take a while to compute.
690 sysdep_dir=$srcdir/sysdeps
691 AC_MSG_CHECKING(sysdep dirs)
692 dnl We need to use [ and ] for other purposes for a while now.
694 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
695 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
697 test "x$base_os" != x || case "$os" in
700 netbsd* | 386bsd* | freebsd* | bsdi*)
701 base_os=unix/bsd/bsd4.4 ;;
702 osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
704 sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
707 base_os=unix/sysv/irix6/$os ;;
709 base_os=unix/sysv/sysv4 ;;
711 base_os=unix/sysv/hpux/$os ;;
713 base_os=unix/sysv/aix/aix4.3 ;;
715 base_os=standalone ;;
718 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
721 while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
725 o=`echo $tail | sed 's/[0-9]*$//'`
726 if test $o != $tail; then
729 # For linux-gnu, try linux-gnu, then linux.
730 o=`echo $tail | sed 's/-.*$//'`
731 if test $o != $tail; then
735 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
738 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
744 # For sparc/sparc32, try sparc/sparc32 and then sparc.
746 tail=$machine${submachine:+/$submachine}
747 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
749 # Prepend the machine's FPU directory unless --without-fp.
750 if test "$with_fp" = yes; then
753 mach="$mach /$1/nofpu"
759 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
762 # Find what sysdep directories exist.
765 for b in $base ''; do
766 for m0 in $mach ''; do
767 for v in /$vendor ''; do
768 test "$v" = / && continue
769 for o in /$ostry ''; do
770 test "$o" = / && continue
771 for m in $multi_arch_d $mach ''; do
772 for d in $add_ons_pfx ''; do
773 for a in $add_ons_sfx ''; do
774 if test -n "$m0$m0sub$b$v$o$m$msub"; then
775 try_srcdir="${srcdir}/"
779 try="${d}sysdeps$m0$m0sub$b$v$o$m$msub$a"
780 test -n "$enable_debug_configure" &&
781 echo "$0 [DEBUG]: try $try" >&2
782 if test -d "$try_srcdir$try"; then
783 sysnames="$sysnames $try"
784 { test -n "$o" || test -n "$b"; } && os_used=t
785 { test -n "$m" || test -n "$m0"; } && machine_used=t
787 x*/$submachine) submachine_used=t ;;
789 if test -n "$d"; then
790 case "$sysnames_add_ons" in
792 *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
805 # If the assembler supports gnu_indirect_function symbol type and the
806 # architecture supports multi-arch, we enable multi-arch by default.
807 case $sysnames_add_ons$sysnames in
811 test x"$multi_arch" = xdefault && multi_arch=no
814 if test x"$multi_arch" != xno; then
815 AC_DEFINE(USE_MULTIARCH)
819 if test -z "$os_used" && test "$os" != none; then
820 AC_MSG_ERROR(Operating system $os is not supported.)
822 if test -z "$machine_used" && test "$machine" != none; then
823 AC_MSG_ERROR(The $machine is not supported.)
825 if test -z "$submachine_used" && test -n "$submachine"; then
826 AC_MSG_ERROR(The $submachine subspecies of $host_cpu is not supported.)
830 # We have now validated the configuration.
833 # If using ELF, look for an `elf' subdirectory of each machine directory.
834 # We prepend these rather than inserting them whereever the machine appears
835 # because things specified by the machine's ELF ABI should override
836 # OS-specific things, and should always be the same for any OS on the
837 # machine (otherwise what's the point of an ABI?).
838 if test "$elf" = yes; then
840 for d in $add_ons_pfx ''; do
842 if test -d $srcdir/${d}sysdeps$m/elf; then
843 elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
847 sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
851 # Expand the list of system names into a full list of directories
852 # from each element's parent name and Implies file (if present).
855 while test $# -gt 0; do
859 case " $names " in *" $name "*)
860 # Already in the list.
864 # Report each name as we discover it, so there is no long pause in output.
865 echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
867 name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
871 *) xsrcdir=$srcdir/ ;;
873 test -n "$enable_debug_configure" &&
874 echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
876 if test -f $xsrcdir$name/Implies; then
877 # Collect more names from the `Implies' file (removing comments).
878 implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
880 for x in $implied_candidate; do
882 if test -d $xsrcdir$name_base/$x; then
883 implied="$implied $name_base/$x";
886 for d in $add_ons_pfx ''; do
890 *) try_srcdir=$srcdir/ ;;
892 test -n "$enable_debug_configure" &&
893 echo "[DEBUG]: $name implied $x try($d) {$try_srcdir}$try" >&2
894 if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
896 implied="$implied $try"
898 case "$sysnames_add_ons" in
900 *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
904 if test $found = no; then
905 AC_MSG_WARN($name/Implies specifies nonexistent $x)
912 # Add NAME to the list of names.
915 # Find the parent of NAME, using the empty string if it has none.
917 parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
920 # Add the names implied by NAME, and NAME's parent (if it has one), to
921 # the list of names to be processed (the argument list). We prepend the
922 # implied names to the list and append the parent. We want implied
923 # directories to come before further directories inferred from the
924 # configuration components; this ensures that for sysv4, unix/common
925 # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
927 sysnames="`echo $implied $* $parent`"
928 test -n "$sysnames" && set $sysnames
931 # Add the default directories.
932 default_sysnames=sysdeps/generic
933 if test "$elf" = yes; then
934 default_sysnames="sysdeps/generic/elf $default_sysnames"
936 sysnames="$names $default_sysnames"
938 # The other names were emitted during the scan.
939 AC_MSG_RESULT($default_sysnames)
941 # Collect the list of add-ons that supply partial sysdeps trees.
943 for add_on in $add_ons; do
946 *) xsrcdir="$srcdir/" ;;
949 test -d "$xsrcdir$add_on/sysdeps" || {
950 case "$configured_add_ons " in
953 AC_MSG_ERROR(add-on $add_on has no configure fragment or sysdeps tree)
959 sysdeps_add_ons="$sysdeps_add_ons $add_on"
960 case "$sysnames_add_ons" in
963 AC_MSG_WARN(add-on $add_on contributed no sysdeps directories)
968 for d in $sysnames; do
970 $add_on/sysdeps/*) ;;
973 (cd "$xsrcdir$d" && for f in *[[!~]]; do
977 test -d "$ff" || { test -e "$ff" && exit 88; }
981 test -d "$f" || { test -e "$f" && exit 88; }
985 if test $? -eq 88; then
990 if test $found = no; then
991 AC_MSG_WARN(add-on $add_on contributed no useful sysdeps directories)
994 AC_SUBST(sysdeps_add_ons)
1000 if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
1001 # The makefiles need to use a different form to find it in $srcdir.
1002 INSTALL='\$(..)./scripts/install-sh -c'
1007 AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
1009 # Accept binutils 2.13 or newer.
1010 AC_CHECK_PROG_VER(AS, $AS, --version,
1011 [GNU assembler.* \([0-9]*\.[0-9.]*\)],
1012 [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")
1013 AC_CHECK_PROG_VER(LD, $LD, --version,
1014 [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
1015 [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")
1017 # We need the physical current working directory. We cannot use the
1018 # "pwd -P" shell builtin since that's not portable. Instead we try to
1019 # find a pwd binary. Note that assigning to the PWD environment
1020 # variable might have some interesting side effects, so we don't do
1022 AC_PATH_PROG(PWD_P, pwd, no)
1023 if test "$PWD_P" = no; then
1024 AC_MSG_ERROR(*** A pwd binary could not be found.)
1027 # These programs are version sensitive.
1028 AC_CHECK_TOOL_PREFIX
1029 AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
1030 [version \([egcygnustpi-]*[0-9.]*\)], [3.4* | 4.[0-9]* ],
1031 critic_missing="$critic_missing gcc")
1032 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
1033 [GNU Make[^0-9]*\([0-9][0-9.]*\)],
1034 [3.79* | 3.[89]*], critic_missing="$critic_missing make")
1036 AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
1037 [GNU gettext.* \([0-9]*\.[0-9.]*\)],
1038 [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
1039 MSGFMT=: aux_missing="$aux_missing msgfmt")
1040 AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
1041 [GNU texinfo.* \([0-9][0-9.]*\)],
1043 MAKEINFO=: aux_missing="$aux_missing makeinfo")
1044 AC_CHECK_PROG_VER(SED, sed, --version,
1045 [GNU sed version \([0-9]*\.[0-9.]*\)],
1046 [3.0[2-9]*|3.[1-9]*|[4-9]*],
1047 SED=: aux_missing="$aux_missing sed")
1049 AC_CHECK_TOOL(READELF, readelf, false)
1051 AC_CHECK_PROGS(AUTOCONF, autoconf, no)
1052 case "x$AUTOCONF" in
1053 xno|x|x:) AUTOCONF=no ;;
1056 whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
1057 if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
1058 libc_cv_autoconf_works=yes
1060 libc_cv_autoconf_works=no
1062 test $libc_cv_autoconf_works = yes || AUTOCONF=no
1065 if test "x$with_cvs" = xyes && test "x$AUTOCONF" = xno; then
1066 # If --without-cvs they probably won't change configure.in, so no complaints.
1067 aux_missing="$aux_missing autoconf"
1070 test -n "$critic_missing" && AC_MSG_ERROR([
1071 *** These critical programs are missing or too old:$critic_missing
1072 *** Check the INSTALL file for required versions.])
1074 test -n "$aux_missing" && AC_MSG_WARN([
1075 *** These auxiliary programs are missing or incompatible versions:$aux_missing
1076 *** some features will be disabled.
1077 *** Check the INSTALL file for required versions.])
1079 # if using special system headers, find out the compiler's sekrit
1080 # header directory and add that to the list. NOTE: Only does the right
1081 # thing on a system that doesn't need fixincludes. (Not presently a problem.)
1082 if test -n "$sysheaders"; then
1083 SYSINCLUDES=-nostdinc
1084 for d in include include-fixed; do
1085 i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
1086 SYSINCLUDES="$SYSINCLUDES -isystem $i"
1088 SYSINCLUDES="$SYSINCLUDES \
1089 -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
1090 if test -n "$CXX"; then
1091 cxxversion=`$CXX -dumpversion 2>&AS_MESSAGE_LOG_FD` &&
1092 cxxmachine=`$CXX -dumpmachine 2>&AS_MESSAGE_LOG_FD` &&
1093 cxxheaders=`$CXX -print-file-name=../../../../include/c++/`"$cxxversion" &&
1094 CXX_SYSINCLUDES="-isystem $cxxheaders \
1095 -isystem $cxxheaders/$cxxmachine -isystem $cxxheaders/backward"
1098 AC_SUBST(SYSINCLUDES)
1099 AC_SUBST(CXX_SYSINCLUDES)
1101 # ranlib is never necessary on Linux and Hurd systems
1104 # Test if LD_LIBRARY_PATH contains the notation for the current directory
1105 # since this would lead to problems installing/building glibc.
1106 # LD_LIBRARY_PATH contains the current directory if one of the following
1108 # - one of the terminals (":" and ";") is the first or last sign
1109 # - two terminals occur directly after each other
1110 # - the path contains an element with a dot in it
1111 AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
1113 case ${LD_LIBRARY_PATH} in
1114 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
1115 ld_library_path_setting="contains current directory"
1118 ld_library_path_setting="ok"
1122 AC_MSG_RESULT($ld_library_path_setting)
1123 if test "$ld_library_path_setting" != "ok"; then
1125 *** LD_LIBRARY_PATH shouldn't contain the current directory when
1126 *** building glibc. Please change the environment variable
1127 *** and run configure again.])
1130 AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
1131 if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
1132 libc_cv_gcc_static_libgcc=
1134 libc_cv_gcc_static_libgcc=-static-libgcc
1136 AC_SUBST(libc_cv_gcc_static_libgcc)
1138 AC_PATH_PROG(BASH_SHELL, bash, no)
1139 if test "$BASH_SHELL" != no &&
1140 $BASH_SHELL -c 'test "$BASH_VERSINFO" \
1141 && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
1142 libc_cv_have_bash2=yes
1144 libc_cv_have_bash2=no
1146 AC_SUBST(libc_cv_have_bash2)
1148 dnl We need a ksh compatible shell for tzselect.
1149 if test "$BASH_SHELL" = no; then
1150 AC_PATH_PROG(KSH, ksh, no)
1151 if test "$KSH" = no; then
1154 libc_cv_have_ksh=yes
1159 libc_cv_have_ksh=yes
1161 AC_SUBST(libc_cv_have_ksh)
1164 AC_PATH_PROG(PERL, perl, no)
1165 if test "$PERL" != no &&
1166 (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
1169 AC_PATH_PROG(INSTALL_INFO, install-info, no,
1170 $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
1171 AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
1173 AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
1174 echo '#include <stddef.h>
1175 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
1176 if eval "$ac_cpp conftest.c 2>/dev/null" \
1177 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
1178 libc_cv_signed_size_t=no
1180 libc_cv_signed_size_t=yes
1183 if test $libc_cv_signed_size_t = yes; then
1184 dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
1185 cat >> confdefs.h <<\EOF
1186 #undef __SIZE_TYPE__
1187 #define __SIZE_TYPE__ unsigned
1191 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
1193 [#define __need_size_t
1194 #define __need_wchar_t
1197 #include <stddef.h>], [size_t size; wchar_t wchar;
1199 #error stddef.h ignored __need_*
1201 if (&size == NULL || &wchar == NULL) abort ();],
1202 libc_cv_friendly_stddef=yes,
1203 libc_cv_friendly_stddef=no)])
1204 if test $libc_cv_friendly_stddef = yes; then
1205 config_vars="$config_vars
1206 override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
1209 AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
1210 libc_cv_need_minus_P, [dnl
1211 cat > conftest.S <<EOF
1212 #include "confdefs.h"
1213 /* Nothing whatsoever. */
1215 if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
1216 libc_cv_need_minus_P=no
1218 libc_cv_need_minus_P=yes
1221 if test $libc_cv_need_minus_P = yes; then
1222 config_vars="$config_vars
1223 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
1226 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
1227 cat > conftest.s <<EOF
1230 .set glibc_conftest_frobozz,foo
1231 $libc_cv_asm_global_directive glibc_conftest_frobozz
1233 # The alpha-dec-osf1 assembler gives only a warning for `.set'
1234 # (but it doesn't work), so we must do a linking check to be sure.
1235 cat > conftest1.c <<\EOF
1236 extern int glibc_conftest_frobozz;
1237 void _start() { glibc_conftest_frobozz = 1; }
1239 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1240 -nostartfiles -nostdlib \
1241 -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1242 libc_cv_asm_set_directive=yes
1244 libc_cv_asm_set_directive=no
1247 if test $libc_cv_asm_set_directive = yes; then
1248 AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
1251 AC_CACHE_CHECK(for assembler gnu_unique_object symbol type,
1252 libc_cv_asm_unique_object, [dnl
1253 cat > conftest.s <<EOF
1256 .type _sym, ${libc_cv_asm_type_prefix}gnu_unique_object
1258 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1259 libc_cv_asm_unique_object=yes
1261 libc_cv_asm_unique_object=no
1264 if test $libc_cv_asm_unique_object = yes; then
1265 AC_DEFINE(HAVE_ASM_UNIQUE_OBJECT)
1268 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
1269 [cat > conftest.s <<EOF
1272 .symver _sym,sym@VERS
1274 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1275 libc_cv_asm_symver_directive=yes
1277 libc_cv_asm_symver_directive=no
1280 AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
1281 if test $libc_cv_asm_symver_directive = yes; then
1282 cat > conftest.s <<EOF
1285 .symver _sym,sym@VERS
1287 cat > conftest.map <<EOF
1296 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1297 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
1298 -o conftest.so conftest.o
1299 -nostartfiles -nostdlib
1300 -Wl,--version-script,conftest.map
1301 1>&AS_MESSAGE_LOG_FD]);
1303 libc_cv_ld_version_script_option=yes
1305 libc_cv_ld_version_script_option=no
1308 libc_cv_ld_version_script_option=no
1311 libc_cv_ld_version_script_option=no
1314 if test $shared != no &&
1315 test $libc_cv_asm_symver_directive = yes &&
1316 test $libc_cv_ld_version_script_option = yes &&
1317 test $enable_versioning = yes; then
1319 AC_DEFINE(DO_VERSIONING)
1323 AC_SUBST(VERSIONING)
1325 if test $elf = yes && test $shared != no && test $VERSIONING = no; then
1327 *** WARNING: You should not compile GNU libc without versioning. Not using
1328 *** versioning will introduce incompatibilities so that old binaries
1329 *** will not run anymore.
1330 *** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
1332 if test $elf = yes; then
1333 AC_CACHE_CHECK(for .previous assembler directive,
1334 libc_cv_asm_previous_directive, [dnl
1335 cat > conftest.s <<EOF
1336 .section foo_section
1339 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1340 libc_cv_asm_previous_directive=yes
1342 libc_cv_asm_previous_directive=no
1345 if test $libc_cv_asm_previous_directive = yes; then
1346 AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
1348 AC_CACHE_CHECK(for .popsection assembler directive,
1349 libc_cv_asm_popsection_directive, [dnl
1350 cat > conftest.s <<EOF
1351 .pushsection foo_section
1354 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1355 libc_cv_asm_popsection_directive=yes
1357 libc_cv_asm_popsection_directive=no
1360 if test $libc_cv_asm_popsection_directive = yes; then
1361 AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
1364 AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1365 libc_cv_asm_protected_directive, [dnl
1366 cat > conftest.s <<EOF
1372 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1373 libc_cv_asm_protected_directive=yes
1375 AC_MSG_ERROR(assembler support for symbol visibility is required)
1379 if test $libc_cv_asm_protected_directive = yes; then
1380 AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
1381 libc_cv_visibility_attribute,
1382 [cat > conftest.c <<EOF
1383 int foo __attribute__ ((visibility ("hidden"))) = 1;
1384 int bar __attribute__ ((visibility ("protected"))) = 1;
1386 libc_cv_visibility_attribute=no
1387 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1388 if grep '\.hidden.*foo' conftest.s >/dev/null; then
1389 if grep '\.protected.*bar' conftest.s >/dev/null; then
1390 libc_cv_visibility_attribute=yes
1394 rm -f conftest.{c,s}
1396 if test $libc_cv_visibility_attribute != yes; then
1397 AC_MSG_ERROR(compiler support for visibility attribute is required)
1401 if test $libc_cv_visibility_attribute = yes; then
1402 AC_CACHE_CHECK(for broken __attribute__((visibility())),
1403 libc_cv_broken_visibility_attribute,
1404 [cat > conftest.c <<EOF
1406 int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1407 int bar (int x) { return x; }
1409 libc_cv_broken_visibility_attribute=yes
1410 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1412 if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
1414 libc_cv_broken_visibility_attribute=no
1417 rm -f conftest.c conftest.s
1419 if test $libc_cv_broken_visibility_attribute = yes; then
1420 AC_MSG_ERROR(working compiler support for visibility attribute is required)
1424 AC_CACHE_CHECK(for broken __attribute__((alias())),
1425 libc_cv_broken_alias_attribute,
1426 [cat > conftest.c <<EOF
1427 extern int foo (int x) __asm ("xyzzy");
1428 int bar (int x) { return x; }
1429 extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1431 extern __typeof (dfoo) dfoo __asm ("abccb");
1434 libc_cv_broken_alias_attribute=yes
1435 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1436 if grep 'xyzzy' conftest.s >/dev/null &&
1437 grep 'abccb' conftest.s >/dev/null; then
1438 libc_cv_broken_alias_attribute=no
1441 rm -f conftest.c conftest.s
1443 if test $libc_cv_broken_alias_attribute = yes; then
1444 AC_MSG_ERROR(working alias attribute support required)
1447 if test $libc_cv_visibility_attribute = yes; then
1448 AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1449 libc_cv_have_sdata_section,
1450 [echo "int i;" > conftest.c
1451 libc_cv_have_sdata_section=no
1452 if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1453 | grep '\.sdata' >/dev/null; then
1454 libc_cv_have_sdata_section=yes
1456 rm -f conftest.c conftest.so
1458 if test $libc_cv_have_sdata_section = yes; then
1459 AC_DEFINE(HAVE_SDATA_SECTION)
1463 AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1464 libc_cv_initfini_array, [dnl
1465 cat > conftest.c <<EOF
1466 int _start (void) { return 0; }
1467 int __start (void) { return 0; }
1468 int foo (void) { return 1; }
1469 int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
1471 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c
1472 -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
1474 if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
1475 libc_cv_initfini_array=yes
1477 libc_cv_initfini_array=no
1480 libc_cv_initfini_array=no
1483 if test $libc_cv_initfini_array != yes; then
1484 AC_MSG_ERROR([Need linker with .init_array/.fini_array support.])
1487 AC_CACHE_CHECK(whether to use .ctors/.dtors header and trailer,
1488 libc_cv_ctors_header, [dnl
1489 libc_cv_ctors_header=yes
1491 __attribute__ ((constructor)) void ctor (void) { puts("ctor"); }
1492 __attribute__ ((destructor)) void dtor (void) { puts("dtor"); }
1495 AS_IF([$READELF -WS conftest$ac_exeext | $AWK '
1496 { gsub(/\@<:@ */, "@<:@") }
1497 $2 == ".ctors" || $2 == ".dtors" {
1498 size = strtonum("0x" $6)
1499 align = strtonum("0x" $NF)
1501 stub@<:@$2@:>@ = size == align * 2
1504 ctors_ok = !seen@<:@".ctors"@:>@ || stub@<:@".ctors"@:>@
1505 dtors_ok = !seen@<:@".dtors"@:>@ || stub@<:@".dtors"@:>@
1506 exit ((ctors_ok && dtors_ok) ? 0 : 1)
1508 '], [libc_cv_ctors_header=no])
1510 AC_MSG_ERROR([missing __attribute__ ((constructor)) support??])
1513 if test $libc_cv_ctors_header = no; then
1514 AC_DEFINE(NO_CTORS_DTORS_SECTIONS)
1517 AC_CACHE_CHECK(for libunwind-support in compiler,
1518 libc_cv_cc_with_libunwind, [
1519 cat > conftest.c <<EOF
1520 int main (void) { return 0; }
1522 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
1523 conftest.c -v 2>&1 >/dev/null | grep -q " -lunwind "; then
1524 libc_cv_cc_with_libunwind=yes
1526 libc_cv_cc_with_libunwind=no
1529 AC_SUBST(libc_cv_cc_with_libunwind)
1530 if test $libc_cv_cc_with_libunwind = yes; then
1531 AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
1534 AC_CACHE_CHECK(for -z nodelete option,
1535 libc_cv_z_nodelete, [dnl
1536 cat > conftest.c <<EOF
1537 int _start (void) { return 42; }
1539 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1540 -fPIC -shared -o conftest.so conftest.c
1541 -nostartfiles -nostdlib
1542 -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
1544 libc_cv_z_nodelete=yes
1546 AC_MSG_ERROR(linker with -z nodelete support required)
1550 AC_CACHE_CHECK(for -z nodlopen option,
1551 libc_cv_z_nodlopen, [dnl
1552 cat > conftest.c <<EOF
1553 int _start (void) { return 42; }
1555 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1556 -fPIC -shared -o conftest.so conftest.c
1557 -nostartfiles -nostdlib
1558 -Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
1560 libc_cv_z_nodlopen=yes
1562 AC_MSG_ERROR(linker with -z nodlopen support required)
1566 AC_CACHE_CHECK(for -z initfirst option,
1567 libc_cv_z_initfirst, [dnl
1568 cat > conftest.c <<EOF
1569 int _start (void) { return 42; }
1571 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1572 -fPIC -shared -o conftest.so conftest.c
1573 -nostartfiles -nostdlib
1574 -Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
1576 libc_cv_z_initfirst=yes
1578 AC_MSG_ERROR(linker with -z initfirst support required)
1582 # Add-on fragments can set these for other machines.
1583 libc_commonpagesize=${libc_commonpagesize:-no}
1584 libc_relro_required=${libc_relro_required:-no}
1585 case "$base_machine" in
1586 i[[34567]]86 | x86_64 | powerpc* | s390*)
1587 libc_commonpagesize=0x1000
1588 libc_relro_required=yes
1591 libc_commonpagesize=0x2000
1592 libc_relro_required=yes
1595 libc_commonpagesize=0x4000
1598 libc_commonpagesize=0x10000
1599 libc_relro_required=yes
1603 if test $libc_commonpagesize != no; then
1604 AC_CACHE_CHECK(for -z relro option,
1605 libc_cv_z_relro, [dnl
1607 AC_LANG_CONFTEST([AC_LANG_SOURCE([[
1608 int _start (void) { return 42; }
1609 extern void _exit (int);
1610 const void *const relro[] = { &_start, &_exit, 0 };
1612 cat > conftest.awk <<\EOF
1615 commonpagesize = strtonum(commonpagesize)
1617 { print "LINE:", $0 > "/dev/stderr" }
1619 vaddr = strtonum($3)
1620 memsz = strtonum($6)
1622 printf "vaddr %#x memsz %#x end %#x commonpagesize %#x\n", \
1623 vaddr, memsz, end, commonpagesize > "/dev/stderr"
1624 result = (end % commonpagesize == 0) ? "yes" : "broken"
1626 END { print result }
1628 AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1629 -fPIC -shared -o conftest.so conftest.c
1630 -nostartfiles -nostdlib
1631 -Wl,-z,relro 1>&AS_MESSAGE_LOG_FD]) &&
1632 AC_TRY_COMMAND([$READELF -Wl conftest.so > conftest.ph]) &&
1634 $AWK -v commonpagesize=$libc_commonpagesize -f conftest.awk
1635 conftest.ph > conftest.cps
1637 libc_cv_z_relro=`cat conftest.cps 2>&AS_MESSAGE_LOG_FD`
1639 if { test "x$libc_relro_required" = xyes &&
1640 test "x$libc_cv_z_relro" != xyes
1643 AC_MSG_ERROR(linker with -z relro support required)
1646 AC_MSG_WARN([missing architecture parameter to check for working -z relro])
1649 AC_CACHE_CHECK(for -Bgroup option,
1650 libc_cv_Bgroup, [dnl
1651 cat > conftest.c <<EOF
1652 int _start (void) { return 42; }
1654 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1655 -fPIC -shared -o conftest.so conftest.c
1656 -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1663 AC_SUBST(libc_cv_Bgroup)
1665 AC_CACHE_CHECK(for libgcc_s suffix,
1666 libc_cv_libgcc_s_suffix, [dnl
1667 cat > conftest.c <<EOF
1668 int main (void) { return 0; }
1671 libc_cv_libgcc_s_suffix=`${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1672 -fPIC -shared -shared-libgcc -o conftest.so \
1673 conftest.c -v 2>&1 >/dev/null \
1674 | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'`
1677 AC_SUBST(libc_cv_libgcc_s_suffix)
1679 AC_CACHE_CHECK(for --as-needed option,
1680 libc_cv_as_needed, [dnl
1681 cat > conftest.c <<EOF
1682 int main (void) { return 0; }
1684 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1685 -fPIC -shared -o conftest.so conftest.c
1686 -lgcc_s$libc_cv_libgcc_s_suffix -Wl,--as-needed
1687 -nostdlib 1>&AS_MESSAGE_LOG_FD])
1689 libc_cv_as_needed=yes
1691 libc_cv_as_needed=no
1694 AC_SUBST(libc_cv_as_needed)
1697 AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1698 libc_cv_as_noexecstack, [dnl
1699 cat > conftest.c <<EOF
1702 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1703 -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
1704 && grep -q .note.GNU-stack conftest.s \
1705 && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
1706 -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1708 libc_cv_as_noexecstack=yes
1710 libc_cv_as_noexecstack=no
1713 if test $libc_cv_as_noexecstack = yes; then
1714 ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1716 AC_SUBST(ASFLAGS_config)
1718 AC_CACHE_CHECK(for -z combreloc,
1719 libc_cv_z_combreloc, [dnl
1720 cat > conftest.c <<EOF
1721 extern int bar (int);
1723 int foo (void) { return bar (mumble); }
1725 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1726 -fPIC -shared -o conftest.so conftest.c
1727 -nostdlib -nostartfiles
1728 -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
1730 dnl The following test is a bit weak. We must use a tool which can test
1731 dnl cross-platform since the gcc used can be a cross compiler. Without
1732 dnl introducing new options this is not easily doable. Instead use a tool
1733 dnl which always is cross-platform: readelf. To detect whether -z combreloc
1734 dnl look for a section named .rel.dyn.
1735 if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1736 libc_cv_z_combreloc=yes
1738 libc_cv_z_combreloc=no
1741 libc_cv_z_combreloc=no
1744 if test "$libc_cv_z_combreloc" = yes; then
1745 AC_DEFINE(HAVE_Z_COMBRELOC)
1747 AC_SUBST(libc_cv_z_combreloc)
1749 AC_CACHE_CHECK(for -z execstack,
1750 libc_cv_z_execstack, [dnl
1751 cat > conftest.c <<EOF
1752 int _start (void) { return 42; }
1754 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1755 -fPIC -shared -o conftest.so conftest.c
1756 -Wl,-z,execstack -nostdlib
1757 1>&AS_MESSAGE_LOG_FD])
1759 libc_cv_z_execstack=yes
1761 libc_cv_z_execstack=no
1764 AC_SUBST(libc_cv_z_execstack)
1766 AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
1767 cat > conftest.c <<EOF
1769 main () { return 0;}
1771 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fpie
1772 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1780 AC_SUBST(libc_cv_fpie)
1782 AC_CACHE_CHECK(for --hash-style option,
1783 libc_cv_hashstyle, [dnl
1784 cat > conftest.c <<EOF
1785 int _start (void) { return 42; }
1787 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1788 -fPIC -shared -o conftest.so conftest.c
1789 -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
1791 libc_cv_hashstyle=yes
1793 libc_cv_hashstyle=no
1796 AC_SUBST(libc_cv_hashstyle)
1799 AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl
1800 cat > conftest.c <<EOF
1803 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-anchors
1804 conftest.c 1>&AS_MESSAGE_LOG_FD])
1806 libc_cv_fno_toplevel_reorder=yes
1808 libc_cv_fno_toplevel_reorder=no
1811 if test $libc_cv_fno_toplevel_reorder = yes; then
1812 fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
1814 fno_unit_at_a_time=-fno-unit-at-a-time
1816 AC_SUBST(fno_unit_at_a_time)
1818 AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
1819 cat > conftest.c <<EOF
1821 main () { return 0;}
1823 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Werror -fstack-protector
1824 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1831 AC_SUBST(libc_cv_ssp)
1833 AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl
1834 cat > conftest.c <<EOF
1836 #ifdef __GNUC_GNU_INLINE__
1837 main () { return 0;}
1842 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -std=gnu99 -fgnu89-inline
1843 -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD])
1845 libc_cv_gnu89_inline=yes
1847 libc_cv_gnu89_inline=no
1850 if test $libc_cv_gnu89_inline = yes; then
1851 gnu89_inline=-fgnu89-inline
1855 AC_SUBST(gnu89_inline)
1857 if test $elf != yes; then
1858 AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
1859 [AC_TRY_COMPILE(, [asm (".section .init");
1860 asm (".section .fini");
1861 asm ("${libc_cv_dot_text}");],
1862 libc_cv_have_initfini=yes,
1863 libc_cv_have_initfini=no)])
1864 AC_SUBST(libc_cv_have_initfini)dnl
1865 if test $libc_cv_have_initfini = yes; then
1866 AC_DEFINE(HAVE_INITFINI)
1870 if test $elf = yes; then
1871 AC_CACHE_CHECK(whether cc puts quotes around section names,
1872 libc_cv_have_section_quotes,
1873 [cat > conftest.c <<EOF
1874 static const int foo
1875 __attribute__ ((section ("bar"))) = 1;
1877 if ${CC-cc} -S conftest.c -o conftest.s; then
1878 if grep '\.section.*"bar"' conftest.s >/dev/null; then
1879 libc_cv_have_section_quotes=yes
1881 libc_cv_have_section_quotes=no
1884 libc_cv_have_section_quotes=unknown
1886 rm -f conftest.{c,s}
1888 if test $libc_cv_have_section_quotes = yes; then
1889 AC_DEFINE(HAVE_SECTION_QUOTES)
1893 dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
1894 AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
1895 [cat > conftest.$ac_ext <<EOF
1896 dnl This sometimes fails to find confdefs.h, for some reason.
1897 dnl [#]line $LINENO "[$]0"
1898 [#]line $LINENO "configure"
1899 #include "confdefs.h"
1900 void underscore_test(void) {
1903 if AC_TRY_EVAL(ac_compile); then
1904 if grep _underscore_test conftest* >/dev/null; then
1905 ifelse([$1], , :, [rm -f conftest*
1908 ifelse([$2], , , [rm -f conftest*
1912 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
1913 cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
1914 ifelse([$2], , , [rm -f conftest*
1919 if test $elf = yes; then
1920 libc_cv_asm_underscores=no
1922 if test $ac_cv_prog_cc_works = yes; then
1923 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1924 [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
1925 libc_cv_asm_underscores=yes,
1926 libc_cv_asm_underscores=no)])
1928 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1929 [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
1930 libc_cv_asm_underscores=no)])
1933 if test $libc_cv_asm_underscores = no; then
1934 AC_DEFINE(NO_UNDERSCORES)
1937 if test $elf = yes; then
1938 libc_cv_weak_symbols=yes
1941 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1943 cat > conftest.s <<EOF
1945 ${libc_cv_asm_global_directive} foo
1948 .weak bar; bar = foo
1950 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1951 libc_cv_asm_weak_directive=yes
1953 libc_cv_asm_weak_directive=no
1957 if test $libc_cv_asm_weak_directive = no; then
1958 AC_CACHE_CHECK(for assembler .weakext directive,
1959 libc_cv_asm_weakext_directive,
1961 cat > conftest.s <<EOF
1963 ${libc_cv_asm_global_directive} foo
1967 ${libc_cv_asm_global_directive} baz
1970 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1971 libc_cv_asm_weakext_directive=yes
1973 libc_cv_asm_weakext_directive=no
1979 if test $libc_cv_asm_weak_directive = yes; then
1980 AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1981 elif test $libc_cv_asm_weakext_directive = yes; then
1982 AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1985 AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
1987 sparc/sparc64*) cfi_offset=2047;;
1990 cat > conftest.s <<EOF
1992 .type func,%function
1996 .cfi_rel_offset 1, $cfi_offset
1999 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
2000 libc_cv_asm_cfi_directives=yes
2002 libc_cv_asm_cfi_directives=no
2005 if test $libc_cv_asm_cfi_directives = yes; then
2006 AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
2009 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
2010 cat > conftest.c <<\EOF
2015 dnl No \ in command here because it ends up inside ''.
2016 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
2017 -nostdlib -nostartfiles -Wl,--no-whole-archive
2018 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
2019 libc_cv_ld_no_whole_archive=yes
2021 libc_cv_ld_no_whole_archive=no
2024 if test $libc_cv_ld_no_whole_archive = yes; then
2025 no_whole_archive=-Wl,--no-whole-archive
2027 AC_SUBST(no_whole_archive)dnl
2029 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
2030 cat > conftest.c <<\EOF
2035 dnl No \ in command here because it ends up inside ''.
2036 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
2037 -nostdlib -nostartfiles -fexceptions
2038 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
2039 libc_cv_gcc_exceptions=yes
2041 libc_cv_gcc_exceptions=no
2044 if test $libc_cv_gcc_exceptions = yes; then
2045 exceptions=-fexceptions
2047 AC_SUBST(exceptions)dnl
2049 if test "$host_cpu" = powerpc ; then
2050 # Check for a bug present in at least versions 2.8.x of GCC
2051 # and versions 1.0.x of EGCS.
2052 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
2053 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
2054 libc_cv_c_asmcr0_bug='no',
2055 libc_cv_c_asmcr0_bug='yes')])
2056 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
2057 AC_DEFINE(BROKEN_PPC_ASM_CR0)
2061 dnl Check whether compiler understands __builtin_expect.
2062 AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
2063 [cat > conftest.c <<EOF
2064 #line $LINENO "configure"
2067 a = __builtin_expect (a, 10);
2068 return a == 10 ? 0 : 1;
2071 dnl No \ in command here because it ends up inside ''.
2072 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
2073 -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
2074 libc_cv_gcc_builtin_expect=yes
2076 libc_cv_gcc_builtin_expect=no
2079 if test "$libc_cv_gcc_builtin_expect" = yes; then
2080 AC_DEFINE(HAVE_BUILTIN_EXPECT)
2083 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
2084 cat > conftest.c <<\EOF
2087 __builtin_memset (x, 0, 1000);
2091 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
2093 libc_cv_gcc_builtin_memset=no
2095 libc_cv_gcc_builtin_memset=yes
2098 if test "$libc_cv_gcc_builtin_memset" = yes ; then
2099 AC_DEFINE(HAVE_BUILTIN_MEMSET)
2102 AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
2103 cat > conftest.c <<\EOF
2104 extern char *strstr (const char *, const char *) __asm ("my_strstr");
2105 char *foo (const char *a, const char *b)
2107 return __builtin_strstr (a, b);
2111 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
2113 libc_cv_gcc_builtin_redirection=yes
2115 libc_cv_gcc_builtin_redirection=no
2118 if test "$libc_cv_gcc_builtin_redirection" = yes ; then
2119 AC_DEFINE(HAVE_BUILTIN_REDIRECTION)
2122 dnl Check whether the compiler supports the __thread keyword.
2123 if test "x$use__thread" != xno; then
2124 AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
2125 [cat > conftest.c <<\EOF
2126 __thread int a = 42;
2128 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
2129 libc_cv_gcc___thread=yes
2131 libc_cv_gcc___thread=no
2134 if test "$libc_cv_gcc___thread" = yes; then
2135 AC_DEFINE(HAVE___THREAD)
2138 libc_cv_gcc___thread=no
2141 if test "$libc_cv_gcc___thread" = yes; then
2142 dnl Check whether the compiler supports the tls_model attribute.
2143 AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
2144 cat > conftest.c <<\EOF
2145 extern __thread int a __attribute__((tls_model ("initial-exec")));
2147 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
2148 libc_cv_gcc_tls_model_attr=yes
2150 libc_cv_gcc_tls_model_attr=no
2153 if test "$libc_cv_gcc_tls_model_attr" = yes; then
2154 AC_DEFINE(HAVE_TLS_MODEL_ATTRIBUTE)
2158 if test -n "$submachine"; then
2159 AC_CACHE_CHECK([for compiler option for CPU variant],
2160 libc_cv_cc_submachine, [dnl
2161 libc_cv_cc_submachine=no
2162 for opt in "-march=$submachine" "-mcpu=$submachine"; do
2163 if AC_TRY_COMMAND([${CC-cc} $opt -xc /dev/null -S -o /dev/null]); then
2164 libc_cv_cc_submachine="$opt"
2168 if test "x$libc_cv_cc_submachine" = xno; then
2169 AC_MSG_ERROR([${CC-cc} does not support $submachine])
2172 AC_SUBST(libc_cv_cc_submachine)
2174 dnl Check whether we have the gd library available.
2175 AC_MSG_CHECKING(for libgd)
2176 if test "$with_gd" != "no"; then
2177 old_CFLAGS="$CFLAGS"
2178 CFLAGS="$CFLAGS $libgd_include"
2179 old_LDFLAGS="$LDFLAGS"
2180 LDFLAGS="$LDFLAGS $libgd_ldflags"
2182 LIBS="$LIBS -lgd -lpng -lz -lm"
2183 AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
2184 CFLAGS="$old_CFLAGS"
2185 LDFLAGS="$old_LDFLAGS"
2190 AC_MSG_RESULT($LIBGD)
2194 if test x$with_selinux = xno ; then
2197 # See if we have the SELinux library
2198 AC_CHECK_LIB(selinux, is_selinux_enabled,
2199 have_selinux=yes, have_selinux=no)
2200 # See if we have the SELinux header with the NSCD permissions in it.
2201 if test x$have_selinux = xyes ; then
2202 AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h])
2203 AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
2204 [#ifdef NSCD__SHMEMHOST
2207 #error NSCD__SHMEMHOST not defined
2209 have_selinux=yes, have_selinux=no)
2210 AC_MSG_RESULT($have_selinux)
2213 if test x$with_selinux = xyes ; then
2214 if test x$have_selinux = xno ; then
2215 AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found])
2219 # Check if we're building with SELinux support.
2220 if test "x$have_selinux" = xyes; then
2221 AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
2223 # See if we have the libaudit library
2224 AC_CHECK_LIB(audit, audit_log_user_avc_message,
2225 have_libaudit=yes, have_libaudit=no)
2226 if test "x$have_libaudit" = xyes; then
2227 AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
2229 AC_SUBST(have_libaudit)
2231 # See if we have the libcap library
2232 AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
2233 if test "x$have_libcap" = xyes; then
2234 AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
2236 AC_SUBST(have_libcap)
2238 AC_SUBST(have_selinux)
2240 dnl check for the size of 'long double'.
2241 AC_CHECK_SIZEOF(long double, 0)
2242 sizeof_long_double=$ac_cv_sizeof_long_double
2243 AC_SUBST(sizeof_long_double)
2245 ### End of automated tests.
2246 ### Now run sysdeps configure fragments.
2248 # They also can set these variables.
2250 ldd_rewrite_script=no
2251 libc_cv_sysconfdir=$sysconfdir
2252 libc_cv_gcc_unwind_find_fde=no
2255 # Iterate over all the sysdep directories we will use, running their
2256 # configure fragments.
2257 for dir in $sysnames; do
2260 *) dest=$srcdir/$dir ;;
2262 if test -r $dest/configure; then
2263 AC_MSG_RESULT(running configure fragment for $dir)
2268 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
2269 AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
2271 AC_SUBST(libc_cv_gcc_unwind_find_fde)
2273 dnl This is tested by existing code and it's simpler to avoid changing it.
2274 AC_DEFINE(USE_IN_LIBIO)
2276 # Test for old glibc 2.0.x headers so that they can be removed properly
2277 # Search only in includedir.
2278 AC_MSG_CHECKING(for old glibc 2.0.x headers)
2279 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
2281 old_glibc_headers=yes
2283 old_glibc_headers=no
2285 AC_MSG_RESULT($old_glibc_headers)
2286 if test ${old_glibc_headers} = yes; then
2287 AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
2288 AC_MSG_WARN(*** be removed.)
2290 AC_SUBST(old_glibc_headers)
2292 AC_SUBST(libc_cv_slibdir)
2293 AC_SUBST(libc_cv_localedir)
2294 AC_SUBST(libc_cv_sysconfdir)
2295 AC_SUBST(libc_cv_rootsbindir)
2296 AC_SUBST(libc_cv_forced_unwind)
2298 dnl sysdeps/CPU/configure.in checks set this via arch-specific asm tests
2299 AC_SUBST(libc_cv_cpp_asm_debuginfo)
2300 AC_SUBST(libc_cv_cc_sse4)
2301 AC_SUBST(libc_cv_cc_avx)
2302 AC_SUBST(libc_cv_cc_novzeroupper)
2303 AC_SUBST(libc_cv_as_i686)
2305 AC_SUBST(use_ldconfig)
2306 AC_SUBST(ldd_rewrite_script)
2308 AC_SUBST(elf) AC_SUBST(xcoff)
2309 if test $elf = yes; then
2312 if test $xcoff = yes; then
2313 AC_DEFINE(HAVE_XCOFF)
2318 if test $shared = default; then
2322 AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
2323 [libc_cv_pic_default=yes
2324 cat > conftest.c <<EOF
2325 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
2326 # error PIC is default.
2329 if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
2330 libc_cv_pic_default=no
2333 AC_SUBST(libc_cv_pic_default)
2338 AC_SUBST(static_nss)
2339 AC_SUBST(nopic_initfini)
2343 dnl See sysdeps/mach/configure.in for this variable.
2344 AC_SUBST(mach_interface_list)
2346 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
2349 config_makefile=Makefile
2352 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
2353 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
2357 AC_CONFIG_FILES([config.make ${config_makefile}])
2358 AC_CONFIG_COMMANDS([default],[[
2359 case $CONFIG_FILES in *config.make*)
2360 echo "$config_vars" >> config.make;;
2362 test -d bits || mkdir bits]],[[config_vars='$config_vars']])