Update.
[glibc.git] / configure.in
blob5d9a52bda48a6c9d221ed2fca6fe27be23be865e
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_SUBST(with_fp)
63 AC_ARG_WITH(binutils, dnl
64   --with-binutils=PATH    specify location of binutils (as and ld),
65             path_binutils=$withval, path_binutils='')
66 AC_ARG_WITH(elf, dnl
67   --with-elf              if using the ELF object format,
68             elf=$withval, elf=no)
69 AC_ARG_WITH(xcoff, dnl
70   --with-xcoff            if using the XCOFF object format,
71             xcoff=$withval, xcoff=no)
72 AC_ARG_WITH(cvs, dnl
73 [  --without-cvs           if CVS should not be used],
74             with_cvs=$withval, with_cvs=yes)
75 if test "$with_cvs" = yes; then
76   if test -d $srcdir/CVS && grep :pserver: $srcdir/CVS/Root > /dev/null
77   then
78     with_cvs=no
79   fi
81 AC_SUBST(with_cvs)
83 AC_ARG_WITH(headers, dnl
84 [  --with-headers=PATH     location of system headers to use
85                           [e.g. /usr/src/linux/include]
86                           [default=compiler default]],
87             sysheaders=$withval, sysheaders='')
89 AC_ARG_ENABLE(libio, dnl
90 [  --enable-libio          build in GNU libio instead of GNU stdio],
91               [if test $enableval = yes; then
92                  stdio=libio
93                else
94                  stdio=stdio
95                fi],
96               stdio=default)
98 AC_ARG_ENABLE(sanity-checks, dnl
99 [  --disable-sanity-checks really do not use threads (should not be used
100                           except in special situations) [default=yes]],
101               enable_sanity=$enableval, enable_sanity=yes)
103 dnl Arguments to enable or disable building the static, shared, profiled,
104 dnl and -fomit-frame-pointer libraries.
105 dnl I've disabled this for now since we cannot build glibc without static
106 dnl libraries built in the moment.
107 dnl AC_ARG_ENABLE(static, dnl
108 dnl [  --enable-static         build static library [default=yes]],
109 dnl           static=$enableval, static=yes)
110 static=yes
111 AC_ARG_ENABLE(shared, dnl
112 [  --enable-shared         build shared library [default=yes if GNU ld & ELF]],
113               shared=$enableval, shared=default)
114 AC_ARG_ENABLE(profile, dnl
115 [  --enable-profile        build profiled library [default=yes]],
116               profile=$enableval, profile=yes)
117 AC_ARG_ENABLE(omitfp, dnl
118 [  --enable-omitfp         build undebuggable optimized library [default=no]],
119               omitfp=$enableval, omitfp=no)
120 AC_ARG_ENABLE(bounded, dnl
121 [  --enable-bounded        build with runtime bounds checking [default=no]],
122               bounded=$enableval, bounded=no)
123 AC_ARG_ENABLE(versioning, dnl
124 [  --disable-versioning    do not include versioning information in the
125                           library objects [default=yes if supported]],
126              enable_versioning=$enableval, enable_versioning=yes)
128 AC_ARG_ENABLE(oldest-abi, dnl
129 [  --enable-oldest-abi=ABI configure the oldest ABI supported [e.g. 2.2]
130                           [default=glibc default]],
131             oldest_abi=$enableval, oldest_abi=no)
132 if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
133   oldest_abi=default
134 else
135   AC_DEFINE_UNQUOTED(GLIBC_OLDEST_ABI, "$oldest_abi")
137 AC_SUBST(oldest_abi)
139 dnl Generic infrastructure for drop-in additions to libc.
140 AC_ARG_ENABLE(add-ons, dnl
141 [  --enable-add-ons[=DIR1,DIR2]...
142                           configure and build add-ons in DIR1,DIR2,...
143                           search for add-ons if no parameter given],
144   [case "$enableval" in
145     yes) add_ons=`cd $srcdir && echo */configure | sed -e 's!/configure!!g'`
146          test "$add_ons" = "*" && add_ons= ;;
147     *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
148    esac],
149   [add_ons=])
151 dnl Let the user avoid using TLS.  Don't know why but...
152 AC_ARG_WITH(tls, dnl
153 [  --without-tls           prevent support for TLS],
154             usetls=$withval, usetls=yes)
156 AC_CONFIG_SUBDIRS($add_ons)
157 add_ons_pfx=
158 if test x"$add_ons" != x; then
159   for f in $add_ons; do
160     # Some sanity checks
161     if test "$f" = "crypt"; then
162       AC_MSG_ERROR([
163 *** It seems that you're using an old \`crypt' add-on.  crypt is now
164 *** part of glibc and using the old add-on will not work with this
165 *** release.  Start again with fresh sources and without the old
166 *** \`crypt' add-on.])
167     fi
168     if test "$f" = "localedata"; then
169       AC_MSG_ERROR([
170 *** It seems that you're using an old \`localedata' add-on.  localedata
171 *** is now part of glibc and using the old add-on will not work with
172 *** this release.  Start again with fresh sources and without the old
173 *** \`localedata' add-on.])
174     fi
175     # Test whether such a subdir really exists.
176     if test -d $srcdir/$f; then
177       add_ons_pfx="$add_ons_pfx $f/"
178     else
179       AC_MSG_ERROR(add-on directory \"$f\" does not exist)
180     fi
181   done
184 dnl On some platforms we cannot use dynamic loading.  We must provide
185 dnl static NSS modules.
186 AC_ARG_ENABLE(static-nss, dnl
187 [  --enable-static-nss     build static NSS modules [default=no]],
188               static_nss=$enableval, static_nss=no)
189 if test x"$static_nss" = xyes; then
190   AC_DEFINE(DO_STATIC_NSS)
193 AC_ARG_ENABLE(force-install,
194 [  --disable-force-install don't force installation of files from this package,
195                           even if they are older than the installed files],
196               force_install=$enableval, force_install=yes)
197 AC_SUBST(force_install)
199 dnl On some platforms we allow dropping compatibility with all kernel
200 dnl versions.
201 AC_ARG_ENABLE(kernel,
202 [  --enable-kernel=VERSION compile for compatibility with kernel not older
203                            than VERSION],
204               minimum_kernel=$enableval)
205 dnl Prevent unreasonable values.
206 if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
207   # Better nothing than this.
208   minimum_kernel=""
209 else
210   if test "$minimum_kernel" = current; then
211     minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
212   fi
215 dnl For the development we sometimes want gcc to issue even more warnings.
216 dnl This is not the default since many of the extra warnings are not
217 dnl appropriate.
218 AC_ARG_ENABLE(all-warnings,
219 [  --enable-all-warnings   enable all useful warnings gcc can issue],
220               all_warnings=$enableval)
221 AC_SUBST(all_warnings)
223 AC_CANONICAL_HOST
225 # The way shlib-versions is used to generate soversions.mk uses a
226 # fairly simplistic model for name recognition that can't distinguish
227 # i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a $host_os
228 # of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
229 # tell.  This doesn't get used much beyond that, so it's fairly safe.
230 case "$host_os" in
231 linux*)
232   ;;
233 gnu*)
234   host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
235   ;;
236 esac
238 # We keep the original values in `$config_*' and never modify them, so we
239 # can write them unchanged into config.make.  Everything else uses
240 # $machine, $vendor, and $os, and changes them whenever convenient.
241 config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
243 # Don't allow vendor == "unknown"
244 test "$config_vendor" = unknown && config_vendor=
245 config_os="`echo $config_os | sed 's/^unknown-//'`"
247 # Some configurations imply other options.
248 case "$host_os" in
249 gnu* | linux* | bsd4.4* | netbsd* | freebsd*)
250   # These systems always use GNU tools.
251   gnu_ld=yes gnu_as=yes ;;
252 esac
253 case "$host_os" in
254 # i586-linuxaout is mangled into i586-pc-linux-gnuaout
255 linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
256   ;;
257 gnu* | linux* | sysv4* | solaris2* | irix6*)
258   # These systems (almost) always use the ELF format.
259   elf=yes
260   ;;
261 aix*)
262   # These systems are always xcoff
263   xcoff=yes
264   elf=no
265   ;;
266 esac
268 machine=$config_machine
269 vendor=$config_vendor
270 os=$config_os
272 # config.guess on some IBM machines says `rs6000' instead of `powerpc'.
273 # Unify this here.
274 if test "$machine" = rs6000; then
275   machine="powerpc"
279 ### I put this here to prevent those annoying emails from people who cannot
280 ### read and try to compile glibc on unsupported platforms.  --drepper
282 ### By using the undocumented --enable-hacker-mode option for configure
283 ### one can skip this test to make the configuration not fail for unsupported
284 ### platforms.
286 if test -z "$enable_hacker_mode"; then
287   case "$machine-$host_os" in
288   *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*)
289     ;;
290   *)
291     echo "*** The GNU C library is currently not available for this platform."
292     echo "*** So far nobody cared to port it and if there is no volunteer it"
293     echo "*** might never happen.  So, if you have interest to see glibc on"
294     echo "*** this platform visit"
295     echo "***   http://www.gnu.org/software/libc/porting.html"
296     echo "*** and join the group of porters"
297     exit 1
298     ;;
299   esac
302 dnl We need to use [ and ] for other purposes for a while now.
303 changequote(,)dnl
304 # Expand the configuration machine name into a subdirectory by architecture
305 # type and particular chip.
306 case "$machine" in
307 a29k | am29000) base_machine=a29k machine=a29k ;;
308 alpha*)         base_machine=alpha machine=alpha/$machine ;;
309 arm*)           base_machine=arm machine=arm/arm32/$machine ;;
310 c3[012])        base_machine=cx0 machine=cx0/c30 ;;
311 c4[04])         base_machine=cx0 machine=cx0/c40 ;;
312 hppa*64*)       base_machine=hppa machine=hppa/hppa64 ;;
313 hppa*)          base_machine=hppa machine=hppa/hppa1.1 ;;
314 i[3456]86)      base_machine=i386 machine=i386/$machine ;;
315 ia64)           base_machine=ia64 machine=ia64 ;;
316 m680?0)         base_machine=m68k machine=m68k/$machine ;;
317 m68k)           base_machine=m68k machine=m68k/m68020 ;;
318 m88???)         base_machine=m88k machine=m88k/$machine ;;
319 m88k)           base_machine=m88k machine=m88k/m88100 ;;
320 mips64*)        base_machine=mips64 machine=mips/mips64/$machine ;;
321 mips*)          base_machine=mips
322                 case "`uname -m`" in
323                 IP22) machine=mips/mips3 ;;
324                 *)    machine=mips/$machine ;;
325                 esac ;;
326 s390)           base_machine=s390 machine=s390/s390-32 ;;
327 s390x)          base_machine=s390 machine=s390/s390-64 ;;
328 sh3*)           base_machine=sh machine=sh/sh3 ;;
329 sh4*)           base_machine=sh machine=sh/sh4 ;;
330 sparc | sparcv[67])
331                 base_machine=sparc machine=sparc/sparc32 ;;
332 sparcv8 | supersparc | hypersparc)
333                 base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
334 sparcv8plus | sparcv8plusa | sparcv9)
335                 base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
336 sparcv8plusb | sparcv9b)
337                 base_machine=sparc machine=sparc/sparc32/sparcv9b ;;
338 sparc64 | ultrasparc)
339                 base_machine=sparc machine=sparc/sparc64 ;;
340 sparc64b | ultrasparc3)
341                 base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
342 thumb*)         base_machine=thumb machine=arm/thumb/$machine ;;
343 esac
344 changequote([,])dnl
345 AC_SUBST(base_machine)
347 if test "$base_machine" = "i386"; then
348   AC_DEFINE(USE_REGPARMS)
351 # Compute the list of sysdep directories for this configuration.
352 # This can take a while to compute.
353 sysdep_dir=$srcdir/sysdeps
354 AC_MSG_CHECKING(sysdep dirs)
355 dnl We need to use [ and ] for other purposes for a while now.
356 changequote(,)dnl
357 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
358 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
360 case "$os" in
361 gnu*)
362   base_os=mach/hurd ;;
363 netbsd* | 386bsd* | freebsd* | bsdi*)
364   base_os=unix/bsd/bsd4.4 ;;
365 osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
366   base_os=unix/bsd ;;
367 sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
368   base_os=unix/sysv ;;
369 irix6*)
370   base_os=unix/sysv/irix6/$os ;;
371 solaris[2-9]*)
372   base_os=unix/sysv/sysv4 ;;
373 hpux*)
374   base_os=unix/sysv/hpux/$os ;;
375 aix4.3*)
376   base_os=unix/sysv/aix/aix4.3 ;;
377 none)
378   base_os=standalone ;;
380   base_os='' ;;
381 esac
383 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
384 tail=$os
385 ostry=$os
386 while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
387   ostry="$ostry /$o"
388   tail=$o
389 done
390 o=`echo $tail | sed 's/[0-9]*$//'`
391 if test $o != $tail; then
392   ostry="$ostry /$o"
394 # For linux-gnu, try linux-gnu, then linux.
395 o=`echo $tail | sed 's/-.*$//'`
396 if test $o != $tail; then
397   ostry="$ostry /$o"
400 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
401 base=
402 tail=$base_os
403 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
404   set $b
405   base="$base /$1"
406   tail="$2"
407 done
409 # For sparc/sparc32, try sparc/sparc32 and then sparc.
410 mach=
411 tail=$machine
412 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
413   set $m
414   # Prepend the machine's FPU directory unless --without-fp.
415   if test "$with_fp" = yes; then
416     mach="$mach /$1/fpu"
417   fi
418   mach="$mach /$1"
419   tail="$2"
420 done
422 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
423 changequote([,])dnl
425 # Find what sysdep directories exist.
426 sysnames=
427 IFS="${IFS=     }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
428 for d in $add_ons_pfx ''; do
429   for b in $base ''; do
430     for m0 in $mach ''; do
431       for v in /$vendor ''; do
432         test "$v" = / && continue
433         for o in /$ostry ''; do
434           test "$o" = / && continue
435           for m in $mach ''; do
436             if test "$m0$b$v$o$m"; then
437               try="${d}sysdeps$m0$b$v$o$m"
438               test -n "$enable_debug_configure" &&
439               echo "$0 [DEBUG]: try $try" >&2
440               if test -d $srcdir/$try; then
441                 sysnames="$sysnames $try"
442                 { test -n "$o" || test -n "$b"; } && os_used=t
443                 { test -n "$m" || test -n "$m0"; } && machine_used=t
444               fi
445             fi
446           done
447         done
448       done
449     done
450   done
451 done
452 IFS="$ac_save_ifs"
454 if test -z "$os_used" && test "$os" != none; then
455   AC_MSG_ERROR(Operating system $os is not supported.)
457 if test -z "$machine_used" && test "$machine" != none; then
458   AC_MSG_ERROR(The $machine is not supported.)
461 # We have now validated the configuration.
464 # If using ELF, look for an `elf' subdirectory of each machine directory.
465 # We prepend these rather than inserting them whereever the machine appears
466 # because things specified by the machine's ELF ABI should override
467 # OS-specific things, and should always be the same for any OS on the
468 # machine (otherwise what's the point of an ABI?).
469 if test "$elf" = yes; then
470   elf_dirs=
471   for d in $add_ons_pfx ''; do
472     for m in $mach; do
473       if test -d $srcdir/${d}sysdeps$m/elf; then
474         elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
475       fi
476     done
477   done
478   sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
482 # Expand the list of system names into a full list of directories
483 # from each element's parent name and Implies file (if present).
484 set $sysnames
485 names=
486 while test $# -gt 0; do
487   name=$1
488   shift
490   case " $names " in *" $name "*)
491     # Already in the list.
492     continue
493   esac
495   # Report each name as we discover it, so there is no long pause in output.
496   echo $ac_n "$name $ac_c" >&AC_FD_MSG
498   name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
500   case $name in
501     /*) xsrcdir= ;;
502     *)  xsrcdir=$srcdir/ ;;
503   esac
504   test -n "$enable_debug_configure" &&
505   echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
507   if test -f $xsrcdir$name/Implies; then
508     # Collect more names from the `Implies' file (removing comments).
509     implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
510     implied=
511     for x in $implied_candidate; do
512       found=no
513       if test -d $xsrcdir$name_base/$x; then
514         implied="$implied $name_base/$x";
515         found=yes
516       fi
517       for d in $add_ons_pfx ''; do
518         try="${d}sysdeps/$x"
519         case $d in
520          /*) try_srcdir= ;;
521          *) try_srcdir=$srcdir/ ;;
522         esac
523         test -n "$enable_debug_configure" &&
524          echo "[DEBUG]: $name implied $x try($d) {$try_srcdir}$try" >&2
525         if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
526         then
527           implied="$implied $try"
528           found=yes
529         fi
530       done
531       if test $found = no; then
532         AC_MSG_WARN($name/Implies specifies nonexistent $x)
533       fi
534     done
535   else
536     implied=
537   fi
539   # Add NAME to the list of names.
540   names="$names $name"
542   # Find the parent of NAME, using the empty string if it has none.
543 changequote(,)dnl
544   parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
545 changequote([,])dnl
547   # Add the names implied by NAME, and NAME's parent (if it has one), to
548   # the list of names to be processed (the argument list).  We prepend the
549   # implied names to the list and append the parent.  We want implied
550   # directories to come before further directories inferred from the
551   # configuration components; this ensures that for sysv4, unix/common
552   # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
553   # after sysv4).
554   sysnames="`echo $implied $* $parent`"
555   test -n "$sysnames" && set $sysnames
556 done
558 # Add the default directories.
559 default_sysnames=sysdeps/generic
560 if test "$elf" = yes; then
561   default_sysnames="sysdeps/generic/elf $default_sysnames"
563 sysnames="$names $default_sysnames"
564 AC_SUBST(sysnames)
565 # The other names were emitted during the scan.
566 AC_MSG_RESULT($default_sysnames)
569 ### Locate tools.
571 AC_PROG_INSTALL
572 if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
573   # The makefiles need to use a different form to find it in $srcdir.
574   INSTALL='\$(..)./scripts/install-sh -c'
576 AC_PROG_LN_S
578 # We need the physical current working directory.  We cannot use the
579 # "pwd -P" shell builtin since that's not portable.  Instead we try to
580 # find a pwd binary.  Note that assigning to the PWD environment
581 # variable might have some interesting side effects, so we don't do
582 # that.
583 AC_PATH_PROG(PWD_P, pwd, no)
584 if test "$PWD_P" = no; then
585   AC_MSG_ERROR(*** A pwd binary could not be found.)
588 # These programs are version sensitive.
589 AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl
590 AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
591   [version \([egcygnustpi-]*[0-9.]*\)],
592   [*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-*],
593   critic_missing=gcc)
594 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
595   [GNU Make[^0-9]*\([0-9][0-9.]*\)],
596   [3.79* | 3.[89]*], critic_missing="$critic_missing make")
599 if test -n "$critic_missing"; then
600 AC_MSG_ERROR([
601 *** These critical programs are missing or too old:$critic_missing
602 *** Check the INSTALL file for required versions.])
606 AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
607   [GNU gettext.* \([0-9]*\.[0-9.]*\)],
608   [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
609   MSGFMT=: aux_missing="$aux_missing msgfmt")
610 AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
611   [GNU texinfo.* \([0-9][0-9.]*\)],
612   [4.*],
613   MAKEINFO=: aux_missing="$aux_missing makeinfo")
614 AC_CHECK_PROG_VER(SED, sed, --version,
615   [GNU sed version \([0-9]*\.[0-9.]*\)],
616   [3.0[2-9]*|3.[1-9]*|[4-9]*],
617   SED=: aux_missing="$aux_missing sed")
619 AC_PROG_CC_LOCAL
620 AC_CANONICAL_BUILD
621 if test $host != $build; then
622   AC_CHECK_PROGS(BUILD_CC, gcc cc)
624 AC_SUBST(cross_compiling)
625 AC_PROG_CPP
626 LIBC_PROG_BINUTILS
627 AC_CHECK_TOOL(MIG, mig)
629 # Accept binutils 2.10.1 or newer (and also any ia64 2.9 version)
630 # XXX Commented out because it filters out too many good versions.
631 # XXX --drepper
632 # AC_CHECK_PROG_VER(AS, $AS, --version,
633 #   [GNU assembler.* \([0-9]*\.[0-9.]*\(-ia64-[0-9]*\)*\)],
634 #   [2.10.[1-9]* | 2.1[1-9]* | 2.9-ia64-*], AS=: critic_missing=t)
636 test -n "$aux_missing" && AC_MSG_WARN([
637 *** These auxiliary programs are missing or too old:$aux_missing
638 *** some features will be disabled.
639 *** Check the INSTALL file for required versions.])
641 # glibcbug.in wants to know the compiler version.
642 CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'`
643 AC_SUBST(CCVERSION)
645 # if using special system headers, find out the compiler's sekrit
646 # header directory and add that to the list.  NOTE: Only does the right
647 # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
648 if test -n "$sysheaders"; then
649   ccheaders=`$CC -print-file-name=include`
650   SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $sysheaders"
652 AC_SUBST(SYSINCLUDES)
654 # check if ranlib is necessary
655 AC_CACHE_CHECK(whether ranlib is necessary, libc_cv_ranlib_necessary, [dnl
656 cat > conftest.c <<EOF
657 int a;
658 char b;
659 void c(void) {}
661 $CC $CFLAGS -c conftest.c
662 $AR cr conftest.a conftest.c
663 cp conftest.a conftest2.a
664 $RANLIB conftest.a
665 if cmp -s conftest.a conftest2.a; then
666   libc_cv_ranlib_necessary=no
667 else
668   libc_cv_ranlib_necessary=yes
670 rm -rf conftest*])
671 if test "$libc_cv_ranlib_necessary" = no; then
672  RANLIB=:
675 # Test if LD_LIBRARY_PATH contains the notation for the current directory
676 # since this would lead to problems installing/building glibc.
677 # LD_LIBRARY_PATH contains the current directory if one of the following
678 # is true:
679 # - one of the terminals (":" and ";") is the first or last sign
680 # - two terminals occur directly after each other
681 # - the path contains an element with a dot in it
682 AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
683 changequote(,)dnl
684 case ${LD_LIBRARY_PATH} in
685   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
686     ld_library_path_setting="contains current directory"
687     ;;
688   *)
689     ld_library_path_setting="ok"
690     ;;
691 esac
692 changequote([,])dnl
693 AC_MSG_RESULT($ld_library_path_setting)
694 if test "$ld_library_path_setting" != "ok"; then
695 AC_MSG_ERROR([
696 *** LD_LIBRARY_PATH shouldn't contain the current directory when
697 *** building glibc. Please change the environment variable
698 *** and run configure again.])
701 AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
702 if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
703   libc_cv_gcc_static_libgcc=
704 else
705   libc_cv_gcc_static_libgcc=-static-libgcc
706 fi])
707 AC_SUBST(libc_cv_gcc_static_libgcc)
709 AC_PATH_PROG(BASH, bash, no)
710 if test "$BASH" != no &&
711    $BASH -c 'test "$BASH_VERSINFO" \
712              && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
713   libc_cv_have_bash2=yes
714 else
715   libc_cv_have_bash2=no
717 AC_SUBST(libc_cv_have_bash2)
719 dnl We need a ksh compatible shell for tzselect.
720 if test "$BASH" = no; then
721   AC_PATH_PROG(KSH, ksh, no)
722   if test "$KSH" = no; then
723     libc_cv_have_ksh=no
724   else
725     libc_cv_have_ksh=yes
726   fi
727 else
728   KSH="$BASH"
729   AC_SUBST(KSH)
730   libc_cv_have_ksh=yes
732 AC_SUBST(libc_cv_have_ksh)
734 AC_PROG_AWK
735 AC_PATH_PROG(PERL, perl, no)
736 if test "$PERL" != no &&
737    (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
738   PERL=no
740 AC_PATH_PROG(INSTALL_INFO, install-info, no,
741              $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
742 if test "$INSTALL_INFO" != "no"; then
743 AC_CACHE_CHECK(for old Debian install-info, libc_cv_old_debian_install_info,
744  [mkdir conftest.d
745   # There is a hard ^_ on the next line.  I am open to better ideas.
746   (echo '\x1f'
747   echo 'File: dir       Node: Top       This is the top of the INFO tree'
748   echo '* Menu:') >conftest.d/dir
749   (echo 'INFO-DIR-SECTION i-d-s works'
750   echo 'START-INFO-DIR-ENTRY'
751   echo '* Prog: (prog).   Program.'
752   echo 'END-INFO-DIR-ENTRY') >conftest.d/prog.info
753   if $INSTALL_INFO --info-dir=conftest.d conftest.d/prog.info >&AC_FD_CC 2>&1
754   then
755     if grep -s 'i-d-s works' conftest.d/dir >/dev/null
756     then libc_cv_old_debian_install_info=no
757     else libc_cv_old_debian_install_info=yes
758     fi
759   else libc_cv_old_debian_install_info=no testfailed=t
760   fi
761   rm -fr conftest.d])
762 if test -n "$testfailed"
763 then AC_MSG_WARN([install-info errored out, check config.log])
765 OLD_DEBIAN_INSTALL_INFO=$libc_cv_old_debian_install_info
767 AC_SUBST(OLD_DEBIAN_INSTALL_INFO)
769 AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
771 AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
772 echo '#include <stddef.h>
773 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
774 if eval "$ac_cpp conftest.c 2>/dev/null" \
775 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
776   libc_cv_signed_size_t=no
777 else
778   libc_cv_signed_size_t=yes
780 rm -f conftest*])
781 if test $libc_cv_signed_size_t = yes; then
782   dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
783   cat >> confdefs.h <<\EOF
784 #undef __SIZE_TYPE__
785 #define __SIZE_TYPE__ unsigned
789 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
790 AC_TRY_COMPILE(dnl
791 [#define __need_size_t
792 #define __need_wchar_t
793 #include <stddef.h>
794 #define __need_NULL
795 #include <stddef.h>], [size_t size; wchar_t wchar;
796 #ifdef offsetof
797 #error stddef.h ignored __need_*
798 #endif
799 if (&size == NULL || &wchar == NULL) abort ();],
800                libc_cv_friendly_stddef=yes,
801                libc_cv_friendly_stddef=no)])
802 if test $libc_cv_friendly_stddef = yes; then
803   config_vars="$config_vars
804 override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
807 AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
808                libc_cv_need_minus_P, [dnl
809 cat > conftest.S <<EOF
810 #include "confdefs.h"
811 /* Nothing whatsoever.  */
813 if ${CC-cc} $CFLAGS -c conftest.S 2>/dev/null; then
814   libc_cv_need_minus_P=no
815 else
816   libc_cv_need_minus_P=yes
818 rm -f conftest*])
819 if test $libc_cv_need_minus_P = yes; then
820   config_vars="$config_vars
821 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
824 AC_MSG_CHECKING(whether .text pseudo-op must be used)
825 AC_CACHE_VAL(libc_cv_dot_text, [dnl
826 cat > conftest.s <<EOF
827 .text
829 libc_cv_dot_text=
830 if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
831   libc_cv_dot_text=.text
833 rm -f conftest*])
834 if test -z "$libc_cv_dot_text"; then
835   AC_MSG_RESULT(no)
836 else
837   AC_MSG_RESULT(yes)
840 AC_CACHE_CHECK(for assembler global-symbol directive,
841                libc_cv_asm_global_directive, [dnl
842 libc_cv_asm_global_directive=UNKNOWN
843 for ac_globl in .globl .global .EXPORT; do
844   cat > conftest.s <<EOF
845         ${libc_cv_dot_text}
846         ${ac_globl} foo
847 foo:
849   if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
850     libc_cv_asm_global_directive=${ac_globl}
851   fi
852   rm -f conftest*
853   test $libc_cv_asm_global_directive != UNKNOWN && break
854 done])
855 if test $libc_cv_asm_global_directive = UNKNOWN; then
856   AC_MSG_ERROR(cannot determine asm global directive)
857 else
858   AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
861 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
862 cat > conftest.s <<EOF
863 ${libc_cv_dot_text}
864 foo:
865 .set glibc_conftest_frobozz,foo
866 $libc_cv_asm_global_directive glibc_conftest_frobozz
868 # The alpha-dec-osf1 assembler gives only a warning for `.set'
869 # (but it doesn't work), so we must do a linking check to be sure.
870 cat > conftest1.c <<\EOF
871 extern int glibc_conftest_frobozz;
872 main () { printf ("%d\n", glibc_conftest_frobozz); }
874 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
875             -o conftest conftest.s conftest1.c 1>&AC_FD_CC 2>&AC_FD_CC; then
876   libc_cv_asm_set_directive=yes
877 else
878   libc_cv_asm_set_directive=no
880 rm -f conftest*])
881 if test $libc_cv_asm_set_directive = yes; then
882   AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
885 # The Aix ld uses global .symbol_names instead of symbol_names.
886 case "$os" in
887 aix4.3*)
888   AC_DEFINE(HAVE_ASM_GLOBAL_DOT_NAME)
889 esac
891 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
892 [cat > conftest.s <<EOF
893 ${libc_cv_dot_text}
894 _sym:
895 .symver _sym,sym@VERS
897 if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
898   libc_cv_asm_symver_directive=yes
899 else
900   libc_cv_asm_symver_directive=no
902 rm -f conftest*])
903 AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
904 if test $libc_cv_asm_symver_directive = yes; then
905   cat > conftest.s <<EOF
906 ${libc_cv_dot_text}
907 _sym:
908 .symver _sym,sym@VERS
910   cat > conftest.map <<EOF
911 VERS_1 {
912         global: sym;
915 VERS_2 {
916         global: sym;
917 } VERS_1;
919   if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AC_FD_CC 2>&AC_FD_CC; then
920     if AC_TRY_COMMAND([${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
921                                         -nostartfiles -nostdlib
922                                         -Wl,--version-script,conftest.map
923                        1>&AC_FD_CC]);
924     then
925       libc_cv_ld_version_script_option=yes
926     else
927       libc_cv_ld_version_script_option=no
928     fi
929   else
930     libc_cv_ld_version_script_option=no
931   fi
932 else
933   libc_cv_ld_version_script_option=no
935 rm -f conftest*])
936 if test $shared != no &&
937    test $libc_cv_asm_symver_directive = yes &&
938    test $libc_cv_ld_version_script_option = yes &&
939    test $enable_versioning = yes; then
940   VERSIONING=yes
941   AC_DEFINE(DO_VERSIONING)
942 else
943   VERSIONING=no
945 AC_SUBST(VERSIONING)
947 if test $elf = yes && test $shared != no && test $VERSIONING = no; then
948   echo "\
949 *** WARNING: You should not compile GNU libc without versioning. Not using
950 *** versioning will introduce incompatibilities so that old binaries
951 *** will not run anymore.
952 *** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
954 if test $elf = yes; then
955   AC_CACHE_CHECK(for .previous assembler directive,
956                  libc_cv_asm_previous_directive, [dnl
957   cat > conftest.s <<EOF
958 .section foo_section
959 .previous
961   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
962     libc_cv_asm_previous_directive=yes
963   else
964     libc_cv_asm_previous_directive=no
965   fi
966   rm -f conftest*])
967   if test $libc_cv_asm_previous_directive = yes; then
968     AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
969   else
970     AC_CACHE_CHECK(for .popsection assembler directive,
971                    libc_cv_asm_popsection_directive, [dnl
972     cat > conftest.s <<EOF
973 .pushsection foo_section
974 .popsection
976     if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
977       libc_cv_asm_popsection_directive=yes
978     else
979       libc_cv_asm_popsection_directive=no
980     fi
981     rm -f conftest*])
982     if test $libc_cv_asm_popsection_directive = yes; then
983       AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
984     fi
985   fi
986   AC_CACHE_CHECK(for .protected and .hidden assembler directive,
987                  libc_cv_asm_protected_directive, [dnl
988   cat > conftest.s <<EOF
989 .protected foo
990 foo:
991 .hidden bar
992 bar:
994   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
995     libc_cv_asm_protected_directive=yes
996   else
997     libc_cv_asm_protected_directive=no
998   fi
999   rm -f conftest*])
1000   AC_SUBST(libc_cv_asm_protected_directive)
1001   AC_DEFINE(HAVE_PROTECTED)
1003   AC_CACHE_CHECK(for -z nodelete option,
1004                  libc_cv_z_nodelete, [dnl
1005   cat > conftest.c <<EOF
1006 int _start (void) { return 42; }
1008   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1009                      -nostartfiles -nostdlib
1010                      -Wl,--enable-new-dtags,-z,nodelete 1>&AC_FD_CC])
1011   then
1012     libc_cv_z_nodelete=yes
1013   else
1014     libc_cv_z_nodelete=no
1015   fi
1016   rm -f conftest*])
1017   AC_SUBST(libc_cv_z_nodelete)
1019   AC_CACHE_CHECK(for -z nodlopen option,
1020                  libc_cv_z_nodlopen, [dnl
1021   cat > conftest.c <<EOF
1022 int _start (void) { return 42; }
1024   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1025                         -nostartfiles -nostdlib
1026                         -Wl,--enable-new-dtags,-z,nodlopen 1>&AC_FD_CC])
1027   then
1028     libc_cv_z_nodlopen=yes
1029   else
1030     libc_cv_z_nodlopen=no
1031   fi
1032   rm -f conftest*])
1033   AC_SUBST(libc_cv_z_nodlopen)
1035   AC_CACHE_CHECK(for -z initfirst option,
1036                  libc_cv_z_initfirst, [dnl
1037   cat > conftest.c <<EOF
1038 int _start (void) { return 42; }
1040   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1041                         -nostartfiles -nostdlib
1042                         -Wl,--enable-new-dtags,-z,initfirst 1>&AC_FD_CC])
1043   then
1044     libc_cv_z_initfirst=yes
1045   else
1046     libc_cv_z_initfirst=no
1047   fi
1048   rm -f conftest*])
1049   AC_SUBST(libc_cv_z_initfirst)
1051   AC_CACHE_CHECK(for -Bgroup option,
1052                  libc_cv_Bgroup, [dnl
1053   cat > conftest.c <<EOF
1054 int _start (void) { return 42; }
1056   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,-Bgroup -nostdlib 1>&AC_FD_CC])
1057   then
1058     libc_cv_Bgroup=yes
1059   else
1060     libc_cv_Bgroup=no
1061   fi
1062   rm -f conftest*])
1063   AC_SUBST(libc_cv_Bgroup)
1065   AC_CACHE_CHECK(for -z combreloc,
1066                  libc_cv_z_combreloc, [dnl
1067   cat > conftest.c <<EOF
1068 extern int bar (int);
1069 extern int mumble;
1070 int foo (void) { return bar (mumble); }
1072   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1073                         -nostdlib -nostartfiles
1074                         -Wl,-z,combreloc 1>&AC_FD_CC])
1075   then
1076 dnl The following test is a bit weak.  We must use a tool which can test
1077 dnl cross-platform since the gcc used can be a cross compiler.  Without
1078 dnl introducing new options this is not easily doable.  Instead use a tool
1079 dnl which always is cross-platform: readelf.  To detect whether -z combreloc
1080 dnl look for a section named .rel.dyn.
1081     if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1082       libc_cv_z_combreloc=yes
1083     else
1084       libc_cv_z_combreloc=no
1085     fi
1086   else
1087     libc_cv_z_combreloc=no
1088   fi
1089   rm -f conftest*])
1090   if test "$libc_cv_z_combreloc" = yes; then
1091     AC_DEFINE(HAVE_Z_COMBRELOC)
1092   fi
1094 AC_SUBST(libc_cv_z_combreloc)
1096 if test $elf != yes; then
1097   AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
1098                  [AC_TRY_COMPILE(, [asm (".section .init");
1099                                     asm (".section .fini");
1100                                     asm ("${libc_cv_dot_text}");],
1101                                  libc_cv_have_initfini=yes,
1102                                  libc_cv_have_initfini=no)])
1103   AC_SUBST(libc_cv_have_initfini)dnl
1104   if test $libc_cv_have_initfini = yes; then
1105     AC_DEFINE(HAVE_INITFINI)
1106   fi
1109 if test $elf = yes -a $gnu_ld = yes; then
1110   AC_CACHE_CHECK(whether cc puts quotes around section names,
1111                  libc_cv_have_section_quotes,
1112                  [cat > conftest.c <<EOF
1113                   static const int foo
1114                   __attribute__ ((section ("bar"))) = 1;
1116                   if ${CC-cc} -S conftest.c -o conftest.s; then
1117                     if grep '\.section.*"bar"' conftest.s >/dev/null; then
1118                       libc_cv_have_section_quotes=yes
1119                     else
1120                       libc_cv_have_section_quotes=no
1121                     fi
1122                   else
1123                     libc_cv_have_section_quotes=unknown
1124                   fi
1125                   rm -f conftest.[cs]
1126                  ])
1127   if test $libc_cv_have_section_quotes = yes; then
1128     AC_DEFINE(HAVE_SECTION_QUOTES)
1129   fi
1132 dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
1133 AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
1134 [cat > conftest.$ac_ext <<EOF
1135 dnl This sometimes fails to find confdefs.h, for some reason.
1136 dnl [#]line __oline__ "[$]0"
1137 [#]line __oline__ "configure"
1138 #include "confdefs.h"
1139 void underscore_test(void) {
1140 return; }
1142 if AC_TRY_EVAL(ac_compile); then
1143   if grep _underscore_test conftest* >/dev/null; then
1144     ifelse([$1], , :, [rm -f conftest*
1145     $1])
1146   else
1147     ifelse([$2], , , [rm -f conftest*
1148     $2])
1149   fi
1150 else
1151   echo "configure: failed program was:" >&AC_FD_CC
1152   cat conftest.$ac_ext >&AC_FD_CC
1153   ifelse([$2], , , [rm -f conftest*
1154   $2])
1156 rm -f conftest*])
1158 if test $elf = yes; then
1159   libc_cv_asm_underscores=no
1160 else
1161   if test $ac_cv_prog_cc_works = yes; then
1162     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1163                    [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
1164                                 libc_cv_asm_underscores=yes,
1165                                 libc_cv_asm_underscores=no)])
1166   else
1167     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1168                    [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
1169                                             libc_cv_asm_underscores=no)])
1170   fi
1172 if test $libc_cv_asm_underscores = no; then
1173   AC_DEFINE(NO_UNDERSCORES)
1176 if test $elf = yes; then
1177   libc_cv_weak_symbols=yes
1180 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1181                [dnl
1182 cat > conftest.s <<EOF
1183 ${libc_cv_dot_text}
1184 ${libc_cv_asm_global_directive} foo
1185 foo:
1186 .weak foo
1187 .weak bar; bar = foo
1189 if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
1190   libc_cv_asm_weak_directive=yes
1191 else
1192   libc_cv_asm_weak_directive=no
1194 rm -f conftest*])
1196 if test $libc_cv_asm_weak_directive = no; then
1197   AC_CACHE_CHECK(for assembler .weakext directive,
1198                  libc_cv_asm_weakext_directive,
1199                  [dnl
1200 cat > conftest.s <<EOF
1201 ${libc_cv_dot_text}
1202 ${libc_cv_asm_global_directive} foo
1203 foo:
1204 .weakext bar foo
1205 .weakext baz
1206 ${libc_cv_asm_global_directive} baz
1207 baz:
1209   if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
1210     libc_cv_asm_weakext_directive=yes
1211   else
1212     libc_cv_asm_weakext_directive=no
1213   fi
1214   rm -f conftest*])
1216 fi # no .weak
1218 if test $libc_cv_asm_weak_directive = yes; then
1219   AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1220 elif test $libc_cv_asm_weakext_directive = yes; then
1221   AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1224 dnl The standard hppa assembler uses `;' to start comments and `!'
1225 dnl as a line separator.  CRIS uses `;' to start comments and `@' for
1226 dnl line separator.
1227 case "${host_cpu}-${host_os}" in
1228   cris*)
1229     libc_cv_asm_line_sep='@'
1230     AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1231     ;;
1232   hppa*linux*)
1233   AC_CACHE_CHECK(for assembler line separator,
1234                  libc_cv_asm_line_sep, [dnl
1235   cat > conftest.s <<EOF
1236  nop ; is_old_puffin
1238   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
1239     libc_cv_asm_line_sep='!'
1240   else
1241     if test -z "$enable_hacker_mode"; then
1242       echo "*** You need a newer assembler to compile glibc"
1243       rm -f conftest*
1244       exit 1
1245     fi
1246     libc_cv_asm_line_sep=';'
1247   fi
1248   rm -f conftest*])
1249   AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1250   ;;
1251 esac
1253 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1254 cat > conftest.c <<\EOF
1255 _start () {}
1256 int __eh_pc;
1257 __throw () {}
1259 dnl No \ in command here because it ends up inside ''.
1260 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
1261                             -nostdlib -nostartfiles -Wl,--no-whole-archive
1262                             -o conftest conftest.c 1>&AC_FD_CC]); then
1263   libc_cv_ld_no_whole_archive=yes
1264 else
1265   libc_cv_ld_no_whole_archive=no
1267 rm -f conftest*])
1268 if test $libc_cv_ld_no_whole_archive = yes; then
1269   no_whole_archive=-Wl,--no-whole-archive
1271 AC_SUBST(no_whole_archive)dnl
1273 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1274 cat > conftest.c <<\EOF
1275 _start () {}
1276 int __eh_pc;
1277 __throw () {}
1279 dnl No \ in command here because it ends up inside ''.
1280 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
1281                             -nostdlib -nostartfiles -fexceptions
1282                             -o conftest conftest.c 1>&AC_FD_CC]); then
1283   libc_cv_gcc_exceptions=yes
1284 else
1285   libc_cv_gcc_exceptions=no
1287 rm -f conftest*])
1288 if test $libc_cv_gcc_exceptions = yes; then
1289   exceptions=-fexceptions
1291 AC_SUBST(exceptions)dnl
1293 if test "$base_machine" = alpha ; then
1294 AC_CACHE_CHECK(for function ..ng prefix, libc_cv_gcc_alpha_ng_prefix, [dnl
1295 cat > conftest.c <<\EOF
1296 foo () { }
1299 if AC_TRY_COMMAND([${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null]);
1300 then
1301   libc_cv_gcc_alpha_ng_prefix=yes
1302 else
1303   libc_cv_gcc_alpha_ng_prefix=no
1305 rm -f conftest* ])
1306 if test $libc_cv_gcc_alpha_ng_prefix = yes ; then
1307   AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "$")
1308 else
1309   AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "")
1313 if test "$host_cpu" = powerpc ; then
1314 # Check for a bug present in at least versions 2.8.x of GCC
1315 # and versions 1.0.x of EGCS.
1316 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1317 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1318                libc_cv_c_asmcr0_bug='no',
1319                libc_cv_c_asmcr0_bug='yes')])
1320 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1321   AC_DEFINE(BROKEN_PPC_ASM_CR0)
1325 AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
1326 [cat > conftest.c <<EOF
1327 #line __oline__ "configure"
1328 static char __EH_FRAME_BEGIN__[];
1329 _start ()
1331 #ifdef CHECK__register_frame
1332   __register_frame (__EH_FRAME_BEGIN__);
1333   __deregister_frame (__EH_FRAME_BEGIN__);
1334 #endif
1335 #ifdef CHECK__register_frame_info
1336   __register_frame_info (__EH_FRAME_BEGIN__);
1337   __deregister_frame_info (__EH_FRAME_BEGIN__);
1338 #endif
1340 int __eh_pc;
1341 __throw () {}
1342 /* FIXME: this is fragile.  */
1343 malloc () {}
1344 strcmp () {}
1345 strlen () {}
1346 memcpy () {}
1347 memset () {}
1348 free () {}
1349 abort () {}
1350 __bzero () {}
1352 dnl No \ in command here because it ends up inside ''.
1353 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info
1354                             -nostdlib -nostartfiles
1355                             -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1356   libc_cv_gcc_dwarf2_unwind_info=static
1357 else
1358   libc_cv_gcc_dwarf2_unwind_info=no
1360 if test $libc_cv_gcc_dwarf2_unwind_info = no; then
1361   if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame
1362                               -nostdlib -nostartfiles
1363                               -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1364     libc_cv_gcc_dwarf2_unwind_info=yes
1365   else
1366     libc_cv_gcc_dwarf2_unwind_info=no
1367   fi
1369 rm -f conftest*])
1370 case $libc_cv_gcc_dwarf2_unwind_info in
1371 yes)
1372   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1373   ;;
1374 static)
1375   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1376   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
1377   ;;
1378 esac
1380 dnl Check whether compiler understands __builtin_expect.
1381 AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
1382 [cat > conftest.c <<EOF
1383 #line __oline__ "configure"
1384 int foo (int a)
1386   a = __builtin_expect (a, 10);
1387   return a == 10 ? 0 : 1;
1390 dnl No \ in command here because it ends up inside ''.
1391 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1392                             -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1393   libc_cv_gcc_builtin_expect=yes
1394 else
1395   libc_cv_gcc_builtin_expect=no
1397 rm -f conftest*])
1398 if test "$libc_cv_gcc_builtin_expect" = yes; then
1399   AC_DEFINE(HAVE_BUILTIN_EXPECT)
1402 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1403 cat > conftest.c <<\EOF
1404 void zero (void *x)
1406   __builtin_memset (x, 0, 1000);
1410 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1411 then
1412   libc_cv_gcc_builtin_memset=no
1413 else
1414   libc_cv_gcc_builtin_memset=yes
1416 rm -f conftest* ])
1417 if test "$libc_cv_gcc_builtin_memset" = yes ; then
1418   AC_DEFINE(HAVE_BUILTIN_MEMSET)
1421 dnl Check whether the compiler supports subtraction of local labels.
1422 AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
1423 [cat > conftest.c <<EOF
1424 changequote(,)dnl
1425 #line __oline__ "configure"
1426 int foo (int a)
1428   static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
1429   void *p = &&l1 + ar[a];
1430   goto *p;
1431  l1:
1432   return 1;
1433  l2:
1434   return 2;
1436 changequote([,])dnl
1438 dnl No \ in command here because it ends up inside ''.
1439 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1440                             -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1441   libc_cv_gcc_subtract_local_labels=yes
1442 else
1443   libc_cv_gcc_subtract_local_labels=no
1445 rm -f conftest*])
1446 if test "$libc_cv_gcc_subtract_local_labels" = yes; then
1447   AC_DEFINE(HAVE_SUBTRACT_LOCAL_LABELS)
1450 dnl Check whether we have the gd library available.
1451 AC_MSG_CHECKING(for libgd)
1452 if test "$with_gd" != "no"; then
1453   old_CFLAGS="$CFLAGS"
1454   CFLAGS="$CFLAGS $libgd_include"
1455   old_LDFLAGS="$LDFLAGS"
1456   LDFLAGS="$LDFLAGS $libgd_ldflags"
1457   old_LIBS="$LIBS"
1458   LIBS="$LIBS -lgd -lpng -lz -lm"
1459   AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1460   CFLAGS="$old_CFLAGS"
1461   LDFLAGS="$old_LDFLAGS"
1462   LIBS="$old_LIBS"
1463 else
1464   LIBGD=no
1466 AC_MSG_RESULT($LIBGD)
1467 AC_SUBST(LIBGD)
1469 dnl check for the size of 'long double'.
1470 AC_CHECK_SIZEOF(long double, 0)
1471 sizeof_long_double=$ac_cv_sizeof_long_double
1472 AC_SUBST(sizeof_long_double)
1474 ### End of automated tests.
1475 ### Now run sysdeps configure fragments.
1477 # sysdeps configure fragments may set these with files to be linked below.
1478 libc_link_dests=
1479 libc_link_sources=
1481 # They also can set these variables.
1482 use_ldconfig=no
1483 ldd_rewrite_script=no
1484 libc_cv_sysconfdir=$sysconfdir
1485 libc_cv_gcc_unwind_find_fde=no
1487 # Iterate over all the sysdep directories we will use, running their
1488 # configure fragments, and looking for a uname implementation.
1489 uname=
1490 for dir in $sysnames; do
1491   case $dir in
1492     /*) dest=$dir ;;
1493     *)  dest=$srcdir/$dir ;;
1494   esac
1495   if test -r $dest/configure; then
1496     AC_MSG_RESULT(running configure fragment for $dest)
1497     . $dest/configure
1498   fi
1500   if test -z "$uname"; then
1501     if test -r $dest/uname.c ||
1502        test -r $dest/uname.S ||
1503        { test -r $dest/syscalls.list &&
1504          grep '^uname[  ]' $dest/syscalls.list >/dev/null; }; then
1505       uname=$dir
1506     fi
1507   fi
1508 ]dnl
1509 done
1511 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
1512   AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
1514 AC_SUBST(libc_cv_gcc_unwind_find_fde)
1516 AC_LINK_FILES(`echo $libc_link_sources`, `echo $libc_link_dests`)
1518 # If we will use the generic uname implementation, we must figure out what
1519 # it will say by examining the system, and write the results in config-name.h.
1520 if test "$uname" = "sysdeps/generic"; then
1522 changequote(,)dnl
1523   uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
1524 changequote([,])dnl
1525   if test $uname_sysname != $config_os; then
1526     config_release=`echo $config_os | sed s/$uname_sysname//`
1527   fi
1529 AC_DEFUN(LIBC_KERNEL_ID, [dnl
1530     if test -r /vmunix; then
1531       kernel_id=`strings /vmunix | grep UNIX`
1532     elif test -r /dynix; then
1533       kernel_id=`strings /dynix | grep DYNIX`
1534     else
1535       kernel_id=
1536     fi
1537 ])dnl
1539   AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
1540 AC_REQUIRE([LIBC_KERNEL_ID])dnl
1541 changequote(,)dnl
1542   kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
1543 changequote([,])dnl
1544   if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
1545          != x$config_release; then
1546     # The configuration release is a substring of the kernel release.
1547     libc_cv_uname_release=$kernel_release
1548   elif test x$config_release != x; then
1549     libc_cv_uname_release=$config_release
1550   elif test x$kernel_release != x; then
1551     libc_cv_uname_release=$kernel_release
1552   else
1553     libc_cv_uname_release=unknown
1554   fi])
1555   uname_release="$libc_cv_uname_release"
1557   AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
1558 AC_REQUIRE([LIBC_KERNEL_ID])dnl
1559 changequote(,)dnl
1560   kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
1561 changequote([,])dnl
1562   if test -n "$kernel_version"; then
1563     libc_cv_uname_version="$kernel_version"
1564   else
1565     libc_cv_uname_version=unknown
1566   fi])
1567   uname_version="$libc_cv_uname_version"
1569 AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
1570   config_uname=config-name.h:config-name.in
1571 else
1572   # For non-generic uname, we don't need to create config-name.h at all.
1573   config_uname=
1576 AC_MSG_CHECKING(stdio selection)
1577 AC_SUBST(stdio)
1578 case $stdio in
1579 libio) AC_DEFINE(USE_IN_LIBIO) ;;
1580 default) stdio=stdio ;;
1581 esac
1582 AC_MSG_RESULT($stdio)
1584 # Test for old glibc 2.0.x headers so that they can be removed properly
1585 # Search only in includedir.
1586 AC_MSG_CHECKING(for old glibc 2.0.x headers)
1587 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
1588 then
1589   old_glibc_headers=yes
1590 else
1591   old_glibc_headers=no
1593 AC_MSG_RESULT($old_glibc_headers)
1594 if test ${old_glibc_headers} = yes; then
1595   AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
1596   AC_MSG_WARN(*** be removed.)
1598 AC_SUBST(old_glibc_headers)
1600 AC_SUBST(libc_cv_slibdir)
1601 AC_SUBST(libc_cv_localedir)
1602 AC_SUBST(libc_cv_sysconfdir)
1603 AC_SUBST(libc_cv_rootsbindir)
1605 AC_SUBST(use_ldconfig)
1606 AC_SUBST(ldd_rewrite_script)
1608 AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf) AC_SUBST(xcoff)
1609 if test $gnu_ld = yes; then
1610   AC_DEFINE(HAVE_GNU_LD)
1612 if test $gnu_as = yes; then
1613   AC_DEFINE(HAVE_GNU_AS)
1615 if test $elf = yes; then
1616   AC_DEFINE(HAVE_ELF)
1618 if test $xcoff = yes; then
1619   AC_DEFINE(HAVE_XCOFF)
1622 AC_SUBST(static)
1623 AC_SUBST(shared)
1624 if test $shared = default; then
1625   if test $gnu_ld = yes; then
1626     shared=$elf
1627   else
1628     # For now we do not assume shared libs are available.  In future more
1629     # tests might become available.
1630     shared=no
1631   fi
1634 AC_CACHE_CHECK([whether -fPIC is default], pic_default,
1635 [pic_default=yes
1636 cat > conftest.c <<EOF
1637 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
1638 # error PIC is default.
1639 #endif
1641 if eval "${CC-cc} -S conftest.c 2>&AC_FD_CC 1>&AC_FD_CC"; then
1642   pic_default=no
1644 rm -f conftest.*])
1645 AC_SUBST(pic_default)
1647 AC_SUBST(profile)
1648 AC_SUBST(omitfp)
1649 AC_SUBST(bounded)
1650 AC_SUBST(static_nss)
1651 AC_SUBST(nopic_initfini)
1653 AC_SUBST(DEFINES)
1655 case "$add_ons" in
1656   *door*) linux_doors=yes ;;
1657   *) linux_doors=no ;;
1658 esac
1659 AC_SUBST(linux_doors)
1661 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
1662   config_makefile=
1663 else
1664   config_makefile=Makefile
1667 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
1668 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
1669 AC_SUBST(VERSION)
1670 AC_SUBST(RELEASE)
1672 AC_OUTPUT(config.make glibcbug ${config_makefile} ${config_uname}, [
1673 case $CONFIG_FILES in *config.make*)
1674 echo "$config_vars" >> config.make;;
1675 esac
1676 test -d bits || mkdir bits], [config_vars='$config_vars'])