(__pthread_lock): Force lock->__status to be read from memory on every spin.
[glibc.git] / configure.in
blob8b345de08a63529dafee4bbbb94c1b6af803e549
1 dnl Process this file with autoconf to produce a configure script.
2 AC_REVISION([$CVSid$])
3 AC_PREREQ(2.13)dnl              dnl Minimum Autoconf version required.
4 AC_INIT(include/features.h)
5 AC_CONFIG_HEADER(config.h)
6 AC_CONFIG_AUX_DIR(scripts)
8 # This will get text that should go into config.make.
9 config_vars=
11 # Check for a --with-gmp argument and set gmp-srcdir in config.make.
12 AC_ARG_WITH(gmp, dnl
13   --with-gmp=DIRECTORY    find GMP source code in DIRECTORY (not needed),
14             [dnl
15 case "$with_gmp" in
16 yes) AC_MSG_ERROR(--with-gmp requires an argument; use --with-gmp=DIRECTORY) ;;
17 ''|no) ;;
18 *) config_vars="$config_vars
19 gmp-srcdir = $withval" ;;
20 esac
22 # Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
23 AC_ARG_WITH(gd, dnl
24   --with-gd=DIR           find libgd include dir and library with prefix DIR,
25             [dnl
26 case "$with_gd" in
27 yes|''|no) ;;
28 *) libgd_include="-I$withval/include"
29    libgd_ldflags="-L$withval/lib" ;;
30 esac
32 AC_ARG_WITH(gd-include, dnl
33   --with-gd-include=DIR   find libgd include files in DIR,
34             [dnl
35 case "$with_gd_include" in
36 ''|no) ;;
37 *) libgd_include="-I$withval" ;;
38 esac
40 AC_ARG_WITH(gd-lib, dnl
41   --with-gd-lib=DIR       find libgd library files in DIR,
42             [dnl
43 case "$with_gd_lib" in
44 ''|no) ;;
45 *) libgd_ldflags="-L$withval" ;;
46 esac
49 if test -n "$libgd_include"; then
50   config_vars="$config_vars
51 CFLAGS-memusagestat.c = $libgd_include"
53 if test -n "$libgd_ldflags"; then
54   config_vars="$config_vars
55 libgd-LDFLAGS = $libgd_ldflags"
58 dnl Arguments to specify presence of other packages/features.
59 AC_ARG_WITH(fp, dnl
60 [  --with-fp              if using floating-point hardware [default=yes]],
61             with_fp=$withval, with_fp=yes)
62 AC_ARG_WITH(binutils, dnl
63   --with-binutils=PATH    specify location of binutils (as and ld),
64             path_binutils=$withval, path_binutils='')
65 AC_ARG_WITH(elf, dnl
66   --with-elf              if using the ELF object format,
67             elf=$withval, elf=no)
68 AC_ARG_WITH(cvs, dnl
69 [  --without-cvs           if CVS should not be used],
70             with_cvs=$withval, with_cvs=yes)
71 if test "$with_cvs" = yes; then
72   if test -d $srcdir/CVS && grep :pserver: $srcdir/CVS/Root > /dev/null
73   then
74     with_cvs=no
75   fi
77 AC_SUBST(with_cvs)
79 AC_ARG_WITH(headers, dnl
80 [  --with-headers=PATH     location of system headers to use
81                           [e.g. /usr/src/linux/include]
82                           [default=compiler default]],
83             sysheaders=$withval, sysheaders='')
85 AC_ARG_ENABLE(libio, dnl
86 [  --enable-libio          build in GNU libio instead of GNU stdio],
87               [if test $enableval = yes; then
88                  stdio=libio
89                else
90                  stdio=stdio
91                fi],
92               stdio=default)
94 AC_ARG_ENABLE(sanity-checks, dnl
95 [  --disable-sanity-checks really do not use threads (should not be used
96                           except in special situations) [default=yes]],
97               enable_sanity=$enableval, enable_sanity=yes)
99 dnl Arguments to enable or disable building the static, shared, profiled,
100 dnl and -fomit-frame-pointer libraries.
101 dnl I've disabled this for now since we cannot build glibc without static
102 dnl libraries built in the moment.
103 dnl AC_ARG_ENABLE(static, dnl
104 dnl [  --enable-static         build static library [default=yes]],
105 dnl           static=$enableval, static=yes)
106 static=yes
107 AC_ARG_ENABLE(shared, dnl
108 [  --enable-shared         build shared library [default=yes if GNU ld & ELF]],
109               shared=$enableval, shared=default)
110 AC_ARG_ENABLE(profile, dnl
111 [  --enable-profile        build profiled library [default=yes]],
112               profile=$enableval, profile=yes)
113 AC_ARG_ENABLE(omitfp, dnl
114 [  --enable-omitfp         build undebuggable optimized library [default=no]],
115               omitfp=$enableval, omitfp=no)
116 AC_ARG_ENABLE(bounded, dnl
117 [  --enable-bounded        build with runtime bounds checking [default=no]],
118               bounded=$enableval, bounded=no)
119 AC_ARG_ENABLE(versioning, dnl
120 [  --disable-versioning    do not include versioning information in the
121                           library objects [default=yes if supported]],
122              enable_versioning=$enableval, enable_versioning=yes)
124 AC_ARG_ENABLE(oldest-abi, dnl
125 [  --enable-oldest-abi=ABI configure the oldest ABI supported [e.g. 2.2]
126                           [default=glibc default]],
127             oldest_abi=$enableval, oldest_abi=no)
128 if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
129   oldest_abi=default
130 else
131   AC_DEFINE_UNQUOTED(GLIBC_OLDEST_ABI, "$oldest_abi")
133 AC_SUBST(oldest_abi)
135 dnl Generic infrastructure for drop-in additions to libc.
136 AC_ARG_ENABLE(add-ons, dnl
137 [  --enable-add-ons[=DIR1,DIR2]...
138                           configure and build add-ons in DIR1,DIR2,...
139                           search for add-ons if no parameter given],
140   [case "$enableval" in
141     yes) add_ons=`cd $srcdir && echo */configure | sed -e 's!/configure!!g'`
142          test "$add_ons" = "*" && add_ons= ;;
143     *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
144    esac],
145   [add_ons=])
147 AC_CONFIG_SUBDIRS($add_ons)
148 add_ons_pfx=
149 if test x"$add_ons" != x; then
150   for f in $add_ons; do
151     # Some sanity checks
152     if test "$f" = "crypt"; then
153       AC_MSG_ERROR([
154 *** It seems that you're using an old \`crypt' add-on.  crypt is now
155 *** part of glibc and using the old add-on will not work with this
156 *** release.  Start again with fresh sources and without the old
157 *** \`crypt' add-on.])
158     fi
159     if test "$f" = "localedata"; then
160       AC_MSG_ERROR([
161 *** It seems that you're using an old \`localedata' add-on.  localedata
162 *** is now part of glibc and using the old add-on will not work with
163 *** this release.  Start again with fresh sources and without the old
164 *** \`localedata' add-on.])
165     fi
166     # Test whether such a subdir really exists.
167     if test -d $srcdir/$f; then
168       add_ons_pfx="$add_ons_pfx $f/"
169     else
170       AC_MSG_ERROR(add-on directory \"$f\" does not exist)
171     fi
172   done
175 dnl On some platforms we cannot use dynamic loading.  We must provide
176 dnl static NSS modules.
177 AC_ARG_ENABLE(static-nss, dnl
178 [  --enable-static-nss     build static NSS modules [default=no]],
179               static_nss=$enableval, static_nss=no)
180 if test x"$static_nss" = xyes; then
181   AC_DEFINE(DO_STATIC_NSS)
184 AC_ARG_ENABLE(force-install,
185 [  --disable-force-install don't force installation of files from this package,
186                           even if they are older than the installed files],
187               force_install=$enableval, force_install=yes)
188 AC_SUBST(force_install)
190 dnl On some platforms we allow dropping compatibility with all kernel
191 dnl versions.
192 AC_ARG_ENABLE(kernel,
193 [  --enable-kernel=VERSION compile for compatibility with kernel not older
194                            than VERSION],
195               minimum_kernel=$enableval)
196 dnl Prevent unreasonable values.
197 if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
198   # Better nothing than this.
199   minimum_kernel=""
200 else
201   if test "$minimum_kernel" = current; then
202     minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
203   fi
206 dnl For the development we sometimes want gcc to issue even more warnings.
207 dnl This is not the default since many of the extra warnings are not
208 dnl appropriate.
209 AC_ARG_ENABLE(all-warnings,
210 [  --enable-all-warnings   enable all useful warnings gcc can issue],
211               all_warnings=$enableval)
212 AC_SUBST(all_warnings)
214 AC_CANONICAL_HOST
216 # The way shlib-versions is used to generate soversions.mk uses a
217 # fairly simplistic model for name recognition that can't distinguish
218 # i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a $host_os
219 # of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
220 # tell.  This doesn't get used much beyond that, so it's fairly safe.
221 case "$host_os" in
222 linux*)
223   ;;
224 gnu*)
225   host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
226   ;;
227 esac
229 # We keep the original values in `$config_*' and never modify them, so we
230 # can write them unchanged into config.make.  Everything else uses
231 # $machine, $vendor, and $os, and changes them whenever convenient.
232 config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
234 # Don't allow vendor == "unknown"
235 test "$config_vendor" = unknown && config_vendor=
236 config_os="`echo $config_os | sed 's/^unknown-//'`"
238 # Some configurations imply other options.
239 case "$host_os" in
240 gnu* | linux* | bsd4.4* | netbsd* | freebsd*)
241   # These systems always use GNU tools.
242   gnu_ld=yes gnu_as=yes ;;
243 esac
244 case "$host_os" in
245 # i586-linuxaout is mangled into i586-pc-linux-gnuaout
246 linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
247   ;;
248 gnu* | linux* | sysv4* | solaris2* | irix6*)
249   # These systems (almost) always use the ELF format.
250   elf=yes
251   ;;
252 esac
254 machine=$config_machine
255 vendor=$config_vendor
256 os=$config_os
258 # config.guess on some IBM machines says `rs6000' instead of `powerpc'.
259 # Unify this here.
260 if test "$machine" = rs6000; then
261   machine="powerpc"
265 ### I put this here to prevent those annoying emails from people who cannot
266 ### read and try to compile glibc on unsupported platforms.  --drepper
268 ### By using the undocumented --enable-hacker-mode option for configure
269 ### one can skip this test to make the configuration not fail for unsupported
270 ### platforms.
272 if test -z "$enable_hacker_mode"; then
273   case "$machine-$host_os" in
274   *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*)
275     ;;
276   *)
277     echo "*** The GNU C library is currently not available for this platform."
278     echo "*** So far nobody cared to port it and if there is no volunteer it"
279     echo "*** might never happen.  So, if you have interest to see glibc on"
280     echo "*** this platform visit"
281     echo "***   http://www.gnu.org/software/libc/porting.html"
282     echo "*** and join the group of porters"
283     exit 1
284     ;;
285   esac
288 dnl We need to use [ and ] for other purposes for a while now.
289 changequote(,)dnl
290 # Expand the configuration machine name into a subdirectory by architecture
291 # type and particular chip.
292 case "$machine" in
293 a29k | am29000) base_machine=a29k machine=a29k ;;
294 alpha*)         base_machine=alpha machine=alpha/$machine ;;
295 arm*)           base_machine=arm machine=arm/arm32/$machine ;;
296 c3[012])        base_machine=cx0 machine=cx0/c30 ;;
297 c4[04])         base_machine=cx0 machine=cx0/c40 ;;
298 hppa*64*)       base_machine=hppa machine=hppa/hppa64 ;;
299 hppa*)          base_machine=hppa machine=hppa/hppa1.1 ;;
300 i[3456]86)      base_machine=i386 machine=i386/$machine ;;
301 ia64)           base_machine=ia64 machine=ia64 ;;
302 m680?0)         base_machine=m68k machine=m68k/$machine ;;
303 m68k)           base_machine=m68k machine=m68k/m68020 ;;
304 m88???)         base_machine=m88k machine=m88k/$machine ;;
305 m88k)           base_machine=m88k machine=m88k/m88100 ;;
306 mips64*)        base_machine=mips64 machine=mips/mips64/$machine ;;
307 mips*)          base_machine=mips
308                 case "`uname -m`" in
309                 IP22) machine=mips/mips3 ;;
310                 *)    machine=mips/$machine ;;
311                 esac ;;
312 sh3*)           base_machine=sh machine=sh/sh3 ;;
313 sh4*)           base_machine=sh machine=sh/sh4 ;;
314 sparc | sparcv[67])
315                 base_machine=sparc machine=sparc/sparc32 ;;
316 sparcv8 | supersparc | hypersparc)
317                 base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
318 sparcv8plus | sparcv8plusa | sparcv9)
319                 base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
320 sparc64 | ultrasparc)
321                 base_machine=sparc machine=sparc/sparc64 ;;
322 thumb*)         base_machine=thumb machine=arm/thumb/$machine ;;
323 esac
324 changequote([,])dnl
325 AC_SUBST(base_machine)
327 if test "$base_machine" = "i386"; then
328   AC_DEFINE(USE_REGPARMS)
331 # Compute the list of sysdep directories for this configuration.
332 # This can take a while to compute.
333 sysdep_dir=$srcdir/sysdeps
334 AC_MSG_CHECKING(sysdep dirs)
335 dnl We need to use [ and ] for other purposes for a while now.
336 changequote(,)dnl
337 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
338 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
340 case "$os" in
341 gnu*)
342   base_os=mach/hurd ;;
343 netbsd* | 386bsd* | freebsd* | bsdi*)
344   base_os=unix/bsd/bsd4.4 ;;
345 osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
346   base_os=unix/bsd ;;
347 sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
348   base_os=unix/sysv ;;
349 irix6*)
350   base_os=unix/sysv/irix6/$os ;;
351 solaris[2-9]*)
352   base_os=unix/sysv/sysv4 ;;
353 hpux*)
354   base_os=unix/sysv/hpux/$os ;;
355 aix4.3*)
356   base_os=unix/sysv/aix/aix4.3 ;;
357 none)
358   base_os=standalone ;;
360   base_os='' ;;
361 esac
363 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
364 tail=$os
365 ostry=$os
366 while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
367   ostry="$ostry /$o"
368   tail=$o
369 done
370 o=`echo $tail | sed 's/[0-9]*$//'`
371 if test $o != $tail; then
372   ostry="$ostry /$o"
374 # For linux-gnu, try linux-gnu, then linux.
375 o=`echo $tail | sed 's/-.*$//'`
376 if test $o != $tail; then
377   ostry="$ostry /$o"
380 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
381 base=
382 tail=$base_os
383 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
384   set $b
385   base="$base /$1"
386   tail="$2"
387 done
389 # For sparc/sparc32, try sparc/sparc32 and then sparc.
390 mach=
391 tail=$machine
392 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
393   set $m
394   # Prepend the machine's FPU directory unless --without-fp.
395   if test "$with_fp" = yes; then
396     mach="$mach /$1/fpu"
397   fi
398   mach="$mach /$1"
399   tail="$2"
400 done
402 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
403 changequote([,])dnl
405 # Find what sysdep directories exist.
406 sysnames=
407 IFS="${IFS=     }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
408 for d in $add_ons_pfx ''; do
409   for b in $base ''; do
410     for m0 in $mach ''; do
411       for v in /$vendor ''; do
412         test "$v" = / && continue
413         for o in /$ostry ''; do
414           test "$o" = / && continue
415           for m in $mach ''; do
416             if test "$m0$b$v$o$m"; then
417               try="${d}sysdeps$m0$b$v$o$m"
418               test -n "$enable_debug_configure" &&
419               echo "$0 [DEBUG]: try $try" >&2
420               if test -d $srcdir/$try; then
421                 sysnames="$sysnames $try"
422                 { test -n "$o" || test -n "$b"; } && os_used=t
423                 { test -n "$m" || test -n "$m0"; } && machine_used=t
424               fi
425             fi
426           done
427         done
428       done
429     done
430   done
431 done
432 IFS="$ac_save_ifs"
434 if test -z "$os_used" && test "$os" != none; then
435   AC_MSG_ERROR(Operating system $os is not supported.)
437 if test -z "$machine_used" && test "$machine" != none; then
438   AC_MSG_ERROR(The $machine is not supported.)
441 # We have now validated the configuration.
444 # If using ELF, look for an `elf' subdirectory of each machine directory.
445 # We prepend these rather than inserting them whereever the machine appears
446 # because things specified by the machine's ELF ABI should override
447 # OS-specific things, and should always be the same for any OS on the
448 # machine (otherwise what's the point of an ABI?).
449 if test "$elf" = yes; then
450   elf_dirs=
451   for d in $add_ons_pfx ''; do
452     for m in $mach; do
453       if test -d $srcdir/${d}sysdeps$m/elf; then
454         elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
455       fi
456     done
457   done
458   sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
462 # Expand the list of system names into a full list of directories
463 # from each element's parent name and Implies file (if present).
464 set $sysnames
465 names=
466 while test $# -gt 0; do
467   name=$1
468   shift
470   case " $names " in *" $name "*)
471     # Already in the list.
472     continue
473   esac
475   # Report each name as we discover it, so there is no long pause in output.
476   echo $ac_n "$name $ac_c" >&AC_FD_MSG
478   name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
480   case $name in
481     /*) xsrcdir= ;;
482     *)  xsrcdir=$srcdir/ ;;
483   esac
484   test -n "$enable_debug_configure" &&
485   echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
487   if test -f $xsrcdir$name/Implies; then
488     # Collect more names from the `Implies' file (removing comments).
489     implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
490     implied=
491     for x in $implied_candidate; do
492       if test -d $xsrcdir$name_base/$x; then
493         implied="$implied $name_base/$x";
494       else
495         AC_MSG_WARN($name/Implies specifies nonexistent $x)
496       fi
497     done
498   else
499     implied=
500   fi
502   # Add NAME to the list of names.
503   names="$names $name"
505   # Find the parent of NAME, using the empty string if it has none.
506 changequote(,)dnl
507   parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
508 changequote([,])dnl
510   # Add the names implied by NAME, and NAME's parent (if it has one), to
511   # the list of names to be processed (the argument list).  We prepend the
512   # implied names to the list and append the parent.  We want implied
513   # directories to come before further directories inferred from the
514   # configuration components; this ensures that for sysv4, unix/common
515   # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
516   # after sysv4).
517   sysnames="`echo $implied $* $parent`"
518   test -n "$sysnames" && set $sysnames
519 done
521 # Add the default directories.
522 default_sysnames=sysdeps/generic
523 if test "$elf" = yes; then
524   default_sysnames="sysdeps/generic/elf $default_sysnames"
526 sysnames="$names $default_sysnames"
527 AC_SUBST(sysnames)
528 # The other names were emitted during the scan.
529 AC_MSG_RESULT($default_sysnames)
532 ### Locate tools.
534 AC_PROG_INSTALL
535 if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
536   # The makefiles need to use a different form to find it in $srcdir.
537   INSTALL='\$(..)./scripts/install-sh -c'
539 AC_PROG_LN_S
541 # We need the physical current working directory.  We cannot use the
542 # "pwd -P" shell builtin since that's not portable.  Instead we try to
543 # find a pwd binary.  Note that assigning to the PWD environment
544 # variable might have some interesting side effects, so we don't do
545 # that.
546 AC_PATH_PROG(PWD_P, pwd, no)
547 if test "$PWD_P" = no; then
548   AC_MSG_ERROR(*** A pwd binary could not be found.)
551 # These programs are version sensitive.
552 AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl
553 AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
554   [version \([egcygnustpi-]*[0-9.]*\)],
555   [*gcc-2.9[5-9].*|*2.8.[1-9]*|*2.9|*2.9.[0-9]*|2.9[5-9]*|3.[0-9]*|cygnus-2.9[1-9]*|gcc-2.9[5-9]|gcc-2.1[0-9][0-9]|sgicc-*],
556   critic_missing=t)
557 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
558   [GNU Make[^0-9]*\([0-9][0-9.]*\)],
559   [3.79* | 3.[89]*], critic_missing=t)
561 AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
562   [GNU gettext.* \([0-9]*\.[0-9.]*\)],
563   [0.[1-9][0-9].* | [1-9].*], MSGFMT=: aux_missing=t)
564 AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
565   [GNU texinfo.* \([0-9][0-9.]*\)],
566   [4.*], MAKEINFO=: aux_missing=t)
567 AC_CHECK_PROG_VER(SED, gsed sed, --version,
568   [GNU sed version \([0-9]*\.[0-9.]*\)],
569   [3.0[2-9]*|3.[1-9]*|[4-9]*], SED=: aux_missing=t)
571 AC_PROG_CC_LOCAL
572 AC_CANONICAL_BUILD
573 if test $host != $build; then
574   AC_CHECK_PROGS(BUILD_CC, gcc cc)
576 AC_SUBST(cross_compiling)
577 AC_PROG_CPP
578 LIBC_PROG_BINUTILS
579 AC_CHECK_TOOL(MIG, mig)
581 # Accept binutils 2.10.1 or newer (and also any ia64 2.9 version)
582 # XXX Commented out because it filters out too many good versions.
583 # XXX --drepper
584 # AC_CHECK_PROG_VER(AS, $AS, --version,
585 #   [GNU assembler.* \([0-9]*\.[0-9.]*\(-ia64-[0-9]*\)*\)],
586 #   [2.10.[1-9]* | 2.1[1-9]* | 2.9-ia64-*], AS=: critic_missing=t)
588 if test -n "$critic_missing"; then
589 AC_MSG_ERROR([
590 *** Some critical program is missing or too old.
591 *** Check the INSTALL file for required versions.])
594 test -n "$aux_missing" && AC_MSG_WARN([
595 *** An auxiliary program is missing or too old;
596 *** some features will be disabled.
597 *** Check the INSTALL file for required versions.])
599 # glibcbug.in wants to know the compiler version.
600 CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'`
601 AC_SUBST(CCVERSION)
603 # if using special system headers, find out the compiler's sekrit
604 # header directory and add that to the list.  NOTE: Only does the right
605 # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
606 if test -n "$sysheaders"; then
607   ccheaders=`$CC -print-file-name=include`
608   SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $sysheaders"
610 AC_SUBST(SYSINCLUDES)
612 # check if ranlib is necessary
613 AC_CACHE_CHECK(whether ranlib is necessary, libc_cv_ranlib_necessary, [dnl
614 cat > conftest.c <<EOF
615 int a;
616 char b;
617 void c(void) {}
619 $CC $CFLAGS -c conftest.c
620 $AR cr conftest.a conftest.c
621 cp conftest.a conftest2.a
622 $RANLIB conftest.a
623 if cmp -s conftest.a conftest2.a; then
624   libc_cv_ranlib_necessary=no
625 else
626   libc_cv_ranlib_necessary=yes
628 rm -rf conftest*])
629 if test "$libc_cv_ranlib_necessary" = no; then
630  RANLIB=:
633 # Test if LD_LIBRARY_PATH contains the notation for the current directory
634 # since this would lead to problems installing/building glibc.
635 # LD_LIBRARY_PATH contains the current directory if one of the following
636 # is true:
637 # - one of the terminals (":" and ";") is the first or last sign
638 # - two terminals occur directly after each other
639 # - the path contains an element with a dot in it
640 AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
641 changequote(,)dnl
642 case ${LD_LIBRARY_PATH} in
643   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
644     ld_library_path_setting="contains current directory"
645     ;;
646   *)
647     ld_library_path_setting="ok"
648     ;;
649 esac
650 changequote([,])dnl
651 AC_MSG_RESULT($ld_library_path_setting)
652 if test "$ld_library_path_setting" != "ok"; then
653 AC_MSG_ERROR([
654 *** LD_LIBRARY_PATH shouldn't contain the current directory when
655 *** building glibc. Please change the environment variable
656 *** and run configure again.])
659 AC_PATH_PROG(BASH, bash, no)
660 if test "$BASH" != no &&
661    $BASH -c 'test "$BASH_VERSINFO" \
662              && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
663   libc_cv_have_bash2=yes
664 else
665   libc_cv_have_bash2=no
667 AC_SUBST(libc_cv_have_bash2)
669 dnl We need a ksh compatible shell for tzselect.
670 if test "$BASH" = no; then
671   AC_PATH_PROG(KSH, ksh, no)
672   if test "$KSH" = no; then
673     libc_cv_have_ksh=no
674   else
675     libc_cv_have_ksh=yes
676   fi
677 else
678   KSH="$BASH"
679   AC_SUBST(KSH)
680   libc_cv_have_ksh=yes
682 AC_SUBST(libc_cv_have_ksh)
684 AC_PROG_AWK
685 AC_PATH_PROG(PERL, perl, no)
686 if test "$PERL" != no &&
687    (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
688   PERL=no
690 AC_PATH_PROG(INSTALL_INFO, install-info, no,
691              $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
692 if test "$INSTALL_INFO" != "no"; then
693 AC_CACHE_CHECK(for old Debian install-info, libc_cv_old_debian_install_info,
694  [mkdir conftest.d
695   # There is a hard ^_ on the next line.  I am open to better ideas.
696   (echo '\x1f'
697   echo 'File: dir       Node: Top       This is the top of the INFO tree'
698   echo '* Menu:') >conftest.d/dir
699   (echo 'INFO-DIR-SECTION i-d-s works'
700   echo 'START-INFO-DIR-ENTRY'
701   echo '* Prog: (prog).   Program.'
702   echo 'END-INFO-DIR-ENTRY') >conftest.d/prog.info
703   if $INSTALL_INFO --info-dir=conftest.d conftest.d/prog.info >&AC_FD_CC 2>&1
704   then
705     if grep -s 'i-d-s works' conftest.d/dir >/dev/null
706     then libc_cv_old_debian_install_info=no
707     else libc_cv_old_debian_install_info=yes
708     fi
709   else libc_cv_old_debian_install_info=no testfailed=t
710   fi
711   rm -fr conftest.d])
712 if test -n "$testfailed"
713 then AC_MSG_WARN([install-info errored out, check config.log])
715 OLD_DEBIAN_INSTALL_INFO=$libc_cv_old_debian_install_info
717 AC_SUBST(OLD_DEBIAN_INSTALL_INFO)
719 AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
721 AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
722 echo '#include <stddef.h>
723 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
724 if eval "$ac_cpp conftest.c 2>/dev/null" \
725 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
726   libc_cv_signed_size_t=no
727 else
728   libc_cv_signed_size_t=yes
730 rm -f conftest*])
731 if test $libc_cv_signed_size_t = yes; then
732   dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
733   cat >> confdefs.h <<\EOF
734 #undef __SIZE_TYPE__
735 #define __SIZE_TYPE__ unsigned
739 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
740 AC_TRY_COMPILE(dnl
741 [#define __need_size_t
742 #define __need_wchar_t
743 #include <stddef.h>
744 #define __need_NULL
745 #include <stddef.h>], [size_t size; wchar_t wchar;
746 #ifdef offsetof
747 #error stddef.h ignored __need_*
748 #endif
749 if (&size == NULL || &wchar == NULL) abort ();],
750                libc_cv_friendly_stddef=yes,
751                libc_cv_friendly_stddef=no)])
752 if test $libc_cv_friendly_stddef = yes; then
753   config_vars="$config_vars
754 override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
757 AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
758                libc_cv_need_minus_P, [dnl
759 cat > conftest.S <<EOF
760 #include "confdefs.h"
761 /* Nothing whatsoever.  */
763 if ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null; then
764   libc_cv_need_minus_P=no
765 else
766   libc_cv_need_minus_P=yes
768 rm -f conftest*])
769 if test $libc_cv_need_minus_P = yes; then
770   config_vars="$config_vars
771 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
774 AC_MSG_CHECKING(whether .text pseudo-op must be used)
775 AC_CACHE_VAL(libc_cv_dot_text, [dnl
776 cat > conftest.s <<EOF
777 .text
779 libc_cv_dot_text=
780 if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
781   libc_cv_dot_text=.text
783 rm -f conftest*])
784 if test -z "$libc_cv_dot_text"; then
785   AC_MSG_RESULT(no)
786 else
787   AC_MSG_RESULT(yes)
790 AC_CACHE_CHECK(for assembler global-symbol directive,
791                libc_cv_asm_global_directive, [dnl
792 libc_cv_asm_global_directive=UNKNOWN
793 for ac_globl in .globl .global .EXPORT; do
794   cat > conftest.s <<EOF
795         ${libc_cv_dot_text}
796         ${ac_globl} foo
797 foo:
799   if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
800     libc_cv_asm_global_directive=${ac_globl}
801   fi
802   rm -f conftest*
803   test $libc_cv_asm_global_directive != UNKNOWN && break
804 done])
805 if test $libc_cv_asm_global_directive = UNKNOWN; then
806   AC_MSG_ERROR(cannot determine asm global directive)
807 else
808   AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
811 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
812 cat > conftest.s <<EOF
813 ${libc_cv_dot_text}
814 foo:
815 .set glibc_conftest_frobozz,foo
816 $libc_cv_asm_global_directive glibc_conftest_frobozz
818 # The alpha-dec-osf1 assembler gives only a warning for `.set'
819 # (but it doesn't work), so we must do a linking check to be sure.
820 cat > conftest1.c <<\EOF
821 extern int glibc_conftest_frobozz;
822 main () { printf ("%d\n", glibc_conftest_frobozz); }
824 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
825             -o conftest conftest.s conftest1.c 1>&AC_FD_CC 2>&AC_FD_CC; then
826   libc_cv_asm_set_directive=yes
827 else
828   libc_cv_asm_set_directive=no
830 rm -f conftest*])
831 if test $libc_cv_asm_set_directive = yes; then
832   AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
835 # The Aix ld uses global .symbol_names instead of symbol_names.
836 case "$os" in
837 aix4.3*)
838   AC_DEFINE(HAVE_ASM_GLOBAL_DOT_NAME)
839 esac
841 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
842 [cat > conftest.s <<EOF
843 ${libc_cv_dot_text}
844 _sym:
845 .symver _sym,sym@VERS
847 if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
848   libc_cv_asm_symver_directive=yes
849 else
850   libc_cv_asm_symver_directive=no
852 rm -f conftest*])
853 AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
854 if test $libc_cv_asm_symver_directive = yes; then
855   cat > conftest.s <<EOF
856 ${libc_cv_dot_text}
857 _sym:
858 .symver _sym,sym@VERS
860   cat > conftest.map <<EOF
861 VERS_1 {
862         global: sym;
865 VERS_2 {
866         global: sym;
867 } VERS_1;
869   if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
870     if AC_TRY_COMMAND([${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
871                                         -nostartfiles -nostdlib
872                                         -Wl,--version-script,conftest.map
873                        1>&AC_FD_CC]);
874     then
875       libc_cv_ld_version_script_option=yes
876     else
877       libc_cv_ld_version_script_option=no
878     fi
879   else
880     libc_cv_ld_version_script_option=no
881   fi
882 else
883   libc_cv_ld_version_script_option=no
885 rm -f conftest*])
886 if test $shared != no &&
887    test $libc_cv_asm_symver_directive = yes &&
888    test $libc_cv_ld_version_script_option = yes &&
889    test $enable_versioning = yes; then
890   VERSIONING=yes
891   AC_DEFINE(DO_VERSIONING)
892 else
893   VERSIONING=no
895 AC_SUBST(VERSIONING)
897 if test $shared != no && test $VERSIONING = no; then
898   echo "\
899 *** WARNING: You should not compile GNU libc without versioning. Not using
900 *** versioning will introduce incompatibilities so that old binaries
901 *** will not run anymore.
902 *** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
904 if test $elf = yes; then
905   AC_CACHE_CHECK(for .previous assembler directive,
906                  libc_cv_asm_previous_directive, [dnl
907   cat > conftest.s <<EOF
908 .section foo_section
909 .previous
911   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
912     libc_cv_asm_previous_directive=yes
913   else
914     libc_cv_asm_previous_directive=no
915   fi
916   rm -f conftest*])
917   if test $libc_cv_asm_previous_directive = yes; then
918     AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
919   else
920     AC_CACHE_CHECK(for .popsection assembler directive,
921                    libc_cv_asm_popsection_directive, [dnl
922     cat > conftest.s <<EOF
923 .pushsection foo_section
924 .popsection
926     if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
927       libc_cv_asm_popsection_directive=yes
928     else
929       libc_cv_asm_popsection_directive=no
930     fi
931     rm -f conftest*])
932     if test $libc_cv_asm_popsection_directive = yes; then
933       AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
934     fi
935   fi
936   AC_CACHE_CHECK(for .protected and .hidden assembler directive,
937                  libc_cv_asm_protected_directive, [dnl
938   cat > conftest.s <<EOF
939 .protected foo
940 foo:
941 .hidden bar
942 bar:
944   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
945     libc_cv_asm_protected_directive=yes
946   else
947     libc_cv_asm_protected_directive=no
948   fi
949   rm -f conftest*])
950   AC_SUBST(libc_cv_asm_protected_directive)
952   AC_CACHE_CHECK(for -z nodelete option,
953                  libc_cv_z_nodelete, [dnl
954   cat > conftest.c <<EOF
955 int _start (void) { return 42; }
957   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodelete 1>&AC_FD_CC])
958   then
959     libc_cv_z_nodelete=yes
960   else
961     libc_cv_z_nodelete=no
962   fi
963   rm -f conftest*])
964   AC_SUBST(libc_cv_z_nodelete)
966   AC_CACHE_CHECK(for -z nodlopen option,
967                  libc_cv_z_nodlopen, [dnl
968   cat > conftest.c <<EOF
969 int _start (void) { return 42; }
971   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,nodlopen 1>&AC_FD_CC])
972   then
973     libc_cv_z_nodlopen=yes
974   else
975     libc_cv_z_nodlopen=no
976   fi
977   rm -f conftest*])
978   AC_SUBST(libc_cv_z_nodlopen)
980   AC_CACHE_CHECK(for -z initfirst option,
981                  libc_cv_z_initfirst, [dnl
982   cat > conftest.c <<EOF
983 int _start (void) { return 42; }
985   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,--enable-new-dtags,-z,initfirst 1>&AC_FD_CC])
986   then
987     libc_cv_z_initfirst=yes
988   else
989     libc_cv_z_initfirst=no
990   fi
991   rm -f conftest*])
992   AC_SUBST(libc_cv_z_initfirst)
995 if test $elf != yes; then
996   AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
997                  [AC_TRY_COMPILE(, [asm (".section .init");
998                                     asm (".section .fini");
999                                     asm ("${libc_cv_dot_text}");],
1000                                  libc_cv_have_initfini=yes,
1001                                  libc_cv_have_initfini=no)])
1002   AC_SUBST(libc_cv_have_initfini)dnl
1003   if test $libc_cv_have_initfini = yes; then
1004     AC_DEFINE(HAVE_INITFINI)
1005   fi
1008 if test $elf = yes -a $gnu_ld = yes; then
1009   AC_CACHE_CHECK(whether cc puts quotes around section names,
1010                  libc_cv_have_section_quotes,
1011                  [cat > conftest.c <<EOF
1012                   static const int foo
1013                   __attribute__ ((section ("bar"))) = 1;
1015                   if ${CC-cc} -S conftest.c -o conftest.s; then
1016                     if grep '\.section.*"bar"' conftest.s >/dev/null; then
1017                       libc_cv_have_section_quotes=yes
1018                     else
1019                       libc_cv_have_section_quotes=no
1020                     fi
1021                   else
1022                     libc_cv_have_section_quotes=unknown
1023                   fi
1024                   rm -f conftest.[cs]
1025                  ])
1026   if test $libc_cv_have_section_quotes = yes; then
1027     AC_DEFINE(HAVE_SECTION_QUOTES)
1028   fi
1031 dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
1032 AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
1033 [cat > conftest.$ac_ext <<EOF
1034 dnl This sometimes fails to find confdefs.h, for some reason.
1035 dnl [#]line __oline__ "[$]0"
1036 [#]line __oline__ "configure"
1037 #include "confdefs.h"
1038 void underscore_test(void) {
1039 return; }
1041 if AC_TRY_EVAL(ac_compile); then
1042   if grep _underscore_test conftest* >/dev/null; then
1043     ifelse([$1], , :, [rm -f conftest*
1044     $1])
1045   else
1046     ifelse([$2], , , [rm -f conftest*
1047     $2])
1048   fi
1049 else
1050   echo "configure: failed program was:" >&AC_FD_CC
1051   cat conftest.$ac_ext >&AC_FD_CC
1052   ifelse([$2], , , [rm -f conftest*
1053   $2])
1055 rm -f conftest*])
1057 if test $elf = yes; then
1058   libc_cv_asm_underscores=no
1059 else
1060   if test $ac_cv_prog_cc_works = yes; then
1061     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1062                    [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
1063                                 libc_cv_asm_underscores=yes,
1064                                 libc_cv_asm_underscores=no)])
1065   else
1066     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1067                    [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
1068                                             libc_cv_asm_underscores=no)])
1069   fi
1071 if test $libc_cv_asm_underscores = no; then
1072   AC_DEFINE(NO_UNDERSCORES)
1075 if test $elf = yes; then
1076   libc_cv_weak_symbols=yes
1079 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1080                [dnl
1081 cat > conftest.s <<EOF
1082 ${libc_cv_dot_text}
1083 ${libc_cv_asm_global_directive} foo
1084 foo:
1085 .weak foo
1086 .weak bar; bar = foo
1088 if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
1089   libc_cv_asm_weak_directive=yes
1090 else
1091   libc_cv_asm_weak_directive=no
1093 rm -f conftest*])
1095 if test $libc_cv_asm_weak_directive = no; then
1096   AC_CACHE_CHECK(for assembler .weakext directive,
1097                  libc_cv_asm_weakext_directive,
1098                  [dnl
1099 cat > conftest.s <<EOF
1100 ${libc_cv_dot_text}
1101 ${libc_cv_asm_global_directive} foo
1102 foo:
1103 .weakext bar foo
1104 .weakext baz
1105 ${libc_cv_asm_global_directive} baz
1106 baz:
1108   if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
1109     libc_cv_asm_weakext_directive=yes
1110   else
1111     libc_cv_asm_weakext_directive=no
1112   fi
1113   rm -f conftest*])
1115 fi # no .weak
1117 if test $libc_cv_asm_weak_directive = yes; then
1118   AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1119 elif test $libc_cv_asm_weakext_directive = yes; then
1120   AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1123 dnl The standard hppa assembler uses `;' to start comments and `!'
1124 dnl as a line separator.
1125 case "${host_cpu}-${host_os}" in
1126   hppa*linux*)
1127   AC_CACHE_CHECK(for assembler line separator,
1128                  libc_cv_asm_line_sep, [dnl
1129   cat > conftest.s <<EOF
1130  nop ; is_old_puffin
1132   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
1133     libc_cv_asm_line_sep='!'
1134   else
1135     if test -z "$enable_hacker_mode"; then
1136       echo "*** You need a newer assembler to compile glibc"
1137       rm -f conftest*
1138       exit 1
1139     fi
1140     libc_cv_asm_line_sep=';'
1141   fi
1142   rm -f conftest*])
1143   AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1144   ;;
1145 esac
1147 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1148 cat > conftest.c <<\EOF
1149 _start () {}
1150 int __eh_pc;
1151 __throw () {}
1153 dnl No \ in command here because it ends up inside ''.
1154 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
1155                             -nostdlib -nostartfiles -Wl,--no-whole-archive
1156                             -o conftest conftest.c 1>&AC_FD_CC]); then
1157   libc_cv_ld_no_whole_archive=yes
1158 else
1159   libc_cv_ld_no_whole_archive=no
1161 rm -f conftest*])
1162 if test $libc_cv_ld_no_whole_archive = yes; then
1163   no_whole_archive=-Wl,--no-whole-archive
1165 AC_SUBST(no_whole_archive)dnl
1167 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1168 cat > conftest.c <<\EOF
1169 _start () {}
1170 int __eh_pc;
1171 __throw () {}
1173 dnl No \ in command here because it ends up inside ''.
1174 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
1175                             -nostdlib -nostartfiles -fexceptions
1176                             -o conftest conftest.c 1>&AC_FD_CC]); then
1177   libc_cv_gcc_exceptions=yes
1178 else
1179   libc_cv_gcc_exceptions=no
1181 rm -f conftest*])
1182 if test $libc_cv_gcc_exceptions = yes; then
1183   exceptions=-fexceptions
1185 AC_SUBST(exceptions)dnl
1187 if test "$base_machine" = alpha ; then
1188 AC_CACHE_CHECK(for function ..ng prefix, libc_cv_gcc_alpha_ng_prefix, [dnl
1189 cat > conftest.c <<\EOF
1190 foo () { }
1193 if AC_TRY_COMMAND([${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null]);
1194 then
1195   libc_cv_gcc_alpha_ng_prefix=yes
1196 else
1197   libc_cv_gcc_alpha_ng_prefix=no
1199 rm -f conftest* ])
1200 if test $libc_cv_gcc_alpha_ng_prefix = yes ; then
1201   AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "$")
1202 else
1203   AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "")
1207 if test "$host_cpu" = powerpc ; then
1208 # Check for a bug present in at least versions 2.8.x of GCC
1209 # and versions 1.0.x of EGCS.
1210 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1211 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1212                libc_cv_c_asmcr0_bug='no',
1213                libc_cv_c_asmcr0_bug='yes')])
1214 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1215   AC_DEFINE(BROKEN_PPC_ASM_CR0)
1219 AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
1220 [cat > conftest.c <<EOF
1221 #line __oline__ "configure"
1222 static char __EH_FRAME_BEGIN__[];
1223 _start ()
1225 #ifdef CHECK__register_frame
1226   __register_frame (__EH_FRAME_BEGIN__);
1227   __deregister_frame (__EH_FRAME_BEGIN__);
1228 #endif
1229 #ifdef CHECK__register_frame_info
1230   __register_frame_info (__EH_FRAME_BEGIN__);
1231   __deregister_frame_info (__EH_FRAME_BEGIN__);
1232 #endif
1234 int __eh_pc;
1235 __throw () {}
1236 /* FIXME: this is fragile.  */
1237 malloc () {}
1238 strcmp () {}
1239 strlen () {}
1240 memcpy () {}
1241 memset () {}
1242 free () {}
1243 abort () {}
1244 __bzero () {}
1246 dnl No \ in command here because it ends up inside ''.
1247 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info
1248                             -nostdlib -nostartfiles
1249                             -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1250   libc_cv_gcc_dwarf2_unwind_info=static
1251 else
1252   libc_cv_gcc_dwarf2_unwind_info=no
1254 if test $libc_cv_gcc_dwarf2_unwind_info = no; then
1255   if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame
1256                               -nostdlib -nostartfiles
1257                               -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1258     libc_cv_gcc_dwarf2_unwind_info=yes
1259   else
1260     libc_cv_gcc_dwarf2_unwind_info=no
1261   fi
1263 rm -f conftest*])
1264 case $libc_cv_gcc_dwarf2_unwind_info in
1265 yes)
1266   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1267   ;;
1268 static)
1269   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1270   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
1271   ;;
1272 esac
1274 dnl Check whether compiler understands __builtin_expect.
1275 AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
1276 [cat > conftest.c <<EOF
1277 #line __oline__ "configure"
1278 int foo (int a)
1280   a = __builtin_expect (a, 10);
1281   return a == 10 ? 0 : 1;
1284 dnl No \ in command here because it ends up inside ''.
1285 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1286                             -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1287   libc_cv_gcc_builtin_expect=yes
1288 else
1289   libc_cv_gcc_builtin_expect=no
1291 rm -f conftest*])
1292 if test "$libc_cv_gcc_builtin_expect" = yes; then
1293   AC_DEFINE(HAVE_BUILTIN_EXPECT)
1296 dnl Check whether the compiler supports subtraction of local labels.
1297 AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
1298 [cat > conftest.c <<EOF
1299 changequote(,)dnl
1300 #line __oline__ "configure"
1301 int foo (int a)
1303   static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
1304   void *p = &&l1 + ar[a];
1305   goto *p;
1306  l1:
1307   return 1;
1308  l2:
1309   return 2;
1311 changequote([,])dnl
1313 dnl No \ in command here because it ends up inside ''.
1314 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1315                             -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1316   libc_cv_gcc_subtract_local_labels=yes
1317 else
1318   libc_cv_gcc_subtract_local_labels=no
1320 rm -f conftest*])
1321 if test "$libc_cv_gcc_subtract_local_labels" = yes; then
1322   AC_DEFINE(HAVE_SUBTRACT_LOCAL_LABELS)
1325 dnl Check whether we have the gd library available.
1326 AC_MSG_CHECKING(for libgd)
1327 old_CFLAGS="$CFLAGS"
1328 CFLAGS="$CFLAGS $libgd_include"
1329 old_LDFLAGS="$LDFLAGS"
1330 LDFLAGS="$LDFLAGS $libgd_ldflags"
1331 old_LIBS="$LIBS"
1332 LIBS="$LIBS -lgd -lpng -lz -lm"
1333 AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1334 CFLAGS="$old_CFLAGS"
1335 LDFLAGS="$old_LDFLAGS"
1336 LIBS="$old_LIBS"
1337 AC_MSG_RESULT($LIBGD)
1338 AC_SUBST(LIBGD)
1340 dnl check for the size of 'long double'.
1341 AC_CHECK_SIZEOF(long double, 0)
1342 sizeof_long_double=$ac_cv_sizeof_long_double
1343 AC_SUBST(sizeof_long_double)
1345 ### End of automated tests.
1346 ### Now run sysdeps configure fragments.
1348 # sysdeps configure fragments may set these with files to be linked below.
1349 libc_link_dests=
1350 libc_link_sources=
1352 # They also can set these variables.
1353 use_ldconfig=no
1354 ldd_rewrite_script=no
1356 # Iterate over all the sysdep directories we will use, running their
1357 # configure fragments, and looking for a uname implementation.
1358 uname=
1359 for dir in $sysnames; do
1360   case $dir in
1361     /*) dest=$dir ;;
1362     *)  dest=$srcdir/$dir ;;
1363   esac
1364   if test -r $dest/configure; then
1365     AC_MSG_RESULT(running configure fragment for $dest)
1366     . $dest/configure
1367   fi
1369   if test -z "$uname"; then
1370     if test -r $dest/uname.c ||
1371        test -r $dest/uname.S ||
1372        { test -r $dest/syscalls.list &&
1373          grep '^uname[  ]' $dest/syscalls.list >/dev/null; }; then
1374       uname=$dir
1375     fi
1376   fi
1377 ]dnl
1378 done
1380 AC_LINK_FILES(`echo $libc_link_sources`, `echo $libc_link_dests`)
1382 # If we will use the generic uname implementation, we must figure out what
1383 # it will say by examining the system, and write the results in config-name.h.
1384 if test "$uname" = "sysdeps/generic"; then
1386 changequote(,)dnl
1387   uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
1388 changequote([,])dnl
1389   if test $uname_sysname != $config_os; then
1390     config_release=`echo $config_os | sed s/$uname_sysname//`
1391   fi
1393 AC_DEFUN(LIBC_KERNEL_ID, [dnl
1394     if test -r /vmunix; then
1395       kernel_id=`strings /vmunix | grep UNIX`
1396     elif test -r /dynix; then
1397       kernel_id=`strings /dynix | grep DYNIX`
1398     else
1399       kernel_id=
1400     fi
1401 ])dnl
1403   AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
1404 AC_REQUIRE([LIBC_KERNEL_ID])dnl
1405 changequote(,)dnl
1406   kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
1407 changequote([,])dnl
1408   if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
1409          != x$config_release; then
1410     # The configuration release is a substring of the kernel release.
1411     libc_cv_uname_release=$kernel_release
1412   elif test x$config_release != x; then
1413     libc_cv_uname_release=$config_release
1414   elif test x$kernel_release != x; then
1415     libc_cv_uname_release=$kernel_release
1416   else
1417     libc_cv_uname_release=unknown
1418   fi])
1419   uname_release="$libc_cv_uname_release"
1421   AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
1422 AC_REQUIRE([LIBC_KERNEL_ID])dnl
1423 changequote(,)dnl
1424   kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
1425 changequote([,])dnl
1426   if test -n "$kernel_version"; then
1427     libc_cv_uname_version="$kernel_version"
1428   else
1429     libc_cv_uname_version=unknown
1430   fi])
1431   uname_version="$libc_cv_uname_version"
1433 AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
1434   config_uname=config-name.h:config-name.in
1435 else
1436   # For non-generic uname, we don't need to create config-name.h at all.
1437   config_uname=
1440 AC_MSG_CHECKING(stdio selection)
1441 AC_SUBST(stdio)
1442 case $stdio in
1443 libio) AC_DEFINE(USE_IN_LIBIO) ;;
1444 default) stdio=stdio ;;
1445 esac
1446 AC_MSG_RESULT($stdio)
1448 # Test for old glibc 2.0.x headers so that they can be removed properly
1449 # Search only in includedir.
1450 AC_MSG_CHECKING(for old glibc 2.0.x headers)
1451 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
1452 then
1453   old_glibc_headers=yes
1454 else
1455   old_glibc_headers=no
1457 AC_MSG_RESULT($old_glibc_headers)
1458 if test ${old_glibc_headers} = yes; then
1459   AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
1460   AC_MSG_WARN(*** be removed.)
1462 AC_SUBST(old_glibc_headers)
1464 AC_SUBST(libc_cv_slibdir)
1465 AC_SUBST(libc_cv_localedir)
1466 AC_SUBST(libc_cv_sysconfdir)
1467 AC_SUBST(libc_cv_rootsbindir)
1469 AC_SUBST(use_ldconfig)
1470 AC_SUBST(ldd_rewrite_script)
1472 AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf)
1473 if test $gnu_ld = yes; then
1474   AC_DEFINE(HAVE_GNU_LD)
1476 if test $gnu_as = yes; then
1477   AC_DEFINE(HAVE_GNU_AS)
1479 if test $elf = yes; then
1480   AC_DEFINE(HAVE_ELF)
1483 AC_SUBST(static)
1484 AC_SUBST(shared)
1485 if test $shared = default; then
1486   if test $gnu_ld = yes; then
1487     shared=$elf
1488   else
1489     # For now we do not assume shared libs are available.  In future more
1490     # tests might become available.
1491     shared=no
1492   fi
1495 AC_CACHE_CHECK([whether -fPIC is default], pic_default,
1496 [pic_default=yes
1497 cat > conftest.c <<EOF
1498 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
1499 # error PIC is default.
1500 #endif
1502 if eval "${CC-cc} -S conftest.c 2>&AC_FD_CC 1>&AC_FD_CC"; then
1503   pic_default=no
1505 rm -f conftest.*])
1506 AC_SUBST(pic_default)
1508 AC_SUBST(profile)
1509 AC_SUBST(omitfp)
1510 AC_SUBST(bounded)
1511 AC_SUBST(static_nss)
1512 AC_SUBST(nopic_initfini)
1514 AC_SUBST(DEFINES)
1516 case "$add_ons" in
1517   *door*) linux_doors=yes ;;
1518   *) linux_doors=no ;;
1519 esac
1520 AC_SUBST(linux_doors)
1522 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
1523   config_makefile=
1524 else
1525   config_makefile=Makefile
1528 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
1529 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
1530 AC_SUBST(VERSION)
1531 AC_SUBST(RELEASE)
1533 AC_OUTPUT(config.make glibcbug ${config_makefile} ${config_uname}, [
1534 case $CONFIG_FILES in *config.make*)
1535 echo "$config_vars" >> config.make;;
1536 esac
1537 test -d bits || mkdir bits], [config_vars='$config_vars'])