Check if __builtin_memset really works.
[kopensolaris-gnu/glibc.git] / configure.in
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)
7
8 # This will get text that should go into config.make.
9 config_vars=
10
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
21 ])
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
31 ])
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
39 ])
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
47 ])
48
49 if test -n "$libgd_include"; then
50   config_vars="$config_vars
51 CFLAGS-memusagestat.c = $libgd_include"
52 fi
53 if test -n "$libgd_ldflags"; then
54   config_vars="$config_vars
55 libgd-LDFLAGS = $libgd_ldflags"
56 fi
57
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
80 fi
81 AC_SUBST(with_cvs)
82
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='')
88
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)
97
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)
102
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)
127
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")
136 fi
137 AC_SUBST(oldest_abi)
138
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=])
150
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)
155
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
182 fi
183
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)
191 fi
192
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)
198
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
213 fi
214
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)
222
223 AC_CANONICAL_HOST
224
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
237
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
242
243 # Don't allow vendor == "unknown"
244 test "$config_vendor" = unknown && config_vendor=
245 config_os="`echo $config_os | sed 's/^unknown-//'`"
246
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
267
268 machine=$config_machine
269 vendor=$config_vendor
270 os=$config_os
271
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"
276 fi
277
278 ###
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
281 ###
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.
285 ###
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
300 fi
301
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)
346
347 if test "$base_machine" = "i386"; then
348   AC_DEFINE(USE_REGPARMS)
349 fi
350
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'`"
359
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 ;;
379 *)
380   base_os='' ;;
381 esac
382
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"
393 fi
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"
398 fi
399
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
408
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
421
422 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
423 changequote([,])dnl
424
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"
453
454 if test -z "$os_used" && test "$os" != none; then
455   AC_MSG_ERROR(Operating system $os is not supported.)
456 fi
457 if test -z "$machine_used" && test "$machine" != none; then
458   AC_MSG_ERROR(The $machine is not supported.)
459 fi
460
461 # We have now validated the configuration.
462
463
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"
479 fi
480
481
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
489
490   case " $names " in *" $name "*)
491     # Already in the list.
492     continue
493   esac
494
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
497
498   name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
499
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
506
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
538
539   # Add NAME to the list of names.
540   names="$names $name"
541
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
546
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
557
558 # Add the default directories.
559 default_sysnames=sysdeps/generic
560 if test "$elf" = yes; then
561   default_sysnames="sysdeps/generic/elf $default_sysnames"
562 fi
563 sysnames="$names $default_sysnames"
564 AC_SUBST(sysnames)
565 # The other names were emitted during the scan.
566 AC_MSG_RESULT($default_sysnames)
567
568
569 ### Locate tools.
570
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'
575 fi
576 AC_PROG_LN_S
577
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.)
586 fi
587
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")
597
598
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.])
603 fi
604
605
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")
618
619 AC_PROG_CC_LOCAL
620 AC_CANONICAL_BUILD
621 if test $host != $build; then
622   AC_CHECK_PROGS(BUILD_CC, gcc cc)
623 fi
624 AC_SUBST(cross_compiling)
625 AC_PROG_CPP
626 LIBC_PROG_BINUTILS
627 AC_CHECK_TOOL(MIG, mig)
628
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)
635
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.])
640
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)
644
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"
651 fi
652 AC_SUBST(SYSINCLUDES)
653
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) {}
660 EOF
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
669 fi
670 rm -rf conftest*])
671 if test "$libc_cv_ranlib_necessary" = no; then
672  RANLIB=:
673 fi
674
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.])
699 fi
700
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)
708
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
716 fi
717 AC_SUBST(libc_cv_have_bash2)
718
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
731 fi
732 AC_SUBST(libc_cv_have_ksh)
733
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
739 fi
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 '\1f'
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])
764 fi
765 OLD_DEBIAN_INSTALL_INFO=$libc_cv_old_debian_install_info
766 fi
767 AC_SUBST(OLD_DEBIAN_INSTALL_INFO)
768
769 AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
770
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
779 fi
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
786 EOF
787 fi
788
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."
805 fi
806
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.  */
812 EOF
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
817 fi
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."
822 fi
823
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
828 EOF
829 libc_cv_dot_text=
830 if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
831   libc_cv_dot_text=.text
832 fi
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)
838 fi
839
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:
848 EOF
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})
859 fi
860
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
867 EOF
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); }
873 EOF
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
879 fi
880 rm -f conftest*])
881 if test $libc_cv_asm_set_directive = yes; then
882   AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
883 fi
884
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
890
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
896 EOF
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
901 fi
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
909 EOF
910   cat > conftest.map <<EOF
911 VERS_1 {
912         global: sym;
913 };
914
915 VERS_2 {
916         global: sym;
917 } VERS_1;
918 EOF
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
934 fi
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
944 fi
945 AC_SUBST(VERSIONING)
946
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)."
953 fi
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
960 EOF
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
975 EOF
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:
993 EOF
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)
1002
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; }
1007 EOF
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)
1018
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; }
1023 EOF
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)
1034
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; }
1039 EOF
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)
1050
1051   AC_CACHE_CHECK(for -Bgroup option,
1052                  libc_cv_Bgroup, [dnl
1053   cat > conftest.c <<EOF
1054 int _start (void) { return 42; }
1055 EOF
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)
1064
1065   AC_CACHE_CHECK(for -z combreloc,
1066                  libc_cv_z_combreloc, [dnl
1067   cat > conftest.c <<EOF
1068 extern int bar (void);
1069 int foo (void) { return bar (); }
1070 EOF
1071   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1072                         -nostdlib -nostartfiles
1073                         -Wl,-z,combreloc 1>&AC_FD_CC])
1074   then
1075 dnl The following test is a bit weak.  We must use a tool which can test
1076 dnl cross-platform since the gcc used can be a cross compiler.  Without
1077 dnl introducing new options this is not easily doable.  Instead use a tool
1078 dnl which always is cross-platform: readelf.  To detect whether -z combreloc
1079 dnl look for a section named .rel.dyn.
1080     if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1081       libc_cv_z_combreloc=yes
1082     else
1083       libc_cv_z_combreloc=no
1084     fi
1085   else
1086     libc_cv_z_combreloc=no
1087   fi
1088   rm -f conftest*])
1089   if test "$libc_cv_z_combreloc" = yes; then
1090     AC_DEFINE(HAVE_Z_COMBRELOC)
1091   fi
1092 fi
1093 AC_SUBST(libc_cv_z_combreloc)
1094
1095 if test $elf != yes; then
1096   AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
1097                  [AC_TRY_COMPILE(, [asm (".section .init");
1098                                     asm (".section .fini");
1099                                     asm ("${libc_cv_dot_text}");],
1100                                  libc_cv_have_initfini=yes,
1101                                  libc_cv_have_initfini=no)])
1102   AC_SUBST(libc_cv_have_initfini)dnl
1103   if test $libc_cv_have_initfini = yes; then
1104     AC_DEFINE(HAVE_INITFINI)
1105   fi
1106 fi
1107
1108 if test $elf = yes -a $gnu_ld = yes; then
1109   AC_CACHE_CHECK(whether cc puts quotes around section names,
1110                  libc_cv_have_section_quotes,
1111                  [cat > conftest.c <<EOF
1112                   static const int foo
1113                   __attribute__ ((section ("bar"))) = 1;
1114 EOF
1115                   if ${CC-cc} -S conftest.c -o conftest.s; then
1116                     if grep '\.section.*"bar"' conftest.s >/dev/null; then
1117                       libc_cv_have_section_quotes=yes
1118                     else
1119                       libc_cv_have_section_quotes=no
1120                     fi
1121                   else
1122                     libc_cv_have_section_quotes=unknown
1123                   fi
1124                   rm -f conftest.[cs]
1125                  ])
1126   if test $libc_cv_have_section_quotes = yes; then
1127     AC_DEFINE(HAVE_SECTION_QUOTES)
1128   fi
1129 fi
1130
1131 dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
1132 AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
1133 [cat > conftest.$ac_ext <<EOF
1134 dnl This sometimes fails to find confdefs.h, for some reason.
1135 dnl [#]line __oline__ "[$]0"
1136 [#]line __oline__ "configure"
1137 #include "confdefs.h"
1138 void underscore_test(void) {
1139 return; }
1140 EOF
1141 if AC_TRY_EVAL(ac_compile); then
1142   if grep _underscore_test conftest* >/dev/null; then
1143     ifelse([$1], , :, [rm -f conftest*
1144     $1])
1145   else
1146     ifelse([$2], , , [rm -f conftest*
1147     $2])
1148   fi
1149 else
1150   echo "configure: failed program was:" >&AC_FD_CC
1151   cat conftest.$ac_ext >&AC_FD_CC
1152   ifelse([$2], , , [rm -f conftest*
1153   $2])
1154 fi
1155 rm -f conftest*])
1156
1157 if test $elf = yes; then
1158   libc_cv_asm_underscores=no
1159 else
1160   if test $ac_cv_prog_cc_works = yes; then
1161     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1162                    [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
1163                                 libc_cv_asm_underscores=yes,
1164                                 libc_cv_asm_underscores=no)])
1165   else
1166     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1167                    [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
1168                                             libc_cv_asm_underscores=no)])
1169   fi
1170 fi
1171 if test $libc_cv_asm_underscores = no; then
1172   AC_DEFINE(NO_UNDERSCORES)
1173 fi
1174
1175 if test $elf = yes; then
1176   libc_cv_weak_symbols=yes
1177 fi
1178
1179 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1180                [dnl
1181 cat > conftest.s <<EOF
1182 ${libc_cv_dot_text}
1183 ${libc_cv_asm_global_directive} foo
1184 foo:
1185 .weak foo
1186 .weak bar; bar = foo
1187 EOF
1188 if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
1189   libc_cv_asm_weak_directive=yes
1190 else
1191   libc_cv_asm_weak_directive=no
1192 fi
1193 rm -f conftest*])
1194
1195 if test $libc_cv_asm_weak_directive = no; then
1196   AC_CACHE_CHECK(for assembler .weakext directive,
1197                  libc_cv_asm_weakext_directive,
1198                  [dnl
1199 cat > conftest.s <<EOF
1200 ${libc_cv_dot_text}
1201 ${libc_cv_asm_global_directive} foo
1202 foo:
1203 .weakext bar foo
1204 .weakext baz
1205 ${libc_cv_asm_global_directive} baz
1206 baz:
1207 EOF
1208   if ${CC-cc} $CFLAGS -c conftest.s 2>/dev/null; then
1209     libc_cv_asm_weakext_directive=yes
1210   else
1211     libc_cv_asm_weakext_directive=no
1212   fi
1213   rm -f conftest*])
1214
1215 fi # no .weak
1216
1217 if test $libc_cv_asm_weak_directive = yes; then
1218   AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1219 elif test $libc_cv_asm_weakext_directive = yes; then
1220   AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1221 fi
1222
1223 dnl The standard hppa assembler uses `;' to start comments and `!'
1224 dnl as a line separator.  CRIS uses `;' to start comments and `@' for
1225 dnl line separator.
1226 case "${host_cpu}-${host_os}" in
1227   cris*)
1228     libc_cv_asm_line_sep='@'
1229     AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1230     ;;
1231   hppa*linux*)
1232   AC_CACHE_CHECK(for assembler line separator,
1233                  libc_cv_asm_line_sep, [dnl
1234   cat > conftest.s <<EOF
1235  nop ; is_old_puffin
1236 EOF
1237   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AC_FD_CC); then
1238     libc_cv_asm_line_sep='!'
1239   else
1240     if test -z "$enable_hacker_mode"; then
1241       echo "*** You need a newer assembler to compile glibc"
1242       rm -f conftest*
1243       exit 1
1244     fi
1245     libc_cv_asm_line_sep=';'
1246   fi
1247   rm -f conftest*])
1248   AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1249   ;;
1250 esac
1251
1252 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1253 cat > conftest.c <<\EOF
1254 _start () {}
1255 int __eh_pc;
1256 __throw () {}
1257 EOF
1258 dnl No \ in command here because it ends up inside ''.
1259 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
1260                             -nostdlib -nostartfiles -Wl,--no-whole-archive
1261                             -o conftest conftest.c 1>&AC_FD_CC]); then
1262   libc_cv_ld_no_whole_archive=yes
1263 else
1264   libc_cv_ld_no_whole_archive=no
1265 fi
1266 rm -f conftest*])
1267 if test $libc_cv_ld_no_whole_archive = yes; then
1268   no_whole_archive=-Wl,--no-whole-archive
1269 fi
1270 AC_SUBST(no_whole_archive)dnl
1271
1272 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1273 cat > conftest.c <<\EOF
1274 _start () {}
1275 int __eh_pc;
1276 __throw () {}
1277 EOF
1278 dnl No \ in command here because it ends up inside ''.
1279 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
1280                             -nostdlib -nostartfiles -fexceptions
1281                             -o conftest conftest.c 1>&AC_FD_CC]); then
1282   libc_cv_gcc_exceptions=yes
1283 else
1284   libc_cv_gcc_exceptions=no
1285 fi
1286 rm -f conftest*])
1287 if test $libc_cv_gcc_exceptions = yes; then
1288   exceptions=-fexceptions
1289 fi
1290 AC_SUBST(exceptions)dnl
1291
1292 if test "$base_machine" = alpha ; then
1293 AC_CACHE_CHECK(for function ..ng prefix, libc_cv_gcc_alpha_ng_prefix, [dnl
1294 cat > conftest.c <<\EOF
1295 foo () { }
1296 EOF
1297 dnl
1298 if AC_TRY_COMMAND([${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null]);
1299 then
1300   libc_cv_gcc_alpha_ng_prefix=yes
1301 else
1302   libc_cv_gcc_alpha_ng_prefix=no
1303 fi
1304 rm -f conftest* ])
1305 if test $libc_cv_gcc_alpha_ng_prefix = yes ; then
1306   AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "$")
1307 else
1308   AC_DEFINE(ASM_ALPHA_NG_SYMBOL_PREFIX, "")
1309 fi
1310 fi
1311
1312 if test "$host_cpu" = powerpc ; then
1313 # Check for a bug present in at least versions 2.8.x of GCC
1314 # and versions 1.0.x of EGCS.
1315 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1316 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1317                libc_cv_c_asmcr0_bug='no',
1318                libc_cv_c_asmcr0_bug='yes')])
1319 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1320   AC_DEFINE(BROKEN_PPC_ASM_CR0)
1321 fi
1322 fi
1323
1324 AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
1325 [cat > conftest.c <<EOF
1326 #line __oline__ "configure"
1327 static char __EH_FRAME_BEGIN__[];
1328 _start ()
1329 {
1330 #ifdef CHECK__register_frame
1331   __register_frame (__EH_FRAME_BEGIN__);
1332   __deregister_frame (__EH_FRAME_BEGIN__);
1333 #endif
1334 #ifdef CHECK__register_frame_info
1335   __register_frame_info (__EH_FRAME_BEGIN__);
1336   __deregister_frame_info (__EH_FRAME_BEGIN__);
1337 #endif
1338 }
1339 int __eh_pc;
1340 __throw () {}
1341 /* FIXME: this is fragile.  */
1342 malloc () {}
1343 strcmp () {}
1344 strlen () {}
1345 memcpy () {}
1346 memset () {}
1347 free () {}
1348 abort () {}
1349 __bzero () {}
1350 EOF
1351 dnl No \ in command here because it ends up inside ''.
1352 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info
1353                             -nostdlib -nostartfiles
1354                             -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1355   libc_cv_gcc_dwarf2_unwind_info=static
1356 else
1357   libc_cv_gcc_dwarf2_unwind_info=no
1358 fi
1359 if test $libc_cv_gcc_dwarf2_unwind_info = no; then
1360   if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame
1361                               -nostdlib -nostartfiles
1362                               -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1363     libc_cv_gcc_dwarf2_unwind_info=yes
1364   else
1365     libc_cv_gcc_dwarf2_unwind_info=no
1366   fi
1367 fi
1368 rm -f conftest*])
1369 case $libc_cv_gcc_dwarf2_unwind_info in
1370 yes)
1371   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1372   ;;
1373 static)
1374   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1375   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
1376   ;;
1377 esac
1378
1379 dnl Check whether compiler understands __builtin_expect.
1380 AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
1381 [cat > conftest.c <<EOF
1382 #line __oline__ "configure"
1383 int foo (int a)
1384 {
1385   a = __builtin_expect (a, 10);
1386   return a == 10 ? 0 : 1;
1387 }
1388 EOF
1389 dnl No \ in command here because it ends up inside ''.
1390 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1391                             -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1392   libc_cv_gcc_builtin_expect=yes
1393 else
1394   libc_cv_gcc_builtin_expect=no
1395 fi
1396 rm -f conftest*])
1397 if test "$libc_cv_gcc_builtin_expect" = yes; then
1398   AC_DEFINE(HAVE_BUILTIN_EXPECT)
1399 fi
1400
1401 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1402 cat > conftest.c <<\EOF
1403 void zero (void *x)
1404 {
1405   __builtin_memset (x, 0, 4);
1406 }
1407 EOF
1408 dnl
1409 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1410 then
1411   libc_cv_gcc_builtin_memset=no
1412 else
1413   libc_cv_gcc_builtin_memset=yes
1414 fi
1415 rm -f conftest* ])
1416 if test "$libc_cv_gcc_builtin_memset" = yes ; then
1417   AC_DEFINE(HAVE_BUILTIN_MEMSET)
1418 fi
1419
1420 dnl Check whether the compiler supports subtraction of local labels.
1421 AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
1422 [cat > conftest.c <<EOF
1423 changequote(,)dnl
1424 #line __oline__ "configure"
1425 int foo (int a)
1426 {
1427   static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
1428   void *p = &&l1 + ar[a];
1429   goto *p;
1430  l1:
1431   return 1;
1432  l2:
1433   return 2;
1434 }
1435 changequote([,])dnl
1436 EOF
1437 dnl No \ in command here because it ends up inside ''.
1438 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1439                             -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1440   libc_cv_gcc_subtract_local_labels=yes
1441 else
1442   libc_cv_gcc_subtract_local_labels=no
1443 fi
1444 rm -f conftest*])
1445 if test "$libc_cv_gcc_subtract_local_labels" = yes; then
1446   AC_DEFINE(HAVE_SUBTRACT_LOCAL_LABELS)
1447 fi
1448
1449 dnl Check whether we have the gd library available.
1450 AC_MSG_CHECKING(for libgd)
1451 if test "$with_gd" != "no"; then
1452   old_CFLAGS="$CFLAGS"
1453   CFLAGS="$CFLAGS $libgd_include"
1454   old_LDFLAGS="$LDFLAGS"
1455   LDFLAGS="$LDFLAGS $libgd_ldflags"
1456   old_LIBS="$LIBS"
1457   LIBS="$LIBS -lgd -lpng -lz -lm"
1458   AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1459   CFLAGS="$old_CFLAGS"
1460   LDFLAGS="$old_LDFLAGS"
1461   LIBS="$old_LIBS"
1462 else
1463   LIBGD=no
1464 fi
1465 AC_MSG_RESULT($LIBGD)
1466 AC_SUBST(LIBGD)
1467
1468 dnl check for the size of 'long double'.
1469 AC_CHECK_SIZEOF(long double, 0)
1470 sizeof_long_double=$ac_cv_sizeof_long_double
1471 AC_SUBST(sizeof_long_double)
1472
1473 ### End of automated tests.
1474 ### Now run sysdeps configure fragments.
1475
1476 # sysdeps configure fragments may set these with files to be linked below.
1477 libc_link_dests=
1478 libc_link_sources=
1479
1480 # They also can set these variables.
1481 use_ldconfig=no
1482 ldd_rewrite_script=no
1483 libc_cv_sysconfdir=$sysconfdir
1484 libc_cv_gcc_unwind_find_fde=no
1485
1486 # Iterate over all the sysdep directories we will use, running their
1487 # configure fragments, and looking for a uname implementation.
1488 uname=
1489 for dir in $sysnames; do
1490   case $dir in
1491     /*) dest=$dir ;;
1492     *)  dest=$srcdir/$dir ;;
1493   esac
1494   if test -r $dest/configure; then
1495     AC_MSG_RESULT(running configure fragment for $dest)
1496     . $dest/configure
1497   fi
1498 [
1499   if test -z "$uname"; then
1500     if test -r $dest/uname.c ||
1501        test -r $dest/uname.S ||
1502        { test -r $dest/syscalls.list &&
1503          grep '^uname[  ]' $dest/syscalls.list >/dev/null; }; then
1504       uname=$dir
1505     fi
1506   fi
1507 ]dnl
1508 done
1509
1510 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
1511   AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
1512 fi
1513 AC_SUBST(libc_cv_gcc_unwind_find_fde)
1514
1515 AC_LINK_FILES(`echo $libc_link_sources`, `echo $libc_link_dests`)
1516
1517 # If we will use the generic uname implementation, we must figure out what
1518 # it will say by examining the system, and write the results in config-name.h.
1519 if test "$uname" = "sysdeps/generic"; then
1520
1521 changequote(,)dnl
1522   uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
1523 changequote([,])dnl
1524   if test $uname_sysname != $config_os; then
1525     config_release=`echo $config_os | sed s/$uname_sysname//`
1526   fi
1527 dnl
1528 AC_DEFUN(LIBC_KERNEL_ID, [dnl
1529     if test -r /vmunix; then
1530       kernel_id=`strings /vmunix | grep UNIX`
1531     elif test -r /dynix; then
1532       kernel_id=`strings /dynix | grep DYNIX`
1533     else
1534       kernel_id=
1535     fi
1536 ])dnl
1537
1538   AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
1539 AC_REQUIRE([LIBC_KERNEL_ID])dnl
1540 changequote(,)dnl
1541   kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
1542 changequote([,])dnl
1543   if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
1544          != x$config_release; then
1545     # The configuration release is a substring of the kernel release.
1546     libc_cv_uname_release=$kernel_release
1547   elif test x$config_release != x; then
1548     libc_cv_uname_release=$config_release
1549   elif test x$kernel_release != x; then
1550     libc_cv_uname_release=$kernel_release
1551   else
1552     libc_cv_uname_release=unknown
1553   fi])
1554   uname_release="$libc_cv_uname_release"
1555
1556   AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
1557 AC_REQUIRE([LIBC_KERNEL_ID])dnl
1558 changequote(,)dnl
1559   kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
1560 changequote([,])dnl
1561   if test -n "$kernel_version"; then
1562     libc_cv_uname_version="$kernel_version"
1563   else
1564     libc_cv_uname_version=unknown
1565   fi])
1566   uname_version="$libc_cv_uname_version"
1567
1568 AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
1569   config_uname=config-name.h:config-name.in
1570 else
1571   # For non-generic uname, we don't need to create config-name.h at all.
1572   config_uname=
1573 fi
1574
1575 AC_MSG_CHECKING(stdio selection)
1576 AC_SUBST(stdio)
1577 case $stdio in
1578 libio) AC_DEFINE(USE_IN_LIBIO) ;;
1579 default) stdio=stdio ;;
1580 esac
1581 AC_MSG_RESULT($stdio)
1582
1583 # Test for old glibc 2.0.x headers so that they can be removed properly
1584 # Search only in includedir.
1585 AC_MSG_CHECKING(for old glibc 2.0.x headers)
1586 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
1587 then
1588   old_glibc_headers=yes
1589 else
1590   old_glibc_headers=no
1591 fi
1592 AC_MSG_RESULT($old_glibc_headers)
1593 if test ${old_glibc_headers} = yes; then
1594   AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
1595   AC_MSG_WARN(*** be removed.)
1596 fi
1597 AC_SUBST(old_glibc_headers)
1598
1599 AC_SUBST(libc_cv_slibdir)
1600 AC_SUBST(libc_cv_localedir)
1601 AC_SUBST(libc_cv_sysconfdir)
1602 AC_SUBST(libc_cv_rootsbindir)
1603
1604 AC_SUBST(use_ldconfig)
1605 AC_SUBST(ldd_rewrite_script)
1606
1607 AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf) AC_SUBST(xcoff)
1608 if test $gnu_ld = yes; then
1609   AC_DEFINE(HAVE_GNU_LD)
1610 fi
1611 if test $gnu_as = yes; then
1612   AC_DEFINE(HAVE_GNU_AS)
1613 fi
1614 if test $elf = yes; then
1615   AC_DEFINE(HAVE_ELF)
1616 fi
1617 if test $xcoff = yes; then
1618   AC_DEFINE(HAVE_XCOFF)
1619 fi
1620
1621 AC_SUBST(static)
1622 AC_SUBST(shared)
1623 if test $shared = default; then
1624   if test $gnu_ld = yes; then
1625     shared=$elf
1626   else
1627     # For now we do not assume shared libs are available.  In future more
1628     # tests might become available.
1629     shared=no
1630   fi
1631 fi
1632
1633 AC_CACHE_CHECK([whether -fPIC is default], pic_default,
1634 [pic_default=yes
1635 cat > conftest.c <<EOF
1636 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
1637 # error PIC is default.
1638 #endif
1639 EOF
1640 if eval "${CC-cc} -S conftest.c 2>&AC_FD_CC 1>&AC_FD_CC"; then
1641   pic_default=no
1642 fi
1643 rm -f conftest.*])
1644 AC_SUBST(pic_default)
1645
1646 AC_SUBST(profile)
1647 AC_SUBST(omitfp)
1648 AC_SUBST(bounded)
1649 AC_SUBST(static_nss)
1650 AC_SUBST(nopic_initfini)
1651
1652 AC_SUBST(DEFINES)
1653
1654 case "$add_ons" in
1655   *door*) linux_doors=yes ;;
1656   *) linux_doors=no ;;
1657 esac
1658 AC_SUBST(linux_doors)
1659
1660 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
1661   config_makefile=
1662 else
1663   config_makefile=Makefile
1664 fi
1665
1666 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
1667 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
1668 AC_SUBST(VERSION)
1669 AC_SUBST(RELEASE)
1670
1671 AC_OUTPUT(config.make glibcbug ${config_makefile} ${config_uname}, [
1672 case $CONFIG_FILES in *config.make*)
1673 echo "$config_vars" >> config.make;;
1674 esac
1675 test -d bits || mkdir bits], [config_vars='$config_vars'])