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