(__libc_fatal): Add loop to fool gcc.
[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 AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
1621 cat > conftest.s <<EOF
1622         .text
1623         .type   func,@function
1624 func:
1625         .cfi_startproc
1626         .cfi_remember_state
1627         .cfi_rel_offset 1, 0
1628         .cfi_endproc
1629 EOF
1630 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1631   libc_cv_asm_cfi_directives=yes
1632 else
1633   libc_cv_asm_cfi_directives=no
1634 fi
1635 rm -f conftest*])
1636 if test $libc_cv_asm_cfi_directives = yes; then
1637   AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
1638 fi
1639
1640 AC_CACHE_CHECK(if -g produces usable source locations for assembler-with-cpp,
1641                libc_cv_cpp_asm_debuginfo, [dnl
1642 cat > conftest.S <<EOF
1643 #include "confdefs.h"
1644
1645 /* comment on
1646    two lines */
1647         ${libc_cv_dot_text}
1648         ${libc_cv_asm_global_directive} foo
1649 foo:
1650         /* Unfortunately this test only works for a real instruction,
1651            not for any of the machine-independent pseudo-ops.
1652            So we just have to assume everybody has a "nop".  */
1653         nop
1654         /* comment */
1655         nop
1656         /* comment */
1657         nop
1658 EOF
1659 if AC_TRY_COMMAND([${CC-cc} $CPPFLAGS $ASFLAGS -g -c conftest.S 1>&AS_MESSAGE_LOG_FD]) && {
1660    ac_pattern='conftest\.S'
1661    AC_TRY_COMMAND([readelf --debug-dump=line conftest.o |
1662                    grep $ac_pattern 1>&AS_MESSAGE_LOG_FD])
1663   }; then
1664   libc_cv_cpp_asm_debuginfo=yes
1665 else
1666   libc_cv_cpp_asm_debuginfo=no
1667 fi
1668 rm -f conftest*])AC_SUBST(libc_cv_cpp_asm_debuginfo)
1669 if test $libc_cv_cpp_asm_debuginfo = yes; then
1670   AC_DEFINE(HAVE_CPP_ASM_DEBUGINFO)
1671 fi
1672
1673 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1674 cat > conftest.c <<\EOF
1675 _start () {}
1676 int __eh_pc;
1677 __throw () {}
1678 EOF
1679 dnl No \ in command here because it ends up inside ''.
1680 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1681                             -nostdlib -nostartfiles -Wl,--no-whole-archive
1682                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1683   libc_cv_ld_no_whole_archive=yes
1684 else
1685   libc_cv_ld_no_whole_archive=no
1686 fi
1687 rm -f conftest*])
1688 if test $libc_cv_ld_no_whole_archive = yes; then
1689   no_whole_archive=-Wl,--no-whole-archive
1690 fi
1691 AC_SUBST(no_whole_archive)dnl
1692
1693 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1694 cat > conftest.c <<\EOF
1695 _start () {}
1696 int __eh_pc;
1697 __throw () {}
1698 EOF
1699 dnl No \ in command here because it ends up inside ''.
1700 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1701                             -nostdlib -nostartfiles -fexceptions
1702                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1703   libc_cv_gcc_exceptions=yes
1704 else
1705   libc_cv_gcc_exceptions=no
1706 fi
1707 rm -f conftest*])
1708 if test $libc_cv_gcc_exceptions = yes; then
1709   exceptions=-fexceptions
1710 fi
1711 AC_SUBST(exceptions)dnl
1712
1713 if test "$host_cpu" = powerpc ; then
1714 # Check for a bug present in at least versions 2.8.x of GCC
1715 # and versions 1.0.x of EGCS.
1716 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1717 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1718                libc_cv_c_asmcr0_bug='no',
1719                libc_cv_c_asmcr0_bug='yes')])
1720 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1721   AC_DEFINE(BROKEN_PPC_ASM_CR0)
1722 fi
1723 fi
1724
1725 AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
1726 [cat > conftest.c <<EOF
1727 #line $LINENO "configure"
1728 static char *__EH_FRAME_BEGIN__;
1729 _start ()
1730 {
1731 #ifdef CHECK__register_frame
1732   __register_frame (__EH_FRAME_BEGIN__);
1733   __deregister_frame (__EH_FRAME_BEGIN__);
1734 #endif
1735 #ifdef CHECK__register_frame_info
1736   __register_frame_info (__EH_FRAME_BEGIN__);
1737   __deregister_frame_info (__EH_FRAME_BEGIN__);
1738 #endif
1739 }
1740 int __eh_pc;
1741 __throw () {}
1742 /* FIXME: this is fragile.  */
1743 malloc () {}
1744 strcmp () {}
1745 strlen () {}
1746 memcpy () {}
1747 memset () {}
1748 free () {}
1749 abort () {}
1750 __bzero () {}
1751 dl_iterate_phdr () {}
1752 EOF
1753 libc_unwind_check="${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame_info \
1754                             $LDFLAGS \
1755                             -nostdlib -nostartfiles -o conftest conftest.c \
1756                             -lgcc"
1757 # Some platforms' specs put -lgcc first.  The second one doesn't hurt.
1758 if AC_TRY_COMMAND([$libc_unwind_check >&AS_MESSAGE_LOG_FD]) ||
1759    AC_TRY_COMMAND([$libc_unwind_check -lgcc_eh -lgcc >&AS_MESSAGE_LOG_FD])
1760 then
1761   if $libc_unwind_check -v 2>&1 >/dev/null \
1762      | grep -- --eh-frame-hdr 2>&1 >/dev/null; then
1763     libc_cv_gcc_dwarf2_unwind_info=no_registry_needed
1764   else
1765     libc_cv_gcc_dwarf2_unwind_info=static
1766   fi
1767 else
1768   libc_cv_gcc_dwarf2_unwind_info=no
1769 fi
1770 if test $libc_cv_gcc_dwarf2_unwind_info = no; then
1771   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame
1772                               $LDFLAGS -nostdlib -nostartfiles
1773                               -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1774     libc_cv_gcc_dwarf2_unwind_info=yes
1775   else
1776     libc_cv_gcc_dwarf2_unwind_info=no
1777   fi
1778 fi
1779 rm -f conftest*])
1780 case $libc_cv_gcc_dwarf2_unwind_info in
1781 yes)
1782   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1783   ;;
1784 static)
1785   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1786   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
1787   ;;
1788 esac
1789
1790 dnl Check whether compiler understands __builtin_expect.
1791 AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
1792 [cat > conftest.c <<EOF
1793 #line $LINENO "configure"
1794 int foo (int a)
1795 {
1796   a = __builtin_expect (a, 10);
1797   return a == 10 ? 0 : 1;
1798 }
1799 EOF
1800 dnl No \ in command here because it ends up inside ''.
1801 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
1802                             -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1803   libc_cv_gcc_builtin_expect=yes
1804 else
1805   libc_cv_gcc_builtin_expect=no
1806 fi
1807 rm -f conftest*])
1808 if test "$libc_cv_gcc_builtin_expect" = yes; then
1809   AC_DEFINE(HAVE_BUILTIN_EXPECT)
1810 fi
1811
1812 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1813 cat > conftest.c <<\EOF
1814 void zero (void *x)
1815 {
1816   __builtin_memset (x, 0, 1000);
1817 }
1818 EOF
1819 dnl
1820 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1821 then
1822   libc_cv_gcc_builtin_memset=no
1823 else
1824   libc_cv_gcc_builtin_memset=yes
1825 fi
1826 rm -f conftest* ])
1827 if test "$libc_cv_gcc_builtin_memset" = yes ; then
1828   AC_DEFINE(HAVE_BUILTIN_MEMSET)
1829 fi
1830
1831 AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1832 cat > conftest.c <<\EOF
1833 extern char *strstr (const char *, const char *) __asm ("my_strstr");
1834 char *foo (const char *a, const char *b)
1835 {
1836   return __builtin_strstr (a, b);
1837 }
1838 EOF
1839 dnl
1840 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
1841 then
1842   libc_cv_gcc_builtin_redirection=yes
1843 else
1844   libc_cv_gcc_builtin_redirection=no
1845 fi
1846 rm -f conftest* ])
1847 if test "$libc_cv_gcc_builtin_redirection" = yes ; then
1848   AC_DEFINE(HAVE_BUILTIN_REDIRECTION)
1849 fi
1850
1851 dnl Check whether the compiler supports subtraction of local labels.
1852 AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
1853 [cat > conftest.c <<EOF
1854 changequote(,)dnl
1855 #line $LINENO "configure"
1856 int foo (int a)
1857 {
1858   static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
1859   void *p = &&l1 + ar[a];
1860   goto *p;
1861  l1:
1862   return 1;
1863  l2:
1864   return 2;
1865 }
1866 changequote([,])dnl
1867 EOF
1868 dnl No \ in command here because it ends up inside ''.
1869 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
1870                             -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1871   libc_cv_gcc_subtract_local_labels=yes
1872 else
1873   libc_cv_gcc_subtract_local_labels=no
1874 fi
1875 rm -f conftest*])
1876 if test "$libc_cv_gcc_subtract_local_labels" = yes; then
1877   AC_DEFINE(HAVE_SUBTRACT_LOCAL_LABELS)
1878 fi
1879
1880 dnl Check whether the compiler supports the __thread keyword.
1881 if test "x$use__thread" != xno; then
1882   AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1883   [cat > conftest.c <<\EOF
1884 __thread int a = 42;
1885 EOF
1886   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
1887     libc_cv_gcc___thread=yes
1888   else
1889     libc_cv_gcc___thread=no
1890   fi
1891   rm -f conftest*])
1892   if test "$libc_cv_gcc___thread" = yes; then
1893     AC_DEFINE(HAVE___THREAD)
1894   fi
1895 else
1896   libc_cv_gcc___thread=no
1897 fi
1898
1899 if test "$libc_cv_gcc___thread" = yes; then
1900   dnl Check whether the compiler supports the tls_model attribute.
1901   AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1902   cat > conftest.c <<\EOF
1903 extern __thread int a __attribute__((tls_model ("initial-exec")));
1904 EOF
1905   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
1906     libc_cv_gcc_tls_model_attr=yes
1907   else
1908     libc_cv_gcc_tls_model_attr=no
1909   fi
1910   rm -f conftest*])
1911   if test "$libc_cv_gcc_tls_model_attr" = yes; then
1912     AC_DEFINE(HAVE_TLS_MODEL_ATTRIBUTE)
1913   fi
1914 fi
1915
1916 dnl Check whether we have the gd library available.
1917 AC_MSG_CHECKING(for libgd)
1918 if test "$with_gd" != "no"; then
1919   old_CFLAGS="$CFLAGS"
1920   CFLAGS="$CFLAGS $libgd_include"
1921   old_LDFLAGS="$LDFLAGS"
1922   LDFLAGS="$LDFLAGS $libgd_ldflags"
1923   old_LIBS="$LIBS"
1924   LIBS="$LIBS -lgd -lpng -lz -lm"
1925   AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1926   CFLAGS="$old_CFLAGS"
1927   LDFLAGS="$old_LDFLAGS"
1928   LIBS="$old_LIBS"
1929 else
1930   LIBGD=no
1931 fi
1932 AC_MSG_RESULT($LIBGD)
1933 AC_SUBST(LIBGD)
1934
1935 # SELinux detection
1936 if test x$with_selinux = xno ; then
1937   have_selinux=no;
1938 else
1939   # See if we have the SELinux library
1940   AC_CHECK_LIB(selinux, is_selinux_enabled,
1941                have_selinux=yes, have_selinux=no)
1942   # See if we have the SELinux header with the NSCD permissions in it.
1943   if test x$have_selinux = xyes ; then
1944     AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h])
1945     AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
1946                     [#ifdef NSCD__SHMEMHOST
1947                      return 0;
1948                      #else
1949                      #error NSCD__SHMEMHOST not defined
1950                      #endif],
1951                     have_selinux=yes, have_selinux=no)
1952     AC_MSG_RESULT($have_selinux)
1953   fi
1954
1955   if test x$with_selinux = xyes ; then
1956     if test x$have_selinux = xno ; then
1957       AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found])
1958     fi
1959   fi
1960 fi
1961 # Check if we're building with SELinux support.
1962 if test "x$have_selinux" = xyes; then
1963   AC_DEFINE(HAVE_SELINUX,1,[SELinux support])
1964 fi
1965 AC_SUBST(have_selinux)
1966
1967 dnl check for the size of 'long double'.
1968 AC_CHECK_SIZEOF(long double, 0)
1969 sizeof_long_double=$ac_cv_sizeof_long_double
1970 AC_SUBST(sizeof_long_double)
1971
1972 ### End of automated tests.
1973 ### Now run sysdeps configure fragments.
1974
1975 # They also can set these variables.
1976 use_ldconfig=no
1977 ldd_rewrite_script=no
1978 libc_cv_sysconfdir=$sysconfdir
1979 libc_cv_gcc_unwind_find_fde=no
1980 libc_cv_idn=no
1981
1982 # Iterate over all the sysdep directories we will use, running their
1983 # configure fragments, and looking for a uname implementation.
1984 uname=
1985 for dir in $sysnames; do
1986   case $dir in
1987     /*) dest=$dir ;;
1988     *)  dest=$srcdir/$dir ;;
1989   esac
1990   if test -r $dest/configure; then
1991     AC_MSG_RESULT(running configure fragment for $dir)
1992     . $dest/configure
1993   fi
1994 [
1995   if test -z "$uname"; then
1996     if test -r $dest/uname.c ||
1997        test -r $dest/uname.S ||
1998        { test -r $dest/syscalls.list &&
1999          grep '^uname[  ]' $dest/syscalls.list >/dev/null; }; then
2000       uname=$dir
2001     fi
2002   fi
2003 ]dnl
2004 done
2005
2006 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
2007   AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
2008 fi
2009 AC_SUBST(libc_cv_gcc_unwind_find_fde)
2010
2011 # If we will use the generic uname implementation, we must figure out what
2012 # it will say by examining the system, and write the results in config-name.h.
2013 if test "$uname" = "sysdeps/generic"; then
2014
2015 changequote(,)dnl
2016   uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
2017 changequote([,])dnl
2018   if test $uname_sysname != $config_os; then
2019     config_release=`echo $config_os | sed s/$uname_sysname//`
2020   fi
2021 dnl
2022 AC_DEFUN(LIBC_KERNEL_ID, [dnl
2023     if test -r /vmunix; then
2024       kernel_id=`strings /vmunix | grep UNIX`
2025     elif test -r /dynix; then
2026       kernel_id=`strings /dynix | grep DYNIX`
2027     else
2028       kernel_id=
2029     fi
2030 ])dnl
2031
2032   AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
2033 LIBC_KERNEL_ID
2034 changequote(,)dnl
2035   kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
2036 changequote([,])dnl
2037   if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
2038          != x$config_release; then
2039     # The configuration release is a substring of the kernel release.
2040     libc_cv_uname_release=$kernel_release
2041   elif test x$config_release != x; then
2042     libc_cv_uname_release=$config_release
2043   elif test x$kernel_release != x; then
2044     libc_cv_uname_release=$kernel_release
2045   else
2046     libc_cv_uname_release=unknown
2047   fi])
2048   uname_release="$libc_cv_uname_release"
2049
2050   AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
2051 LIBC_KERNEL_ID
2052 changequote(,)dnl
2053   kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
2054 changequote([,])dnl
2055   if test -n "$kernel_version"; then
2056     libc_cv_uname_version="$kernel_version"
2057   else
2058     libc_cv_uname_version=unknown
2059   fi])
2060   uname_version="$libc_cv_uname_version"
2061
2062 AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
2063   config_uname=config-name.h:config-name.in
2064 else
2065   # For non-generic uname, we don't need to create config-name.h at all.
2066   config_uname=
2067 fi
2068
2069 dnl This is tested by existing code and it's simpler to avoid changing it.
2070 AC_DEFINE(USE_IN_LIBIO)
2071
2072 # Test for old glibc 2.0.x headers so that they can be removed properly
2073 # Search only in includedir.
2074 AC_MSG_CHECKING(for old glibc 2.0.x headers)
2075 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
2076 then
2077   old_glibc_headers=yes
2078 else
2079   old_glibc_headers=no
2080 fi
2081 AC_MSG_RESULT($old_glibc_headers)
2082 if test ${old_glibc_headers} = yes; then
2083   AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
2084   AC_MSG_WARN(*** be removed.)
2085 fi
2086 AC_SUBST(old_glibc_headers)
2087
2088 AC_SUBST(libc_cv_slibdir)
2089 AC_SUBST(libc_cv_localedir)
2090 AC_SUBST(libc_cv_sysconfdir)
2091 AC_SUBST(libc_cv_rootsbindir)
2092 AC_SUBST(libc_cv_forced_unwind)
2093
2094 AC_SUBST(use_ldconfig)
2095 AC_SUBST(ldd_rewrite_script)
2096
2097 AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf) AC_SUBST(xcoff)
2098 if test $gnu_ld = yes; then
2099   AC_DEFINE(HAVE_GNU_LD)
2100 fi
2101 if test $gnu_as = yes; then
2102   AC_DEFINE(HAVE_GNU_AS)
2103 fi
2104 if test $elf = yes; then
2105   AC_DEFINE(HAVE_ELF)
2106 fi
2107 if test $xcoff = yes; then
2108   AC_DEFINE(HAVE_XCOFF)
2109 fi
2110
2111 AC_SUBST(static)
2112 AC_SUBST(shared)
2113 if test $shared = default; then
2114   if test $gnu_ld = yes; then
2115     shared=$elf
2116   else
2117     # For now we do not assume shared libs are available.  In future more
2118     # tests might become available.
2119     shared=no
2120   fi
2121 fi
2122
2123 if test x"$libc_cv_idn" = xyes; then
2124   AC_DEFINE(HAVE_LIBIDN)
2125 fi
2126
2127 AC_CACHE_CHECK([whether -fPIC is default], pic_default,
2128 [pic_default=yes
2129 cat > conftest.c <<EOF
2130 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
2131 # error PIC is default.
2132 #endif
2133 EOF
2134 if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
2135   pic_default=no
2136 fi
2137 rm -f conftest.*])
2138 AC_SUBST(pic_default)
2139
2140 AC_SUBST(profile)
2141 AC_SUBST(omitfp)
2142 AC_SUBST(bounded)
2143 AC_SUBST(static_nss)
2144 AC_SUBST(nopic_initfini)
2145
2146 AC_SUBST(DEFINES)
2147
2148 case "$add_ons" in
2149   *door*) linux_doors=yes ;;
2150   *) linux_doors=no ;;
2151 esac
2152 AC_SUBST(linux_doors)
2153
2154 dnl See sysdeps/mach/configure.in for this variable.
2155 AC_SUBST(mach_interface_list)
2156
2157 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
2158   config_makefile=
2159 else
2160   config_makefile=Makefile
2161 fi
2162
2163 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
2164 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
2165 AC_SUBST(VERSION)
2166 AC_SUBST(RELEASE)
2167
2168 AC_CONFIG_FILES([config.make ${config_makefile} ${config_uname}])
2169 AC_CONFIG_COMMANDS([default],[[
2170 case $CONFIG_FILES in *config.make*)
2171 echo "$config_vars" >> config.make;;
2172 esac
2173 test -d bits || mkdir bits]],[[config_vars='$config_vars']])
2174 AC_OUTPUT