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