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 if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then
10 AC_MSG_ERROR([you must configure in a separate build directory])
13 # This will get text that should go into config.make.
16 # Check for a --with-gmp argument and set gmp-srcdir in config.make.
18 AC_HELP_STRING([--with-gmp=DIRECTORY],
19 [find GMP source code in DIRECTORY (not needed)]),
22 yes) AC_MSG_ERROR([--with-gmp requires an argument; use --with-gmp=DIRECTORY]) ;;
24 *) config_vars="$config_vars
25 gmp-srcdir = $withval" ;;
28 # Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
30 AC_HELP_STRING([--with-gd=DIR],
31 [find libgd include dir and library with prefix DIR]),
35 *) libgd_include="-I$withval/include"
36 libgd_ldflags="-L$withval/lib" ;;
39 AC_ARG_WITH([gd-include],
40 AC_HELP_STRING([--with-gd-include=DIR],
41 [find libgd include files in DIR]),
43 case "$with_gd_include" in
45 *) libgd_include="-I$withval" ;;
49 AC_HELP_STRING([--with-gd-lib=DIR],
50 [find libgd library files in DIR]),
52 case "$with_gd_lib" in
54 *) libgd_ldflags="-L$withval" ;;
58 if test -n "$libgd_include"; then
59 config_vars="$config_vars
60 CFLAGS-memusagestat.c = $libgd_include"
62 if test -n "$libgd_ldflags"; then
63 config_vars="$config_vars
64 libgd-LDFLAGS = $libgd_ldflags"
67 dnl Arguments to specify presence of other packages/features.
69 AC_HELP_STRING([--with-fp],
70 [if using floating-point hardware @<:@default=yes@:>@]),
74 AC_ARG_WITH([binutils],
75 AC_HELP_STRING([--with-binutils=PATH],
76 [specify location of binutils (as and ld)]),
77 [path_binutils=$withval],
80 AC_HELP_STRING([--with-elf],
81 [if using the ELF object format]),
85 AC_HELP_STRING([--with-xcoff],
86 [if using the XCOFF object format]),
90 AC_HELP_STRING([--without-cvs],
91 [if CVS should not be used]),
94 if test "$with_cvs" = yes; then
95 if test -d $srcdir/CVS && grep :pserver: $srcdir/CVS/Root > /dev/null
102 AC_ARG_WITH([headers],
103 AC_HELP_STRING([--with-headers=PATH],
104 [location of system headers to use
105 (for example /usr/src/linux/include)
106 @<:@default=compiler default@:>@]),
107 [sysheaders=$withval],
110 AC_ARG_ENABLE([sanity-checks],
111 AC_HELP_STRING([--disable-sanity-checks],
112 [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
113 [enable_sanity=$enableval],
116 AC_SUBST(enable_check_abi)
117 AC_ARG_ENABLE([check-abi],
118 AC_HELP_STRING([--enable-check-abi],
119 [do "make check-abi" in "make check" (no/warn/yes)
120 @<:@default=no@:>@]),
121 [enable_check_abi=$enableval],
122 [enable_check_abi=no])
124 dnl Arguments to enable or disable building the static, shared, profiled,
125 dnl and -fomit-frame-pointer libraries.
126 dnl I've disabled this for now since we cannot build glibc without static
127 dnl libraries built in the moment.
128 dnl AC_ARG_ENABLE([static],
129 dnl AC_HELP_STRING([--enable-static],
130 dnl [build static library @<:@default=yes@:>@]),
131 dnl [static=$enableval],
134 AC_ARG_ENABLE([shared],
135 AC_HELP_STRING([--enable-shared],
136 [build shared library @<:@default=yes if GNU ld & ELF@:>@]),
139 AC_ARG_ENABLE([profile],
140 AC_HELP_STRING([--enable-profile],
141 [build profiled library @<:@default=yes@:>@]),
142 [profile=$enableval],
144 AC_ARG_ENABLE([omitfp],
145 AC_HELP_STRING([--enable-omitfp],
146 [build undebuggable optimized library @<:@default=no@:>@]),
149 AC_ARG_ENABLE([bounded],
150 AC_HELP_STRING([--enable-bounded],
151 [build with runtime bounds checking @<:@default=no@:>@]),
152 [bounded=$enableval],
154 AC_ARG_ENABLE([versioning],
155 AC_HELP_STRING([--disable-versioning],
156 [do not include versioning information in the library objects @<:@default=yes if supported@:>@]),
157 [enable_versioning=$enableval],
158 [enable_versioning=yes])
160 AC_ARG_ENABLE([oldest-abi],
161 AC_HELP_STRING([--enable-oldest-abi=ABI],
162 [configure the oldest ABI supported @<:@e.g. 2.2@:>@ @<:@default=glibc default@:>@]),
163 [oldest_abi=$enableval],
165 if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
168 AC_DEFINE_UNQUOTED(GLIBC_OLDEST_ABI, "$oldest_abi")
172 dnl Generic infrastructure for drop-in additions to libc.
173 AC_ARG_ENABLE([add-ons],
174 AC_HELP_STRING([--enable-add-ons@<:@=DIRS...@:>@],
175 [configure and build add-ons in DIR1,DIR2,... search for add-ons if no parameter given]),
176 [case "$enableval" in
177 yes) add_ons=`cd $srcdir && echo */configure | sed -e 's!/configure!!g'`
178 test "$add_ons" = "*" && add_ons= ;;
179 *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
183 dnl Let the user avoid using TLS. Don't know why but...
184 dnl XXX For now we disable support by default.
186 AC_HELP_STRING([--with-tls],
187 [enable support for TLS]),
191 AC_ARG_WITH([__thread],
192 AC_HELP_STRING([--without-__thread],
193 [do not use TLS features even when supporting them]),
194 [use__thread=$withval],
197 AC_ARG_ENABLE([hidden-plt],
198 AC_HELP_STRING([--disable-hidden-plt],
199 [do not hide internal function calls to avoid PLT]),
202 if test "x$hidden" = xno; then
206 AC_CONFIG_SUBDIRS([ ])dnl Bonehead new Autoconf whines if we do it cleanly.
208 if test x"$add_ons" != x; then
209 for f in $add_ons; do
211 if test "$f" = "crypt"; then
213 *** It seems that you're using an old \`crypt' add-on. crypt is now
214 *** part of glibc and using the old add-on will not work with this
215 *** release. Start again with fresh sources and without the old
216 *** \`crypt' add-on.])
218 if test "$f" = "localedata"; then
220 *** It seems that you're using an old \`localedata' add-on. localedata
221 *** is now part of glibc and using the old add-on will not work with
222 *** this release. Start again with fresh sources and without the old
223 *** \`localedata' add-on.])
225 # Test whether such a subdir really exists.
226 if test -d $srcdir/$f; then
227 add_ons_pfx="$add_ons_pfx $f/"
228 dnl This variable is what AC_CONFIG_SUBDIRS is supposed to set,
229 dnl but the new Autoconf maintainers don't care about compatibility
230 dnl so we cannot use it normally any more without complaints.
231 subdirs="$subdirs $f"
233 AC_MSG_ERROR(add-on directory \"$f\" does not exist)
238 dnl On some platforms we cannot use dynamic loading. We must provide
239 dnl static NSS modules.
240 AC_ARG_ENABLE([static-nss],
241 AC_HELP_STRING([--enable-static-nss],
242 [build static NSS modules @<:@default=no@:>@]),
243 [static_nss=$enableval],
245 dnl Enable static NSS also if we build no shared objects.
246 if test x"$static_nss" = xyes || test x"$shared" = xno; then
248 AC_DEFINE(DO_STATIC_NSS)
251 AC_ARG_ENABLE([force-install],
252 AC_HELP_STRING([--disable-force-install],
253 [don't force installation of files from this package, even if they are older than the installed files]),
254 [force_install=$enableval],
256 AC_SUBST(force_install)
258 dnl On some platforms we allow dropping compatibility with all kernel
260 AC_ARG_ENABLE([kernel],
261 AC_HELP_STRING([--enable-kernel=VERSION],
262 [compile for compatibility with kernel not older than VERSION]),
263 [minimum_kernel=$enableval],
265 dnl Prevent unreasonable values.
266 if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
267 # Better nothing than this.
270 if test "$minimum_kernel" = current; then
271 minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
275 dnl For the development we sometimes want gcc to issue even more warnings.
276 dnl This is not the default since many of the extra warnings are not
278 AC_ARG_ENABLE([all-warnings],
279 AC_HELP_STRING([--enable-all-warnings],
280 [enable all useful warnings gcc can issue]),
281 [all_warnings=$enableval],
283 AC_SUBST(all_warnings)
287 # The way shlib-versions is used to generate soversions.mk uses a
288 # fairly simplistic model for name recognition that can't distinguish
289 # i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os
290 # of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
291 # tell. This doesn't get used much beyond that, so it's fairly safe.
296 host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
300 # We keep the original values in `$config_*' and never modify them, so we
301 # can write them unchanged into config.make. Everything else uses
302 # $machine, $vendor, and $os, and changes them whenever convenient.
303 config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
305 # Don't allow vendor == "unknown"
306 test "$config_vendor" = unknown && config_vendor=
307 config_os="`echo $config_os | sed 's/^unknown-//'`"
309 # Some configurations imply other options.
311 gnu* | linux* | bsd4.4* | netbsd* | freebsd*)
312 # These systems always use GNU tools.
313 gnu_ld=yes gnu_as=yes ;;
316 # i586-linuxaout is mangled into i586-pc-linux-gnuaout
317 linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
319 gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*)
320 # These systems (almost) always use the ELF format.
324 # These systems are always xcoff
330 machine=$config_machine
331 vendor=$config_vendor
334 # config.guess on some IBM machines says `rs6000' instead of `powerpc'.
336 if test "$machine" = rs6000; then
340 # Braindead PowerPC box with absolutely no FPU.
341 case "$machine-$host_os" in
348 ### I put this here to prevent those annoying emails from people who cannot
349 ### read and try to compile glibc on unsupported platforms. --drepper
351 ### By using the undocumented --enable-hacker-mode option for configure
352 ### one can skip this test to make the configuration not fail for unsupported
355 if test -z "$enable_hacker_mode"; then
356 case "$machine-$host_os" in
357 *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*)
360 echo "*** The GNU C library is currently not available for this platform."
361 echo "*** So far nobody cared to port it and if there is no volunteer it"
362 echo "*** might never happen. So, if you have interest to see glibc on"
363 echo "*** this platform visit"
364 echo "*** http://www.gnu.org/software/libc/porting.html"
365 echo "*** and join the group of porters"
371 dnl We need to use [ and ] for other purposes for a while now.
373 # Expand the configuration machine name into a subdirectory by architecture
374 # type and particular chip.
376 a29k | am29000) base_machine=a29k machine=a29k ;;
377 alpha*) base_machine=alpha machine=alpha/$machine ;;
378 arm*) base_machine=arm machine=arm/arm32/$machine ;;
379 c3[012]) base_machine=cx0 machine=cx0/c30 ;;
380 c4[04]) base_machine=cx0 machine=cx0/c40 ;;
381 hppa*64*) base_machine=hppa machine=hppa/hppa64 ;;
382 hppa*) base_machine=hppa machine=hppa/hppa1.1 ;;
383 i[3456]86) base_machine=i386 machine=i386/$machine ;;
384 ia64) base_machine=ia64 machine=ia64 ;;
385 m680?0) base_machine=m68k machine=m68k/$machine ;;
386 m68k) base_machine=m68k machine=m68k/m68020 ;;
387 m88???) base_machine=m88k machine=m88k/$machine ;;
388 m88k) base_machine=m88k machine=m88k/m88100 ;;
389 mips64*) base_machine=mips64
390 case "$CC $CFLAGS $CPPFLAGS " in
391 *" -mabi=n32 "*) mips_cc_abi=n32 ;;
392 *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;;
393 *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;;
394 *) mips_cc_abi=default ;;
397 *abin32*) mips_config_abi=n32 ;;
398 *abi64*|*abin64*) mips_config_abi=64 ;;
399 *abi32*|*abio32*) mips_config_abi=32 ;;
400 *) mips_config_abi=$mips_cc_abi ;;
402 case $mips_config_abi in
403 default) machine=mips/mips64/n32 mips_config_abi=n32 ;;
404 n32) machine=mips/mips64/n32 ;;
405 64) machine=mips/mips64/n64 ;;
406 32) machine=mips/mips32/kern64 ;;
408 machine=$machine/$config_machine
409 if test $mips_config_abi != $mips_cc_abi; then
410 # This won't make it to config.make, but we want to
411 # set this in case configure tests depend on it.
412 CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi"
415 mips*) base_machine=mips machine=mips/mips32/$machine ;;
416 powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;;
417 powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;;
418 s390) base_machine=s390 machine=s390/s390-32 ;;
419 s390x) base_machine=s390 machine=s390/s390-64 ;;
420 sh3*) base_machine=sh machine=sh/sh3 ;;
421 sh4*) base_machine=sh machine=sh/sh4 ;;
423 base_machine=sparc machine=sparc/sparc32 ;;
424 sparcv8 | supersparc | hypersparc)
425 base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
426 sparcv8plus | sparcv8plusa | sparcv9)
427 base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
428 sparcv8plusb | sparcv9b)
429 base_machine=sparc machine=sparc/sparc32/sparcv9b ;;
430 sparc64 | ultrasparc)
431 base_machine=sparc machine=sparc/sparc64 ;;
432 sparc64b | ultrasparc3)
433 base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
434 thumb*) base_machine=thumb machine=arm/thumb/$machine ;;
435 *) base_machine=$machine ;;
438 AC_SUBST(base_machine)
440 if test "$base_machine" = "i386"; then
441 AC_DEFINE(USE_REGPARMS)
444 # Compute the list of sysdep directories for this configuration.
445 # This can take a while to compute.
446 sysdep_dir=$srcdir/sysdeps
447 AC_MSG_CHECKING(sysdep dirs)
448 dnl We need to use [ and ] for other purposes for a while now.
450 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
451 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
456 netbsd* | 386bsd* | freebsd* | bsdi*)
457 base_os=unix/bsd/bsd4.4 ;;
458 osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
460 sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
463 base_os=unix/sysv/irix6/$os ;;
465 base_os=unix/sysv/sysv4 ;;
467 base_os=unix/sysv/hpux/$os ;;
469 base_os=unix/sysv/aix/aix4.3 ;;
471 base_os=standalone ;;
476 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
479 while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
483 o=`echo $tail | sed 's/[0-9]*$//'`
484 if test $o != $tail; then
487 # For linux-gnu, try linux-gnu, then linux.
488 o=`echo $tail | sed 's/-.*$//'`
489 if test $o != $tail; then
493 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
496 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
502 # For sparc/sparc32, try sparc/sparc32 and then sparc.
505 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
507 # Prepend the machine's FPU directory unless --without-fp.
508 if test "$with_fp" = yes; then
511 mach="$mach /$1/nofpu"
517 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
520 # Find what sysdep directories exist.
522 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
523 for d in $add_ons_pfx ''; do
524 for b in $base ''; do
525 for m0 in $mach ''; do
526 for v in /$vendor ''; do
527 test "$v" = / && continue
528 for o in /$ostry ''; do
529 test "$o" = / && continue
530 for m in $mach ''; do
531 if test "$m0$b$v$o$m"; then
532 try="${d}sysdeps$m0$b$v$o$m"
533 test -n "$enable_debug_configure" &&
534 echo "$0 [DEBUG]: try $try" >&2
535 if test -d $srcdir/$try; then
536 sysnames="$sysnames $try"
537 { test -n "$o" || test -n "$b"; } && os_used=t
538 { test -n "$m" || test -n "$m0"; } && machine_used=t
549 if test -z "$os_used" && test "$os" != none; then
550 AC_MSG_ERROR(Operating system $os is not supported.)
552 if test -z "$machine_used" && test "$machine" != none; then
553 AC_MSG_ERROR(The $machine is not supported.)
556 # We have now validated the configuration.
559 # If using ELF, look for an `elf' subdirectory of each machine directory.
560 # We prepend these rather than inserting them whereever the machine appears
561 # because things specified by the machine's ELF ABI should override
562 # OS-specific things, and should always be the same for any OS on the
563 # machine (otherwise what's the point of an ABI?).
564 if test "$elf" = yes; then
566 for d in $add_ons_pfx ''; do
568 if test -d $srcdir/${d}sysdeps$m/elf; then
569 elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
573 sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
577 # Expand the list of system names into a full list of directories
578 # from each element's parent name and Implies file (if present).
581 while test $# -gt 0; do
585 case " $names " in *" $name "*)
586 # Already in the list.
590 # Report each name as we discover it, so there is no long pause in output.
591 echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
593 name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
597 *) xsrcdir=$srcdir/ ;;
599 test -n "$enable_debug_configure" &&
600 echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
602 if test -f $xsrcdir$name/Implies; then
603 # Collect more names from the `Implies' file (removing comments).
604 implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
606 for x in $implied_candidate; do
608 if test -d $xsrcdir$name_base/$x; then
609 implied="$implied $name_base/$x";
612 for d in $add_ons_pfx ''; do
616 *) try_srcdir=$srcdir/ ;;
618 test -n "$enable_debug_configure" &&
619 echo "[DEBUG]: $name implied $x try($d) {$try_srcdir}$try" >&2
620 if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
622 implied="$implied $try"
626 if test $found = no; then
627 AC_MSG_WARN($name/Implies specifies nonexistent $x)
634 # Add NAME to the list of names.
637 # Find the parent of NAME, using the empty string if it has none.
639 parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
642 # Add the names implied by NAME, and NAME's parent (if it has one), to
643 # the list of names to be processed (the argument list). We prepend the
644 # implied names to the list and append the parent. We want implied
645 # directories to come before further directories inferred from the
646 # configuration components; this ensures that for sysv4, unix/common
647 # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
649 sysnames="`echo $implied $* $parent`"
650 test -n "$sysnames" && set $sysnames
653 # Add the default directories.
654 default_sysnames=sysdeps/generic
655 if test "$elf" = yes; then
656 default_sysnames="sysdeps/generic/elf $default_sysnames"
658 sysnames="$names $default_sysnames"
660 # The other names were emitted during the scan.
661 AC_MSG_RESULT($default_sysnames)
667 if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
668 # The makefiles need to use a different form to find it in $srcdir.
669 INSTALL='\$(..)./scripts/install-sh -c'
674 if test $host != $build; then
675 AC_CHECK_PROGS(BUILD_CC, gcc cc)
677 AC_SUBST(cross_compiling)
679 # We need the C++ compiler only for testing.
682 AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
684 # Accept binutils 2.13 or newer.
685 AC_CHECK_PROG_VER(AS, $AS, --version,
686 [GNU assembler.* \([0-9]*\.[0-9.]*\)],
687 [2.1[3-9]*], AS=: critic_missing="$critic_missing as")
688 AC_CHECK_PROG_VER(LD, $LD, --version,
689 [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
690 [2.1[3-9]*], LD=: critic_missing="$critic_missing ld")
692 # We need the physical current working directory. We cannot use the
693 # "pwd -P" shell builtin since that's not portable. Instead we try to
694 # find a pwd binary. Note that assigning to the PWD environment
695 # variable might have some interesting side effects, so we don't do
697 AC_PATH_PROG(PWD_P, pwd, no)
698 if test "$PWD_P" = no; then
699 AC_MSG_ERROR(*** A pwd binary could not be found.)
702 # These programs are version sensitive.
704 AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
705 [version \([egcygnustpi-]*[0-9.]*\)], [3.[2-9]*],
706 critic_missing="$critic_missing gcc")
707 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
708 [GNU Make[^0-9]*\([0-9][0-9.]*\)],
709 [3.79* | 3.[89]*], critic_missing="$critic_missing make")
711 AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
712 [GNU gettext.* \([0-9]*\.[0-9.]*\)],
713 [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
714 MSGFMT=: aux_missing="$aux_missing msgfmt")
715 AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
716 [GNU texinfo.* \([0-9][0-9.]*\)],
718 MAKEINFO=: aux_missing="$aux_missing makeinfo")
719 AC_CHECK_PROG_VER(SED, sed, --version,
720 [GNU sed version \([0-9]*\.[0-9.]*\)],
721 [3.0[2-9]*|3.[1-9]*|[4-9]*],
722 SED=: aux_missing="$aux_missing sed")
724 if test "x$with_cvs" != xyes; then
725 AC_CHECK_PROGS(AUTOCONF, autoconf, no)
727 xno|x|x:) AUTOCONF=no ;;
730 whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
731 if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
732 libc_cv_autoconf_works=yes
734 libc_cv_autoconf_works=no
736 test $libc_cv_autoconf_works = yes || AUTOCONF=no
739 test "x$AUTOCONF" != xno || aux_missing="$aux_missing autoconf"
742 test -n "$critic_missing" && AC_MSG_ERROR([
743 *** These critical programs are missing or too old:$critic_missing
744 *** Check the INSTALL file for required versions.])
746 test -n "$aux_missing" && AC_MSG_WARN([
747 *** These auxiliary programs are missing or incompatible versions:$aux_missing
748 *** some features will be disabled.
749 *** Check the INSTALL file for required versions.])
751 # glibcbug.in wants to know the compiler version.
752 CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'`
755 # if using special system headers, find out the compiler's sekrit
756 # header directory and add that to the list. NOTE: Only does the right
757 # thing on a system that doesn't need fixincludes. (Not presently a problem.)
758 if test -n "$sysheaders"; then
759 ccheaders=`$CC -print-file-name=include`
760 SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $sysheaders"
762 AC_SUBST(SYSINCLUDES)
764 # check if ranlib is necessary
765 AC_CACHE_CHECK(whether ranlib is necessary, libc_cv_ranlib_necessary, [dnl
766 cat > conftest.c <<EOF
771 $CC $CFLAGS $CPPFLAGS -c conftest.c
772 $AR cr conftest.a conftest.o
773 cp conftest.a conftest2.a
775 if cmp -s conftest.a conftest2.a; then
776 libc_cv_ranlib_necessary=no
778 libc_cv_ranlib_necessary=yes
781 if test "$libc_cv_ranlib_necessary" = no; then
785 # Test if LD_LIBRARY_PATH contains the notation for the current directory
786 # since this would lead to problems installing/building glibc.
787 # LD_LIBRARY_PATH contains the current directory if one of the following
789 # - one of the terminals (":" and ";") is the first or last sign
790 # - two terminals occur directly after each other
791 # - the path contains an element with a dot in it
792 AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
794 case ${LD_LIBRARY_PATH} in
795 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
796 ld_library_path_setting="contains current directory"
799 ld_library_path_setting="ok"
803 AC_MSG_RESULT($ld_library_path_setting)
804 if test "$ld_library_path_setting" != "ok"; then
806 *** LD_LIBRARY_PATH shouldn't contain the current directory when
807 *** building glibc. Please change the environment variable
808 *** and run configure again.])
811 AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
812 if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
813 libc_cv_gcc_static_libgcc=
815 libc_cv_gcc_static_libgcc=-static-libgcc
817 AC_SUBST(libc_cv_gcc_static_libgcc)
819 AC_PATH_PROG(BASH, bash, no)
820 if test "$BASH" != no &&
821 $BASH -c 'test "$BASH_VERSINFO" \
822 && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
823 libc_cv_have_bash2=yes
825 libc_cv_have_bash2=no
827 AC_SUBST(libc_cv_have_bash2)
829 dnl We need a ksh compatible shell for tzselect.
830 if test "$BASH" = no; then
831 AC_PATH_PROG(KSH, ksh, no)
832 if test "$KSH" = no; then
842 AC_SUBST(libc_cv_have_ksh)
845 AC_PATH_PROG(PERL, perl, no)
846 if test "$PERL" != no &&
847 (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
850 AC_PATH_PROG(INSTALL_INFO, install-info, no,
851 $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
852 if test "$INSTALL_INFO" != "no"; then
853 AC_CACHE_CHECK(for old Debian install-info, libc_cv_old_debian_install_info,
855 # There is a hard ^_ on the next line. I am open to better ideas.
857 echo 'File: dir Node: Top This is the top of the INFO tree'
858 echo '* Menu:') >conftest.d/dir
859 (echo 'INFO-DIR-SECTION i-d-s works'
860 echo 'START-INFO-DIR-ENTRY'
861 echo '* Prog: (prog). Program.'
862 echo 'END-INFO-DIR-ENTRY') >conftest.d/prog.info
863 if $INSTALL_INFO --info-dir=conftest.d conftest.d/prog.info >&AS_MESSAGE_LOG_FD 2>&1
865 if grep -s 'i-d-s works' conftest.d/dir >/dev/null
866 then libc_cv_old_debian_install_info=no
867 else libc_cv_old_debian_install_info=yes
869 else libc_cv_old_debian_install_info=no testfailed=t
872 if test -n "$testfailed"
873 then AC_MSG_WARN([install-info errored out, check config.log])
875 OLD_DEBIAN_INSTALL_INFO=$libc_cv_old_debian_install_info
877 AC_SUBST(OLD_DEBIAN_INSTALL_INFO)
879 AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
881 AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
882 echo '#include <stddef.h>
883 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
884 if eval "$ac_cpp conftest.c 2>/dev/null" \
885 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
886 libc_cv_signed_size_t=no
888 libc_cv_signed_size_t=yes
891 if test $libc_cv_signed_size_t = yes; then
892 dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
893 cat >> confdefs.h <<\EOF
895 #define __SIZE_TYPE__ unsigned
899 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
901 [#define __need_size_t
902 #define __need_wchar_t
905 #include <stddef.h>], [size_t size; wchar_t wchar;
907 #error stddef.h ignored __need_*
909 if (&size == NULL || &wchar == NULL) abort ();],
910 libc_cv_friendly_stddef=yes,
911 libc_cv_friendly_stddef=no)])
912 if test $libc_cv_friendly_stddef = yes; then
913 config_vars="$config_vars
914 override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
917 AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
918 libc_cv_need_minus_P, [dnl
919 cat > conftest.S <<EOF
920 #include "confdefs.h"
921 /* Nothing whatsoever. */
923 if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
924 libc_cv_need_minus_P=no
926 libc_cv_need_minus_P=yes
929 if test $libc_cv_need_minus_P = yes; then
930 config_vars="$config_vars
931 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
934 AC_MSG_CHECKING(whether .text pseudo-op must be used)
935 AC_CACHE_VAL(libc_cv_dot_text, [dnl
936 cat > conftest.s <<EOF
940 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
941 libc_cv_dot_text=.text
944 if test -z "$libc_cv_dot_text"; then
950 AC_CACHE_CHECK(for assembler global-symbol directive,
951 libc_cv_asm_global_directive, [dnl
952 libc_cv_asm_global_directive=UNKNOWN
953 for ac_globl in .globl .global .EXPORT; do
954 cat > conftest.s <<EOF
959 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
960 libc_cv_asm_global_directive=${ac_globl}
963 test $libc_cv_asm_global_directive != UNKNOWN && break
965 if test $libc_cv_asm_global_directive = UNKNOWN; then
966 AC_MSG_ERROR(cannot determine asm global directive)
968 AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
971 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
972 cat > conftest.s <<EOF
975 .set glibc_conftest_frobozz,foo
976 $libc_cv_asm_global_directive glibc_conftest_frobozz
978 # The alpha-dec-osf1 assembler gives only a warning for `.set'
979 # (but it doesn't work), so we must do a linking check to be sure.
980 cat > conftest1.c <<\EOF
981 extern int glibc_conftest_frobozz;
982 void _start() { glibc_conftest_frobozz = 1; }
984 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
985 -nostartfiles -nostdlib \
986 -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
987 libc_cv_asm_set_directive=yes
989 libc_cv_asm_set_directive=no
992 if test $libc_cv_asm_set_directive = yes; then
993 AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
996 AC_CACHE_CHECK(for assembler .type directive prefix,
997 libc_cv_asm_type_prefix, [dnl
998 libc_cv_asm_type_prefix=no
999 for ac_try_prefix in '@' '%' '#'; do
1000 cat > conftest.s <<EOF
1002 ${libc_cv_asm_global_directive} foo
1003 .type foo, ${ac_try_prefix}object
1008 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1009 libc_cv_asm_type_prefix=${ac_try_prefix}
1012 test "x$libc_cv_asm_type_prefix" != xno && break
1014 if test "x$libc_cv_asm_type_prefix" != xno; then
1015 AC_DEFINE_UNQUOTED(ASM_TYPE_DIRECTIVE_PREFIX, ${libc_cv_asm_type_prefix})
1018 # The Aix ld uses global .symbol_names instead of symbol_names.
1019 # Unfortunately also used in the PPC64 ELF ABI.
1020 case "${os}${machine}" in
1021 aix4.3* | linux*powerpc/powerpc64*)
1022 AC_DEFINE(HAVE_ASM_GLOBAL_DOT_NAME)
1025 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
1026 [cat > conftest.s <<EOF
1029 .symver _sym,sym@VERS
1031 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1032 libc_cv_asm_symver_directive=yes
1034 libc_cv_asm_symver_directive=no
1037 AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
1038 if test $libc_cv_asm_symver_directive = yes; then
1039 cat > conftest.s <<EOF
1042 .symver _sym,sym@VERS
1044 cat > conftest.map <<EOF
1053 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1054 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
1055 -o conftest.so conftest.o
1056 -nostartfiles -nostdlib
1057 -Wl,--version-script,conftest.map
1058 1>&AS_MESSAGE_LOG_FD]);
1060 libc_cv_ld_version_script_option=yes
1062 libc_cv_ld_version_script_option=no
1065 libc_cv_ld_version_script_option=no
1068 libc_cv_ld_version_script_option=no
1071 if test $shared != no &&
1072 test $libc_cv_asm_symver_directive = yes &&
1073 test $libc_cv_ld_version_script_option = yes &&
1074 test $enable_versioning = yes; then
1076 AC_DEFINE(DO_VERSIONING)
1080 AC_SUBST(VERSIONING)
1082 if test $elf = yes && test $shared != no && test $VERSIONING = no; then
1084 *** WARNING: You should not compile GNU libc without versioning. Not using
1085 *** versioning will introduce incompatibilities so that old binaries
1086 *** will not run anymore.
1087 *** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
1089 if test $elf = yes; then
1090 AC_CACHE_CHECK(for .previous assembler directive,
1091 libc_cv_asm_previous_directive, [dnl
1092 cat > conftest.s <<EOF
1093 .section foo_section
1096 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1097 libc_cv_asm_previous_directive=yes
1099 libc_cv_asm_previous_directive=no
1102 if test $libc_cv_asm_previous_directive = yes; then
1103 AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
1105 AC_CACHE_CHECK(for .popsection assembler directive,
1106 libc_cv_asm_popsection_directive, [dnl
1107 cat > conftest.s <<EOF
1108 .pushsection foo_section
1111 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1112 libc_cv_asm_popsection_directive=yes
1114 libc_cv_asm_popsection_directive=no
1117 if test $libc_cv_asm_popsection_directive = yes; then
1118 AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
1121 AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1122 libc_cv_asm_protected_directive, [dnl
1123 cat > conftest.s <<EOF
1129 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1130 libc_cv_asm_protected_directive=yes
1132 libc_cv_asm_protected_directive=no
1135 AC_SUBST(libc_cv_asm_protected_directive)
1136 AC_DEFINE(HAVE_PROTECTED)
1137 AC_DEFINE(HAVE_HIDDEN)
1139 if test $libc_cv_asm_protected_directive = yes; then
1140 AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
1141 libc_cv_visibility_attribute,
1142 [cat > conftest.c <<EOF
1143 int foo __attribute__ ((visibility ("hidden"))) = 1;
1144 int bar __attribute__ ((visibility ("protected"))) = 1;
1146 libc_cv_visibility_attribute=no
1147 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1148 if grep '\.hidden.*foo' conftest.s >/dev/null; then
1149 if grep '\.protected.*bar' conftest.s >/dev/null; then
1150 libc_cv_visibility_attribute=yes
1156 if test $libc_cv_visibility_attribute = yes; then
1157 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
1161 if test $libc_cv_visibility_attribute = yes; then
1162 AC_CACHE_CHECK(for broken __attribute__((visibility())),
1163 libc_cv_broken_visibility_attribute,
1164 [cat > conftest.c <<EOF
1166 int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1167 int bar (int x) { return x; }
1169 libc_cv_broken_visibility_attribute=yes
1170 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s1>&AS_MESSAGE_LOG_FD); then
1172 if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
1174 libc_cv_broken_visibility_attribute=no
1177 rm -f conftest.c conftest.s
1179 if test $libc_cv_broken_visibility_attribute = yes; then
1180 AC_DEFINE(HAVE_BROKEN_VISIBILITY_ATTRIBUTE)
1184 AC_CACHE_CHECK(for broken __attribute__((alias())),
1185 libc_cv_broken_alias_attribute,
1186 [cat > conftest.c <<EOF
1187 extern int foo (int x) __asm ("xyzzy");
1188 int bar (int x) { return x; }
1189 extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1191 extern __typeof (dfoo) dfoo __asm ("abccb");
1194 libc_cv_broken_alias_attribute=yes
1195 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1196 if grep 'xyzzy' conftest.s >/dev/null &&
1197 grep 'abccb' conftest.s >/dev/null; then
1198 libc_cv_broken_alias_attribute=no
1201 rm -f conftest.c conftest.s
1203 if test $libc_cv_broken_alias_attribute = yes; then
1204 AC_DEFINE(HAVE_BROKEN_ALIAS_ATTRIBUTE)
1207 if test $libc_cv_visibility_attribute = yes -a $gnu_ld = yes; then
1208 AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1209 libc_cv_have_sdata_section,
1210 [echo "int i;" > conftest.c
1211 libc_cv_have_sdata_section=no
1212 if ${CC-cc} $LDFLAGS -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1213 | grep '\.sdata' >/dev/null; then
1214 libc_cv_have_sdata_section=yes
1216 rm -f conftest.c conftest.so
1218 if test $libc_cv_have_sdata_section = yes; then
1219 AC_DEFINE(HAVE_SDATA_SECTION)
1223 AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1224 libc_cv_initfinit_array, [dnl
1225 cat > conftest.c <<EOF
1226 int _start (void) { return 0; }
1227 int __start (void) { return 0; }
1228 int foo (void) { return 1; }
1229 int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
1231 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c
1232 -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
1234 if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
1235 libc_cv_initfinit_array=yes
1237 libc_cv_initfinit_array=no
1240 libc_cv_initfinit_array=no
1243 AC_SUBST(libc_cv_initfinit_array)
1244 if test $libc_cv_initfinit_array = yes; then
1245 AC_DEFINE(HAVE_INITFINI_ARRAY)
1248 AC_CACHE_CHECK(for -z nodelete option,
1249 libc_cv_z_nodelete, [dnl
1250 cat > conftest.c <<EOF
1251 int _start (void) { return 42; }
1253 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1254 -shared -o conftest.so conftest.c
1255 -nostartfiles -nostdlib
1256 -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
1258 libc_cv_z_nodelete=yes
1260 libc_cv_z_nodelete=no
1263 AC_SUBST(libc_cv_z_nodelete)
1265 AC_CACHE_CHECK(for -z nodlopen option,
1266 libc_cv_z_nodlopen, [dnl
1267 cat > conftest.c <<EOF
1268 int _start (void) { return 42; }
1270 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1271 -shared -o conftest.so conftest.c
1272 -nostartfiles -nostdlib
1273 -Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
1275 libc_cv_z_nodlopen=yes
1277 libc_cv_z_nodlopen=no
1280 AC_SUBST(libc_cv_z_nodlopen)
1282 AC_CACHE_CHECK(for -z initfirst option,
1283 libc_cv_z_initfirst, [dnl
1284 cat > conftest.c <<EOF
1285 int _start (void) { return 42; }
1287 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1288 -shared -o conftest.so conftest.c
1289 -nostartfiles -nostdlib
1290 -Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
1292 libc_cv_z_initfirst=yes
1294 libc_cv_z_initfirst=no
1297 AC_SUBST(libc_cv_z_initfirst)
1299 AC_CACHE_CHECK(for -Bgroup option,
1300 libc_cv_Bgroup, [dnl
1301 cat > conftest.c <<EOF
1302 int _start (void) { return 42; }
1304 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1305 -shared -o conftest.so conftest.c
1306 -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1313 AC_SUBST(libc_cv_Bgroup)
1315 AC_CACHE_CHECK(for -z combreloc,
1316 libc_cv_z_combreloc, [dnl
1317 cat > conftest.c <<EOF
1318 extern int bar (int);
1320 int foo (void) { return bar (mumble); }
1322 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1323 -shared -o conftest.so conftest.c
1324 -nostdlib -nostartfiles
1325 -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
1327 dnl The following test is a bit weak. We must use a tool which can test
1328 dnl cross-platform since the gcc used can be a cross compiler. Without
1329 dnl introducing new options this is not easily doable. Instead use a tool
1330 dnl which always is cross-platform: readelf. To detect whether -z combreloc
1331 dnl look for a section named .rel.dyn.
1332 if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1333 libc_cv_z_combreloc=yes
1335 libc_cv_z_combreloc=no
1338 libc_cv_z_combreloc=no
1341 if test "$libc_cv_z_combreloc" = yes; then
1342 AC_DEFINE(HAVE_Z_COMBRELOC)
1345 AC_SUBST(libc_cv_z_combreloc)
1347 if test $elf != yes; then
1348 AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
1349 [AC_TRY_COMPILE(, [asm (".section .init");
1350 asm (".section .fini");
1351 asm ("${libc_cv_dot_text}");],
1352 libc_cv_have_initfini=yes,
1353 libc_cv_have_initfini=no)])
1354 AC_SUBST(libc_cv_have_initfini)dnl
1355 if test $libc_cv_have_initfini = yes; then
1356 AC_DEFINE(HAVE_INITFINI)
1360 if test $elf = yes -a $gnu_ld = yes; then
1361 AC_CACHE_CHECK(whether cc puts quotes around section names,
1362 libc_cv_have_section_quotes,
1363 [cat > conftest.c <<EOF
1364 static const int foo
1365 __attribute__ ((section ("bar"))) = 1;
1367 if ${CC-cc} -S conftest.c -o conftest.s; then
1368 if grep '\.section.*"bar"' conftest.s >/dev/null; then
1369 libc_cv_have_section_quotes=yes
1371 libc_cv_have_section_quotes=no
1374 libc_cv_have_section_quotes=unknown
1378 if test $libc_cv_have_section_quotes = yes; then
1379 AC_DEFINE(HAVE_SECTION_QUOTES)
1383 dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
1384 AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
1385 [cat > conftest.$ac_ext <<EOF
1386 dnl This sometimes fails to find confdefs.h, for some reason.
1387 dnl [#]line __oline__ "[$]0"
1388 [#]line __oline__ "configure"
1389 #include "confdefs.h"
1390 void underscore_test(void) {
1393 if AC_TRY_EVAL(ac_compile); then
1394 if grep _underscore_test conftest* >/dev/null; then
1395 ifelse([$1], , :, [rm -f conftest*
1398 ifelse([$2], , , [rm -f conftest*
1402 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
1403 cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
1404 ifelse([$2], , , [rm -f conftest*
1409 if test $elf = yes; then
1410 libc_cv_asm_underscores=no
1412 if test $ac_cv_prog_cc_works = yes; then
1413 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1414 [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
1415 libc_cv_asm_underscores=yes,
1416 libc_cv_asm_underscores=no)])
1418 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1419 [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
1420 libc_cv_asm_underscores=no)])
1423 if test $libc_cv_asm_underscores = no; then
1424 AC_DEFINE(NO_UNDERSCORES)
1427 if test $elf = yes; then
1428 libc_cv_weak_symbols=yes
1431 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1433 cat > conftest.s <<EOF
1435 ${libc_cv_asm_global_directive} foo
1438 .weak bar; bar = foo
1440 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1441 libc_cv_asm_weak_directive=yes
1443 libc_cv_asm_weak_directive=no
1447 if test $libc_cv_asm_weak_directive = no; then
1448 AC_CACHE_CHECK(for assembler .weakext directive,
1449 libc_cv_asm_weakext_directive,
1451 cat > conftest.s <<EOF
1453 ${libc_cv_asm_global_directive} foo
1457 ${libc_cv_asm_global_directive} baz
1460 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1461 libc_cv_asm_weakext_directive=yes
1463 libc_cv_asm_weakext_directive=no
1469 if test $libc_cv_asm_weak_directive = yes; then
1470 AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1471 elif test $libc_cv_asm_weakext_directive = yes; then
1472 AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1475 dnl The standard hppa assembler uses `;' to start comments and `!'
1476 dnl as a line separator. CRIS uses `;' to start comments and `@' for
1478 case "${host_cpu}-${host_os}" in
1480 libc_cv_asm_line_sep='@'
1481 AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1484 AC_CACHE_CHECK(for assembler line separator,
1485 libc_cv_asm_line_sep, [dnl
1486 cat > conftest.s <<EOF
1489 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1490 libc_cv_asm_line_sep='!'
1492 if test -z "$enable_hacker_mode"; then
1493 echo "*** You need a newer assembler to compile glibc"
1497 libc_cv_asm_line_sep=';'
1500 AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1504 AC_CACHE_CHECK(if -g produces usable source locations for assembler-with-cpp,
1505 libc_cv_cpp_asm_debuginfo, [dnl
1506 cat > conftest.S <<EOF
1507 #include "confdefs.h"
1512 ${libc_cv_asm_global_directive} foo
1514 /* Unfortunately this test only works for a real instruction,
1515 not for any of the machine-independent pseudo-ops.
1516 So we just have to assume everybody has a "nop". */
1523 if AC_TRY_COMMAND([${CC-cc} $CPPFLAGS $ASFLAGS -g -c conftest.S 1>&AS_MESSAGE_LOG_FD]) &&
1524 ac_pattern='conftest\.S'
1525 AC_TRY_COMMAND([readelf --debug-dump=line conftest.o |
1526 grep $ac_pattern 1>&AS_MESSAGE_LOG_FD]); then
1527 libc_cv_cpp_asm_debuginfo=yes
1529 libc_cv_cpp_asm_debuginfo=no
1531 rm -f conftest*])AC_SUBST(libc_cv_cpp_asm_debuginfo)
1532 if test $libc_cv_cpp_asm_debuginfo = yes; then
1533 AC_DEFINE(HAVE_CPP_ASM_DEBUGINFO)
1536 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1537 cat > conftest.c <<\EOF
1542 dnl No \ in command here because it ends up inside ''.
1543 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1544 -nostdlib -nostartfiles -Wl,--no-whole-archive
1545 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1546 libc_cv_ld_no_whole_archive=yes
1548 libc_cv_ld_no_whole_archive=no
1551 if test $libc_cv_ld_no_whole_archive = yes; then
1552 no_whole_archive=-Wl,--no-whole-archive
1554 AC_SUBST(no_whole_archive)dnl
1556 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1557 cat > conftest.c <<\EOF
1562 dnl No \ in command here because it ends up inside ''.
1563 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1564 -nostdlib -nostartfiles -fexceptions
1565 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1566 libc_cv_gcc_exceptions=yes
1568 libc_cv_gcc_exceptions=no
1571 if test $libc_cv_gcc_exceptions = yes; then
1572 exceptions=-fexceptions
1574 AC_SUBST(exceptions)dnl
1576 if test "$host_cpu" = powerpc ; then
1577 # Check for a bug present in at least versions 2.8.x of GCC
1578 # and versions 1.0.x of EGCS.
1579 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1580 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1581 libc_cv_c_asmcr0_bug='no',
1582 libc_cv_c_asmcr0_bug='yes')])
1583 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1584 AC_DEFINE(BROKEN_PPC_ASM_CR0)
1588 AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
1589 [cat > conftest.c <<EOF
1590 #line __oline__ "configure"
1591 static char *__EH_FRAME_BEGIN__;
1594 #ifdef CHECK__register_frame
1595 __register_frame (__EH_FRAME_BEGIN__);
1596 __deregister_frame (__EH_FRAME_BEGIN__);
1598 #ifdef CHECK__register_frame_info
1599 __register_frame_info (__EH_FRAME_BEGIN__);
1600 __deregister_frame_info (__EH_FRAME_BEGIN__);
1605 /* FIXME: this is fragile. */
1614 dl_iterate_phdr () {}
1616 libc_unwind_check="${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame_info \
1618 -nostdlib -nostartfiles -o conftest conftest.c \
1620 # Some platforms' specs put -lgcc first. The second one doesn't hurt.
1621 if AC_TRY_COMMAND([$libc_unwind_check >&AS_MESSAGE_LOG_FD]) ||
1622 AC_TRY_COMMAND([$libc_unwind_check -lgcc_eh -lgcc >&AS_MESSAGE_LOG_FD])
1624 if $libc_unwind_check -v 2>&1 >/dev/null \
1625 | grep -q -- --eh-frame-hdr; then
1626 libc_cv_gcc_dwarf2_unwind_info=no_registry_needed
1628 libc_cv_gcc_dwarf2_unwind_info=static
1631 libc_cv_gcc_dwarf2_unwind_info=no
1633 if test $libc_cv_gcc_dwarf2_unwind_info = no; then
1634 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame
1635 $LDFLAGS -nostdlib -nostartfiles
1636 -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1637 libc_cv_gcc_dwarf2_unwind_info=yes
1639 libc_cv_gcc_dwarf2_unwind_info=no
1643 case $libc_cv_gcc_dwarf2_unwind_info in
1645 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1648 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1649 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
1653 dnl Check whether compiler understands __builtin_expect.
1654 AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
1655 [cat > conftest.c <<EOF
1656 #line __oline__ "configure"
1659 a = __builtin_expect (a, 10);
1660 return a == 10 ? 0 : 1;
1663 dnl No \ in command here because it ends up inside ''.
1664 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
1665 -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1666 libc_cv_gcc_builtin_expect=yes
1668 libc_cv_gcc_builtin_expect=no
1671 if test "$libc_cv_gcc_builtin_expect" = yes; then
1672 AC_DEFINE(HAVE_BUILTIN_EXPECT)
1675 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1676 cat > conftest.c <<\EOF
1679 __builtin_memset (x, 0, 1000);
1683 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1685 libc_cv_gcc_builtin_memset=no
1687 libc_cv_gcc_builtin_memset=yes
1690 if test "$libc_cv_gcc_builtin_memset" = yes ; then
1691 AC_DEFINE(HAVE_BUILTIN_MEMSET)
1694 dnl Check whether the compiler supports subtraction of local labels.
1695 AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
1696 [cat > conftest.c <<EOF
1698 #line __oline__ "configure"
1701 static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
1702 void *p = &&l1 + ar[a];
1711 dnl No \ in command here because it ends up inside ''.
1712 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
1713 -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1714 libc_cv_gcc_subtract_local_labels=yes
1716 libc_cv_gcc_subtract_local_labels=no
1719 if test "$libc_cv_gcc_subtract_local_labels" = yes; then
1720 AC_DEFINE(HAVE_SUBTRACT_LOCAL_LABELS)
1723 dnl Check whether the compiler supports the __thread keyword.
1724 if test "x$use__thread" != xno; then
1725 AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1726 [cat > conftest.c <<\EOF
1727 __thread int a = 42;
1729 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
1730 libc_cv_gcc___thread=yes
1732 libc_cv_gcc___thread=no
1735 if test "$libc_cv_gcc___thread" = yes; then
1736 AC_DEFINE(HAVE___THREAD)
1739 libc_cv_gcc___thread=no
1742 if test "$libc_cv_gcc___thread" = yes; then
1743 dnl Check whether the compiler supports the tls_model attribute.
1744 AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1745 cat > conftest.c <<\EOF
1746 extern __thread int a __attribute__((tls_model ("initial-exec")));
1748 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
1749 libc_cv_gcc_tls_model_attr=yes
1751 libc_cv_gcc_tls_model_attr=no
1754 if test "$libc_cv_gcc_tls_model_attr" = yes; then
1755 AC_DEFINE(HAVE_TLS_MODEL_ATTRIBUTE)
1759 dnl Check whether we have the gd library available.
1760 AC_MSG_CHECKING(for libgd)
1761 if test "$with_gd" != "no"; then
1762 old_CFLAGS="$CFLAGS"
1763 CFLAGS="$CFLAGS $libgd_include"
1764 old_LDFLAGS="$LDFLAGS"
1765 LDFLAGS="$LDFLAGS $libgd_ldflags"
1767 LIBS="$LIBS -lgd -lpng -lz -lm"
1768 AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1769 CFLAGS="$old_CFLAGS"
1770 LDFLAGS="$old_LDFLAGS"
1775 AC_MSG_RESULT($LIBGD)
1778 dnl check for the size of 'long double'.
1779 AC_CHECK_SIZEOF(long double, 0)
1780 sizeof_long_double=$ac_cv_sizeof_long_double
1781 AC_SUBST(sizeof_long_double)
1783 ### End of automated tests.
1784 ### Now run sysdeps configure fragments.
1786 # They also can set these variables.
1788 ldd_rewrite_script=no
1789 libc_cv_sysconfdir=$sysconfdir
1790 libc_cv_gcc_unwind_find_fde=no
1792 # Iterate over all the sysdep directories we will use, running their
1793 # configure fragments, and looking for a uname implementation.
1795 for dir in $sysnames; do
1798 *) dest=$srcdir/$dir ;;
1800 if test -r $dest/configure; then
1801 AC_MSG_RESULT(running configure fragment for $dir)
1805 if test -z "$uname"; then
1806 if test -r $dest/uname.c ||
1807 test -r $dest/uname.S ||
1808 { test -r $dest/syscalls.list &&
1809 grep '^uname[ ]' $dest/syscalls.list >/dev/null; }; then
1816 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
1817 AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
1819 AC_SUBST(libc_cv_gcc_unwind_find_fde)
1821 # If we will use the generic uname implementation, we must figure out what
1822 # it will say by examining the system, and write the results in config-name.h.
1823 if test "$uname" = "sysdeps/generic"; then
1826 uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
1828 if test $uname_sysname != $config_os; then
1829 config_release=`echo $config_os | sed s/$uname_sysname//`
1832 AC_DEFUN(LIBC_KERNEL_ID, [dnl
1833 if test -r /vmunix; then
1834 kernel_id=`strings /vmunix | grep UNIX`
1835 elif test -r /dynix; then
1836 kernel_id=`strings /dynix | grep DYNIX`
1842 AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
1845 kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
1847 if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
1848 != x$config_release; then
1849 # The configuration release is a substring of the kernel release.
1850 libc_cv_uname_release=$kernel_release
1851 elif test x$config_release != x; then
1852 libc_cv_uname_release=$config_release
1853 elif test x$kernel_release != x; then
1854 libc_cv_uname_release=$kernel_release
1856 libc_cv_uname_release=unknown
1858 uname_release="$libc_cv_uname_release"
1860 AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
1863 kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
1865 if test -n "$kernel_version"; then
1866 libc_cv_uname_version="$kernel_version"
1868 libc_cv_uname_version=unknown
1870 uname_version="$libc_cv_uname_version"
1872 AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
1873 config_uname=config-name.h:config-name.in
1875 # For non-generic uname, we don't need to create config-name.h at all.
1879 dnl This is tested by existing code and it's simpler to avoid changing it.
1880 AC_DEFINE(USE_IN_LIBIO)
1882 # Test for old glibc 2.0.x headers so that they can be removed properly
1883 # Search only in includedir.
1884 AC_MSG_CHECKING(for old glibc 2.0.x headers)
1885 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
1887 old_glibc_headers=yes
1889 old_glibc_headers=no
1891 AC_MSG_RESULT($old_glibc_headers)
1892 if test ${old_glibc_headers} = yes; then
1893 AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
1894 AC_MSG_WARN(*** be removed.)
1896 AC_SUBST(old_glibc_headers)
1898 AC_SUBST(libc_cv_slibdir)
1899 AC_SUBST(libc_cv_localedir)
1900 AC_SUBST(libc_cv_sysconfdir)
1901 AC_SUBST(libc_cv_rootsbindir)
1903 AC_SUBST(use_ldconfig)
1904 AC_SUBST(ldd_rewrite_script)
1906 AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf) AC_SUBST(xcoff)
1907 if test $gnu_ld = yes; then
1908 AC_DEFINE(HAVE_GNU_LD)
1910 if test $gnu_as = yes; then
1911 AC_DEFINE(HAVE_GNU_AS)
1913 if test $elf = yes; then
1916 if test $xcoff = yes; then
1917 AC_DEFINE(HAVE_XCOFF)
1922 if test $shared = default; then
1923 if test $gnu_ld = yes; then
1926 # For now we do not assume shared libs are available. In future more
1927 # tests might become available.
1932 AC_CACHE_CHECK([whether -fPIC is default], pic_default,
1934 cat > conftest.c <<EOF
1935 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
1936 # error PIC is default.
1939 if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
1943 AC_SUBST(pic_default)
1948 AC_SUBST(static_nss)
1949 AC_SUBST(nopic_initfini)
1954 *door*) linux_doors=yes ;;
1955 *) linux_doors=no ;;
1957 AC_SUBST(linux_doors)
1959 dnl See sysdeps/mach/configure.in for this variable.
1960 AC_SUBST(mach_interface_list)
1962 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
1965 config_makefile=Makefile
1968 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
1969 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
1973 AC_CONFIG_FILES([config.make glibcbug ${config_makefile} ${config_uname}])
1974 AC_CONFIG_COMMANDS([default],[[
1975 case $CONFIG_FILES in *config.make*)
1976 echo "$config_vars" >> config.make;;
1978 test -d bits || mkdir bits]],[[config_vars='$config_vars']])