2003-03-25 Roland McGrath <roland@redhat.com>
[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.53)dnl              dnl Minimum Autoconf version required.
4 AC_INIT([GNU C Library], [(see version.h)], [glibc])
5 AC_CONFIG_SRCDIR([include/features.h])
6 AC_CONFIG_HEADERS([config.h])
7 AC_CONFIG_AUX_DIR([scripts])
8
9 if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then
10   AC_MSG_ERROR([you must configure in a separate build directory])
11 fi
12
13 # This will get text that should go into config.make.
14 config_vars=
15
16 # Check for a --with-gmp argument and set gmp-srcdir in config.make.
17 AC_ARG_WITH([gmp],
18             AC_HELP_STRING([--with-gmp=DIRECTORY],
19                            [find GMP source code in DIRECTORY (not needed)]),
20             [
21 case "$with_gmp" in
22 yes) AC_MSG_ERROR([--with-gmp requires an argument; use --with-gmp=DIRECTORY]) ;;
23 ''|no) ;;
24 *) config_vars="$config_vars
25 gmp-srcdir = $withval" ;;
26 esac
27 ])
28 # Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
29 AC_ARG_WITH([gd],
30             AC_HELP_STRING([--with-gd=DIR],
31                            [find libgd include dir and library with prefix DIR]),
32             [dnl
33 case "$with_gd" in
34 yes|''|no) ;;
35 *) libgd_include="-I$withval/include"
36    libgd_ldflags="-L$withval/lib" ;;
37 esac
38 ])
39 AC_ARG_WITH([gd-include],
40             AC_HELP_STRING([--with-gd-include=DIR],
41                            [find libgd include files in DIR]),
42             [dnl
43 case "$with_gd_include" in
44 ''|no) ;;
45 *) libgd_include="-I$withval" ;;
46 esac
47 ])
48 AC_ARG_WITH([gd-lib],
49             AC_HELP_STRING([--with-gd-lib=DIR],
50                            [find libgd library files in DIR]),
51             [dnl
52 case "$with_gd_lib" in
53 ''|no) ;;
54 *) libgd_ldflags="-L$withval" ;;
55 esac
56 ])
57
58 if test -n "$libgd_include"; then
59   config_vars="$config_vars
60 CFLAGS-memusagestat.c = $libgd_include"
61 fi
62 if test -n "$libgd_ldflags"; then
63   config_vars="$config_vars
64 libgd-LDFLAGS = $libgd_ldflags"
65 fi
66
67 dnl Arguments to specify presence of other packages/features.
68 AC_ARG_WITH([fp],
69             AC_HELP_STRING([--with-fp],
70                            [if using floating-point hardware @<:@default=yes@:>@]),
71             [with_fp=$withval],
72             [with_fp=yes])
73 AC_SUBST(with_fp)
74 AC_ARG_WITH([binutils],
75             AC_HELP_STRING([--with-binutils=PATH],
76                            [specify location of binutils (as and ld)]),
77             [path_binutils=$withval],
78             [path_binutils=''])
79 AC_ARG_WITH([elf],
80             AC_HELP_STRING([--with-elf],
81                            [if using the ELF object format]),
82             [elf=$withval],
83             [elf=no])
84 AC_ARG_WITH([xcoff],
85             AC_HELP_STRING([--with-xcoff],
86                            [if using the XCOFF object format]),
87             [xcoff=$withval],
88             [xcoff=no])
89 AC_ARG_WITH([cvs],
90             AC_HELP_STRING([--without-cvs],
91                            [if CVS should not be used]),
92             [with_cvs=$withval],
93             [with_cvs=yes])
94 if test "$with_cvs" = yes; then
95   if test -d $srcdir/CVS && grep :pserver: $srcdir/CVS/Root > /dev/null
96   then
97     with_cvs=no
98   fi
99 fi
100 AC_SUBST(with_cvs)
101
102 AC_ARG_WITH([headers],
103             AC_HELP_STRING([--with-headers=PATH],
104                            [location of system headers to use
105                             (for example /usr/src/linux/include)
106                             @<:@default=compiler default@:>@]),
107             [sysheaders=$withval],
108             [sysheaders=''])
109
110 AC_ARG_ENABLE([sanity-checks],
111               AC_HELP_STRING([--disable-sanity-checks],
112                              [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
113               [enable_sanity=$enableval],
114               [enable_sanity=yes])
115
116 AC_SUBST(enable_check_abi)
117 AC_ARG_ENABLE([check-abi],
118               AC_HELP_STRING([--disable-check-abi],
119                              [omit "make check-abi" from "make check"]),
120               [enable_check_abi=$enableval],
121               [enable_check_abi=yes])
122
123 dnl Arguments to enable or disable building the static, shared, profiled,
124 dnl and -fomit-frame-pointer libraries.
125 dnl I've disabled this for now since we cannot build glibc without static
126 dnl libraries built in the moment.
127 dnl AC_ARG_ENABLE([static],
128 dnl               AC_HELP_STRING([--enable-static],
129 dnl                              [build static library @<:@default=yes@:>@]),
130 dnl               [static=$enableval],
131 dnl               [static=yes])
132 static=yes
133 AC_ARG_ENABLE([shared],
134               AC_HELP_STRING([--enable-shared],
135                              [build shared library @<:@default=yes if GNU ld & ELF@:>@]),
136               [shared=$enableval],
137               [shared=default])
138 AC_ARG_ENABLE([profile],
139               AC_HELP_STRING([--enable-profile],
140                              [build profiled library @<:@default=yes@:>@]),
141               [profile=$enableval],
142               [profile=yes])
143 AC_ARG_ENABLE([omitfp],
144               AC_HELP_STRING([--enable-omitfp],
145                              [build undebuggable optimized library @<:@default=no@:>@]),
146               [omitfp=$enableval],
147               [omitfp=no])
148 AC_ARG_ENABLE([bounded],
149               AC_HELP_STRING([--enable-bounded],
150                              [build with runtime bounds checking @<:@default=no@:>@]),
151               [bounded=$enableval],
152               [bounded=no])
153 AC_ARG_ENABLE([versioning],
154               AC_HELP_STRING([--disable-versioning],
155                              [do not include versioning information in the library objects @<:@default=yes if supported@:>@]),
156               [enable_versioning=$enableval],
157               [enable_versioning=yes])
158
159 AC_ARG_ENABLE([oldest-abi],
160               AC_HELP_STRING([--enable-oldest-abi=ABI],
161                              [configure the oldest ABI supported @<:@e.g. 2.2@:>@ @<:@default=glibc default@:>@]),
162               [oldest_abi=$enableval],
163               [oldest_abi=no])
164 if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
165   oldest_abi=default
166 else
167   AC_DEFINE_UNQUOTED(GLIBC_OLDEST_ABI, "$oldest_abi")
168 fi
169 AC_SUBST(oldest_abi)
170
171 dnl Generic infrastructure for drop-in additions to libc.
172 AC_ARG_ENABLE([add-ons],
173               AC_HELP_STRING([--enable-add-ons@<:@=DIRS...@:>@],
174                              [configure and build add-ons in DIR1,DIR2,...  search for add-ons if no parameter given]),
175   [case "$enableval" in
176     yes) add_ons=`cd $srcdir && echo */configure | sed -e 's!/configure!!g'`
177          test "$add_ons" = "*" && add_ons= ;;
178     *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
179    esac],
180   [add_ons=])
181
182 dnl Let the user avoid using TLS.  Don't know why but...
183 dnl XXX For now we disable support by default.
184 AC_ARG_WITH([tls],
185             AC_HELP_STRING([--with-tls],
186                            [enable support for TLS]),
187             [usetls=$withval],
188             [usetls=no])
189
190 AC_ARG_WITH([__thread],
191             AC_HELP_STRING([--without-__thread],
192                            [do not use TLS features even when supporting them]),
193             [use__thread=$withval],
194             [use__thread=yes])
195
196 AC_ARG_ENABLE([hidden-plt],
197               AC_HELP_STRING([--disable-hidden-plt],
198                              [do not hide internal function calls to avoid PLT]),
199               [hidden=$enableval],
200               [hidden=yes])
201 if test "x$hidden" = xno; then
202   AC_DEFINE(NO_HIDDEN)
203 fi
204
205 AC_CONFIG_SUBDIRS([ ])dnl Bonehead new Autoconf whines if we do it cleanly.
206 add_ons_pfx=
207 if test x"$add_ons" != x; then
208   for f in $add_ons; do
209     # Some sanity checks
210     if test "$f" = "crypt"; then
211       AC_MSG_ERROR([
212 *** It seems that you're using an old \`crypt' add-on.  crypt is now
213 *** part of glibc and using the old add-on will not work with this
214 *** release.  Start again with fresh sources and without the old
215 *** \`crypt' add-on.])
216     fi
217     if test "$f" = "localedata"; then
218       AC_MSG_ERROR([
219 *** It seems that you're using an old \`localedata' add-on.  localedata
220 *** is now part of glibc and using the old add-on will not work with
221 *** this release.  Start again with fresh sources and without the old
222 *** \`localedata' add-on.])
223     fi
224     # Test whether such a subdir really exists.
225     if test -d $srcdir/$f; then
226       add_ons_pfx="$add_ons_pfx $f/"
227       dnl This variable is what AC_CONFIG_SUBDIRS is supposed to set,
228       dnl but the new Autoconf maintainers don't care about compatibility
229       dnl so we cannot use it normally any more without complaints.
230       subdirs="$subdirs $f"
231     else
232       AC_MSG_ERROR(add-on directory \"$f\" does not exist)
233     fi
234   done
235 fi
236
237 dnl On some platforms we cannot use dynamic loading.  We must provide
238 dnl static NSS modules.
239 AC_ARG_ENABLE([static-nss],
240               AC_HELP_STRING([--enable-static-nss],
241                              [build static NSS modules @<:@default=no@:>@]),
242               [static_nss=$enableval],
243               [static_nss=no])
244 dnl Enable static NSS also if we build no shared objects.
245 if test x"$static_nss" = xyes || test x"$shared" = xno; then
246   static_nss=yes
247   AC_DEFINE(DO_STATIC_NSS)
248 fi
249
250 AC_ARG_ENABLE([force-install],
251               AC_HELP_STRING([--disable-force-install],
252                              [don't force installation of files from this package, even if they are older than the installed files]),
253               [force_install=$enableval],
254               [force_install=yes])
255 AC_SUBST(force_install)
256
257 dnl On some platforms we allow dropping compatibility with all kernel
258 dnl versions.
259 AC_ARG_ENABLE([kernel],
260               AC_HELP_STRING([--enable-kernel=VERSION],
261                              [compile for compatibility with kernel not older than VERSION]),
262               [minimum_kernel=$enableval],
263               [])
264 dnl Prevent unreasonable values.
265 if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
266   # Better nothing than this.
267   minimum_kernel=""
268 else
269   if test "$minimum_kernel" = current; then
270     minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
271   fi
272 fi
273
274 dnl For the development we sometimes want gcc to issue even more warnings.
275 dnl This is not the default since many of the extra warnings are not
276 dnl appropriate.
277 AC_ARG_ENABLE([all-warnings],
278               AC_HELP_STRING([--enable-all-warnings],
279                              [enable all useful warnings gcc can issue]),
280               [all_warnings=$enableval],
281               [])
282 AC_SUBST(all_warnings)
283
284 AC_CANONICAL_HOST
285
286 # The way shlib-versions is used to generate soversions.mk uses a
287 # fairly simplistic model for name recognition that can't distinguish
288 # i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a $host_os
289 # of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
290 # tell.  This doesn't get used much beyond that, so it's fairly safe.
291 case "$host_os" in
292 linux*)
293   ;;
294 gnu*)
295   host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
296   ;;
297 esac
298
299 # We keep the original values in `$config_*' and never modify them, so we
300 # can write them unchanged into config.make.  Everything else uses
301 # $machine, $vendor, and $os, and changes them whenever convenient.
302 config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
303
304 # Don't allow vendor == "unknown"
305 test "$config_vendor" = unknown && config_vendor=
306 config_os="`echo $config_os | sed 's/^unknown-//'`"
307
308 # Some configurations imply other options.
309 case "$host_os" in
310 gnu* | linux* | bsd4.4* | netbsd* | freebsd*)
311   # These systems always use GNU tools.
312   gnu_ld=yes gnu_as=yes ;;
313 esac
314 case "$host_os" in
315 # i586-linuxaout is mangled into i586-pc-linux-gnuaout
316 linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
317   ;;
318 gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*)
319   # These systems (almost) always use the ELF format.
320   elf=yes
321   ;;
322 aix*)
323   # These systems are always xcoff
324   xcoff=yes
325   elf=no
326   ;;
327 esac
328
329 machine=$config_machine
330 vendor=$config_vendor
331 os=$config_os
332
333 # config.guess on some IBM machines says `rs6000' instead of `powerpc'.
334 # Unify this here.
335 if test "$machine" = rs6000; then
336   machine="powerpc"
337 fi
338
339 # Braindead PowerPC box with absolutely no FPU.
340 case "$machine-$host_os" in
341   powerpc*-*soft)
342     with_fp=no
343     ;;
344 esac
345
346 ###
347 ### I put this here to prevent those annoying emails from people who cannot
348 ### read and try to compile glibc on unsupported platforms.  --drepper
349 ###
350 ### By using the undocumented --enable-hacker-mode option for configure
351 ### one can skip this test to make the configuration not fail for unsupported
352 ### platforms.
353 ###
354 if test -z "$enable_hacker_mode"; then
355   case "$machine-$host_os" in
356   *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*)
357     ;;
358   *)
359     echo "*** The GNU C library is currently not available for this platform."
360     echo "*** So far nobody cared to port it and if there is no volunteer it"
361     echo "*** might never happen.  So, if you have interest to see glibc on"
362     echo "*** this platform visit"
363     echo "***   http://www.gnu.org/software/libc/porting.html"
364     echo "*** and join the group of porters"
365     exit 1
366     ;;
367   esac
368 fi
369
370 dnl We need to use [ and ] for other purposes for a while now.
371 changequote(,)dnl
372 # Expand the configuration machine name into a subdirectory by architecture
373 # type and particular chip.
374 case "$machine" in
375 a29k | am29000) base_machine=a29k machine=a29k ;;
376 alpha*)         base_machine=alpha machine=alpha/$machine ;;
377 arm*)           base_machine=arm machine=arm/arm32/$machine ;;
378 c3[012])        base_machine=cx0 machine=cx0/c30 ;;
379 c4[04])         base_machine=cx0 machine=cx0/c40 ;;
380 hppa*64*)       base_machine=hppa machine=hppa/hppa64 ;;
381 hppa*)          base_machine=hppa machine=hppa/hppa1.1 ;;
382 i[3456]86)      base_machine=i386 machine=i386/$machine ;;
383 ia64)           base_machine=ia64 machine=ia64 ;;
384 m680?0)         base_machine=m68k machine=m68k/$machine ;;
385 m68k)           base_machine=m68k machine=m68k/m68020 ;;
386 m88???)         base_machine=m88k machine=m88k/$machine ;;
387 m88k)           base_machine=m88k machine=m88k/m88100 ;;
388 mips64*)        base_machine=mips64 machine=mips/mips64/$machine ;;
389 mips*)          base_machine=mips machine=mips/$machine ;;
390 powerpc)        base_machine=powerpc machine=powerpc/powerpc32 ;;
391 powerpc64)      base_machine=powerpc machine=powerpc/powerpc64 ;;
392 s390)           base_machine=s390 machine=s390/s390-32 ;;
393 s390x)          base_machine=s390 machine=s390/s390-64 ;;
394 sh3*)           base_machine=sh machine=sh/sh3 ;;
395 sh4*)           base_machine=sh machine=sh/sh4 ;;
396 sparc | sparcv[67])
397                 base_machine=sparc machine=sparc/sparc32 ;;
398 sparcv8 | supersparc | hypersparc)
399                 base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
400 sparcv8plus | sparcv8plusa | sparcv9)
401                 base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
402 sparcv8plusb | sparcv9b)
403                 base_machine=sparc machine=sparc/sparc32/sparcv9b ;;
404 sparc64 | ultrasparc)
405                 base_machine=sparc machine=sparc/sparc64 ;;
406 sparc64b | ultrasparc3)
407                 base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
408 thumb*)         base_machine=thumb machine=arm/thumb/$machine ;;
409 *)              base_machine=$machine ;;
410 esac
411 changequote([,])dnl
412 AC_SUBST(base_machine)
413
414 if test "$base_machine" = "i386"; then
415   AC_DEFINE(USE_REGPARMS)
416 fi
417
418 # Compute the list of sysdep directories for this configuration.
419 # This can take a while to compute.
420 sysdep_dir=$srcdir/sysdeps
421 AC_MSG_CHECKING(sysdep dirs)
422 dnl We need to use [ and ] for other purposes for a while now.
423 changequote(,)dnl
424 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
425 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
426
427 case "$os" in
428 gnu*)
429   base_os=mach/hurd ;;
430 netbsd* | 386bsd* | freebsd* | bsdi*)
431   base_os=unix/bsd/bsd4.4 ;;
432 osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
433   base_os=unix/bsd ;;
434 sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
435   base_os=unix/sysv ;;
436 irix6*)
437   base_os=unix/sysv/irix6/$os ;;
438 solaris[2-9]*)
439   base_os=unix/sysv/sysv4 ;;
440 hpux*)
441   base_os=unix/sysv/hpux/$os ;;
442 aix4.3*)
443   base_os=unix/sysv/aix/aix4.3 ;;
444 none)
445   base_os=standalone ;;
446 *)
447   base_os='' ;;
448 esac
449
450 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
451 tail=$os
452 ostry=$os
453 while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
454   ostry="$ostry /$o"
455   tail=$o
456 done
457 o=`echo $tail | sed 's/[0-9]*$//'`
458 if test $o != $tail; then
459   ostry="$ostry /$o"
460 fi
461 # For linux-gnu, try linux-gnu, then linux.
462 o=`echo $tail | sed 's/-.*$//'`
463 if test $o != $tail; then
464   ostry="$ostry /$o"
465 fi
466
467 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
468 base=
469 tail=$base_os
470 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
471   set $b
472   base="$base /$1"
473   tail="$2"
474 done
475
476 # For sparc/sparc32, try sparc/sparc32 and then sparc.
477 mach=
478 tail=$machine
479 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
480   set $m
481   # Prepend the machine's FPU directory unless --without-fp.
482   if test "$with_fp" = yes; then
483     mach="$mach /$1/fpu"
484   else
485     mach="$mach /$1/nofpu"
486   fi
487   mach="$mach /$1"
488   tail="$2"
489 done
490
491 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
492 changequote([,])dnl
493
494 # Find what sysdep directories exist.
495 sysnames=
496 IFS="${IFS=     }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
497 for d in $add_ons_pfx ''; do
498   for b in $base ''; do
499     for m0 in $mach ''; do
500       for v in /$vendor ''; do
501         test "$v" = / && continue
502         for o in /$ostry ''; do
503           test "$o" = / && continue
504           for m in $mach ''; do
505             if test "$m0$b$v$o$m"; then
506               try="${d}sysdeps$m0$b$v$o$m"
507               test -n "$enable_debug_configure" &&
508               echo "$0 [DEBUG]: try $try" >&2
509               if test -d $srcdir/$try; then
510                 sysnames="$sysnames $try"
511                 { test -n "$o" || test -n "$b"; } && os_used=t
512                 { test -n "$m" || test -n "$m0"; } && machine_used=t
513               fi
514             fi
515           done
516         done
517       done
518     done
519   done
520 done
521 IFS="$ac_save_ifs"
522
523 if test -z "$os_used" && test "$os" != none; then
524   AC_MSG_ERROR(Operating system $os is not supported.)
525 fi
526 if test -z "$machine_used" && test "$machine" != none; then
527   AC_MSG_ERROR(The $machine is not supported.)
528 fi
529
530 # We have now validated the configuration.
531
532
533 # If using ELF, look for an `elf' subdirectory of each machine directory.
534 # We prepend these rather than inserting them whereever the machine appears
535 # because things specified by the machine's ELF ABI should override
536 # OS-specific things, and should always be the same for any OS on the
537 # machine (otherwise what's the point of an ABI?).
538 if test "$elf" = yes; then
539   elf_dirs=
540   for d in $add_ons_pfx ''; do
541     for m in $mach; do
542       if test -d $srcdir/${d}sysdeps$m/elf; then
543         elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
544       fi
545     done
546   done
547   sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
548 fi
549
550
551 # Expand the list of system names into a full list of directories
552 # from each element's parent name and Implies file (if present).
553 set $sysnames
554 names=
555 while test $# -gt 0; do
556   name=$1
557   shift
558
559   case " $names " in *" $name "*)
560     # Already in the list.
561     continue
562   esac
563
564   # Report each name as we discover it, so there is no long pause in output.
565   echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
566
567   name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
568
569   case $name in
570     /*) xsrcdir= ;;
571     *)  xsrcdir=$srcdir/ ;;
572   esac
573   test -n "$enable_debug_configure" &&
574   echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
575
576   if test -f $xsrcdir$name/Implies; then
577     # Collect more names from the `Implies' file (removing comments).
578     implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
579     implied=
580     for x in $implied_candidate; do
581       found=no
582       if test -d $xsrcdir$name_base/$x; then
583         implied="$implied $name_base/$x";
584         found=yes
585       fi
586       for d in $add_ons_pfx ''; do
587         try="${d}sysdeps/$x"
588         case $d in
589          /*) try_srcdir= ;;
590          *) try_srcdir=$srcdir/ ;;
591         esac
592         test -n "$enable_debug_configure" &&
593          echo "[DEBUG]: $name implied $x try($d) {$try_srcdir}$try" >&2
594         if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
595         then
596           implied="$implied $try"
597           found=yes
598         fi
599       done
600       if test $found = no; then
601         AC_MSG_WARN($name/Implies specifies nonexistent $x)
602       fi
603     done
604   else
605     implied=
606   fi
607
608   # Add NAME to the list of names.
609   names="$names $name"
610
611   # Find the parent of NAME, using the empty string if it has none.
612 changequote(,)dnl
613   parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
614 changequote([,])dnl
615
616   # Add the names implied by NAME, and NAME's parent (if it has one), to
617   # the list of names to be processed (the argument list).  We prepend the
618   # implied names to the list and append the parent.  We want implied
619   # directories to come before further directories inferred from the
620   # configuration components; this ensures that for sysv4, unix/common
621   # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
622   # after sysv4).
623   sysnames="`echo $implied $* $parent`"
624   test -n "$sysnames" && set $sysnames
625 done
626
627 # Add the default directories.
628 default_sysnames=sysdeps/generic
629 if test "$elf" = yes; then
630   default_sysnames="sysdeps/generic/elf $default_sysnames"
631 fi
632 sysnames="$names $default_sysnames"
633 AC_SUBST(sysnames)
634 # The other names were emitted during the scan.
635 AC_MSG_RESULT($default_sysnames)
636
637
638 ### Locate tools.
639
640 AC_PROG_INSTALL
641 if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
642   # The makefiles need to use a different form to find it in $srcdir.
643   INSTALL='\$(..)./scripts/install-sh -c'
644 fi
645 AC_PROG_LN_S
646
647 AC_PROG_CC
648 if test $host != $build; then
649   AC_CHECK_PROGS(BUILD_CC, gcc cc)
650 fi
651 AC_SUBST(cross_compiling)
652 AC_PROG_CPP
653 LIBC_PROG_BINUTILS
654 AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
655
656 # Accept binutils 2.13 or newer.
657 AC_CHECK_PROG_VER(AS, $AS, --version,
658                   [GNU assembler.* \([0-9]*\.[0-9.]*\)],
659                   [2.1[3-9]*], AS=: critic_missing=t)
660 AC_CHECK_PROG_VER(LD, $LD, --version,
661                   [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
662                   [2.1[3-9]*], LD=: critic_missing=t)
663
664 # We need the physical current working directory.  We cannot use the
665 # "pwd -P" shell builtin since that's not portable.  Instead we try to
666 # find a pwd binary.  Note that assigning to the PWD environment
667 # variable might have some interesting side effects, so we don't do
668 # that.
669 AC_PATH_PROG(PWD_P, pwd, no)
670 if test "$PWD_P" = no; then
671   AC_MSG_ERROR(*** A pwd binary could not be found.)
672 fi
673
674 # These programs are version sensitive.
675 AC_CHECK_TOOL_PREFIX
676 AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
677   [version \([egcygnustpi-]*[0-9.]*\)], [3.[2-9]*],
678   critic_missing="$critic_missing gcc")
679 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
680   [GNU Make[^0-9]*\([0-9][0-9.]*\)],
681   [3.79* | 3.[89]*], critic_missing="$critic_missing make")
682
683 AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
684   [GNU gettext.* \([0-9]*\.[0-9.]*\)],
685   [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
686   MSGFMT=: aux_missing="$aux_missing msgfmt")
687 AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
688   [GNU texinfo.* \([0-9][0-9.]*\)],
689   [4.*],
690   MAKEINFO=: aux_missing="$aux_missing makeinfo")
691 AC_CHECK_PROG_VER(SED, sed, --version,
692   [GNU sed version \([0-9]*\.[0-9.]*\)],
693   [3.0[2-9]*|3.[1-9]*|[4-9]*],
694   SED=: aux_missing="$aux_missing sed")
695
696 if test "x$with_cvs" != xyes; then
697   AC_CHECK_PROGS(AUTOCONF, autoconf, no)
698   case "x$AUTOCONF" in
699   xno|x|x:) AUTOCONF=no ;;
700   *)
701     AC_CACHE_CHECK(dnl
702 whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
703     if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
704       libc_cv_autoconf_works=yes
705     else
706       libc_cv_autoconf_works=no
707     fi])
708     test $libc_cv_autoconf_works = yes || AUTOCONF=no
709     ;;
710   esac
711   test "x$AUTOCONF" != xno || aux_missing="$aux_missing autoconf"
712 fi
713
714 test -n "$critic_missing" && AC_MSG_ERROR([
715 *** These critical programs are missing or too old:$critic_missing
716 *** Check the INSTALL file for required versions.])
717
718 test -n "$aux_missing" && AC_MSG_WARN([
719 *** These auxiliary programs are missing or incompatible versions:$aux_missing
720 *** some features will be disabled.
721 *** Check the INSTALL file for required versions.])
722
723 # glibcbug.in wants to know the compiler version.
724 CCVERSION=`$CC -v 2>&1 | sed -n 's/gcc version //p'`
725 AC_SUBST(CCVERSION)
726
727 # if using special system headers, find out the compiler's sekrit
728 # header directory and add that to the list.  NOTE: Only does the right
729 # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
730 if test -n "$sysheaders"; then
731   ccheaders=`$CC -print-file-name=include`
732   SYSINCLUDES="-nostdinc -isystem $ccheaders -isystem $sysheaders"
733 fi
734 AC_SUBST(SYSINCLUDES)
735
736 # check if ranlib is necessary
737 AC_CACHE_CHECK(whether ranlib is necessary, libc_cv_ranlib_necessary, [dnl
738 cat > conftest.c <<EOF
739 int a;
740 char b;
741 void c(void) {}
742 EOF
743 $CC $CFLAGS -c conftest.c
744 $AR cr conftest.a conftest.o
745 cp conftest.a conftest2.a
746 $RANLIB conftest.a
747 if cmp -s conftest.a conftest2.a; then
748   libc_cv_ranlib_necessary=no
749 else
750   libc_cv_ranlib_necessary=yes
751 fi
752 rm -rf conftest*])
753 if test "$libc_cv_ranlib_necessary" = no; then
754  RANLIB=:
755 fi
756
757 # Test if LD_LIBRARY_PATH contains the notation for the current directory
758 # since this would lead to problems installing/building glibc.
759 # LD_LIBRARY_PATH contains the current directory if one of the following
760 # is true:
761 # - one of the terminals (":" and ";") is the first or last sign
762 # - two terminals occur directly after each other
763 # - the path contains an element with a dot in it
764 AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
765 changequote(,)dnl
766 case ${LD_LIBRARY_PATH} in
767   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
768     ld_library_path_setting="contains current directory"
769     ;;
770   *)
771     ld_library_path_setting="ok"
772     ;;
773 esac
774 changequote([,])dnl
775 AC_MSG_RESULT($ld_library_path_setting)
776 if test "$ld_library_path_setting" != "ok"; then
777 AC_MSG_ERROR([
778 *** LD_LIBRARY_PATH shouldn't contain the current directory when
779 *** building glibc. Please change the environment variable
780 *** and run configure again.])
781 fi
782
783 AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
784 if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
785   libc_cv_gcc_static_libgcc=
786 else
787   libc_cv_gcc_static_libgcc=-static-libgcc
788 fi])
789 AC_SUBST(libc_cv_gcc_static_libgcc)
790
791 AC_PATH_PROG(BASH, bash, no)
792 if test "$BASH" != no &&
793    $BASH -c 'test "$BASH_VERSINFO" \
794              && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
795   libc_cv_have_bash2=yes
796 else
797   libc_cv_have_bash2=no
798 fi
799 AC_SUBST(libc_cv_have_bash2)
800
801 dnl We need a ksh compatible shell for tzselect.
802 if test "$BASH" = no; then
803   AC_PATH_PROG(KSH, ksh, no)
804   if test "$KSH" = no; then
805     libc_cv_have_ksh=no
806   else
807     libc_cv_have_ksh=yes
808   fi
809 else
810   KSH="$BASH"
811   AC_SUBST(KSH)
812   libc_cv_have_ksh=yes
813 fi
814 AC_SUBST(libc_cv_have_ksh)
815
816 AC_PROG_AWK
817 AC_PATH_PROG(PERL, perl, no)
818 if test "$PERL" != no &&
819    (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
820   PERL=no
821 fi
822 AC_PATH_PROG(INSTALL_INFO, install-info, no,
823              $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
824 if test "$INSTALL_INFO" != "no"; then
825 AC_CACHE_CHECK(for old Debian install-info, libc_cv_old_debian_install_info,
826  [mkdir conftest.d
827   # There is a hard ^_ on the next line.  I am open to better ideas.
828   (echo '\1f'
829   echo 'File: dir       Node: Top       This is the top of the INFO tree'
830   echo '* Menu:') >conftest.d/dir
831   (echo 'INFO-DIR-SECTION i-d-s works'
832   echo 'START-INFO-DIR-ENTRY'
833   echo '* Prog: (prog).   Program.'
834   echo 'END-INFO-DIR-ENTRY') >conftest.d/prog.info
835   if $INSTALL_INFO --info-dir=conftest.d conftest.d/prog.info >&AS_MESSAGE_LOG_FD 2>&1
836   then
837     if grep -s 'i-d-s works' conftest.d/dir >/dev/null
838     then libc_cv_old_debian_install_info=no
839     else libc_cv_old_debian_install_info=yes
840     fi
841   else libc_cv_old_debian_install_info=no testfailed=t
842   fi
843   rm -fr conftest.d])
844 if test -n "$testfailed"
845 then AC_MSG_WARN([install-info errored out, check config.log])
846 fi
847 OLD_DEBIAN_INSTALL_INFO=$libc_cv_old_debian_install_info
848 fi
849 AC_SUBST(OLD_DEBIAN_INSTALL_INFO)
850
851 AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
852
853 AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
854 echo '#include <stddef.h>
855 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
856 if eval "$ac_cpp conftest.c 2>/dev/null" \
857 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
858   libc_cv_signed_size_t=no
859 else
860   libc_cv_signed_size_t=yes
861 fi
862 rm -f conftest*])
863 if test $libc_cv_signed_size_t = yes; then
864   dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
865   cat >> confdefs.h <<\EOF
866 #undef __SIZE_TYPE__
867 #define __SIZE_TYPE__ unsigned
868 EOF
869 fi
870
871 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
872 AC_TRY_COMPILE(dnl
873 [#define __need_size_t
874 #define __need_wchar_t
875 #include <stddef.h>
876 #define __need_NULL
877 #include <stddef.h>], [size_t size; wchar_t wchar;
878 #ifdef offsetof
879 #error stddef.h ignored __need_*
880 #endif
881 if (&size == NULL || &wchar == NULL) abort ();],
882                libc_cv_friendly_stddef=yes,
883                libc_cv_friendly_stddef=no)])
884 if test $libc_cv_friendly_stddef = yes; then
885   config_vars="$config_vars
886 override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
887 fi
888
889 AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
890                libc_cv_need_minus_P, [dnl
891 cat > conftest.S <<EOF
892 #include "confdefs.h"
893 /* Nothing whatsoever.  */
894 EOF
895 if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
896   libc_cv_need_minus_P=no
897 else
898   libc_cv_need_minus_P=yes
899 fi
900 rm -f conftest*])
901 if test $libc_cv_need_minus_P = yes; then
902   config_vars="$config_vars
903 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
904 fi
905
906 AC_MSG_CHECKING(whether .text pseudo-op must be used)
907 AC_CACHE_VAL(libc_cv_dot_text, [dnl
908 cat > conftest.s <<EOF
909 .text
910 EOF
911 libc_cv_dot_text=
912 if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
913   libc_cv_dot_text=.text
914 fi
915 rm -f conftest*])
916 if test -z "$libc_cv_dot_text"; then
917   AC_MSG_RESULT(no)
918 else
919   AC_MSG_RESULT(yes)
920 fi
921
922 AC_CACHE_CHECK(for assembler global-symbol directive,
923                libc_cv_asm_global_directive, [dnl
924 libc_cv_asm_global_directive=UNKNOWN
925 for ac_globl in .globl .global .EXPORT; do
926   cat > conftest.s <<EOF
927         ${libc_cv_dot_text}
928         ${ac_globl} foo
929 foo:
930 EOF
931   if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
932     libc_cv_asm_global_directive=${ac_globl}
933   fi
934   rm -f conftest*
935   test $libc_cv_asm_global_directive != UNKNOWN && break
936 done])
937 if test $libc_cv_asm_global_directive = UNKNOWN; then
938   AC_MSG_ERROR(cannot determine asm global directive)
939 else
940   AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
941 fi
942
943 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
944 cat > conftest.s <<EOF
945 ${libc_cv_dot_text}
946 foo:
947 .set glibc_conftest_frobozz,foo
948 $libc_cv_asm_global_directive glibc_conftest_frobozz
949 EOF
950 # The alpha-dec-osf1 assembler gives only a warning for `.set'
951 # (but it doesn't work), so we must do a linking check to be sure.
952 cat > conftest1.c <<\EOF
953 extern int glibc_conftest_frobozz;
954 main () { printf ("%d\n", glibc_conftest_frobozz); }
955 EOF
956 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
957             -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
958   libc_cv_asm_set_directive=yes
959 else
960   libc_cv_asm_set_directive=no
961 fi
962 rm -f conftest*])
963 if test $libc_cv_asm_set_directive = yes; then
964   AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
965 fi
966
967 AC_CACHE_CHECK(for assembler .type directive prefix,
968                libc_cv_asm_type_prefix, [dnl
969 libc_cv_asm_type_prefix=no
970 for ac_try_prefix in '@' '%' '#'; do
971   cat > conftest.s <<EOF
972         ${libc_cv_dot_text}
973         ${libc_cv_asm_global_directive} foo
974         .type foo, ${ac_try_prefix}object
975         .size foo, 1
976 foo:
977         .byte 1
978 EOF
979   if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
980     libc_cv_asm_type_prefix=${ac_try_prefix}
981   fi
982   rm -f conftest*
983   test "x$libc_cv_asm_type_prefix" != xno && break
984 done])
985 if test "x$libc_cv_asm_type_prefix" != xno; then
986   AC_DEFINE_UNQUOTED(ASM_TYPE_DIRECTIVE_PREFIX, ${libc_cv_asm_type_prefix})
987 fi
988
989 # The Aix ld uses global .symbol_names instead of symbol_names.
990 # Unfortunately also used in the PPC64 ELF ABI.
991 case "${os}${machine}" in
992 aix4.3* | linux*powerpc/powerpc64*)
993   AC_DEFINE(HAVE_ASM_GLOBAL_DOT_NAME)
994 esac
995
996 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
997 [cat > conftest.s <<EOF
998 ${libc_cv_dot_text}
999 _sym:
1000 .symver _sym,sym@VERS
1001 EOF
1002 if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1003   libc_cv_asm_symver_directive=yes
1004 else
1005   libc_cv_asm_symver_directive=no
1006 fi
1007 rm -f conftest*])
1008 AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
1009 if test $libc_cv_asm_symver_directive = yes; then
1010   cat > conftest.s <<EOF
1011 ${libc_cv_dot_text}
1012 _sym:
1013 .symver _sym,sym@VERS
1014 EOF
1015   cat > conftest.map <<EOF
1016 VERS_1 {
1017         global: sym;
1018 };
1019
1020 VERS_2 {
1021         global: sym;
1022 } VERS_1;
1023 EOF
1024   if ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1025     if AC_TRY_COMMAND([${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
1026                                         -nostartfiles -nostdlib
1027                                         -Wl,--version-script,conftest.map
1028                        1>&AS_MESSAGE_LOG_FD]);
1029     then
1030       libc_cv_ld_version_script_option=yes
1031     else
1032       libc_cv_ld_version_script_option=no
1033     fi
1034   else
1035     libc_cv_ld_version_script_option=no
1036   fi
1037 else
1038   libc_cv_ld_version_script_option=no
1039 fi
1040 rm -f conftest*])
1041 if test $shared != no &&
1042    test $libc_cv_asm_symver_directive = yes &&
1043    test $libc_cv_ld_version_script_option = yes &&
1044    test $enable_versioning = yes; then
1045   VERSIONING=yes
1046   AC_DEFINE(DO_VERSIONING)
1047 else
1048   VERSIONING=no
1049 fi
1050 AC_SUBST(VERSIONING)
1051
1052 if test $elf = yes && test $shared != no && test $VERSIONING = no; then
1053   echo "\
1054 *** WARNING: You should not compile GNU libc without versioning. Not using
1055 *** versioning will introduce incompatibilities so that old binaries
1056 *** will not run anymore.
1057 *** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
1058 fi
1059 if test $elf = yes; then
1060   AC_CACHE_CHECK(for .previous assembler directive,
1061                  libc_cv_asm_previous_directive, [dnl
1062   cat > conftest.s <<EOF
1063 .section foo_section
1064 .previous
1065 EOF
1066   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1067     libc_cv_asm_previous_directive=yes
1068   else
1069     libc_cv_asm_previous_directive=no
1070   fi
1071   rm -f conftest*])
1072   if test $libc_cv_asm_previous_directive = yes; then
1073     AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
1074   else
1075     AC_CACHE_CHECK(for .popsection assembler directive,
1076                    libc_cv_asm_popsection_directive, [dnl
1077     cat > conftest.s <<EOF
1078 .pushsection foo_section
1079 .popsection
1080 EOF
1081     if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1082       libc_cv_asm_popsection_directive=yes
1083     else
1084       libc_cv_asm_popsection_directive=no
1085     fi
1086     rm -f conftest*])
1087     if test $libc_cv_asm_popsection_directive = yes; then
1088       AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
1089     fi
1090   fi
1091   AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1092                  libc_cv_asm_protected_directive, [dnl
1093   cat > conftest.s <<EOF
1094 .protected foo
1095 foo:
1096 .hidden bar
1097 bar:
1098 EOF
1099   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1100     libc_cv_asm_protected_directive=yes
1101   else
1102     libc_cv_asm_protected_directive=no
1103   fi
1104   rm -f conftest*])
1105   AC_SUBST(libc_cv_asm_protected_directive)
1106   AC_DEFINE(HAVE_PROTECTED)
1107   AC_DEFINE(HAVE_HIDDEN)
1108
1109   if test $libc_cv_asm_protected_directive = yes; then
1110     AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
1111                  libc_cv_visibility_attribute,
1112                  [cat > conftest.c <<EOF
1113                   int foo __attribute__ ((visibility ("hidden"))) = 1;
1114                   int bar __attribute__ ((visibility ("protected"))) = 1;
1115 EOF
1116                   libc_cv_visibility_attribute=no
1117                   if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1118                     if grep '\.hidden.*foo' conftest.s >/dev/null; then
1119                       if grep '\.protected.*bar' conftest.s >/dev/null; then
1120                         libc_cv_visibility_attribute=yes
1121                       fi
1122                     fi
1123                   fi
1124                   rm -f conftest.[cs]
1125                  ])
1126     if test $libc_cv_visibility_attribute = yes; then
1127       AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
1128     fi
1129   fi
1130
1131   if test $libc_cv_visibility_attribute = yes; then
1132     AC_CACHE_CHECK(for broken __attribute__((visibility())),
1133                  libc_cv_broken_visibility_attribute,
1134                  [cat > conftest.c <<EOF
1135                   int foo (int x);
1136                   int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1137                   int bar (int x) { return x; }
1138 EOF
1139                   libc_cv_broken_visibility_attribute=yes
1140                   if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s1>&AS_MESSAGE_LOG_FD); then
1141 changequote(,)dnl
1142                     if grep '\.hidden[  _]foo' conftest.s >/dev/null; then
1143 changequote([,])dnl
1144                       libc_cv_broken_visibility_attribute=no
1145                     fi
1146                   fi
1147                   rm -f conftest.c conftest.s
1148                  ])
1149     if test $libc_cv_broken_visibility_attribute = yes; then
1150       AC_DEFINE(HAVE_BROKEN_VISIBILITY_ATTRIBUTE)
1151     fi
1152   fi
1153
1154   AC_CACHE_CHECK(for broken __attribute__((alias())),
1155                  libc_cv_broken_alias_attribute,
1156                  [cat > conftest.c <<EOF
1157                   extern int foo (int x) __asm ("xyzzy");
1158                   int bar (int x) { return x; }
1159                   extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1160                   extern int dfoo;
1161                   extern __typeof (dfoo) dfoo __asm ("abccb");
1162                   int dfoo = 1;
1163 EOF
1164                   libc_cv_broken_alias_attribute=yes
1165                   if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1166                     if grep 'xyzzy' conftest.s >/dev/null &&
1167                        grep 'abccb' conftest.s >/dev/null; then
1168                       libc_cv_broken_alias_attribute=no
1169                     fi
1170                   fi
1171                   rm -f conftest.c conftest.s
1172                  ])
1173   if test $libc_cv_broken_alias_attribute = yes; then
1174     AC_DEFINE(HAVE_BROKEN_ALIAS_ATTRIBUTE)
1175   fi
1176
1177   if test $libc_cv_visibility_attribute = yes -a $gnu_ld = yes; then
1178     AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1179                  libc_cv_have_sdata_section,
1180                  [echo "int i;" > conftest.c
1181                   libc_cv_have_sdata_section=no
1182                   if ${CC-cc} -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1183                      | grep '\.sdata' >/dev/null; then
1184                     libc_cv_have_sdata_section=yes
1185                   fi
1186                   rm -f conftest.c conftest.so
1187                  ])
1188     if test $libc_cv_have_sdata_section = yes; then
1189       AC_DEFINE(HAVE_SDATA_SECTION)
1190     fi
1191   fi
1192
1193   AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1194                  libc_cv_initfinit_array, [dnl
1195   cat > conftest.c <<EOF
1196 int _start (void) { return 0; }
1197 int __start (void) { return 0; }
1198 int foo (void) { return 1; }
1199 int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
1200 EOF
1201   if AC_TRY_COMMAND([${CC-cc} -o conftest conftest.c
1202                      -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
1203   then
1204     if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
1205       libc_cv_initfinit_array=yes
1206     else
1207       libc_cv_initfinit_array=no
1208     fi
1209   else
1210     libc_cv_initfinit_array=no
1211   fi
1212   rm -f conftest*])
1213   AC_SUBST(libc_cv_initfinit_array)
1214   if test $libc_cv_initfinit_array = yes; then
1215     AC_DEFINE(HAVE_INITFINI_ARRAY)
1216   fi
1217
1218   AC_CACHE_CHECK(for -z nodelete option,
1219                  libc_cv_z_nodelete, [dnl
1220   cat > conftest.c <<EOF
1221 int _start (void) { return 42; }
1222 EOF
1223   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1224                      -nostartfiles -nostdlib
1225                      -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
1226   then
1227     libc_cv_z_nodelete=yes
1228   else
1229     libc_cv_z_nodelete=no
1230   fi
1231   rm -f conftest*])
1232   AC_SUBST(libc_cv_z_nodelete)
1233
1234   AC_CACHE_CHECK(for -z nodlopen option,
1235                  libc_cv_z_nodlopen, [dnl
1236   cat > conftest.c <<EOF
1237 int _start (void) { return 42; }
1238 EOF
1239   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1240                         -nostartfiles -nostdlib
1241                         -Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
1242   then
1243     libc_cv_z_nodlopen=yes
1244   else
1245     libc_cv_z_nodlopen=no
1246   fi
1247   rm -f conftest*])
1248   AC_SUBST(libc_cv_z_nodlopen)
1249
1250   AC_CACHE_CHECK(for -z initfirst option,
1251                  libc_cv_z_initfirst, [dnl
1252   cat > conftest.c <<EOF
1253 int _start (void) { return 42; }
1254 EOF
1255   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1256                         -nostartfiles -nostdlib
1257                         -Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
1258   then
1259     libc_cv_z_initfirst=yes
1260   else
1261     libc_cv_z_initfirst=no
1262   fi
1263   rm -f conftest*])
1264   AC_SUBST(libc_cv_z_initfirst)
1265
1266   AC_CACHE_CHECK(for -Bgroup option,
1267                  libc_cv_Bgroup, [dnl
1268   cat > conftest.c <<EOF
1269 int _start (void) { return 42; }
1270 EOF
1271   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1272   then
1273     libc_cv_Bgroup=yes
1274   else
1275     libc_cv_Bgroup=no
1276   fi
1277   rm -f conftest*])
1278   AC_SUBST(libc_cv_Bgroup)
1279
1280   AC_CACHE_CHECK(for -z combreloc,
1281                  libc_cv_z_combreloc, [dnl
1282   cat > conftest.c <<EOF
1283 extern int bar (int);
1284 extern int mumble;
1285 int foo (void) { return bar (mumble); }
1286 EOF
1287   if AC_TRY_COMMAND([${CC-cc} -shared -o conftest.so conftest.c
1288                         -nostdlib -nostartfiles
1289                         -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
1290   then
1291 dnl The following test is a bit weak.  We must use a tool which can test
1292 dnl cross-platform since the gcc used can be a cross compiler.  Without
1293 dnl introducing new options this is not easily doable.  Instead use a tool
1294 dnl which always is cross-platform: readelf.  To detect whether -z combreloc
1295 dnl look for a section named .rel.dyn.
1296     if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1297       libc_cv_z_combreloc=yes
1298     else
1299       libc_cv_z_combreloc=no
1300     fi
1301   else
1302     libc_cv_z_combreloc=no
1303   fi
1304   rm -f conftest*])
1305   if test "$libc_cv_z_combreloc" = yes; then
1306     AC_DEFINE(HAVE_Z_COMBRELOC)
1307   fi
1308 fi
1309 AC_SUBST(libc_cv_z_combreloc)
1310
1311 if test $elf != yes; then
1312   AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
1313                  [AC_TRY_COMPILE(, [asm (".section .init");
1314                                     asm (".section .fini");
1315                                     asm ("${libc_cv_dot_text}");],
1316                                  libc_cv_have_initfini=yes,
1317                                  libc_cv_have_initfini=no)])
1318   AC_SUBST(libc_cv_have_initfini)dnl
1319   if test $libc_cv_have_initfini = yes; then
1320     AC_DEFINE(HAVE_INITFINI)
1321   fi
1322 fi
1323
1324 if test $elf = yes -a $gnu_ld = yes; then
1325   AC_CACHE_CHECK(whether cc puts quotes around section names,
1326                  libc_cv_have_section_quotes,
1327                  [cat > conftest.c <<EOF
1328                   static const int foo
1329                   __attribute__ ((section ("bar"))) = 1;
1330 EOF
1331                   if ${CC-cc} -S conftest.c -o conftest.s; then
1332                     if grep '\.section.*"bar"' conftest.s >/dev/null; then
1333                       libc_cv_have_section_quotes=yes
1334                     else
1335                       libc_cv_have_section_quotes=no
1336                     fi
1337                   else
1338                     libc_cv_have_section_quotes=unknown
1339                   fi
1340                   rm -f conftest.[cs]
1341                  ])
1342   if test $libc_cv_have_section_quotes = yes; then
1343     AC_DEFINE(HAVE_SECTION_QUOTES)
1344   fi
1345 fi
1346
1347 dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
1348 AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
1349 [cat > conftest.$ac_ext <<EOF
1350 dnl This sometimes fails to find confdefs.h, for some reason.
1351 dnl [#]line __oline__ "[$]0"
1352 [#]line __oline__ "configure"
1353 #include "confdefs.h"
1354 void underscore_test(void) {
1355 return; }
1356 EOF
1357 if AC_TRY_EVAL(ac_compile); then
1358   if grep _underscore_test conftest* >/dev/null; then
1359     ifelse([$1], , :, [rm -f conftest*
1360     $1])
1361   else
1362     ifelse([$2], , , [rm -f conftest*
1363     $2])
1364   fi
1365 else
1366   echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
1367   cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
1368   ifelse([$2], , , [rm -f conftest*
1369   $2])
1370 fi
1371 rm -f conftest*])
1372
1373 if test $elf = yes; then
1374   libc_cv_asm_underscores=no
1375 else
1376   if test $ac_cv_prog_cc_works = yes; then
1377     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1378                    [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
1379                                 libc_cv_asm_underscores=yes,
1380                                 libc_cv_asm_underscores=no)])
1381   else
1382     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1383                    [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
1384                                             libc_cv_asm_underscores=no)])
1385   fi
1386 fi
1387 if test $libc_cv_asm_underscores = no; then
1388   AC_DEFINE(NO_UNDERSCORES)
1389 fi
1390
1391 if test $elf = yes; then
1392   libc_cv_weak_symbols=yes
1393 fi
1394
1395 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1396                [dnl
1397 cat > conftest.s <<EOF
1398 ${libc_cv_dot_text}
1399 ${libc_cv_asm_global_directive} foo
1400 foo:
1401 .weak foo
1402 .weak bar; bar = foo
1403 EOF
1404 if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1405   libc_cv_asm_weak_directive=yes
1406 else
1407   libc_cv_asm_weak_directive=no
1408 fi
1409 rm -f conftest*])
1410
1411 if test $libc_cv_asm_weak_directive = no; then
1412   AC_CACHE_CHECK(for assembler .weakext directive,
1413                  libc_cv_asm_weakext_directive,
1414                  [dnl
1415 cat > conftest.s <<EOF
1416 ${libc_cv_dot_text}
1417 ${libc_cv_asm_global_directive} foo
1418 foo:
1419 .weakext bar foo
1420 .weakext baz
1421 ${libc_cv_asm_global_directive} baz
1422 baz:
1423 EOF
1424   if AC_TRY_COMMAND(${CC-cc} $CFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1425     libc_cv_asm_weakext_directive=yes
1426   else
1427     libc_cv_asm_weakext_directive=no
1428   fi
1429   rm -f conftest*])
1430
1431 fi # no .weak
1432
1433 if test $libc_cv_asm_weak_directive = yes; then
1434   AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1435 elif test $libc_cv_asm_weakext_directive = yes; then
1436   AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1437 fi
1438
1439 dnl The standard hppa assembler uses `;' to start comments and `!'
1440 dnl as a line separator.  CRIS uses `;' to start comments and `@' for
1441 dnl line separator.
1442 case "${host_cpu}-${host_os}" in
1443   cris*)
1444     libc_cv_asm_line_sep='@'
1445     AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1446     ;;
1447   hppa*linux*)
1448   AC_CACHE_CHECK(for assembler line separator,
1449                  libc_cv_asm_line_sep, [dnl
1450   cat > conftest.s <<EOF
1451  nop ; is_old_puffin
1452 EOF
1453   if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1454     libc_cv_asm_line_sep='!'
1455   else
1456     if test -z "$enable_hacker_mode"; then
1457       echo "*** You need a newer assembler to compile glibc"
1458       rm -f conftest*
1459       exit 1
1460     fi
1461     libc_cv_asm_line_sep=';'
1462   fi
1463   rm -f conftest*])
1464   AC_DEFINE_UNQUOTED(ASM_LINE_SEP, $libc_cv_asm_line_sep)
1465   ;;
1466 esac
1467
1468 AC_CACHE_CHECK(if -g produces usable source locations for assembler-with-cpp,
1469                libc_cv_cpp_asm_debuginfo, [dnl
1470 cat > conftest.S <<EOF
1471 #include "confdefs.h"
1472
1473 /* comment on
1474    two lines */
1475         ${libc_cv_dot_text}
1476         ${libc_cv_asm_global_directive} foo
1477 foo:
1478         /* Unfortunately this test only works for a real instruction,
1479            not for any of the machine-independent pseudo-ops.
1480            So we just have to assume everybody has a "nop".  */
1481         nop
1482         /* comment */
1483         nop
1484         /* comment */
1485         nop
1486 EOF
1487 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -g -c conftest.S 1>&AS_MESSAGE_LOG_FD]) &&
1488    ac_pattern='conftest\.S'
1489    AC_TRY_COMMAND([readelf --debug-dump=line conftest.o |
1490                    grep $ac_pattern 1>&AS_MESSAGE_LOG_FD]); then
1491   libc_cv_cpp_asm_debuginfo=yes
1492 else
1493   libc_cv_cpp_asm_debuginfo=no
1494 fi
1495 rm -f conftest*])AC_SUBST(libc_cv_cpp_asm_debuginfo)
1496 if test $libc_cv_cpp_asm_debuginfo = yes; then
1497   AC_DEFINE(HAVE_CPP_ASM_DEBUGINFO)
1498 fi
1499
1500 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1501 cat > conftest.c <<\EOF
1502 _start () {}
1503 int __eh_pc;
1504 __throw () {}
1505 EOF
1506 dnl No \ in command here because it ends up inside ''.
1507 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
1508                             -nostdlib -nostartfiles -Wl,--no-whole-archive
1509                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1510   libc_cv_ld_no_whole_archive=yes
1511 else
1512   libc_cv_ld_no_whole_archive=no
1513 fi
1514 rm -f conftest*])
1515 if test $libc_cv_ld_no_whole_archive = yes; then
1516   no_whole_archive=-Wl,--no-whole-archive
1517 fi
1518 AC_SUBST(no_whole_archive)dnl
1519
1520 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1521 cat > conftest.c <<\EOF
1522 _start () {}
1523 int __eh_pc;
1524 __throw () {}
1525 EOF
1526 dnl No \ in command here because it ends up inside ''.
1527 if AC_TRY_COMMAND([${CC-cc} $CFLAGS
1528                             -nostdlib -nostartfiles -fexceptions
1529                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1530   libc_cv_gcc_exceptions=yes
1531 else
1532   libc_cv_gcc_exceptions=no
1533 fi
1534 rm -f conftest*])
1535 if test $libc_cv_gcc_exceptions = yes; then
1536   exceptions=-fexceptions
1537 fi
1538 AC_SUBST(exceptions)dnl
1539
1540 if test "$host_cpu" = powerpc ; then
1541 # Check for a bug present in at least versions 2.8.x of GCC
1542 # and versions 1.0.x of EGCS.
1543 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1544 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1545                libc_cv_c_asmcr0_bug='no',
1546                libc_cv_c_asmcr0_bug='yes')])
1547 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1548   AC_DEFINE(BROKEN_PPC_ASM_CR0)
1549 fi
1550 fi
1551
1552 AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
1553 [cat > conftest.c <<EOF
1554 #line __oline__ "configure"
1555 static char *__EH_FRAME_BEGIN__;
1556 _start ()
1557 {
1558 #ifdef CHECK__register_frame
1559   __register_frame (__EH_FRAME_BEGIN__);
1560   __deregister_frame (__EH_FRAME_BEGIN__);
1561 #endif
1562 #ifdef CHECK__register_frame_info
1563   __register_frame_info (__EH_FRAME_BEGIN__);
1564   __deregister_frame_info (__EH_FRAME_BEGIN__);
1565 #endif
1566 }
1567 int __eh_pc;
1568 __throw () {}
1569 /* FIXME: this is fragile.  */
1570 malloc () {}
1571 strcmp () {}
1572 strlen () {}
1573 memcpy () {}
1574 memset () {}
1575 free () {}
1576 abort () {}
1577 __bzero () {}
1578 dl_iterate_phdr () {}
1579 EOF
1580 dnl No \ in command here because it ends up inside ''.
1581 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame_info
1582                             -nostdlib -nostartfiles
1583                             -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1584   libc_cv_gcc_dwarf2_unwind_info=static
1585 else
1586   libc_cv_gcc_dwarf2_unwind_info=no
1587 fi
1588 # Some platforms' specs put -lgcc first.  The second one doesn't hurt.
1589 libc_unwind_check="${CC-cc} $CFLAGS -DCHECK__register_frame_info \
1590                             -nostdlib -nostartfiles -o conftest conftest.c \
1591                             -lgcc -lgcc_eh -lgcc"
1592 if AC_TRY_COMMAND([$libc_unwind_check >&AS_MESSAGE_LOG_FD]); then
1593   if $libc_unwind_check -v 2>&1 >/dev/null \
1594      | grep -q -- --eh-frame-hdr; then
1595     libc_cv_gcc_dwarf2_unwind_info=no_registry_needed
1596   else
1597     libc_cv_gcc_dwarf2_unwind_info=static
1598   fi
1599 else
1600   libc_cv_gcc_dwarf2_unwind_info=no
1601 fi
1602 if test $libc_cv_gcc_dwarf2_unwind_info = no; then
1603   if AC_TRY_COMMAND([${CC-cc} $CFLAGS -DCHECK__register_frame
1604                               -nostdlib -nostartfiles
1605                               -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1606     libc_cv_gcc_dwarf2_unwind_info=yes
1607   else
1608     libc_cv_gcc_dwarf2_unwind_info=no
1609   fi
1610 fi
1611 rm -f conftest*])
1612 case $libc_cv_gcc_dwarf2_unwind_info in
1613 yes)
1614   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1615   ;;
1616 static)
1617   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1618   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
1619   ;;
1620 esac
1621
1622 dnl Check whether compiler understands __builtin_expect.
1623 AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
1624 [cat > conftest.c <<EOF
1625 #line __oline__ "configure"
1626 int foo (int a)
1627 {
1628   a = __builtin_expect (a, 10);
1629   return a == 10 ? 0 : 1;
1630 }
1631 EOF
1632 dnl No \ in command here because it ends up inside ''.
1633 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1634                             -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1635   libc_cv_gcc_builtin_expect=yes
1636 else
1637   libc_cv_gcc_builtin_expect=no
1638 fi
1639 rm -f conftest*])
1640 if test "$libc_cv_gcc_builtin_expect" = yes; then
1641   AC_DEFINE(HAVE_BUILTIN_EXPECT)
1642 fi
1643
1644 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1645 cat > conftest.c <<\EOF
1646 void zero (void *x)
1647 {
1648   __builtin_memset (x, 0, 1000);
1649 }
1650 EOF
1651 dnl
1652 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1653 then
1654   libc_cv_gcc_builtin_memset=no
1655 else
1656   libc_cv_gcc_builtin_memset=yes
1657 fi
1658 rm -f conftest* ])
1659 if test "$libc_cv_gcc_builtin_memset" = yes ; then
1660   AC_DEFINE(HAVE_BUILTIN_MEMSET)
1661 fi
1662
1663 dnl Check whether the compiler supports subtraction of local labels.
1664 AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
1665 [cat > conftest.c <<EOF
1666 changequote(,)dnl
1667 #line __oline__ "configure"
1668 int foo (int a)
1669 {
1670   static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
1671   void *p = &&l1 + ar[a];
1672   goto *p;
1673  l1:
1674   return 1;
1675  l2:
1676   return 2;
1677 }
1678 changequote([,])dnl
1679 EOF
1680 dnl No \ in command here because it ends up inside ''.
1681 if AC_TRY_COMMAND([${CC-cc} $CFLAGS -nostdlib -nostartfiles
1682                             -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1683   libc_cv_gcc_subtract_local_labels=yes
1684 else
1685   libc_cv_gcc_subtract_local_labels=no
1686 fi
1687 rm -f conftest*])
1688 if test "$libc_cv_gcc_subtract_local_labels" = yes; then
1689   AC_DEFINE(HAVE_SUBTRACT_LOCAL_LABELS)
1690 fi
1691
1692 dnl Check whether the compiler supports the __thread keyword.
1693 if test "x$use__thread" != xno; then
1694   AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1695   [cat > conftest.c <<\EOF
1696 __thread int a = 42;
1697 EOF
1698   if AC_TRY_COMMAND([${CC-cc} $CFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
1699     libc_cv_gcc___thread=yes
1700   else
1701     libc_cv_gcc___thread=no
1702   fi
1703   rm -f conftest*])
1704   if test "$libc_cv_gcc___thread" = yes; then
1705     AC_DEFINE(HAVE___THREAD)
1706   fi
1707 else
1708   libc_cv_gcc___thread=no
1709 fi
1710
1711 if test "$libc_cv_gcc___thread" = yes; then
1712   dnl Check whether the compiler supports the tls_model attribute.
1713   AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1714   cat > conftest.c <<\EOF
1715 extern __thread int a __attribute__((tls_model ("initial-exec")));
1716 EOF
1717   if AC_TRY_COMMAND([${CC-cc} $CFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
1718     libc_cv_gcc_tls_model_attr=yes
1719   else
1720     libc_cv_gcc_tls_model_attr=no
1721   fi
1722   rm -f conftest*])
1723   if test "$libc_cv_gcc_tls_model_attr" = yes; then
1724     AC_DEFINE(HAVE_TLS_MODEL_ATTRIBUTE)
1725   fi
1726 fi
1727
1728 dnl Check whether we have the gd library available.
1729 AC_MSG_CHECKING(for libgd)
1730 if test "$with_gd" != "no"; then
1731   old_CFLAGS="$CFLAGS"
1732   CFLAGS="$CFLAGS $libgd_include"
1733   old_LDFLAGS="$LDFLAGS"
1734   LDFLAGS="$LDFLAGS $libgd_ldflags"
1735   old_LIBS="$LIBS"
1736   LIBS="$LIBS -lgd -lpng -lz -lm"
1737   AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1738   CFLAGS="$old_CFLAGS"
1739   LDFLAGS="$old_LDFLAGS"
1740   LIBS="$old_LIBS"
1741 else
1742   LIBGD=no
1743 fi
1744 AC_MSG_RESULT($LIBGD)
1745 AC_SUBST(LIBGD)
1746
1747 dnl check for the size of 'long double'.
1748 AC_CHECK_SIZEOF(long double, 0)
1749 sizeof_long_double=$ac_cv_sizeof_long_double
1750 AC_SUBST(sizeof_long_double)
1751
1752 ### End of automated tests.
1753 ### Now run sysdeps configure fragments.
1754
1755 # They also can set these variables.
1756 use_ldconfig=no
1757 ldd_rewrite_script=no
1758 libc_cv_sysconfdir=$sysconfdir
1759 libc_cv_gcc_unwind_find_fde=no
1760
1761 # Iterate over all the sysdep directories we will use, running their
1762 # configure fragments, and looking for a uname implementation.
1763 uname=
1764 for dir in $sysnames; do
1765   case $dir in
1766     /*) dest=$dir ;;
1767     *)  dest=$srcdir/$dir ;;
1768   esac
1769   if test -r $dest/configure; then
1770     AC_MSG_RESULT(running configure fragment for $dir)
1771     . $dest/configure
1772   fi
1773 [
1774   if test -z "$uname"; then
1775     if test -r $dest/uname.c ||
1776        test -r $dest/uname.S ||
1777        { test -r $dest/syscalls.list &&
1778          grep '^uname[  ]' $dest/syscalls.list >/dev/null; }; then
1779       uname=$dir
1780     fi
1781   fi
1782 ]dnl
1783 done
1784
1785 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
1786   AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
1787 fi
1788 AC_SUBST(libc_cv_gcc_unwind_find_fde)
1789
1790 # If we will use the generic uname implementation, we must figure out what
1791 # it will say by examining the system, and write the results in config-name.h.
1792 if test "$uname" = "sysdeps/generic"; then
1793
1794 changequote(,)dnl
1795   uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
1796 changequote([,])dnl
1797   if test $uname_sysname != $config_os; then
1798     config_release=`echo $config_os | sed s/$uname_sysname//`
1799   fi
1800 dnl
1801 AC_DEFUN(LIBC_KERNEL_ID, [dnl
1802     if test -r /vmunix; then
1803       kernel_id=`strings /vmunix | grep UNIX`
1804     elif test -r /dynix; then
1805       kernel_id=`strings /dynix | grep DYNIX`
1806     else
1807       kernel_id=
1808     fi
1809 ])dnl
1810
1811   AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
1812 LIBC_KERNEL_ID
1813 changequote(,)dnl
1814   kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
1815 changequote([,])dnl
1816   if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
1817          != x$config_release; then
1818     # The configuration release is a substring of the kernel release.
1819     libc_cv_uname_release=$kernel_release
1820   elif test x$config_release != x; then
1821     libc_cv_uname_release=$config_release
1822   elif test x$kernel_release != x; then
1823     libc_cv_uname_release=$kernel_release
1824   else
1825     libc_cv_uname_release=unknown
1826   fi])
1827   uname_release="$libc_cv_uname_release"
1828
1829   AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
1830 LIBC_KERNEL_ID
1831 changequote(,)dnl
1832   kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
1833 changequote([,])dnl
1834   if test -n "$kernel_version"; then
1835     libc_cv_uname_version="$kernel_version"
1836   else
1837     libc_cv_uname_version=unknown
1838   fi])
1839   uname_version="$libc_cv_uname_version"
1840
1841 AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
1842   config_uname=config-name.h:config-name.in
1843 else
1844   # For non-generic uname, we don't need to create config-name.h at all.
1845   config_uname=
1846 fi
1847
1848 dnl This is tested by existing code and it's simpler to avoid changing it.
1849 AC_DEFINE(USE_IN_LIBIO)
1850
1851 # Test for old glibc 2.0.x headers so that they can be removed properly
1852 # Search only in includedir.
1853 AC_MSG_CHECKING(for old glibc 2.0.x headers)
1854 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
1855 then
1856   old_glibc_headers=yes
1857 else
1858   old_glibc_headers=no
1859 fi
1860 AC_MSG_RESULT($old_glibc_headers)
1861 if test ${old_glibc_headers} = yes; then
1862   AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
1863   AC_MSG_WARN(*** be removed.)
1864 fi
1865 AC_SUBST(old_glibc_headers)
1866
1867 AC_SUBST(libc_cv_slibdir)
1868 AC_SUBST(libc_cv_localedir)
1869 AC_SUBST(libc_cv_sysconfdir)
1870 AC_SUBST(libc_cv_rootsbindir)
1871
1872 AC_SUBST(use_ldconfig)
1873 AC_SUBST(ldd_rewrite_script)
1874
1875 AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf) AC_SUBST(xcoff)
1876 if test $gnu_ld = yes; then
1877   AC_DEFINE(HAVE_GNU_LD)
1878 fi
1879 if test $gnu_as = yes; then
1880   AC_DEFINE(HAVE_GNU_AS)
1881 fi
1882 if test $elf = yes; then
1883   AC_DEFINE(HAVE_ELF)
1884 fi
1885 if test $xcoff = yes; then
1886   AC_DEFINE(HAVE_XCOFF)
1887 fi
1888
1889 AC_SUBST(static)
1890 AC_SUBST(shared)
1891 if test $shared = default; then
1892   if test $gnu_ld = yes; then
1893     shared=$elf
1894   else
1895     # For now we do not assume shared libs are available.  In future more
1896     # tests might become available.
1897     shared=no
1898   fi
1899 fi
1900
1901 AC_CACHE_CHECK([whether -fPIC is default], pic_default,
1902 [pic_default=yes
1903 cat > conftest.c <<EOF
1904 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
1905 # error PIC is default.
1906 #endif
1907 EOF
1908 if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
1909   pic_default=no
1910 fi
1911 rm -f conftest.*])
1912 AC_SUBST(pic_default)
1913
1914 AC_SUBST(profile)
1915 AC_SUBST(omitfp)
1916 AC_SUBST(bounded)
1917 AC_SUBST(static_nss)
1918 AC_SUBST(nopic_initfini)
1919
1920 AC_SUBST(DEFINES)
1921
1922 case "$add_ons" in
1923   *door*) linux_doors=yes ;;
1924   *) linux_doors=no ;;
1925 esac
1926 AC_SUBST(linux_doors)
1927
1928 dnl See sysdeps/mach/configure.in for this variable.
1929 AC_SUBST(mach_interface_list)
1930
1931 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
1932   config_makefile=
1933 else
1934   config_makefile=Makefile
1935 fi
1936
1937 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
1938 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
1939 AC_SUBST(VERSION)
1940 AC_SUBST(RELEASE)
1941
1942 AC_CONFIG_FILES([config.make glibcbug ${config_makefile} ${config_uname}])
1943 AC_CONFIG_COMMANDS([default],[[
1944 case $CONFIG_FILES in *config.make*)
1945 echo "$config_vars" >> config.make;;
1946 esac
1947 test -d bits || mkdir bits]],[[config_vars='$config_vars']])
1948 AC_OUTPUT