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([--disable-check-abi],
119 [omit "make check-abi" from "make check"]),
120 [enable_check_abi=$enableval],
121 [enable_check_abi=yes])
123 dnl Arguments to enable or disable building the static, shared, profiled,
124 dnl and -fomit-frame-pointer libraries.
125 dnl I've disabled this for now since we cannot build glibc without static
126 dnl libraries built in the moment.
127 dnl AC_ARG_ENABLE([static],
128 dnl AC_HELP_STRING([--enable-static],
129 dnl [build static library @<:@default=yes@:>@]),
130 dnl [static=$enableval],
133 AC_ARG_ENABLE([shared],
134 AC_HELP_STRING([--enable-shared],
135 [build shared library @<:@default=yes if GNU ld & ELF@:>@]),
138 AC_ARG_ENABLE([profile],
139 AC_HELP_STRING([--enable-profile],
140 [build profiled library @<:@default=yes@:>@]),
141 [profile=$enableval],
143 AC_ARG_ENABLE([omitfp],
144 AC_HELP_STRING([--enable-omitfp],
145 [build undebuggable optimized library @<:@default=no@:>@]),
148 AC_ARG_ENABLE([bounded],
149 AC_HELP_STRING([--enable-bounded],
150 [build with runtime bounds checking @<:@default=no@:>@]),
151 [bounded=$enableval],
153 AC_ARG_ENABLE([versioning],
154 AC_HELP_STRING([--disable-versioning],
155 [do not include versioning information in the library objects @<:@default=yes if supported@:>@]),
156 [enable_versioning=$enableval],
157 [enable_versioning=yes])
159 AC_ARG_ENABLE([oldest-abi],
160 AC_HELP_STRING([--enable-oldest-abi=ABI],
161 [configure the oldest ABI supported @<:@e.g. 2.2@:>@ @<:@default=glibc default@:>@]),
162 [oldest_abi=$enableval],
164 if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
167 AC_DEFINE_UNQUOTED(GLIBC_OLDEST_ABI, "$oldest_abi")
171 dnl Generic infrastructure for drop-in additions to libc.
172 AC_ARG_ENABLE([add-ons],
173 AC_HELP_STRING([--enable-add-ons@<:@=DIRS...@:>@],
174 [configure and build add-ons in DIR1,DIR2,... search for add-ons if no parameter given]),
175 [case "$enableval" in
176 yes) add_ons=`cd $srcdir && echo */configure | sed -e 's!/configure!!g'`
177 test "$add_ons" = "*" && add_ons= ;;
178 *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
182 dnl Let the user avoid using TLS. Don't know why but...
183 dnl XXX For now we disable support by default.
185 AC_HELP_STRING([--with-tls],
186 [enable support for TLS]),
190 AC_ARG_WITH([__thread],
191 AC_HELP_STRING([--without-__thread],
192 [do not use TLS features even when supporting them]),
193 [use__thread=$withval],
196 AC_ARG_ENABLE([hidden-plt],
197 AC_HELP_STRING([--disable-hidden-plt],
198 [do not hide internal function calls to avoid PLT]),
201 if test "x$hidden" = xno; then
205 AC_CONFIG_SUBDIRS([ ])dnl Bonehead new Autoconf whines if we do it cleanly.
207 if test x"$add_ons" != x; then
208 for f in $add_ons; do
210 if test "$f" = "crypt"; then
212 *** It seems that you're using an old \`crypt' add-on. crypt is now
213 *** part of glibc and using the old add-on will not work with this
214 *** release. Start again with fresh sources and without the old
215 *** \`crypt' add-on.])
217 if test "$f" = "localedata"; then
219 *** It seems that you're using an old \`localedata' add-on. localedata
220 *** is now part of glibc and using the old add-on will not work with
221 *** this release. Start again with fresh sources and without the old
222 *** \`localedata' add-on.])
224 # Test whether such a subdir really exists.
225 if test -d $srcdir/$f; then
226 add_ons_pfx="$add_ons_pfx $f/"
227 dnl This variable is what AC_CONFIG_SUBDIRS is supposed to set,
228 dnl but the new Autoconf maintainers don't care about compatibility
229 dnl so we cannot use it normally any more without complaints.
230 subdirs="$subdirs $f"
232 AC_MSG_ERROR(add-on directory \"$f\" does not exist)
237 dnl On some platforms we cannot use dynamic loading. We must provide
238 dnl static NSS modules.
239 AC_ARG_ENABLE([static-nss],
240 AC_HELP_STRING([--enable-static-nss],
241 [build static NSS modules @<:@default=no@:>@]),
242 [static_nss=$enableval],
244 dnl Enable static NSS also if we build no shared objects.
245 if test x"$static_nss" = xyes || test x"$shared" = xno; then
247 AC_DEFINE(DO_STATIC_NSS)
250 AC_ARG_ENABLE([force-install],
251 AC_HELP_STRING([--disable-force-install],
252 [don't force installation of files from this package, even if they are older than the installed files]),
253 [force_install=$enableval],
255 AC_SUBST(force_install)
257 dnl On some platforms we allow dropping compatibility with all kernel
259 AC_ARG_ENABLE([kernel],
260 AC_HELP_STRING([--enable-kernel=VERSION],
261 [compile for compatibility with kernel not older than VERSION]),
262 [minimum_kernel=$enableval],
264 dnl Prevent unreasonable values.
265 if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
266 # Better nothing than this.
269 if test "$minimum_kernel" = current; then
270 minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
274 dnl For the development we sometimes want gcc to issue even more warnings.
275 dnl This is not the default since many of the extra warnings are not
277 AC_ARG_ENABLE([all-warnings],
278 AC_HELP_STRING([--enable-all-warnings],
279 [enable all useful warnings gcc can issue]),
280 [all_warnings=$enableval],
282 AC_SUBST(all_warnings)
286 # The way shlib-versions is used to generate soversions.mk uses a
287 # fairly simplistic model for name recognition that can't distinguish
288 # i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os
289 # of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
290 # tell. This doesn't get used much beyond that, so it's fairly safe.
295 host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
299 # We keep the original values in `$config_*' and never modify them, so we
300 # can write them unchanged into config.make. Everything else uses
301 # $machine, $vendor, and $os, and changes them whenever convenient.
302 config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
304 # Don't allow vendor == "unknown"
305 test "$config_vendor" = unknown && config_vendor=
306 config_os="`echo $config_os | sed 's/^unknown-//'`"
308 # Some configurations imply other options.
310 gnu* | linux* | bsd4.4* | netbsd* | freebsd*)
311 # These systems always use GNU tools.
312 gnu_ld=yes gnu_as=yes ;;
315 # i586-linuxaout is mangled into i586-pc-linux-gnuaout
316 linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
318 gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*)
319 # These systems (almost) always use the ELF format.
323 # These systems are always xcoff
329 machine=$config_machine
330 vendor=$config_vendor
333 # config.guess on some IBM machines says `rs6000' instead of `powerpc'.
335 if test "$machine" = rs6000; then
339 # Braindead PowerPC box with absolutely no FPU.
340 case "$machine-$host_os" in
347 ### I put this here to prevent those annoying emails from people who cannot
348 ### read and try to compile glibc on unsupported platforms. --drepper
350 ### By using the undocumented --enable-hacker-mode option for configure
351 ### one can skip this test to make the configuration not fail for unsupported
354 if test -z "$enable_hacker_mode"; then
355 case "$machine-$host_os" in
356 *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*)
359 echo "*** The GNU C library is currently not available for this platform."
360 echo "*** So far nobody cared to port it and if there is no volunteer it"
361 echo "*** might never happen. So, if you have interest to see glibc on"
362 echo "*** this platform visit"
363 echo "*** http://www.gnu.org/software/libc/porting.html"
364 echo "*** and join the group of porters"
370 dnl We need to use [ and ] for other purposes for a while now.
372 # Expand the configuration machine name into a subdirectory by architecture
373 # type and particular chip.
375 a29k | am29000) base_machine=a29k machine=a29k ;;
376 alpha*) base_machine=alpha machine=alpha/$machine ;;
377 arm*) base_machine=arm machine=arm/arm32/$machine ;;
378 c3[012]) base_machine=cx0 machine=cx0/c30 ;;
379 c4[04]) base_machine=cx0 machine=cx0/c40 ;;
380 hppa*64*) base_machine=hppa machine=hppa/hppa64 ;;
381 hppa*) base_machine=hppa machine=hppa/hppa1.1 ;;
382 i[3456]86) base_machine=i386 machine=i386/$machine ;;
383 ia64) base_machine=ia64 machine=ia64 ;;
384 m680?0) base_machine=m68k machine=m68k/$machine ;;
385 m68k) base_machine=m68k machine=m68k/m68020 ;;
386 m88???) base_machine=m88k machine=m88k/$machine ;;
387 m88k) base_machine=m88k machine=m88k/m88100 ;;
388 mips64*) base_machine=mips64 machine=mips/mips64/$machine ;;
389 mips*) base_machine=mips machine=mips/$machine ;;
390 powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;;
391 powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;;
392 s390) base_machine=s390 machine=s390/s390-32 ;;
393 s390x) base_machine=s390 machine=s390/s390-64 ;;
394 sh3*) base_machine=sh machine=sh/sh3 ;;
395 sh4*) base_machine=sh machine=sh/sh4 ;;
397 base_machine=sparc machine=sparc/sparc32 ;;
398 sparcv8 | supersparc | hypersparc)
399 base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
400 sparcv8plus | sparcv8plusa | sparcv9)
401 base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
402 sparcv8plusb | sparcv9b)
403 base_machine=sparc machine=sparc/sparc32/sparcv9b ;;
404 sparc64 | ultrasparc)
405 base_machine=sparc machine=sparc/sparc64 ;;
406 sparc64b | ultrasparc3)
407 base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
408 thumb*) base_machine=thumb machine=arm/thumb/$machine ;;
409 *) base_machine=$machine ;;
412 AC_SUBST(base_machine)
414 if test "$base_machine" = "i386"; then
415 AC_DEFINE(USE_REGPARMS)
418 # Compute the list of sysdep directories for this configuration.
419 # This can take a while to compute.
420 sysdep_dir=$srcdir/sysdeps
421 AC_MSG_CHECKING(sysdep dirs)
422 dnl We need to use [ and ] for other purposes for a while now.
424 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
425 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
430 netbsd* | 386bsd* | freebsd* | bsdi*)
431 base_os=unix/bsd/bsd4.4 ;;
432 osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
434 sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
437 base_os=unix/sysv/irix6/$os ;;
439 base_os=unix/sysv/sysv4 ;;
441 base_os=unix/sysv/hpux/$os ;;
443 base_os=unix/sysv/aix/aix4.3 ;;
445 base_os=standalone ;;
450 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
453 while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
457 o=`echo $tail | sed 's/[0-9]*$//'`
458 if test $o != $tail; then
461 # For linux-gnu, try linux-gnu, then linux.
462 o=`echo $tail | sed 's/-.*$//'`
463 if test $o != $tail; then
467 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
470 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
476 # For sparc/sparc32, try sparc/sparc32 and then sparc.
479 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
481 # Prepend the machine's FPU directory unless --without-fp.
482 if test "$with_fp" = yes; then
485 mach="$mach /$1/nofpu"
491 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
494 # Find what sysdep directories exist.
496 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
497 for d in $add_ons_pfx ''; do
498 for b in $base ''; do
499 for m0 in $mach ''; do
500 for v in /$vendor ''; do
501 test "$v" = / && continue
502 for o in /$ostry ''; do
503 test "$o" = / && continue
504 for m in $mach ''; do
505 if test "$m0$b$v$o$m"; then
506 try="${d}sysdeps$m0$b$v$o$m"
507 test -n "$enable_debug_configure" &&
508 echo "$0 [DEBUG]: try $try" >&2
509 if test -d $srcdir/$try; then
510 sysnames="$sysnames $try"
511 { test -n "$o" || test -n "$b"; } && os_used=t
512 { test -n "$m" || test -n "$m0"; } && machine_used=t
523 if test -z "$os_used" && test "$os" != none; then
524 AC_MSG_ERROR(Operating system $os is not supported.)
526 if test -z "$machine_used" && test "$machine" != none; then
527 AC_MSG_ERROR(The $machine is not supported.)
530 # We have now validated the configuration.
533 # If using ELF, look for an `elf' subdirectory of each machine directory.
534 # We prepend these rather than inserting them whereever the machine appears
535 # because things specified by the machine's ELF ABI should override
536 # OS-specific things, and should always be the same for any OS on the
537 # machine (otherwise what's the point of an ABI?).
538 if test "$elf" = yes; then
540 for d in $add_ons_pfx ''; do
542 if test -d $srcdir/${d}sysdeps$m/elf; then
543 elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
547 sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
551 # Expand the list of system names into a full list of directories
552 # from each element's parent name and Implies file (if present).
555 while test $# -gt 0; do
559 case " $names " in *" $name "*)
560 # Already in the list.
564 # Report each name as we discover it, so there is no long pause in output.
565 echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
567 name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
571 *) xsrcdir=$srcdir/ ;;
573 test -n "$enable_debug_configure" &&
574 echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
576 if test -f $xsrcdir$name/Implies; then
577 # Collect more names from the `Implies' file (removing comments).
578 implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
580 for x in $implied_candidate; do
582 if test -d $xsrcdir$name_base/$x; then
583 implied="$implied $name_base/$x";
586 for d in $add_ons_pfx ''; do
590 *) try_srcdir=$srcdir/ ;;
592 test -n "$enable_debug_configure" &&
593 echo "[DEBUG]: $name implied $x try($d) {$try_srcdir}$try" >&2
594 if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
596 implied="$implied $try"
600 if test $found = no; then
601 AC_MSG_WARN($name/Implies specifies nonexistent $x)
608 # Add NAME to the list of names.
611 # Find the parent of NAME, using the empty string if it has none.
613 parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
616 # Add the names implied by NAME, and NAME's parent (if it has one), to
617 # the list of names to be processed (the argument list). We prepend the
618 # implied names to the list and append the parent. We want implied
619 # directories to come before further directories inferred from the
620 # configuration components; this ensures that for sysv4, unix/common
621 # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
623 sysnames="`echo $implied $* $parent`"
624 test -n "$sysnames" && set $sysnames
627 # Add the default directories.
628 default_sysnames=sysdeps/generic
629 if test "$elf" = yes; then
630 default_sysnames="sysdeps/generic/elf $default_sysnames"
632 sysnames="$names $default_sysnames"
634 # The other names were emitted during the scan.
635 AC_MSG_RESULT($default_sysnames)
641 if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
642 # The makefiles need to use a different form to find it in $srcdir.
643 INSTALL='\$(..)./scripts/install-sh -c'
648 if test $host != $build; then
649 AC_CHECK_PROGS(BUILD_CC, gcc cc)
651 AC_SUBST(cross_compiling)
654 AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
656 # Accept binutils 2.13 or newer.
657 AC_CHECK_PROG_VER(AS, $AS, --version,
658 [GNU assembler.* \([0-9]*\.[0-9.]*\)],
659 [2.1[3-9]*], AS=: critic_missing=t)
660 AC_CHECK_PROG_VER(LD, $LD, --version,
661 [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
662 [2.1[3-9]*], LD=: critic_missing=t)
664 # We need the physical current working directory. We cannot use the
665 # "pwd -P" shell builtin since that's not portable. Instead we try to
666 # find a pwd binary. Note that assigning to the PWD environment
667 # variable might have some interesting side effects, so we don't do
669 AC_PATH_PROG(PWD_P, pwd, no)
670 if test "$PWD_P" = no; then
671 AC_MSG_ERROR(*** A pwd binary could not be found.)
674 # These programs are version sensitive.
676 AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
677 [version \([egcygnustpi-]*[0-9.]*\)], [3.[2-9]*],
678 critic_missing="$critic_missing gcc")
679 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
680 [GNU Make[^0-9]*\([0-9][0-9.]*\)],
681 [3.79* | 3.[89]*], critic_missing="$critic_missing make")
683 AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
684 [GNU gettext.* \([0-9]*\.[0-9.]*\)],
685 [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
686 MSGFMT=: aux_missing="$aux_missing msgfmt")
687 AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
688 [GNU texinfo.* \([0-9][0-9.]*\)],
690 MAKEINFO=: aux_missing="$aux_missing makeinfo")
691 AC_CHECK_PROG_VER(SED, sed, --version,
692 [GNU sed version \([0-9]*\.[0-9.]*\)],
693 [3.0[2-9]*|3.[1-9]*|[4-9]*],
694 SED=: aux_missing="$aux_missing sed")
696 if test "x$with_cvs" != xyes; then
697 AC_CHECK_PROGS(AUTOCONF, autoconf, no)
699 xno|x|x:) AUTOCONF=no ;;
702 whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
703 if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
704 libc_cv_autoconf_works=yes
706 libc_cv_autoconf_works=no
708 test $libc_cv_autoconf_works = yes || AUTOCONF=no
711 test "x$AUTOCONF" != xno || aux_missing="$aux_missing autoconf"
714 test -n "$critic_missing" && AC_MSG_ERROR([
715 *** These critical programs are missing or too old:$critic_missing
716 *** Check the INSTALL file for required versions.])
718 test -n "$aux_missing" && AC_MSG_WARN([
719 *** These auxiliary programs are missing or incompatible versions:$aux_missing
720 *** some features will be disabled.
721 *** Check the INSTALL file for required versions.])
723 # glibcbug.in wants to know the compiler version.
724 CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'`
727 # if using special system headers, find out the compiler's sekrit
728 # header directory and add that to the list. NOTE: Only does the right
729 # thing on a system that doesn't need fixincludes. (Not presently a problem.)
730 if test -n "$sysheaders"; then
731 ccheaders=`$CC -print-file-name=include`
732 SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $sysheaders"
734 AC_SUBST(SYSINCLUDES)
736 # check if ranlib is necessary
737 AC_CACHE_CHECK(whether ranlib is necessary, libc_cv_ranlib_necessary, [dnl
738 cat > conftest.c <<EOF
743 $CC $CFLAGS -c conftest.c
744 $AR cr conftest.a conftest.o
745 cp conftest.a conftest2.a
747 if cmp -s conftest.a conftest2.a; then
748 libc_cv_ranlib_necessary=no
750 libc_cv_ranlib_necessary=yes
753 if test "$libc_cv_ranlib_necessary" = no; then
757 # Test if LD_LIBRARY_PATH contains the notation for the current directory
758 # since this would lead to problems installing/building glibc.
759 # LD_LIBRARY_PATH contains the current directory if one of the following
761 # - one of the terminals (":" and ";") is the first or last sign
762 # - two terminals occur directly after each other
763 # - the path contains an element with a dot in it
764 AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
766 case ${LD_LIBRARY_PATH} in
767 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
768 ld_library_path_setting="contains current directory"
771 ld_library_path_setting="ok"
775 AC_MSG_RESULT($ld_library_path_setting)
776 if test "$ld_library_path_setting" != "ok"; then
778 *** LD_LIBRARY_PATH shouldn't contain the current directory when
779 *** building glibc. Please change the environment variable
780 *** and run configure again.])
783 AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
784 if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
785 libc_cv_gcc_static_libgcc=
787 libc_cv_gcc_static_libgcc=-static-libgcc
789 AC_SUBST(libc_cv_gcc_static_libgcc)
791 AC_PATH_PROG(BASH, bash, no)
792 if test "$BASH" != no &&
793 $BASH -c 'test "$BASH_VERSINFO" \
794 && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
795 libc_cv_have_bash2=yes
797 libc_cv_have_bash2=no
799 AC_SUBST(libc_cv_have_bash2)
801 dnl We need a ksh compatible shell for tzselect.
802 if test "$BASH" = no; then
803 AC_PATH_PROG(KSH, ksh, no)
804 if test "$KSH" = no; then
814 AC_SUBST(libc_cv_have_ksh)
817 AC_PATH_PROG(PERL, perl, no)
818 if test "$PERL" != no &&
819 (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
822 AC_PATH_PROG(INSTALL_INFO, install-info, no,
823 $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
824 if test "$INSTALL_INFO" != "no"; then
825 AC_CACHE_CHECK(for old Debian install-info, libc_cv_old_debian_install_info,
827 # There is a hard ^_ on the next line. I am open to better ideas.
829 echo 'File: dir Node: Top This is the top of the INFO tree'
830 echo '* Menu:') >conftest.d/dir
831 (echo 'INFO-DIR-SECTION i-d-s works'
832 echo 'START-INFO-DIR-ENTRY'
833 echo '* Prog: (prog). Program.'
834 echo 'END-INFO-DIR-ENTRY') >conftest.d/prog.info
835 if $INSTALL_INFO --info-dir=conftest.d conftest.d/prog.info >&AS_MESSAGE_LOG_FD 2>&1
837 if grep -s 'i-d-s works' conftest.d/dir >/dev/null
838 then libc_cv_old_debian_install_info=no
839 else libc_cv_old_debian_install_info=yes
841 else libc_cv_old_debian_install_info=no testfailed=t
844 if test -n "$testfailed"
845 then AC_MSG_WARN([install-info errored out, check config.log])
847 OLD_DEBIAN_INSTALL_INFO=$libc_cv_old_debian_install_info
849 AC_SUBST(OLD_DEBIAN_INSTALL_INFO)
851 AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
853 AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
854 echo '#include <stddef.h>
855 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
856 if eval "$ac_cpp conftest.c 2>/dev/null" \
857 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
858 libc_cv_signed_size_t=no
860 libc_cv_signed_size_t=yes
863 if test $libc_cv_signed_size_t = yes; then
864 dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
865 cat >> confdefs.h <<\EOF
867 #define __SIZE_TYPE__ unsigned
871 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
873 [#define __need_size_t
874 #define __need_wchar_t
877 #include <stddef.h>], [size_t size; wchar_t wchar;
879 #error stddef.h ignored __need_*
881 if (&size == NULL || &wchar == NULL) abort ();],
882 libc_cv_friendly_stddef=yes,
883 libc_cv_friendly_stddef=no)])
884 if test $libc_cv_friendly_stddef = yes; then
885 config_vars="$config_vars
886 override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
889 AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
890 libc_cv_need_minus_P, [dnl
891 cat > conftest.S <<EOF
892 #include "confdefs.h"
893 /* Nothing whatsoever. */
895 if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
896 libc_cv_need_minus_P=no
898 libc_cv_need_minus_P=yes
901 if test $libc_cv_need_minus_P = yes; then
902 config_vars="$config_vars
903 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
906 AC_MSG_CHECKING(whether .text pseudo-op must be used)
907 AC_CACHE_VAL(libc_cv_dot_text, [dnl
908 cat > conftest.s <<EOF
912 if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
913 libc_cv_dot_text=.text
916 if test -z "$libc_cv_dot_text"; then
922 AC_CACHE_CHECK(for assembler global-symbol directive,
923 libc_cv_asm_global_directive, [dnl
924 libc_cv_asm_global_directive=UNKNOWN
925 for ac_globl in .globl .global .EXPORT; do
926 cat > conftest.s <<EOF
931 if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
932 libc_cv_asm_global_directive=${ac_globl}
935 test $libc_cv_asm_global_directive != UNKNOWN && break
937 if test $libc_cv_asm_global_directive = UNKNOWN; then
938 AC_MSG_ERROR(cannot determine asm global directive)
940 AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
943 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
944 cat > conftest.s <<EOF
947 .set glibc_conftest_frobozz,foo
948 $libc_cv_asm_global_directive glibc_conftest_frobozz
950 # The alpha-dec-osf1 assembler gives only a warning for `.set'
951 # (but it doesn't work), so we must do a linking check to be sure.
952 cat > conftest1.c <<\EOF
953 extern int glibc_conftest_frobozz;
954 main () { printf ("%d\n", glibc_conftest_frobozz); }
956 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
957 -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
958 libc_cv_asm_set_directive=yes
960 libc_cv_asm_set_directive=no
963 if test $libc_cv_asm_set_directive = yes; then
964 AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
967 AC_CACHE_CHECK(for assembler .type directive prefix,
968 libc_cv_asm_type_prefix, [dnl
969 libc_cv_asm_type_prefix=no
970 for ac_try_prefix in '@' '%' '#'; do
971 cat > conftest.s <<EOF
973 ${libc_cv_asm_global_directive} foo
974 .type foo, ${ac_try_prefix}object
979 if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
980 libc_cv_asm_type_prefix=${ac_try_prefix}
983 test "x$libc_cv_asm_type_prefix" != xno && break
985 if test "x$libc_cv_asm_type_prefix" != xno; then
986 AC_DEFINE_UNQUOTED(ASM_TYPE_DIRECTIVE_PREFIX, ${libc_cv_asm_type_prefix})
989 # The Aix ld uses global .symbol_names instead of symbol_names.
990 # Unfortunately also used in the PPC64 ELF ABI.
991 case "${os}${machine}" in
992 aix4.3* | linux*powerpc/powerpc64*)
993 AC_DEFINE(HAVE_ASM_GLOBAL_DOT_NAME)
996 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
997 [cat > conftest.s <<EOF
1000 .symver _sym,sym@VERS
1002 if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1003 libc_cv_asm_symver_directive=yes
1005 libc_cv_asm_symver_directive=no
1008 AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
1009 if test $libc_cv_asm_symver_directive = yes; then
1010 cat > conftest.s <<EOF
1013 .symver _sym,sym@VERS
1015 cat > conftest.map <<EOF
1024 if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1025 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
1026 -nostartfiles -nostdlib
1027 -Wl,--version-script,conftest.map
1028 1>&AS_MESSAGE_LOG_FD]);
1030 libc_cv_ld_version_script_option=yes
1032 libc_cv_ld_version_script_option=no
1035 libc_cv_ld_version_script_option=no
1038 libc_cv_ld_version_script_option=no
1041 if test $shared != no &&
1042 test $libc_cv_asm_symver_directive = yes &&
1043 test $libc_cv_ld_version_script_option = yes &&
1044 test $enable_versioning = yes; then
1046 AC_DEFINE(DO_VERSIONING)
1050 AC_SUBST(VERSIONING)
1052 if test $elf = yes && test $shared != no && test $VERSIONING = no; then
1054 *** WARNING: You should not compile GNU libc without versioning. Not using
1055 *** versioning will introduce incompatibilities so that old binaries
1056 *** will not run anymore.
1057 *** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
1059 if test $elf = yes; then
1060 AC_CACHE_CHECK(for .previous assembler directive,
1061 libc_cv_asm_previous_directive, [dnl
1062 cat > conftest.s <<EOF
1063 .section foo_section
1066 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1067 libc_cv_asm_previous_directive=yes
1069 libc_cv_asm_previous_directive=no
1072 if test $libc_cv_asm_previous_directive = yes; then
1073 AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
1075 AC_CACHE_CHECK(for .popsection assembler directive,
1076 libc_cv_asm_popsection_directive, [dnl
1077 cat > conftest.s <<EOF
1078 .pushsection foo_section
1081 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1082 libc_cv_asm_popsection_directive=yes
1084 libc_cv_asm_popsection_directive=no
1087 if test $libc_cv_asm_popsection_directive = yes; then
1088 AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
1091 AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1092 libc_cv_asm_protected_directive, [dnl
1093 cat > conftest.s <<EOF
1099 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1100 libc_cv_asm_protected_directive=yes
1102 libc_cv_asm_protected_directive=no
1105 AC_SUBST(libc_cv_asm_protected_directive)
1106 AC_DEFINE(HAVE_PROTECTED)
1107 AC_DEFINE(HAVE_HIDDEN)
1109 if test $libc_cv_asm_protected_directive = yes; then
1110 AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
1111 libc_cv_visibility_attribute,
1112 [cat > conftest.c <<EOF
1113 int foo __attribute__ ((visibility ("hidden"))) = 1;
1114 int bar __attribute__ ((visibility ("protected"))) = 1;
1116 libc_cv_visibility_attribute=no
1117 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1118 if grep '\.hidden.*foo' conftest.s >/dev/null; then
1119 if grep '\.protected.*bar' conftest.s >/dev/null; then
1120 libc_cv_visibility_attribute=yes
1126 if test $libc_cv_visibility_attribute = yes; then
1127 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
1131 if test $libc_cv_visibility_attribute = yes; then
1132 AC_CACHE_CHECK(for broken __attribute__((visibility())),
1133 libc_cv_broken_visibility_attribute,
1134 [cat > conftest.c <<EOF
1136 int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1137 int bar (int x) { return x; }
1139 libc_cv_broken_visibility_attribute=yes
1140 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s1>&AS_MESSAGE_LOG_FD); then
1142 if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
1144 libc_cv_broken_visibility_attribute=no
1147 rm -f conftest.c conftest.s
1149 if test $libc_cv_broken_visibility_attribute = yes; then
1150 AC_DEFINE(HAVE_BROKEN_VISIBILITY_ATTRIBUTE)
1154 AC_CACHE_CHECK(for broken __attribute__((alias())),
1155 libc_cv_broken_alias_attribute,
1156 [cat > conftest.c <<EOF
1157 extern int foo (int x) __asm ("xyzzy");
1158 int bar (int x) { return x; }
1159 extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1161 extern __typeof (dfoo) dfoo __asm ("abccb");
1164 libc_cv_broken_alias_attribute=yes
1165 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1166 if grep 'xyzzy' conftest.s >/dev/null &&
1167 grep 'abccb' conftest.s >/dev/null; then
1168 libc_cv_broken_alias_attribute=no
1171 rm -f conftest.c conftest.s
1173 if test $libc_cv_broken_alias_attribute = yes; then
1174 AC_DEFINE(HAVE_BROKEN_ALIAS_ATTRIBUTE)
1177 if test $libc_cv_visibility_attribute = yes -a $gnu_ld = yes; then
1178 AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1179 libc_cv_have_sdata_section,
1180 [echo "int i;" > conftest.c
1181 libc_cv_have_sdata_section=no
1182 if ${CC-cc} -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1183 | grep '\.sdata' >/dev/null; then
1184 libc_cv_have_sdata_section=yes
1186 rm -f conftest.c conftest.so
1188 if test $libc_cv_have_sdata_section = yes; then
1189 AC_DEFINE(HAVE_SDATA_SECTION)
1193 AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1194 libc_cv_initfinit_array, [dnl
1195 cat > conftest.c <<EOF
1196 int _start (void) { return 0; }
1197 int __start (void) { return 0; }
1198 int foo (void) { return 1; }
1199 int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
1201 if AC_TRY_COMMAND([${CC-cc} -o conftest conftest.c
1202 -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
1204 if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
1205 libc_cv_initfinit_array=yes
1207 libc_cv_initfinit_array=no
1210 libc_cv_initfinit_array=no
1213 AC_SUBST(libc_cv_initfinit_array)
1214 if test $libc_cv_initfinit_array = yes; then
1215 AC_DEFINE(HAVE_INITFINI_ARRAY)
1218 AC_CACHE_CHECK(for -z nodelete option,
1219 libc_cv_z_nodelete, [dnl
1220 cat > conftest.c <<EOF
1221 int _start (void) { return 42; }
1223 if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1224 -nostartfiles -nostdlib
1225 -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
1227 libc_cv_z_nodelete=yes
1229 libc_cv_z_nodelete=no
1232 AC_SUBST(libc_cv_z_nodelete)
1234 AC_CACHE_CHECK(for -z nodlopen option,
1235 libc_cv_z_nodlopen, [dnl
1236 cat > conftest.c <<EOF
1237 int _start (void) { return 42; }
1239 if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1240 -nostartfiles -nostdlib
1241 -Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
1243 libc_cv_z_nodlopen=yes
1245 libc_cv_z_nodlopen=no
1248 AC_SUBST(libc_cv_z_nodlopen)
1250 AC_CACHE_CHECK(for -z initfirst option,
1251 libc_cv_z_initfirst, [dnl
1252 cat > conftest.c <<EOF
1253 int _start (void) { return 42; }
1255 if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1256 -nostartfiles -nostdlib
1257 -Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
1259 libc_cv_z_initfirst=yes
1261 libc_cv_z_initfirst=no
1264 AC_SUBST(libc_cv_z_initfirst)
1266 AC_CACHE_CHECK(for -Bgroup option,
1267 libc_cv_Bgroup, [dnl
1268 cat > conftest.c <<EOF
1269 int _start (void) { return 42; }
1271 if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1278 AC_SUBST(libc_cv_Bgroup)
1280 AC_CACHE_CHECK(for -z combreloc,
1281 libc_cv_z_combreloc, [dnl
1282 cat > conftest.c <<EOF
1283 extern int bar (int);
1285 int foo (void) { return bar (mumble); }
1287 if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1288 -nostdlib -nostartfiles
1289 -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
1291 dnl The following test is a bit weak. We must use a tool which can test
1292 dnl cross-platform since the gcc used can be a cross compiler. Without
1293 dnl introducing new options this is not easily doable. Instead use a tool
1294 dnl which always is cross-platform: readelf. To detect whether -z combreloc
1295 dnl look for a section named .rel.dyn.
1296 if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1297 libc_cv_z_combreloc=yes
1299 libc_cv_z_combreloc=no
1302 libc_cv_z_combreloc=no
1305 if test "$libc_cv_z_combreloc" = yes; then
1306 AC_DEFINE(HAVE_Z_COMBRELOC)
1309 AC_SUBST(libc_cv_z_combreloc)
1311 if test $elf != yes; then
1312 AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
1313 [AC_TRY_COMPILE(, [asm (".section .init");
1314 asm (".section .fini");
1315 asm ("${libc_cv_dot_text}");],
1316 libc_cv_have_initfini=yes,
1317 libc_cv_have_initfini=no)])
1318 AC_SUBST(libc_cv_have_initfini)dnl
1319 if test $libc_cv_have_initfini = yes; then
1320 AC_DEFINE(HAVE_INITFINI)
1324 if test $elf = yes -a $gnu_ld = yes; then
1325 AC_CACHE_CHECK(whether cc puts quotes around section names,
1326 libc_cv_have_section_quotes,
1327 [cat > conftest.c <<EOF
1328 static const int foo
1329 __attribute__ ((section ("bar"))) = 1;
1331 if ${CC-cc} -S conftest.c -o conftest.s; then
1332 if grep '\.section.*"bar"' conftest.s >/dev/null; then
1333 libc_cv_have_section_quotes=yes
1335 libc_cv_have_section_quotes=no
1338 libc_cv_have_section_quotes=unknown
1342 if test $libc_cv_have_section_quotes = yes; then
1343 AC_DEFINE(HAVE_SECTION_QUOTES)
1347 dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
1348 AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
1349 [cat > conftest.$ac_ext <<EOF
1350 dnl This sometimes fails to find confdefs.h, for some reason.
1351 dnl [#]line __oline__ "[$]0"
1352 [#]line __oline__ "configure"
1353 #include "confdefs.h"
1354 void underscore_test(void) {
1357 if AC_TRY_EVAL(ac_compile); then
1358 if grep _underscore_test conftest* >/dev/null; then
1359 ifelse([$1], , :, [rm -f conftest*
1362 ifelse([$2], , , [rm -f conftest*
1366 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
1367 cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
1368 ifelse([$2], , , [rm -f conftest*
1373 if test $elf = yes; then
1374 libc_cv_asm_underscores=no
1376 if test $ac_cv_prog_cc_works = yes; then
1377 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1378 [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
1379 libc_cv_asm_underscores=yes,
1380 libc_cv_asm_underscores=no)])
1382 AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1383 [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
1384 libc_cv_asm_underscores=no)])
1387 if test $libc_cv_asm_underscores = no; then
1388 AC_DEFINE(NO_UNDERSCORES)
1391 if test $elf = yes; then
1392 libc_cv_weak_symbols=yes
1395 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1397 cat > conftest.s <<EOF
1399 ${libc_cv_asm_global_directive} foo
1402 .weak bar; bar = foo
1404 if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1405 libc_cv_asm_weak_directive=yes
1407 libc_cv_asm_weak_directive=no
1411 if test $libc_cv_asm_weak_directive = no; then
1412 AC_CACHE_CHECK(for assembler .weakext directive,
1413 libc_cv_asm_weakext_directive,
1415 cat > conftest.s <<EOF
1417 ${libc_cv_asm_global_directive} foo
1421 ${libc_cv_asm_global_directive} baz
1424 if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1425 libc_cv_asm_weakext_directive=yes
1427 libc_cv_asm_weakext_directive=no
1433 if test $libc_cv_asm_weak_directive = yes; then
1434 AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1435 elif test $libc_cv_asm_weakext_directive = yes; then
1436 AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1439 dnl The standard hppa assembler uses `;' to start comments and `!'
1440 dnl as a line separator. CRIS uses `;' to start comments and `@' for
1442 case "${host_cpu}-${host_os}" in
1444 libc_cv_asm_line_sep='@'
1445 AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1448 AC_CACHE_CHECK(for assembler line separator,
1449 libc_cv_asm_line_sep, [dnl
1450 cat > conftest.s <<EOF
1453 if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1454 libc_cv_asm_line_sep='!'
1456 if test -z "$enable_hacker_mode"; then
1457 echo "*** You need a newer assembler to compile glibc"
1461 libc_cv_asm_line_sep=';'
1464 AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1468 AC_CACHE_CHECK(if -g produces usable source locations for assembler-with-cpp,
1469 libc_cv_cpp_asm_debuginfo, [dnl
1470 cat > conftest.S <<EOF
1471 #include "confdefs.h"
1476 ${libc_cv_asm_global_directive} foo
1478 /* Unfortunately this test only works for a real instruction,
1479 not for any of the machine-independent pseudo-ops.
1480 So we just have to assume everybody has a "nop". */
1487 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -g -c conftest.S 1>&AS_MESSAGE_LOG_FD]) &&
1488 ac_pattern='conftest\.S'
1489 AC_TRY_COMMAND([readelf --debug-dump=line conftest.o |
1490 grep $ac_pattern 1>&AS_MESSAGE_LOG_FD]); then
1491 libc_cv_cpp_asm_debuginfo=yes
1493 libc_cv_cpp_asm_debuginfo=no
1495 rm -f conftest*])AC_SUBST(libc_cv_cpp_asm_debuginfo)
1496 if test $libc_cv_cpp_asm_debuginfo = yes; then
1497 AC_DEFINE(HAVE_CPP_ASM_DEBUGINFO)
1500 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1501 cat > conftest.c <<\EOF
1506 dnl No \ in command here because it ends up inside ''.
1507 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
1508 -nostdlib -nostartfiles -Wl,--no-whole-archive
1509 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1510 libc_cv_ld_no_whole_archive=yes
1512 libc_cv_ld_no_whole_archive=no
1515 if test $libc_cv_ld_no_whole_archive = yes; then
1516 no_whole_archive=-Wl,--no-whole-archive
1518 AC_SUBST(no_whole_archive)dnl
1520 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1521 cat > conftest.c <<\EOF
1526 dnl No \ in command here because it ends up inside ''.
1527 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
1528 -nostdlib -nostartfiles -fexceptions
1529 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1530 libc_cv_gcc_exceptions=yes
1532 libc_cv_gcc_exceptions=no
1535 if test $libc_cv_gcc_exceptions = yes; then
1536 exceptions=-fexceptions
1538 AC_SUBST(exceptions)dnl
1540 if test "$host_cpu" = powerpc ; then
1541 # Check for a bug present in at least versions 2.8.x of GCC
1542 # and versions 1.0.x of EGCS.
1543 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1544 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1545 libc_cv_c_asmcr0_bug='no',
1546 libc_cv_c_asmcr0_bug='yes')])
1547 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1548 AC_DEFINE(BROKEN_PPC_ASM_CR0)
1552 AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
1553 [cat > conftest.c <<EOF
1554 #line __oline__ "configure"
1555 static char *__EH_FRAME_BEGIN__;
1558 #ifdef CHECK__register_frame
1559 __register_frame (__EH_FRAME_BEGIN__);
1560 __deregister_frame (__EH_FRAME_BEGIN__);
1562 #ifdef CHECK__register_frame_info
1563 __register_frame_info (__EH_FRAME_BEGIN__);
1564 __deregister_frame_info (__EH_FRAME_BEGIN__);
1569 /* FIXME: this is fragile. */
1578 dl_iterate_phdr () {}
1580 dnl No \ in command here because it ends up inside ''.
1581 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info
1582 -nostdlib -nostartfiles
1583 -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1584 libc_cv_gcc_dwarf2_unwind_info=static
1586 libc_cv_gcc_dwarf2_unwind_info=no
1588 # Some platforms' specs put -lgcc first. The second one doesn't hurt.
1589 libc_unwind_check="${CC-cc} $CFLAGS -DCHECK__register_frame_info \
1590 -nostdlib -nostartfiles -o conftest conftest.c \
1591 -lgcc -lgcc_eh -lgcc"
1592 if AC_TRY_COMMAND([$libc_unwind_check >&AS_MESSAGE_LOG_FD]); then
1593 if $libc_unwind_check -v 2>&1 >/dev/null \
1594 | grep -q -- --eh-frame-hdr; then
1595 libc_cv_gcc_dwarf2_unwind_info=no_registry_needed
1597 libc_cv_gcc_dwarf2_unwind_info=static
1600 libc_cv_gcc_dwarf2_unwind_info=no
1602 if test $libc_cv_gcc_dwarf2_unwind_info = no; then
1603 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame
1604 -nostdlib -nostartfiles
1605 -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1606 libc_cv_gcc_dwarf2_unwind_info=yes
1608 libc_cv_gcc_dwarf2_unwind_info=no
1612 case $libc_cv_gcc_dwarf2_unwind_info in
1614 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1617 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1618 AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
1622 dnl Check whether compiler understands __builtin_expect.
1623 AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
1624 [cat > conftest.c <<EOF
1625 #line __oline__ "configure"
1628 a = __builtin_expect (a, 10);
1629 return a == 10 ? 0 : 1;
1632 dnl No \ in command here because it ends up inside ''.
1633 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1634 -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1635 libc_cv_gcc_builtin_expect=yes
1637 libc_cv_gcc_builtin_expect=no
1640 if test "$libc_cv_gcc_builtin_expect" = yes; then
1641 AC_DEFINE(HAVE_BUILTIN_EXPECT)
1644 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1645 cat > conftest.c <<\EOF
1648 __builtin_memset (x, 0, 1000);
1652 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1654 libc_cv_gcc_builtin_memset=no
1656 libc_cv_gcc_builtin_memset=yes
1659 if test "$libc_cv_gcc_builtin_memset" = yes ; then
1660 AC_DEFINE(HAVE_BUILTIN_MEMSET)
1663 dnl Check whether the compiler supports subtraction of local labels.
1664 AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
1665 [cat > conftest.c <<EOF
1667 #line __oline__ "configure"
1670 static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
1671 void *p = &&l1 + ar[a];
1680 dnl No \ in command here because it ends up inside ''.
1681 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1682 -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1683 libc_cv_gcc_subtract_local_labels=yes
1685 libc_cv_gcc_subtract_local_labels=no
1688 if test "$libc_cv_gcc_subtract_local_labels" = yes; then
1689 AC_DEFINE(HAVE_SUBTRACT_LOCAL_LABELS)
1692 dnl Check whether the compiler supports the __thread keyword.
1693 if test "x$use__thread" != xno; then
1694 AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1695 [cat > conftest.c <<\EOF
1696 __thread int a = 42;
1698 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
1699 libc_cv_gcc___thread=yes
1701 libc_cv_gcc___thread=no
1704 if test "$libc_cv_gcc___thread" = yes; then
1705 AC_DEFINE(HAVE___THREAD)
1708 libc_cv_gcc___thread=no
1711 if test "$libc_cv_gcc___thread" = yes; then
1712 dnl Check whether the compiler supports the tls_model attribute.
1713 AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1714 cat > conftest.c <<\EOF
1715 extern __thread int a __attribute__((tls_model ("initial-exec")));
1717 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
1718 libc_cv_gcc_tls_model_attr=yes
1720 libc_cv_gcc_tls_model_attr=no
1723 if test "$libc_cv_gcc_tls_model_attr" = yes; then
1724 AC_DEFINE(HAVE_TLS_MODEL_ATTRIBUTE)
1728 dnl Check whether we have the gd library available.
1729 AC_MSG_CHECKING(for libgd)
1730 if test "$with_gd" != "no"; then
1731 old_CFLAGS="$CFLAGS"
1732 CFLAGS="$CFLAGS $libgd_include"
1733 old_LDFLAGS="$LDFLAGS"
1734 LDFLAGS="$LDFLAGS $libgd_ldflags"
1736 LIBS="$LIBS -lgd -lpng -lz -lm"
1737 AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1738 CFLAGS="$old_CFLAGS"
1739 LDFLAGS="$old_LDFLAGS"
1744 AC_MSG_RESULT($LIBGD)
1747 dnl check for the size of 'long double'.
1748 AC_CHECK_SIZEOF(long double, 0)
1749 sizeof_long_double=$ac_cv_sizeof_long_double
1750 AC_SUBST(sizeof_long_double)
1752 ### End of automated tests.
1753 ### Now run sysdeps configure fragments.
1755 # They also can set these variables.
1757 ldd_rewrite_script=no
1758 libc_cv_sysconfdir=$sysconfdir
1759 libc_cv_gcc_unwind_find_fde=no
1761 # Iterate over all the sysdep directories we will use, running their
1762 # configure fragments, and looking for a uname implementation.
1764 for dir in $sysnames; do
1767 *) dest=$srcdir/$dir ;;
1769 if test -r $dest/configure; then
1770 AC_MSG_RESULT(running configure fragment for $dir)
1774 if test -z "$uname"; then
1775 if test -r $dest/uname.c ||
1776 test -r $dest/uname.S ||
1777 { test -r $dest/syscalls.list &&
1778 grep '^uname[ ]' $dest/syscalls.list >/dev/null; }; then
1785 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
1786 AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
1788 AC_SUBST(libc_cv_gcc_unwind_find_fde)
1790 # If we will use the generic uname implementation, we must figure out what
1791 # it will say by examining the system, and write the results in config-name.h.
1792 if test "$uname" = "sysdeps/generic"; then
1795 uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
1797 if test $uname_sysname != $config_os; then
1798 config_release=`echo $config_os | sed s/$uname_sysname//`
1801 AC_DEFUN(LIBC_KERNEL_ID, [dnl
1802 if test -r /vmunix; then
1803 kernel_id=`strings /vmunix | grep UNIX`
1804 elif test -r /dynix; then
1805 kernel_id=`strings /dynix | grep DYNIX`
1811 AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
1814 kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
1816 if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
1817 != x$config_release; then
1818 # The configuration release is a substring of the kernel release.
1819 libc_cv_uname_release=$kernel_release
1820 elif test x$config_release != x; then
1821 libc_cv_uname_release=$config_release
1822 elif test x$kernel_release != x; then
1823 libc_cv_uname_release=$kernel_release
1825 libc_cv_uname_release=unknown
1827 uname_release="$libc_cv_uname_release"
1829 AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
1832 kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
1834 if test -n "$kernel_version"; then
1835 libc_cv_uname_version="$kernel_version"
1837 libc_cv_uname_version=unknown
1839 uname_version="$libc_cv_uname_version"
1841 AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
1842 config_uname=config-name.h:config-name.in
1844 # For non-generic uname, we don't need to create config-name.h at all.
1848 dnl This is tested by existing code and it's simpler to avoid changing it.
1849 AC_DEFINE(USE_IN_LIBIO)
1851 # Test for old glibc 2.0.x headers so that they can be removed properly
1852 # Search only in includedir.
1853 AC_MSG_CHECKING(for old glibc 2.0.x headers)
1854 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
1856 old_glibc_headers=yes
1858 old_glibc_headers=no
1860 AC_MSG_RESULT($old_glibc_headers)
1861 if test ${old_glibc_headers} = yes; then
1862 AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
1863 AC_MSG_WARN(*** be removed.)
1865 AC_SUBST(old_glibc_headers)
1867 AC_SUBST(libc_cv_slibdir)
1868 AC_SUBST(libc_cv_localedir)
1869 AC_SUBST(libc_cv_sysconfdir)
1870 AC_SUBST(libc_cv_rootsbindir)
1872 AC_SUBST(use_ldconfig)
1873 AC_SUBST(ldd_rewrite_script)
1875 AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf) AC_SUBST(xcoff)
1876 if test $gnu_ld = yes; then
1877 AC_DEFINE(HAVE_GNU_LD)
1879 if test $gnu_as = yes; then
1880 AC_DEFINE(HAVE_GNU_AS)
1882 if test $elf = yes; then
1885 if test $xcoff = yes; then
1886 AC_DEFINE(HAVE_XCOFF)
1891 if test $shared = default; then
1892 if test $gnu_ld = yes; then
1895 # For now we do not assume shared libs are available. In future more
1896 # tests might become available.
1901 AC_CACHE_CHECK([whether -fPIC is default], pic_default,
1903 cat > conftest.c <<EOF
1904 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
1905 # error PIC is default.
1908 if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
1912 AC_SUBST(pic_default)
1917 AC_SUBST(static_nss)
1918 AC_SUBST(nopic_initfini)
1923 *door*) linux_doors=yes ;;
1924 *) linux_doors=no ;;
1926 AC_SUBST(linux_doors)
1928 dnl See sysdeps/mach/configure.in for this variable.
1929 AC_SUBST(mach_interface_list)
1931 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
1934 config_makefile=Makefile
1937 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
1938 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
1942 AC_CONFIG_FILES([config.make glibcbug ${config_makefile} ${config_uname}])
1943 AC_CONFIG_COMMANDS([default],[[
1944 case $CONFIG_FILES in *config.make*)
1945 echo "$config_vars" >> config.make;;
1947 test -d bits || mkdir bits]],[[config_vars='$config_vars']])