Add --without-tls option.
[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 dnl Check whether the compiler supports subtraction of local labels.
1402 AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
1403 [cat > conftest.c <<EOF
1404 changequote(,)dnl
1405 #line __oline__ "configure"
1406 int foo (int a)
1407 {
1408   static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
1409   void *p = &&l1 + ar[a];
1410   goto *p;
1411  l1:
1412   return 1;
1413  l2:
1414   return 2;
1415 }
1416 changequote([,])dnl
1417 EOF
1418 dnl No \ in command here because it ends up inside ''.
1419 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1420                             -o conftest conftest.c -lgcc >&AC_FD_CC]); then
1421   libc_cv_gcc_subtract_local_labels=yes
1422 else
1423   libc_cv_gcc_subtract_local_labels=no
1424 fi
1425 rm -f conftest*])
1426 if test "$libc_cv_gcc_subtract_local_labels" = yes; then
1427   AC_DEFINE(HAVE_SUBTRACT_LOCAL_LABELS)
1428 fi
1429
1430 dnl Check whether we have the gd library available.
1431 AC_MSG_CHECKING(for libgd)
1432 if test "$with_gd" != "no"; then
1433   old_CFLAGS="$CFLAGS"
1434   CFLAGS="$CFLAGS $libgd_include"
1435   old_LDFLAGS="$LDFLAGS"
1436   LDFLAGS="$LDFLAGS $libgd_ldflags"
1437   old_LIBS="$LIBS"
1438   LIBS="$LIBS -lgd -lpng -lz -lm"
1439   AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1440   CFLAGS="$old_CFLAGS"
1441   LDFLAGS="$old_LDFLAGS"
1442   LIBS="$old_LIBS"
1443 else
1444   LIBGD=no
1445 fi
1446 AC_MSG_RESULT($LIBGD)
1447 AC_SUBST(LIBGD)
1448
1449 dnl check for the size of 'long double'.
1450 AC_CHECK_SIZEOF(long double, 0)
1451 sizeof_long_double=$ac_cv_sizeof_long_double
1452 AC_SUBST(sizeof_long_double)
1453
1454 ### End of automated tests.
1455 ### Now run sysdeps configure fragments.
1456
1457 # sysdeps configure fragments may set these with files to be linked below.
1458 libc_link_dests=
1459 libc_link_sources=
1460
1461 # They also can set these variables.
1462 use_ldconfig=no
1463 ldd_rewrite_script=no
1464 libc_cv_sysconfdir=$sysconfdir
1465 libc_cv_gcc_unwind_find_fde=no
1466
1467 # Iterate over all the sysdep directories we will use, running their
1468 # configure fragments, and looking for a uname implementation.
1469 uname=
1470 for dir in $sysnames; do
1471   case $dir in
1472     /*) dest=$dir ;;
1473     *)  dest=$srcdir/$dir ;;
1474   esac
1475   if test -r $dest/configure; then
1476     AC_MSG_RESULT(running configure fragment for $dest)
1477     . $dest/configure
1478   fi
1479 [
1480   if test -z "$uname"; then
1481     if test -r $dest/uname.c ||
1482        test -r $dest/uname.S ||
1483        { test -r $dest/syscalls.list &&
1484          grep '^uname[  ]' $dest/syscalls.list >/dev/null; }; then
1485       uname=$dir
1486     fi
1487   fi
1488 ]dnl
1489 done
1490
1491 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
1492   AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
1493 fi
1494 AC_SUBST(libc_cv_gcc_unwind_find_fde)
1495
1496 AC_LINK_FILES(`echo $libc_link_sources`, `echo $libc_link_dests`)
1497
1498 # If we will use the generic uname implementation, we must figure out what
1499 # it will say by examining the system, and write the results in config-name.h.
1500 if test "$uname" = "sysdeps/generic"; then
1501
1502 changequote(,)dnl
1503   uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
1504 changequote([,])dnl
1505   if test $uname_sysname != $config_os; then
1506     config_release=`echo $config_os | sed s/$uname_sysname//`
1507   fi
1508 dnl
1509 AC_DEFUN(LIBC_KERNEL_ID, [dnl
1510     if test -r /vmunix; then
1511       kernel_id=`strings /vmunix | grep UNIX`
1512     elif test -r /dynix; then
1513       kernel_id=`strings /dynix | grep DYNIX`
1514     else
1515       kernel_id=
1516     fi
1517 ])dnl
1518
1519   AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
1520 AC_REQUIRE([LIBC_KERNEL_ID])dnl
1521 changequote(,)dnl
1522   kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
1523 changequote([,])dnl
1524   if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
1525          != x$config_release; then
1526     # The configuration release is a substring of the kernel release.
1527     libc_cv_uname_release=$kernel_release
1528   elif test x$config_release != x; then
1529     libc_cv_uname_release=$config_release
1530   elif test x$kernel_release != x; then
1531     libc_cv_uname_release=$kernel_release
1532   else
1533     libc_cv_uname_release=unknown
1534   fi])
1535   uname_release="$libc_cv_uname_release"
1536
1537   AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
1538 AC_REQUIRE([LIBC_KERNEL_ID])dnl
1539 changequote(,)dnl
1540   kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
1541 changequote([,])dnl
1542   if test -n "$kernel_version"; then
1543     libc_cv_uname_version="$kernel_version"
1544   else
1545     libc_cv_uname_version=unknown
1546   fi])
1547   uname_version="$libc_cv_uname_version"
1548
1549 AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
1550   config_uname=config-name.h:config-name.in
1551 else
1552   # For non-generic uname, we don't need to create config-name.h at all.
1553   config_uname=
1554 fi
1555
1556 AC_MSG_CHECKING(stdio selection)
1557 AC_SUBST(stdio)
1558 case $stdio in
1559 libio) AC_DEFINE(USE_IN_LIBIO) ;;
1560 default) stdio=stdio ;;
1561 esac
1562 AC_MSG_RESULT($stdio)
1563
1564 # Test for old glibc 2.0.x headers so that they can be removed properly
1565 # Search only in includedir.
1566 AC_MSG_CHECKING(for old glibc 2.0.x headers)
1567 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
1568 then
1569   old_glibc_headers=yes
1570 else
1571   old_glibc_headers=no
1572 fi
1573 AC_MSG_RESULT($old_glibc_headers)
1574 if test ${old_glibc_headers} = yes; then
1575   AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
1576   AC_MSG_WARN(*** be removed.)
1577 fi
1578 AC_SUBST(old_glibc_headers)
1579
1580 AC_SUBST(libc_cv_slibdir)
1581 AC_SUBST(libc_cv_localedir)
1582 AC_SUBST(libc_cv_sysconfdir)
1583 AC_SUBST(libc_cv_rootsbindir)
1584
1585 AC_SUBST(use_ldconfig)
1586 AC_SUBST(ldd_rewrite_script)
1587
1588 AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf) AC_SUBST(xcoff)
1589 if test $gnu_ld = yes; then
1590   AC_DEFINE(HAVE_GNU_LD)
1591 fi
1592 if test $gnu_as = yes; then
1593   AC_DEFINE(HAVE_GNU_AS)
1594 fi
1595 if test $elf = yes; then
1596   AC_DEFINE(HAVE_ELF)
1597 fi
1598 if test $xcoff = yes; then
1599   AC_DEFINE(HAVE_XCOFF)
1600 fi
1601
1602 AC_SUBST(static)
1603 AC_SUBST(shared)
1604 if test $shared = default; then
1605   if test $gnu_ld = yes; then
1606     shared=$elf
1607   else
1608     # For now we do not assume shared libs are available.  In future more
1609     # tests might become available.
1610     shared=no
1611   fi
1612 fi
1613
1614 AC_CACHE_CHECK([whether -fPIC is default], pic_default,
1615 [pic_default=yes
1616 cat > conftest.c <<EOF
1617 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
1618 # error PIC is default.
1619 #endif
1620 EOF
1621 if eval "${CC-cc} -S conftest.c 2>&AC_FD_CC 1>&AC_FD_CC"; then
1622   pic_default=no
1623 fi
1624 rm -f conftest.*])
1625 AC_SUBST(pic_default)
1626
1627 AC_SUBST(profile)
1628 AC_SUBST(omitfp)
1629 AC_SUBST(bounded)
1630 AC_SUBST(static_nss)
1631 AC_SUBST(nopic_initfini)
1632
1633 AC_SUBST(DEFINES)
1634
1635 case "$add_ons" in
1636   *door*) linux_doors=yes ;;
1637   *) linux_doors=no ;;
1638 esac
1639 AC_SUBST(linux_doors)
1640
1641 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
1642   config_makefile=
1643 else
1644   config_makefile=Makefile
1645 fi
1646
1647 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
1648 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
1649 AC_SUBST(VERSION)
1650 AC_SUBST(RELEASE)
1651
1652 AC_OUTPUT(config.make glibcbug ${config_makefile} ${config_uname}, [
1653 case $CONFIG_FILES in *config.make*)
1654 echo "$config_vars" >> config.make;;
1655 esac
1656 test -d bits || mkdir bits], [config_vars='$config_vars'])