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 /* Since these pointers are const, they should go in rodata.
1611 Since they refer to functions that have to be resolved by
1612 dynamic linking, they should instead go in RELRO data. */
1613 const void *const relro[] = { &_start, &_exit, 0 };
1614 /* GNU ld fails to produce RELRO data when it's very small and there is no
1615 normal writable data following it, or if only uninitialized (.bss) data
1616 follows it, or only very small writable data. */
1617 int data[0x10000] = { 1, };
1619 cat > conftest.awk <<\EOF
1622 commonpagesize = strtonum(commonpagesize)
1624 { print "LINE:", $0 > "/dev/stderr" }
1626 vaddr = strtonum($3)
1627 memsz = strtonum($6)
1629 printf "vaddr %#x memsz %#x end %#x commonpagesize %#x\n", \
1630 vaddr, memsz, end, commonpagesize > "/dev/stderr"
1631 result = (end % commonpagesize == 0) ? "yes" : "broken"
1633 END { print result }
1635 AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1636 -fPIC -shared -o conftest.so conftest.c
1637 -nostartfiles -nostdlib
1638 -Wl,-z,relro 1>&AS_MESSAGE_LOG_FD]) &&
1639 AC_TRY_COMMAND([$READELF -Wl conftest.so > conftest.ph]) &&
1641 $AWK -v commonpagesize=$libc_commonpagesize -f conftest.awk
1642 conftest.ph > conftest.cps
1644 libc_cv_z_relro=`cat conftest.cps 2>&AS_MESSAGE_LOG_FD`
1646 if { test "x$libc_relro_required" = xyes &&
1647 test "x$libc_cv_z_relro" != xyes
1650 AC_MSG_ERROR(linker with -z relro support required)
1653 AC_MSG_WARN([missing architecture parameter to check for working -z relro])
1656 AC_CACHE_CHECK(for -Bgroup option,
1657 libc_cv_Bgroup, [dnl
1658 cat > conftest.c <<EOF
1659 int _start (void) { return 42; }
1661 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1662 -fPIC -shared -o conftest.so conftest.c
1663 -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1670 AC_SUBST(libc_cv_Bgroup)
1672 AC_CACHE_CHECK(for libgcc_s suffix,
1673 libc_cv_libgcc_s_suffix, [dnl
1674 cat > conftest.c <<EOF
1675 int main (void) { return 0; }
1678 libc_cv_libgcc_s_suffix=`${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1679 -fPIC -shared -shared-libgcc -o conftest.so \
1680 conftest.c -v 2>&1 >/dev/null \
1681 | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'`
1684 AC_SUBST(libc_cv_libgcc_s_suffix)
1686 AC_CACHE_CHECK(for --as-needed option,
1687 libc_cv_as_needed, [dnl
1688 cat > conftest.c <<EOF
1689 int main (void) { return 0; }
1691 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1692 -fPIC -shared -o conftest.so conftest.c
1693 -lgcc_s$libc_cv_libgcc_s_suffix -Wl,--as-needed
1694 -nostdlib 1>&AS_MESSAGE_LOG_FD])
1696 libc_cv_as_needed=yes
1698 libc_cv_as_needed=no
1701 AC_SUBST(libc_cv_as_needed)
1704 AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1705 libc_cv_as_noexecstack, [dnl
1706 cat > conftest.c <<EOF
1709 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1710 -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
1711 && grep -q .note.GNU-stack conftest.s \
1712 && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
1713 -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1715 libc_cv_as_noexecstack=yes
1717 libc_cv_as_noexecstack=no
1720 if test $libc_cv_as_noexecstack = yes; then
1721 ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1723 AC_SUBST(ASFLAGS_config)
1725 AC_CACHE_CHECK(for -z combreloc,
1726 libc_cv_z_combreloc, [dnl
1727 cat > conftest.c <<EOF
1728 extern int bar (int);
1730 int foo (void) { return bar (mumble); }
1732 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1733 -fPIC -shared -o conftest.so conftest.c
1734 -nostdlib -nostartfiles
1735 -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
1737 dnl The following test is a bit weak. We must use a tool which can test
1738 dnl cross-platform since the gcc used can be a cross compiler. Without
1739 dnl introducing new options this is not easily doable. Instead use a tool
1740 dnl which always is cross-platform: readelf. To detect whether -z combreloc
1741 dnl look for a section named .rel.dyn.
1742 if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1743 libc_cv_z_combreloc=yes
1745 libc_cv_z_combreloc=no
1748 libc_cv_z_combreloc=no
1751 if test "$libc_cv_z_combreloc" = yes; then
1752 AC_DEFINE(HAVE_Z_COMBRELOC)
1754 AC_SUBST(libc_cv_z_combreloc)
1756 AC_CACHE_CHECK(for -z execstack,
1757 libc_cv_z_execstack, [dnl
1758 cat > conftest.c <<EOF
1759 int _start (void) { return 42; }
1761 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1762 -fPIC -shared -o conftest.so conftest.c
1763 -Wl,-z,execstack -nostdlib
1764 1>&AS_MESSAGE_LOG_FD])
1766 libc_cv_z_execstack=yes
1768 libc_cv_z_execstack=no
1771 AC_SUBST(libc_cv_z_execstack)
1773 AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
1774 cat > conftest.c <<EOF
1776 main () { return 0;}
1778 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fpie
1779 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1787 AC_SUBST(libc_cv_fpie)
1789 AC_CACHE_CHECK(for --hash-style option,
1790 libc_cv_hashstyle, [dnl
1791 cat > conftest.c <<EOF
1792 int _start (void) { return 42; }
1794 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1795 -fPIC -shared -o conftest.so conftest.c
1796 -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
1798 libc_cv_hashstyle=yes
1800 libc_cv_hashstyle=no
1803 AC_SUBST(libc_cv_hashstyle)
1806 AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl
1807 cat > conftest.c <<EOF
1810 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-anchors
1811 conftest.c 1>&AS_MESSAGE_LOG_FD])
1813 libc_cv_fno_toplevel_reorder=yes
1815 libc_cv_fno_toplevel_reorder=no
1818 if test $libc_cv_fno_toplevel_reorder = yes; then
1819 fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
1821 fno_unit_at_a_time=-fno-unit-at-a-time
1823 AC_SUBST(fno_unit_at_a_time)
1825 AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
1826 cat > conftest.c <<EOF
1828 main () { return 0;}
1830 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Werror -fstack-protector
1831 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1838 AC_SUBST(libc_cv_ssp)
1840 AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl
1841 cat > conftest.c <<EOF
1843 #ifdef __GNUC_GNU_INLINE__
1844 main () { return 0;}
1849 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -std=gnu99 -fgnu89-inline
1850 -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD])
1852 libc_cv_gnu89_inline=yes
1854 libc_cv_gnu89_inline=no
1857 if test $libc_cv_gnu89_inline = yes; then
1858 gnu89_inline=-fgnu89-inline
1862 AC_SUBST(gnu89_inline)
1864 if test $elf != yes; then
1865 AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
1866 [AC_TRY_COMPILE(, [asm (".section .init");
1867 asm (".section .fini");
1868 asm ("${libc_cv_dot_text}");],
1869 libc_cv_have_initfini=yes,
1870 libc_cv_have_initfini=no)])
1871 AC_SUBST(libc_cv_have_initfini)dnl
1872 if test $libc_cv_have_initfini = yes; then
1873 AC_DEFINE(HAVE_INITFINI)
1877 if test $elf = yes; then
1878 AC_CACHE_CHECK(whether cc puts quotes around section names,
1879 libc_cv_have_section_quotes,
1880 [cat > conftest.c <<EOF
1881 static const int foo
1882 __attribute__ ((section ("bar"))) = 1;
1884 if ${CC-cc} -S conftest.c -o conftest.s; then
1885 if grep '\.section.*"bar"' conftest.s >/dev/null; then
1886 libc_cv_have_section_quotes=yes
1888 libc_cv_have_section_quotes=no
1891 libc_cv_have_section_quotes=unknown
1893 rm -f conftest.{c,s}
1895 if test $libc_cv_have_section_quotes = yes; then
1896 AC_DEFINE(HAVE_SECTION_QUOTES)
1900 dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
1901 AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
1902 [cat > conftest.$ac_ext <<EOF
1903 dnl This sometimes fails to find confdefs.h, for some reason.
1904 dnl [#]line $LINENO "[$]0"
1905 [#]line $LINENO "configure"
1906 #include "confdefs.h"
1907 void underscore_test(void) {
1910 if AC_TRY_EVAL(ac_compile); then
1911 if grep _underscore_test conftest* >/dev/null; then
1912 ifelse([$1], , :, [rm -f conftest*
1915 ifelse([$2], , , [rm -f conftest*
1919 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
1920 cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
1921 ifelse([$2], , , [rm -f conftest*
1926 if test $elf = yes; then
1927 libc_cv_asm_underscores=no
1929 if test $ac_cv_prog_cc_works = yes; then
1930 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1931 [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
1932 libc_cv_asm_underscores=yes,
1933 libc_cv_asm_underscores=no)])
1935 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1936 [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
1937 libc_cv_asm_underscores=no)])
1940 if test $libc_cv_asm_underscores = no; then
1941 AC_DEFINE(NO_UNDERSCORES)
1944 if test $elf = yes; then
1945 libc_cv_weak_symbols=yes
1948 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1950 cat > conftest.s <<EOF
1952 ${libc_cv_asm_global_directive} foo
1955 .weak bar; bar = foo
1957 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1958 libc_cv_asm_weak_directive=yes
1960 libc_cv_asm_weak_directive=no
1964 if test $libc_cv_asm_weak_directive = no; then
1965 AC_CACHE_CHECK(for assembler .weakext directive,
1966 libc_cv_asm_weakext_directive,
1968 cat > conftest.s <<EOF
1970 ${libc_cv_asm_global_directive} foo
1974 ${libc_cv_asm_global_directive} baz
1977 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1978 libc_cv_asm_weakext_directive=yes
1980 libc_cv_asm_weakext_directive=no
1986 if test $libc_cv_asm_weak_directive = yes; then
1987 AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1988 elif test $libc_cv_asm_weakext_directive = yes; then
1989 AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1992 AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
1994 sparc/sparc64*) cfi_offset=2047;;
1997 cat > conftest.s <<EOF
1999 .type func,%function
2003 .cfi_rel_offset 1, $cfi_offset
2006 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
2007 libc_cv_asm_cfi_directives=yes
2009 libc_cv_asm_cfi_directives=no
2012 if test $libc_cv_asm_cfi_directives = yes; then
2013 AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
2016 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
2017 cat > conftest.c <<\EOF
2022 dnl No \ in command here because it ends up inside ''.
2023 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
2024 -nostdlib -nostartfiles -Wl,--no-whole-archive
2025 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
2026 libc_cv_ld_no_whole_archive=yes
2028 libc_cv_ld_no_whole_archive=no
2031 if test $libc_cv_ld_no_whole_archive = yes; then
2032 no_whole_archive=-Wl,--no-whole-archive
2034 AC_SUBST(no_whole_archive)dnl
2036 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
2037 cat > conftest.c <<\EOF
2042 dnl No \ in command here because it ends up inside ''.
2043 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
2044 -nostdlib -nostartfiles -fexceptions
2045 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
2046 libc_cv_gcc_exceptions=yes
2048 libc_cv_gcc_exceptions=no
2051 if test $libc_cv_gcc_exceptions = yes; then
2052 exceptions=-fexceptions
2054 AC_SUBST(exceptions)dnl
2056 if test "$host_cpu" = powerpc ; then
2057 # Check for a bug present in at least versions 2.8.x of GCC
2058 # and versions 1.0.x of EGCS.
2059 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
2060 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
2061 libc_cv_c_asmcr0_bug='no',
2062 libc_cv_c_asmcr0_bug='yes')])
2063 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
2064 AC_DEFINE(BROKEN_PPC_ASM_CR0)
2068 dnl Check whether compiler understands __builtin_expect.
2069 AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
2070 [cat > conftest.c <<EOF
2071 #line $LINENO "configure"
2074 a = __builtin_expect (a, 10);
2075 return a == 10 ? 0 : 1;
2078 dnl No \ in command here because it ends up inside ''.
2079 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
2080 -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
2081 libc_cv_gcc_builtin_expect=yes
2083 libc_cv_gcc_builtin_expect=no
2086 if test "$libc_cv_gcc_builtin_expect" = yes; then
2087 AC_DEFINE(HAVE_BUILTIN_EXPECT)
2090 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
2091 cat > conftest.c <<\EOF
2094 __builtin_memset (x, 0, 1000);
2098 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
2100 libc_cv_gcc_builtin_memset=no
2102 libc_cv_gcc_builtin_memset=yes
2105 if test "$libc_cv_gcc_builtin_memset" = yes ; then
2106 AC_DEFINE(HAVE_BUILTIN_MEMSET)
2109 AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
2110 cat > conftest.c <<\EOF
2111 extern char *strstr (const char *, const char *) __asm ("my_strstr");
2112 char *foo (const char *a, const char *b)
2114 return __builtin_strstr (a, b);
2118 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
2120 libc_cv_gcc_builtin_redirection=yes
2122 libc_cv_gcc_builtin_redirection=no
2125 if test "$libc_cv_gcc_builtin_redirection" = yes ; then
2126 AC_DEFINE(HAVE_BUILTIN_REDIRECTION)
2129 dnl Check whether the compiler supports the __thread keyword.
2130 if test "x$use__thread" != xno; then
2131 AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
2132 [cat > conftest.c <<\EOF
2133 __thread int a = 42;
2135 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
2136 libc_cv_gcc___thread=yes
2138 libc_cv_gcc___thread=no
2141 if test "$libc_cv_gcc___thread" = yes; then
2142 AC_DEFINE(HAVE___THREAD)
2145 libc_cv_gcc___thread=no
2148 if test "$libc_cv_gcc___thread" = yes; then
2149 dnl Check whether the compiler supports the tls_model attribute.
2150 AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
2151 cat > conftest.c <<\EOF
2152 extern __thread int a __attribute__((tls_model ("initial-exec")));
2154 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
2155 libc_cv_gcc_tls_model_attr=yes
2157 libc_cv_gcc_tls_model_attr=no
2160 if test "$libc_cv_gcc_tls_model_attr" = yes; then
2161 AC_DEFINE(HAVE_TLS_MODEL_ATTRIBUTE)
2165 if test -n "$submachine"; then
2166 AC_CACHE_CHECK([for compiler option for CPU variant],
2167 libc_cv_cc_submachine, [dnl
2168 libc_cv_cc_submachine=no
2169 for opt in "-march=$submachine" "-mcpu=$submachine"; do
2170 if AC_TRY_COMMAND([${CC-cc} $opt -xc /dev/null -S -o /dev/null]); then
2171 libc_cv_cc_submachine="$opt"
2175 if test "x$libc_cv_cc_submachine" = xno; then
2176 AC_MSG_ERROR([${CC-cc} does not support $submachine])
2179 AC_SUBST(libc_cv_cc_submachine)
2181 dnl Check whether we have the gd library available.
2182 AC_MSG_CHECKING(for libgd)
2183 if test "$with_gd" != "no"; then
2184 old_CFLAGS="$CFLAGS"
2185 CFLAGS="$CFLAGS $libgd_include"
2186 old_LDFLAGS="$LDFLAGS"
2187 LDFLAGS="$LDFLAGS $libgd_ldflags"
2189 LIBS="$LIBS -lgd -lpng -lz -lm"
2190 AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
2191 CFLAGS="$old_CFLAGS"
2192 LDFLAGS="$old_LDFLAGS"
2197 AC_MSG_RESULT($LIBGD)
2201 if test x$with_selinux = xno ; then
2204 # See if we have the SELinux library
2205 AC_CHECK_LIB(selinux, is_selinux_enabled,
2206 have_selinux=yes, have_selinux=no)
2207 # See if we have the SELinux header with the NSCD permissions in it.
2208 if test x$have_selinux = xyes ; then
2209 AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h])
2210 AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
2211 [#ifdef NSCD__SHMEMHOST
2214 #error NSCD__SHMEMHOST not defined
2216 have_selinux=yes, have_selinux=no)
2217 AC_MSG_RESULT($have_selinux)
2220 if test x$with_selinux = xyes ; then
2221 if test x$have_selinux = xno ; then
2222 AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found])
2226 # Check if we're building with SELinux support.
2227 if test "x$have_selinux" = xyes; then
2228 AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
2230 # See if we have the libaudit library
2231 AC_CHECK_LIB(audit, audit_log_user_avc_message,
2232 have_libaudit=yes, have_libaudit=no)
2233 if test "x$have_libaudit" = xyes; then
2234 AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
2236 AC_SUBST(have_libaudit)
2238 # See if we have the libcap library
2239 AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
2240 if test "x$have_libcap" = xyes; then
2241 AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
2243 AC_SUBST(have_libcap)
2245 AC_SUBST(have_selinux)
2247 dnl check for the size of 'long double'.
2248 AC_CHECK_SIZEOF(long double, 0)
2249 sizeof_long_double=$ac_cv_sizeof_long_double
2250 AC_SUBST(sizeof_long_double)
2252 ### End of automated tests.
2253 ### Now run sysdeps configure fragments.
2255 # They also can set these variables.
2257 ldd_rewrite_script=no
2258 libc_cv_sysconfdir=$sysconfdir
2259 libc_cv_gcc_unwind_find_fde=no
2262 # Iterate over all the sysdep directories we will use, running their
2263 # configure fragments.
2264 for dir in $sysnames; do
2267 *) dest=$srcdir/$dir ;;
2269 if test -r $dest/configure; then
2270 AC_MSG_RESULT(running configure fragment for $dir)
2275 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
2276 AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
2278 AC_SUBST(libc_cv_gcc_unwind_find_fde)
2280 dnl This is tested by existing code and it's simpler to avoid changing it.
2281 AC_DEFINE(USE_IN_LIBIO)
2283 # Test for old glibc 2.0.x headers so that they can be removed properly
2284 # Search only in includedir.
2285 AC_MSG_CHECKING(for old glibc 2.0.x headers)
2286 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
2288 old_glibc_headers=yes
2290 old_glibc_headers=no
2292 AC_MSG_RESULT($old_glibc_headers)
2293 if test ${old_glibc_headers} = yes; then
2294 AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
2295 AC_MSG_WARN(*** be removed.)
2297 AC_SUBST(old_glibc_headers)
2299 AC_SUBST(libc_cv_slibdir)
2300 AC_SUBST(libc_cv_localedir)
2301 AC_SUBST(libc_cv_sysconfdir)
2302 AC_SUBST(libc_cv_rootsbindir)
2303 AC_SUBST(libc_cv_forced_unwind)
2305 dnl sysdeps/CPU/configure.in checks set this via arch-specific asm tests
2306 AC_SUBST(libc_cv_cpp_asm_debuginfo)
2307 AC_SUBST(libc_cv_cc_sse4)
2308 AC_SUBST(libc_cv_cc_avx)
2309 AC_SUBST(libc_cv_cc_novzeroupper)
2310 AC_SUBST(libc_cv_as_i686)
2312 AC_SUBST(use_ldconfig)
2313 AC_SUBST(ldd_rewrite_script)
2315 AC_SUBST(elf) AC_SUBST(xcoff)
2316 if test $elf = yes; then
2319 if test $xcoff = yes; then
2320 AC_DEFINE(HAVE_XCOFF)
2325 if test $shared = default; then
2329 AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
2330 [libc_cv_pic_default=yes
2331 cat > conftest.c <<EOF
2332 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
2333 # error PIC is default.
2336 if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
2337 libc_cv_pic_default=no
2340 AC_SUBST(libc_cv_pic_default)
2345 AC_SUBST(static_nss)
2346 AC_SUBST(nopic_initfini)
2350 dnl See sysdeps/mach/configure.in for this variable.
2351 AC_SUBST(mach_interface_list)
2353 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
2356 config_makefile=Makefile
2359 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
2360 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
2364 AC_CONFIG_FILES([config.make ${config_makefile}])
2365 AC_CONFIG_COMMANDS([default],[[
2366 case $CONFIG_FILES in *config.make*)
2367 echo "$config_vars" >> config.make;;
2369 test -d bits || mkdir bits]],[[config_vars='$config_vars']])