Make sure at least gcc 3.4 is used.
[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   if test -n "$d"; then
597     try="${d}sysdeps/generic"
598     test -n "$enable_debug_configure" &&
599     echo "$0 DEBUG: try $try" >&2
600     if test -d $srcdir/$try; then
601       sysnames="$sysnames $try"
602     fi
603   fi
604 done
605 IFS="$ac_save_ifs"
606
607 if test -z "$os_used" && test "$os" != none; then
608   AC_MSG_ERROR(Operating system $os is not supported.)
609 fi
610 if test -z "$machine_used" && test "$machine" != none; then
611   AC_MSG_ERROR(The $machine is not supported.)
612 fi
613
614 # We have now validated the configuration.
615
616
617 # If using ELF, look for an `elf' subdirectory of each machine directory.
618 # We prepend these rather than inserting them whereever the machine appears
619 # because things specified by the machine's ELF ABI should override
620 # OS-specific things, and should always be the same for any OS on the
621 # machine (otherwise what's the point of an ABI?).
622 if test "$elf" = yes; then
623   elf_dirs=
624   for d in $add_ons_pfx ''; do
625     for m in $mach; do
626       if test -d $srcdir/${d}sysdeps$m/elf; then
627         elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
628       fi
629     done
630   done
631   sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
632 fi
633
634
635 # Expand the list of system names into a full list of directories
636 # from each element's parent name and Implies file (if present).
637 set $sysnames
638 names=
639 while test $# -gt 0; do
640   name=$1
641   shift
642
643   case " $names " in *" $name "*)
644     # Already in the list.
645     continue
646   esac
647
648   # Report each name as we discover it, so there is no long pause in output.
649   echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
650
651   name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
652
653   case $name in
654     /*) xsrcdir= ;;
655     *)  xsrcdir=$srcdir/ ;;
656   esac
657   test -n "$enable_debug_configure" &&
658   echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
659
660   if test -f $xsrcdir$name/Implies; then
661     # Collect more names from the `Implies' file (removing comments).
662     implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
663     implied=
664     for x in $implied_candidate; do
665       found=no
666       if test -d $xsrcdir$name_base/$x; then
667         implied="$implied $name_base/$x";
668         found=yes
669       fi
670       for d in $add_ons_pfx ''; do
671         try="${d}sysdeps/$x"
672         case $d in
673          /*) try_srcdir= ;;
674          *) try_srcdir=$srcdir/ ;;
675         esac
676         test -n "$enable_debug_configure" &&
677          echo "[DEBUG]: $name implied $x try($d) {$try_srcdir}$try" >&2
678         if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
679         then
680           implied="$implied $try"
681           found=yes
682         fi
683       done
684       if test $found = no; then
685         AC_MSG_WARN($name/Implies specifies nonexistent $x)
686       fi
687     done
688   else
689     implied=
690   fi
691
692   # Add NAME to the list of names.
693   names="$names $name"
694
695   # Find the parent of NAME, using the empty string if it has none.
696 changequote(,)dnl
697   parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
698 changequote([,])dnl
699
700   # Add the names implied by NAME, and NAME's parent (if it has one), to
701   # the list of names to be processed (the argument list).  We prepend the
702   # implied names to the list and append the parent.  We want implied
703   # directories to come before further directories inferred from the
704   # configuration components; this ensures that for sysv4, unix/common
705   # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
706   # after sysv4).
707   sysnames="`echo $implied $* $parent`"
708   test -n "$sysnames" && set $sysnames
709 done
710
711 # Add the default directories.
712 default_sysnames=sysdeps/generic
713 if test "$elf" = yes; then
714   default_sysnames="sysdeps/generic/elf $default_sysnames"
715 fi
716 sysnames="$names $default_sysnames"
717 AC_SUBST(sysnames)
718 # The other names were emitted during the scan.
719 AC_MSG_RESULT($default_sysnames)
720
721
722 ### Locate tools.
723
724 AC_PROG_INSTALL
725 if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
726   # The makefiles need to use a different form to find it in $srcdir.
727   INSTALL='\$(..)./scripts/install-sh -c'
728 fi
729 AC_PROG_LN_S
730
731 AC_PROG_CC
732 if test $host != $build; then
733   AC_CHECK_PROGS(BUILD_CC, gcc cc)
734 fi
735 AC_SUBST(cross_compiling)
736 AC_PROG_CPP
737 # We need the C++ compiler only for testing.
738 AC_PROG_CXX
739 LIBC_PROG_BINUTILS
740 AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
741
742 # Accept binutils 2.13 or newer.
743 AC_CHECK_PROG_VER(AS, $AS, --version,
744                   [GNU assembler.* \([0-9]*\.[0-9.]*\)],
745                   [2.1[3-9]*], AS=: critic_missing="$critic_missing as")
746 AC_CHECK_PROG_VER(LD, $LD, --version,
747                   [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
748                   [2.1[3-9]*], LD=: critic_missing="$critic_missing ld")
749
750 # We need the physical current working directory.  We cannot use the
751 # "pwd -P" shell builtin since that's not portable.  Instead we try to
752 # find a pwd binary.  Note that assigning to the PWD environment
753 # variable might have some interesting side effects, so we don't do
754 # that.
755 AC_PATH_PROG(PWD_P, pwd, no)
756 if test "$PWD_P" = no; then
757   AC_MSG_ERROR(*** A pwd binary could not be found.)
758 fi
759
760 # These programs are version sensitive.
761 AC_CHECK_TOOL_PREFIX
762 AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
763   [version \([egcygnustpi-]*[0-9.]*\)], [3.4* | 4.[0-9]* ],
764   critic_missing="$critic_missing gcc")
765 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
766   [GNU Make[^0-9]*\([0-9][0-9.]*\)],
767   [3.79* | 3.[89]*], critic_missing="$critic_missing make")
768
769 AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
770   [GNU gettext.* \([0-9]*\.[0-9.]*\)],
771   [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
772   MSGFMT=: aux_missing="$aux_missing msgfmt")
773 AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
774   [GNU texinfo.* \([0-9][0-9.]*\)],
775   [4.*],
776   MAKEINFO=: aux_missing="$aux_missing makeinfo")
777 AC_CHECK_PROG_VER(SED, sed, --version,
778   [GNU sed version \([0-9]*\.[0-9.]*\)],
779   [3.0[2-9]*|3.[1-9]*|[4-9]*],
780   SED=: aux_missing="$aux_missing sed")
781
782 AC_CHECK_PROGS(AUTOCONF, autoconf, no)
783 case "x$AUTOCONF" in
784 xno|x|x:) AUTOCONF=no ;;
785 *)
786   AC_CACHE_CHECK(dnl
787 whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
788   if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
789     libc_cv_autoconf_works=yes
790   else
791     libc_cv_autoconf_works=no
792   fi])
793   test $libc_cv_autoconf_works = yes || AUTOCONF=no
794   ;;
795 esac
796 if test "x$with_cvs" = xyes && test "x$AUTOCONF" = xno; then
797   # If --without-cvs they probably won't change configure.in, so no complaints.
798   aux_missing="$aux_missing autoconf"
799 fi
800
801 test -n "$critic_missing" && AC_MSG_ERROR([
802 *** These critical programs are missing or too old:$critic_missing
803 *** Check the INSTALL file for required versions.])
804
805 test -n "$aux_missing" && AC_MSG_WARN([
806 *** These auxiliary programs are missing or incompatible versions:$aux_missing
807 *** some features will be disabled.
808 *** Check the INSTALL file for required versions.])
809
810 # if using special system headers, find out the compiler's sekrit
811 # header directory and add that to the list.  NOTE: Only does the right
812 # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
813 if test -n "$sysheaders"; then
814   ccheaders=`$CC -print-file-name=include`
815   SYSINCLUDES="-nostdinc -isystem $ccheaders \
816 -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
817 fi
818 AC_SUBST(SYSINCLUDES)
819
820 # check if ranlib is necessary
821 AC_CACHE_CHECK(whether ranlib is necessary, libc_cv_ranlib_necessary, [dnl
822 cat > conftest.c <<EOF
823 int a;
824 char b;
825 void c(void) {}
826 EOF
827 $CC $CFLAGS $CPPFLAGS -c conftest.c
828 $AR cr conftest.a conftest.o
829 cp conftest.a conftest2.a
830 $RANLIB conftest.a
831 if cmp -s conftest.a conftest2.a; then
832   libc_cv_ranlib_necessary=no
833 else
834   libc_cv_ranlib_necessary=yes
835 fi
836 rm -rf conftest*])
837 if test "$libc_cv_ranlib_necessary" = no; then
838  RANLIB=:
839 fi
840
841 # Test if LD_LIBRARY_PATH contains the notation for the current directory
842 # since this would lead to problems installing/building glibc.
843 # LD_LIBRARY_PATH contains the current directory if one of the following
844 # is true:
845 # - one of the terminals (":" and ";") is the first or last sign
846 # - two terminals occur directly after each other
847 # - the path contains an element with a dot in it
848 AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
849 changequote(,)dnl
850 case ${LD_LIBRARY_PATH} in
851   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
852     ld_library_path_setting="contains current directory"
853     ;;
854   *)
855     ld_library_path_setting="ok"
856     ;;
857 esac
858 changequote([,])dnl
859 AC_MSG_RESULT($ld_library_path_setting)
860 if test "$ld_library_path_setting" != "ok"; then
861 AC_MSG_ERROR([
862 *** LD_LIBRARY_PATH shouldn't contain the current directory when
863 *** building glibc. Please change the environment variable
864 *** and run configure again.])
865 fi
866
867 AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
868 if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
869   libc_cv_gcc_static_libgcc=
870 else
871   libc_cv_gcc_static_libgcc=-static-libgcc
872 fi])
873 AC_SUBST(libc_cv_gcc_static_libgcc)
874
875 AC_PATH_PROG(BASH, bash, no)
876 if test "$BASH" != no &&
877    $BASH -c 'test "$BASH_VERSINFO" \
878              && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
879   libc_cv_have_bash2=yes
880 else
881   libc_cv_have_bash2=no
882 fi
883 AC_SUBST(libc_cv_have_bash2)
884
885 dnl We need a ksh compatible shell for tzselect.
886 if test "$BASH" = no; then
887   AC_PATH_PROG(KSH, ksh, no)
888   if test "$KSH" = no; then
889     libc_cv_have_ksh=no
890   else
891     libc_cv_have_ksh=yes
892   fi
893 else
894   KSH="$BASH"
895   AC_SUBST(KSH)
896   libc_cv_have_ksh=yes
897 fi
898 AC_SUBST(libc_cv_have_ksh)
899
900 AC_PROG_AWK
901 AC_PATH_PROG(PERL, perl, no)
902 if test "$PERL" != no &&
903    (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
904   PERL=no
905 fi
906 AC_PATH_PROG(INSTALL_INFO, install-info, no,
907              $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
908 AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
909
910 AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
911 echo '#include <stddef.h>
912 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
913 if eval "$ac_cpp conftest.c 2>/dev/null" \
914 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
915   libc_cv_signed_size_t=no
916 else
917   libc_cv_signed_size_t=yes
918 fi
919 rm -f conftest*])
920 if test $libc_cv_signed_size_t = yes; then
921   dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
922   cat >> confdefs.h <<\EOF
923 #undef __SIZE_TYPE__
924 #define __SIZE_TYPE__ unsigned
925 EOF
926 fi
927
928 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
929 AC_TRY_COMPILE(dnl
930 [#define __need_size_t
931 #define __need_wchar_t
932 #include <stddef.h>
933 #define __need_NULL
934 #include <stddef.h>], [size_t size; wchar_t wchar;
935 #ifdef offsetof
936 #error stddef.h ignored __need_*
937 #endif
938 if (&size == NULL || &wchar == NULL) abort ();],
939                libc_cv_friendly_stddef=yes,
940                libc_cv_friendly_stddef=no)])
941 if test $libc_cv_friendly_stddef = yes; then
942   config_vars="$config_vars
943 override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
944 fi
945
946 AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
947                libc_cv_need_minus_P, [dnl
948 cat > conftest.S <<EOF
949 #include "confdefs.h"
950 /* Nothing whatsoever.  */
951 EOF
952 if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
953   libc_cv_need_minus_P=no
954 else
955   libc_cv_need_minus_P=yes
956 fi
957 rm -f conftest*])
958 if test $libc_cv_need_minus_P = yes; then
959   config_vars="$config_vars
960 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
961 fi
962
963 AC_MSG_CHECKING(whether .text pseudo-op must be used)
964 AC_CACHE_VAL(libc_cv_dot_text, [dnl
965 cat > conftest.s <<EOF
966 .text
967 EOF
968 libc_cv_dot_text=
969 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
970   libc_cv_dot_text=.text
971 fi
972 rm -f conftest*])
973 if test -z "$libc_cv_dot_text"; then
974   AC_MSG_RESULT(no)
975 else
976   AC_MSG_RESULT(yes)
977 fi
978
979 AC_CACHE_CHECK(for assembler global-symbol directive,
980                libc_cv_asm_global_directive, [dnl
981 libc_cv_asm_global_directive=UNKNOWN
982 for ac_globl in .globl .global .EXPORT; do
983   cat > conftest.s <<EOF
984         ${libc_cv_dot_text}
985         ${ac_globl} foo
986 foo:
987 EOF
988   if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
989     libc_cv_asm_global_directive=${ac_globl}
990   fi
991   rm -f conftest*
992   test $libc_cv_asm_global_directive != UNKNOWN && break
993 done])
994 if test $libc_cv_asm_global_directive = UNKNOWN; then
995   AC_MSG_ERROR(cannot determine asm global directive)
996 else
997   AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
998 fi
999
1000 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
1001 cat > conftest.s <<EOF
1002 ${libc_cv_dot_text}
1003 foo:
1004 .set glibc_conftest_frobozz,foo
1005 $libc_cv_asm_global_directive glibc_conftest_frobozz
1006 EOF
1007 # The alpha-dec-osf1 assembler gives only a warning for `.set'
1008 # (but it doesn't work), so we must do a linking check to be sure.
1009 cat > conftest1.c <<\EOF
1010 extern int glibc_conftest_frobozz;
1011 void _start() { glibc_conftest_frobozz = 1; }
1012 EOF
1013 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1014             -nostartfiles -nostdlib \
1015             -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1016   libc_cv_asm_set_directive=yes
1017 else
1018   libc_cv_asm_set_directive=no
1019 fi
1020 rm -f conftest*])
1021 if test $libc_cv_asm_set_directive = yes; then
1022   AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
1023 fi
1024
1025 AC_CACHE_CHECK(for assembler .type directive prefix,
1026                libc_cv_asm_type_prefix, [dnl
1027 libc_cv_asm_type_prefix=no
1028 for ac_try_prefix in '@' '%' '#'; do
1029   cat > conftest.s <<EOF
1030         ${libc_cv_dot_text}
1031         ${libc_cv_asm_global_directive} foo
1032         .type foo, ${ac_try_prefix}object
1033         .size foo, 1
1034 foo:
1035         .byte 1
1036 EOF
1037   if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1038     libc_cv_asm_type_prefix=${ac_try_prefix}
1039   fi
1040   rm -f conftest*
1041   test "x$libc_cv_asm_type_prefix" != xno && break
1042 done])
1043 if test "x$libc_cv_asm_type_prefix" != xno; then
1044   AC_DEFINE_UNQUOTED(ASM_TYPE_DIRECTIVE_PREFIX, ${libc_cv_asm_type_prefix})
1045 fi
1046
1047 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
1048 [cat > conftest.s <<EOF
1049 ${libc_cv_dot_text}
1050 _sym:
1051 .symver _sym,sym@VERS
1052 EOF
1053 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1054   libc_cv_asm_symver_directive=yes
1055 else
1056   libc_cv_asm_symver_directive=no
1057 fi
1058 rm -f conftest*])
1059 AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
1060 if test $libc_cv_asm_symver_directive = yes; then
1061   cat > conftest.s <<EOF
1062 ${libc_cv_dot_text}
1063 _sym:
1064 .symver _sym,sym@VERS
1065 EOF
1066   cat > conftest.map <<EOF
1067 VERS_1 {
1068         global: sym;
1069 };
1070
1071 VERS_2 {
1072         global: sym;
1073 } VERS_1;
1074 EOF
1075   if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1076     if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
1077                                 -o conftest.so conftest.o
1078                                 -nostartfiles -nostdlib
1079                                 -Wl,--version-script,conftest.map
1080                        1>&AS_MESSAGE_LOG_FD]);
1081     then
1082       libc_cv_ld_version_script_option=yes
1083     else
1084       libc_cv_ld_version_script_option=no
1085     fi
1086   else
1087     libc_cv_ld_version_script_option=no
1088   fi
1089 else
1090   libc_cv_ld_version_script_option=no
1091 fi
1092 rm -f conftest*])
1093 if test $shared != no &&
1094    test $libc_cv_asm_symver_directive = yes &&
1095    test $libc_cv_ld_version_script_option = yes &&
1096    test $enable_versioning = yes; then
1097   VERSIONING=yes
1098   AC_DEFINE(DO_VERSIONING)
1099 else
1100   VERSIONING=no
1101 fi
1102 AC_SUBST(VERSIONING)
1103
1104 if test $elf = yes && test $shared != no && test $VERSIONING = no; then
1105   echo "\
1106 *** WARNING: You should not compile GNU libc without versioning. Not using
1107 *** versioning will introduce incompatibilities so that old binaries
1108 *** will not run anymore.
1109 *** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
1110 fi
1111 if test $elf = yes; then
1112   AC_CACHE_CHECK(for .previous assembler directive,
1113                  libc_cv_asm_previous_directive, [dnl
1114   cat > conftest.s <<EOF
1115 .section foo_section
1116 .previous
1117 EOF
1118   if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1119     libc_cv_asm_previous_directive=yes
1120   else
1121     libc_cv_asm_previous_directive=no
1122   fi
1123   rm -f conftest*])
1124   if test $libc_cv_asm_previous_directive = yes; then
1125     AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
1126   else
1127     AC_CACHE_CHECK(for .popsection assembler directive,
1128                    libc_cv_asm_popsection_directive, [dnl
1129     cat > conftest.s <<EOF
1130 .pushsection foo_section
1131 .popsection
1132 EOF
1133     if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1134       libc_cv_asm_popsection_directive=yes
1135     else
1136       libc_cv_asm_popsection_directive=no
1137     fi
1138     rm -f conftest*])
1139     if test $libc_cv_asm_popsection_directive = yes; then
1140       AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
1141     fi
1142   fi
1143   AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1144                  libc_cv_asm_protected_directive, [dnl
1145   cat > conftest.s <<EOF
1146 .protected foo
1147 foo:
1148 .hidden bar
1149 bar:
1150 EOF
1151   if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1152     libc_cv_asm_protected_directive=yes
1153   else
1154     libc_cv_asm_protected_directive=no
1155   fi
1156   rm -f conftest*])
1157   AC_SUBST(libc_cv_asm_protected_directive)
1158   AC_DEFINE(HAVE_PROTECTED)
1159   AC_DEFINE(HAVE_HIDDEN)
1160
1161   if test $libc_cv_asm_protected_directive = yes; then
1162     AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
1163                  libc_cv_visibility_attribute,
1164                  [cat > conftest.c <<EOF
1165                   int foo __attribute__ ((visibility ("hidden"))) = 1;
1166                   int bar __attribute__ ((visibility ("protected"))) = 1;
1167 EOF
1168                   libc_cv_visibility_attribute=no
1169                   if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1170                     if grep '\.hidden.*foo' conftest.s >/dev/null; then
1171                       if grep '\.protected.*bar' conftest.s >/dev/null; then
1172                         libc_cv_visibility_attribute=yes
1173                       fi
1174                     fi
1175                   fi
1176                   rm -f conftest.[cs]
1177                  ])
1178     if test $libc_cv_visibility_attribute = yes; then
1179       AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
1180     fi
1181   fi
1182
1183   if test $libc_cv_visibility_attribute = yes; then
1184     AC_CACHE_CHECK(for broken __attribute__((visibility())),
1185                  libc_cv_broken_visibility_attribute,
1186                  [cat > conftest.c <<EOF
1187                   int foo (int x);
1188                   int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1189                   int bar (int x) { return x; }
1190 EOF
1191                   libc_cv_broken_visibility_attribute=yes
1192                   if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s1>&AS_MESSAGE_LOG_FD); then
1193 changequote(,)dnl
1194                     if grep '\.hidden[  _]foo' conftest.s >/dev/null; then
1195 changequote([,])dnl
1196                       libc_cv_broken_visibility_attribute=no
1197                     fi
1198                   fi
1199                   rm -f conftest.c conftest.s
1200                  ])
1201     if test $libc_cv_broken_visibility_attribute = yes; then
1202       AC_DEFINE(HAVE_BROKEN_VISIBILITY_ATTRIBUTE)
1203     fi
1204   fi
1205
1206   AC_CACHE_CHECK(for broken __attribute__((alias())),
1207                  libc_cv_broken_alias_attribute,
1208                  [cat > conftest.c <<EOF
1209                   extern int foo (int x) __asm ("xyzzy");
1210                   int bar (int x) { return x; }
1211                   extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1212                   extern int dfoo;
1213                   extern __typeof (dfoo) dfoo __asm ("abccb");
1214                   int dfoo = 1;
1215 EOF
1216                   libc_cv_broken_alias_attribute=yes
1217                   if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1218                     if grep 'xyzzy' conftest.s >/dev/null &&
1219                        grep 'abccb' conftest.s >/dev/null; then
1220                       libc_cv_broken_alias_attribute=no
1221                     fi
1222                   fi
1223                   rm -f conftest.c conftest.s
1224                  ])
1225   if test $libc_cv_broken_alias_attribute = yes; then
1226     AC_DEFINE(HAVE_BROKEN_ALIAS_ATTRIBUTE)
1227   fi
1228
1229   if test $libc_cv_visibility_attribute = yes -a $gnu_ld = yes; then
1230     AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1231                  libc_cv_have_sdata_section,
1232                  [echo "int i;" > conftest.c
1233                   libc_cv_have_sdata_section=no
1234                   if ${CC-cc} $LDFLAGS -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1235                      | grep '\.sdata' >/dev/null; then
1236                     libc_cv_have_sdata_section=yes
1237                   fi
1238                   rm -f conftest.c conftest.so
1239                  ])
1240     if test $libc_cv_have_sdata_section = yes; then
1241       AC_DEFINE(HAVE_SDATA_SECTION)
1242     fi
1243   fi
1244
1245   AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1246                  libc_cv_initfinit_array, [dnl
1247   cat > conftest.c <<EOF
1248 int _start (void) { return 0; }
1249 int __start (void) { return 0; }
1250 int foo (void) { return 1; }
1251 int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
1252 EOF
1253   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c
1254                      -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
1255   then
1256     if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
1257       libc_cv_initfinit_array=yes
1258     else
1259       libc_cv_initfinit_array=no
1260     fi
1261   else
1262     libc_cv_initfinit_array=no
1263   fi
1264   rm -f conftest*])
1265   AC_SUBST(libc_cv_initfinit_array)
1266   if test $libc_cv_initfinit_array = yes; then
1267     AC_DEFINE(HAVE_INITFINI_ARRAY)
1268   fi
1269
1270   AC_CACHE_CHECK(for libunwind-support in compiler,
1271                  libc_cv_cc_with_libunwind, [
1272     cat > conftest.c <<EOF
1273 int main (void) { return 0; }
1274 EOF
1275     if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
1276        conftest.c -v 2>&1 >/dev/null | grep -q " -lunwind "; then
1277       libc_cv_cc_with_libunwind=yes
1278     else
1279       libc_cv_cc_with_libunwind=no
1280     fi
1281     rm -f conftest*])
1282   AC_SUBST(libc_cv_cc_with_libunwind)
1283   if test $libc_cv_cc_with_libunwind = yes; then
1284     AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
1285   fi
1286
1287   AC_CACHE_CHECK(for -z nodelete option,
1288                  libc_cv_z_nodelete, [dnl
1289   cat > conftest.c <<EOF
1290 int _start (void) { return 42; }
1291 EOF
1292   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1293                      -shared -o conftest.so conftest.c
1294                      -nostartfiles -nostdlib
1295                      -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
1296   then
1297     libc_cv_z_nodelete=yes
1298   else
1299     libc_cv_z_nodelete=no
1300   fi
1301   rm -f conftest*])
1302   AC_SUBST(libc_cv_z_nodelete)
1303
1304   AC_CACHE_CHECK(for -z nodlopen option,
1305                  libc_cv_z_nodlopen, [dnl
1306   cat > conftest.c <<EOF
1307 int _start (void) { return 42; }
1308 EOF
1309   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1310                         -shared -o conftest.so conftest.c
1311                         -nostartfiles -nostdlib
1312                         -Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
1313   then
1314     libc_cv_z_nodlopen=yes
1315   else
1316     libc_cv_z_nodlopen=no
1317   fi
1318   rm -f conftest*])
1319   AC_SUBST(libc_cv_z_nodlopen)
1320
1321   AC_CACHE_CHECK(for -z initfirst option,
1322                  libc_cv_z_initfirst, [dnl
1323   cat > conftest.c <<EOF
1324 int _start (void) { return 42; }
1325 EOF
1326   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1327                         -shared -o conftest.so conftest.c
1328                         -nostartfiles -nostdlib
1329                         -Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
1330   then
1331     libc_cv_z_initfirst=yes
1332   else
1333     libc_cv_z_initfirst=no
1334   fi
1335   rm -f conftest*])
1336   AC_SUBST(libc_cv_z_initfirst)
1337
1338   AC_CACHE_CHECK(for -z relro option,
1339                  libc_cv_z_relro, [dnl
1340   libc_cv_z_relro=no
1341   if AC_TRY_COMMAND([${CC-cc} -v --help 2>&1|grep "z relro" 1>&AS_MESSAGE_LOG_FD])
1342   then
1343     if AC_TRY_COMMAND([${CC-cc} -Wl,--verbose 2>&1|grep DATA_SEGMENT_RELRO_END 1>&AS_MESSAGE_LOG_FD])
1344     then
1345       libc_cv_z_relro=yes
1346     fi
1347   fi])
1348   AC_SUBST(libc_cv_z_relro)
1349   if test $libc_cv_z_relro = yes; then
1350     AC_DEFINE(HAVE_Z_RELRO)
1351   fi
1352
1353   AC_CACHE_CHECK(for -Bgroup option,
1354                  libc_cv_Bgroup, [dnl
1355   cat > conftest.c <<EOF
1356 int _start (void) { return 42; }
1357 EOF
1358   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1359                               -shared -o conftest.so conftest.c
1360                               -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1361   then
1362     libc_cv_Bgroup=yes
1363   else
1364     libc_cv_Bgroup=no
1365   fi
1366   rm -f conftest*])
1367   AC_SUBST(libc_cv_Bgroup)
1368
1369   AC_CACHE_CHECK(for libgcc_s suffix,
1370                  libc_cv_libgcc_s_suffix, [dnl
1371   cat > conftest.c <<EOF
1372 int main (void) { return 0; }
1373 EOF
1374 changequote(,)dnl
1375   libc_cv_libgcc_s_suffix=`${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1376                            -shared -shared-libgcc -o conftest.so \
1377                            conftest.c -v 2>&1 >/dev/null \
1378                            | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'`
1379 changequote([,])dnl
1380   rm -f conftest*])
1381   AC_SUBST(libc_cv_libgcc_s_suffix)
1382
1383   AC_CACHE_CHECK(for --as-needed option,
1384                  libc_cv_as_needed, [dnl
1385   cat > conftest.c <<EOF
1386 int main (void) { return 0; }
1387 EOF
1388   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1389                               -shared -o conftest.so conftest.c
1390                               -lgcc_s$libc_cv_libgcc_s_suffix -Wl,--as-needed
1391                               -nostdlib 1>&AS_MESSAGE_LOG_FD])
1392   then
1393     libc_cv_as_needed=yes
1394   else
1395     libc_cv_as_needed=no
1396   fi
1397   rm -f conftest*])
1398   AC_SUBST(libc_cv_as_needed)
1399
1400   ASFLAGS_config=
1401   AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1402                  libc_cv_as_noexecstack, [dnl
1403   cat > conftest.c <<EOF
1404 void foo (void) { }
1405 EOF
1406   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1407                      -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
1408      && grep -q .note.GNU-stack conftest.s \
1409      && AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -Wa,--noexecstack
1410                        -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1411   then
1412     libc_cv_as_noexecstack=yes
1413   else
1414     libc_cv_as_noexecstack=no
1415   fi
1416   rm -f conftest*])
1417   if test $libc_cv_as_noexecstack = yes; then
1418     ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1419   fi
1420   AC_SUBST(ASFLAGS_config)
1421
1422   AC_CACHE_CHECK(for -z combreloc,
1423                  libc_cv_z_combreloc, [dnl
1424   cat > conftest.c <<EOF
1425 extern int bar (int);
1426 extern int mumble;
1427 int foo (void) { return bar (mumble); }
1428 EOF
1429   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1430                         -shared -o conftest.so conftest.c
1431                         -nostdlib -nostartfiles
1432                         -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
1433   then
1434 dnl The following test is a bit weak.  We must use a tool which can test
1435 dnl cross-platform since the gcc used can be a cross compiler.  Without
1436 dnl introducing new options this is not easily doable.  Instead use a tool
1437 dnl which always is cross-platform: readelf.  To detect whether -z combreloc
1438 dnl look for a section named .rel.dyn.
1439     if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1440       libc_cv_z_combreloc=yes
1441     else
1442       libc_cv_z_combreloc=no
1443     fi
1444   else
1445     libc_cv_z_combreloc=no
1446   fi
1447   rm -f conftest*])
1448   if test "$libc_cv_z_combreloc" = yes; then
1449     AC_DEFINE(HAVE_Z_COMBRELOC)
1450   fi
1451   AC_SUBST(libc_cv_z_combreloc)
1452
1453   AC_CACHE_CHECK(for -z execstack,
1454                  libc_cv_z_execstack, [dnl
1455   cat > conftest.c <<EOF
1456 int _start (void) { return 42; }
1457 EOF
1458   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1459                               -shared -o conftest.so conftest.c
1460                               -Wl,-z,execstack -nostdlib
1461                               1>&AS_MESSAGE_LOG_FD])
1462   then
1463     libc_cv_z_execstack=yes
1464   else
1465     libc_cv_z_execstack=no
1466   fi
1467   rm -f conftest*])
1468   AC_SUBST(libc_cv_z_execstack)
1469
1470   AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
1471   cat > conftest.c <<EOF
1472 int foo;
1473 main () { return 0;}
1474 EOF
1475   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fpie
1476                               -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1477   then
1478     libc_cv_fpie=yes
1479   else
1480     libc_cv_fpie=no
1481   fi
1482   rm -f conftest*])
1483
1484   AC_SUBST(libc_cv_fpie)
1485 fi
1486
1487 AC_CACHE_CHECK(for -fno-unit-at-a-time, libc_cv_fno_unit_at_a_time, [dnl
1488 cat > conftest.c <<EOF
1489 int foo;
1490 EOF
1491 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-unit-at-a-time
1492                             conftest.c 1>&AS_MESSAGE_LOG_FD])
1493 then
1494   libc_cv_fno_unit_at_a_time=yes
1495 else
1496   libc_cv_fno_unit_at_a_time=no
1497 fi
1498 rm -f conftest*])
1499 if test $libc_cv_fno_unit_at_a_time = yes; then
1500   fno_unit_at_a_time=-fno-unit-at-a-time
1501 fi
1502 AC_SUBST(fno_unit_at_a_time)
1503
1504 if test $elf != yes; then
1505   AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
1506                  [AC_TRY_COMPILE(, [asm (".section .init");
1507                                     asm (".section .fini");
1508                                     asm ("${libc_cv_dot_text}");],
1509                                  libc_cv_have_initfini=yes,
1510                                  libc_cv_have_initfini=no)])
1511   AC_SUBST(libc_cv_have_initfini)dnl
1512   if test $libc_cv_have_initfini = yes; then
1513     AC_DEFINE(HAVE_INITFINI)
1514   fi
1515 fi
1516
1517 if test $elf = yes -a $gnu_ld = yes; then
1518   AC_CACHE_CHECK(whether cc puts quotes around section names,
1519                  libc_cv_have_section_quotes,
1520                  [cat > conftest.c <<EOF
1521                   static const int foo
1522                   __attribute__ ((section ("bar"))) = 1;
1523 EOF
1524                   if ${CC-cc} -S conftest.c -o conftest.s; then
1525                     if grep '\.section.*"bar"' conftest.s >/dev/null; then
1526                       libc_cv_have_section_quotes=yes
1527                     else
1528                       libc_cv_have_section_quotes=no
1529                     fi
1530                   else
1531                     libc_cv_have_section_quotes=unknown
1532                   fi
1533                   rm -f conftest.[cs]
1534                  ])
1535   if test $libc_cv_have_section_quotes = yes; then
1536     AC_DEFINE(HAVE_SECTION_QUOTES)
1537   fi
1538 fi
1539
1540 dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
1541 AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
1542 [cat > conftest.$ac_ext <<EOF
1543 dnl This sometimes fails to find confdefs.h, for some reason.
1544 dnl [#]line $LINENO "[$]0"
1545 [#]line $LINENO "configure"
1546 #include "confdefs.h"
1547 void underscore_test(void) {
1548 return; }
1549 EOF
1550 if AC_TRY_EVAL(ac_compile); then
1551   if grep _underscore_test conftest* >/dev/null; then
1552     ifelse([$1], , :, [rm -f conftest*
1553     $1])
1554   else
1555     ifelse([$2], , , [rm -f conftest*
1556     $2])
1557   fi
1558 else
1559   echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
1560   cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
1561   ifelse([$2], , , [rm -f conftest*
1562   $2])
1563 fi
1564 rm -f conftest*])
1565
1566 if test $elf = yes; then
1567   libc_cv_asm_underscores=no
1568 else
1569   if test $ac_cv_prog_cc_works = yes; then
1570     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1571                    [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
1572                                 libc_cv_asm_underscores=yes,
1573                                 libc_cv_asm_underscores=no)])
1574   else
1575     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1576                    [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
1577                                             libc_cv_asm_underscores=no)])
1578   fi
1579 fi
1580 if test $libc_cv_asm_underscores = no; then
1581   AC_DEFINE(NO_UNDERSCORES)
1582 fi
1583
1584 if test $elf = yes; then
1585   libc_cv_weak_symbols=yes
1586 fi
1587
1588 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1589                [dnl
1590 cat > conftest.s <<EOF
1591 ${libc_cv_dot_text}
1592 ${libc_cv_asm_global_directive} foo
1593 foo:
1594 .weak foo
1595 .weak bar; bar = foo
1596 EOF
1597 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1598   libc_cv_asm_weak_directive=yes
1599 else
1600   libc_cv_asm_weak_directive=no
1601 fi
1602 rm -f conftest*])
1603
1604 if test $libc_cv_asm_weak_directive = no; then
1605   AC_CACHE_CHECK(for assembler .weakext directive,
1606                  libc_cv_asm_weakext_directive,
1607                  [dnl
1608 cat > conftest.s <<EOF
1609 ${libc_cv_dot_text}
1610 ${libc_cv_asm_global_directive} foo
1611 foo:
1612 .weakext bar foo
1613 .weakext baz
1614 ${libc_cv_asm_global_directive} baz
1615 baz:
1616 EOF
1617   if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1618     libc_cv_asm_weakext_directive=yes
1619   else
1620     libc_cv_asm_weakext_directive=no
1621   fi
1622   rm -f conftest*])
1623
1624 fi # no .weak
1625
1626 if test $libc_cv_asm_weak_directive = yes; then
1627   AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1628 elif test $libc_cv_asm_weakext_directive = yes; then
1629   AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1630 fi
1631
1632 AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
1633 cat > conftest.s <<EOF
1634         .text
1635         .type   func,@function
1636 func:
1637         .cfi_startproc
1638         .cfi_remember_state
1639         .cfi_rel_offset 1, 0
1640         .cfi_endproc
1641 EOF
1642 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1643   libc_cv_asm_cfi_directives=yes
1644 else
1645   libc_cv_asm_cfi_directives=no
1646 fi
1647 rm -f conftest*])
1648 if test $libc_cv_asm_cfi_directives = yes; then
1649   AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
1650 fi
1651
1652 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1653 cat > conftest.c <<\EOF
1654 _start () {}
1655 int __eh_pc;
1656 __throw () {}
1657 EOF
1658 dnl No \ in command here because it ends up inside ''.
1659 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1660                             -nostdlib -nostartfiles -Wl,--no-whole-archive
1661                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1662   libc_cv_ld_no_whole_archive=yes
1663 else
1664   libc_cv_ld_no_whole_archive=no
1665 fi
1666 rm -f conftest*])
1667 if test $libc_cv_ld_no_whole_archive = yes; then
1668   no_whole_archive=-Wl,--no-whole-archive
1669 fi
1670 AC_SUBST(no_whole_archive)dnl
1671
1672 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1673 cat > conftest.c <<\EOF
1674 _start () {}
1675 int __eh_pc;
1676 __throw () {}
1677 EOF
1678 dnl No \ in command here because it ends up inside ''.
1679 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1680                             -nostdlib -nostartfiles -fexceptions
1681                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1682   libc_cv_gcc_exceptions=yes
1683 else
1684   libc_cv_gcc_exceptions=no
1685 fi
1686 rm -f conftest*])
1687 if test $libc_cv_gcc_exceptions = yes; then
1688   exceptions=-fexceptions
1689 fi
1690 AC_SUBST(exceptions)dnl
1691
1692 if test "$host_cpu" = powerpc ; then
1693 # Check for a bug present in at least versions 2.8.x of GCC
1694 # and versions 1.0.x of EGCS.
1695 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1696 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1697                libc_cv_c_asmcr0_bug='no',
1698                libc_cv_c_asmcr0_bug='yes')])
1699 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1700   AC_DEFINE(BROKEN_PPC_ASM_CR0)
1701 fi
1702 fi
1703
1704 AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
1705 [cat > conftest.c <<EOF
1706 #line $LINENO "configure"
1707 static char *__EH_FRAME_BEGIN__;
1708 _start ()
1709 {
1710 #ifdef CHECK__register_frame
1711   __register_frame (__EH_FRAME_BEGIN__);
1712   __deregister_frame (__EH_FRAME_BEGIN__);
1713 #endif
1714 #ifdef CHECK__register_frame_info
1715   __register_frame_info (__EH_FRAME_BEGIN__);
1716   __deregister_frame_info (__EH_FRAME_BEGIN__);
1717 #endif
1718 }
1719 int __eh_pc;
1720 __throw () {}
1721 /* FIXME: this is fragile.  */
1722 malloc () {}
1723 strcmp () {}
1724 strlen () {}
1725 memcpy () {}
1726 memset () {}
1727 free () {}
1728 abort () {}
1729 __bzero () {}
1730 dl_iterate_phdr () {}
1731 EOF
1732 libc_unwind_check="${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame_info \
1733                             $LDFLAGS \
1734                             -nostdlib -nostartfiles -o conftest conftest.c \
1735                             -lgcc"
1736 # Some platforms' specs put -lgcc first.  The second one doesn't hurt.
1737 if AC_TRY_COMMAND([$libc_unwind_check >&AS_MESSAGE_LOG_FD]) ||
1738    AC_TRY_COMMAND([$libc_unwind_check -lgcc_eh -lgcc >&AS_MESSAGE_LOG_FD])
1739 then
1740   if $libc_unwind_check -v 2>&1 >/dev/null \
1741      | grep -- --eh-frame-hdr 2>&1 >/dev/null; then
1742     libc_cv_gcc_dwarf2_unwind_info=no_registry_needed
1743   else
1744     libc_cv_gcc_dwarf2_unwind_info=static
1745   fi
1746 else
1747   libc_cv_gcc_dwarf2_unwind_info=no
1748 fi
1749 if test $libc_cv_gcc_dwarf2_unwind_info = no; then
1750   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame
1751                               $LDFLAGS -nostdlib -nostartfiles
1752                               -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1753     libc_cv_gcc_dwarf2_unwind_info=yes
1754   else
1755     libc_cv_gcc_dwarf2_unwind_info=no
1756   fi
1757 fi
1758 rm -f conftest*])
1759 case $libc_cv_gcc_dwarf2_unwind_info in
1760 yes)
1761   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1762   ;;
1763 static)
1764   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1765   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
1766   ;;
1767 esac
1768
1769 dnl Check whether compiler understands __builtin_expect.
1770 AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
1771 [cat > conftest.c <<EOF
1772 #line $LINENO "configure"
1773 int foo (int a)
1774 {
1775   a = __builtin_expect (a, 10);
1776   return a == 10 ? 0 : 1;
1777 }
1778 EOF
1779 dnl No \ in command here because it ends up inside ''.
1780 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
1781                             -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1782   libc_cv_gcc_builtin_expect=yes
1783 else
1784   libc_cv_gcc_builtin_expect=no
1785 fi
1786 rm -f conftest*])
1787 if test "$libc_cv_gcc_builtin_expect" = yes; then
1788   AC_DEFINE(HAVE_BUILTIN_EXPECT)
1789 fi
1790
1791 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1792 cat > conftest.c <<\EOF
1793 void zero (void *x)
1794 {
1795   __builtin_memset (x, 0, 1000);
1796 }
1797 EOF
1798 dnl
1799 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1800 then
1801   libc_cv_gcc_builtin_memset=no
1802 else
1803   libc_cv_gcc_builtin_memset=yes
1804 fi
1805 rm -f conftest* ])
1806 if test "$libc_cv_gcc_builtin_memset" = yes ; then
1807   AC_DEFINE(HAVE_BUILTIN_MEMSET)
1808 fi
1809
1810 AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1811 cat > conftest.c <<\EOF
1812 extern char *strstr (const char *, const char *) __asm ("my_strstr");
1813 char *foo (const char *a, const char *b)
1814 {
1815   return __builtin_strstr (a, b);
1816 }
1817 EOF
1818 dnl
1819 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
1820 then
1821   libc_cv_gcc_builtin_redirection=yes
1822 else
1823   libc_cv_gcc_builtin_redirection=no
1824 fi
1825 rm -f conftest* ])
1826 if test "$libc_cv_gcc_builtin_redirection" = yes ; then
1827   AC_DEFINE(HAVE_BUILTIN_REDIRECTION)
1828 fi
1829
1830 dnl Check whether the compiler supports subtraction of local labels.
1831 AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
1832 [cat > conftest.c <<EOF
1833 changequote(,)dnl
1834 #line $LINENO "configure"
1835 int foo (int a)
1836 {
1837   static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
1838   void *p = &&l1 + ar[a];
1839   goto *p;
1840  l1:
1841   return 1;
1842  l2:
1843   return 2;
1844 }
1845 changequote([,])dnl
1846 EOF
1847 dnl No \ in command here because it ends up inside ''.
1848 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
1849                             -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1850   libc_cv_gcc_subtract_local_labels=yes
1851 else
1852   libc_cv_gcc_subtract_local_labels=no
1853 fi
1854 rm -f conftest*])
1855 if test "$libc_cv_gcc_subtract_local_labels" = yes; then
1856   AC_DEFINE(HAVE_SUBTRACT_LOCAL_LABELS)
1857 fi
1858
1859 dnl Check whether the compiler supports the __thread keyword.
1860 if test "x$use__thread" != xno; then
1861   AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1862   [cat > conftest.c <<\EOF
1863 __thread int a = 42;
1864 EOF
1865   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
1866     libc_cv_gcc___thread=yes
1867   else
1868     libc_cv_gcc___thread=no
1869   fi
1870   rm -f conftest*])
1871   if test "$libc_cv_gcc___thread" = yes; then
1872     AC_DEFINE(HAVE___THREAD)
1873   fi
1874 else
1875   libc_cv_gcc___thread=no
1876 fi
1877
1878 if test "$libc_cv_gcc___thread" = yes; then
1879   dnl Check whether the compiler supports the tls_model attribute.
1880   AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1881   cat > conftest.c <<\EOF
1882 extern __thread int a __attribute__((tls_model ("initial-exec")));
1883 EOF
1884   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
1885     libc_cv_gcc_tls_model_attr=yes
1886   else
1887     libc_cv_gcc_tls_model_attr=no
1888   fi
1889   rm -f conftest*])
1890   if test "$libc_cv_gcc_tls_model_attr" = yes; then
1891     AC_DEFINE(HAVE_TLS_MODEL_ATTRIBUTE)
1892   fi
1893 fi
1894
1895 dnl Check whether we have the gd library available.
1896 AC_MSG_CHECKING(for libgd)
1897 if test "$with_gd" != "no"; then
1898   old_CFLAGS="$CFLAGS"
1899   CFLAGS="$CFLAGS $libgd_include"
1900   old_LDFLAGS="$LDFLAGS"
1901   LDFLAGS="$LDFLAGS $libgd_ldflags"
1902   old_LIBS="$LIBS"
1903   LIBS="$LIBS -lgd -lpng -lz -lm"
1904   AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1905   CFLAGS="$old_CFLAGS"
1906   LDFLAGS="$old_LDFLAGS"
1907   LIBS="$old_LIBS"
1908 else
1909   LIBGD=no
1910 fi
1911 AC_MSG_RESULT($LIBGD)
1912 AC_SUBST(LIBGD)
1913
1914 # SELinux detection
1915 if test x$with_selinux = xno ; then
1916   have_selinux=no;
1917 else
1918   # See if we have the SELinux library
1919   AC_CHECK_LIB(selinux, is_selinux_enabled,
1920                have_selinux=yes, have_selinux=no)
1921   # See if we have the SELinux header with the NSCD permissions in it.
1922   if test x$have_selinux = xyes ; then
1923     AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h])
1924     AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
1925                     [#ifdef NSCD__SHMEMHOST
1926                      return 0;
1927                      #else
1928                      #error NSCD__SHMEMHOST not defined
1929                      #endif],
1930                     have_selinux=yes, have_selinux=no)
1931     AC_MSG_RESULT($have_selinux)
1932   fi
1933
1934   if test x$with_selinux = xyes ; then
1935     if test x$have_selinux = xno ; then
1936       AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found])
1937     fi
1938   fi
1939 fi
1940 # Check if we're building with SELinux support.
1941 if test "x$have_selinux" = xyes; then
1942   AC_DEFINE(HAVE_SELINUX,1,[SELinux support])
1943 fi
1944 AC_SUBST(have_selinux)
1945
1946 dnl check for the size of 'long double'.
1947 AC_CHECK_SIZEOF(long double, 0)
1948 sizeof_long_double=$ac_cv_sizeof_long_double
1949 AC_SUBST(sizeof_long_double)
1950
1951 ### End of automated tests.
1952 ### Now run sysdeps configure fragments.
1953
1954 # They also can set these variables.
1955 use_ldconfig=no
1956 ldd_rewrite_script=no
1957 libc_cv_sysconfdir=$sysconfdir
1958 libc_cv_gcc_unwind_find_fde=no
1959 libc_cv_idn=no
1960
1961 # Iterate over all the sysdep directories we will use, running their
1962 # configure fragments, and looking for a uname implementation.
1963 uname=
1964 for dir in $sysnames; do
1965   case $dir in
1966     /*) dest=$dir ;;
1967     *)  dest=$srcdir/$dir ;;
1968   esac
1969   if test -r $dest/configure; then
1970     AC_MSG_RESULT(running configure fragment for $dir)
1971     . $dest/configure
1972   fi
1973 [
1974   if test -z "$uname"; then
1975     if test -r $dest/uname.c ||
1976        test -r $dest/uname.S ||
1977        { test -r $dest/syscalls.list &&
1978          grep '^uname[  ]' $dest/syscalls.list >/dev/null; }; then
1979       uname=$dir
1980     fi
1981   fi
1982 ]dnl
1983 done
1984
1985 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
1986   AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
1987 fi
1988 AC_SUBST(libc_cv_gcc_unwind_find_fde)
1989
1990 # If we will use the generic uname implementation, we must figure out what
1991 # it will say by examining the system, and write the results in config-name.h.
1992 if test "$uname" = "sysdeps/generic"; then
1993
1994 changequote(,)dnl
1995   uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
1996 changequote([,])dnl
1997   if test $uname_sysname != $config_os; then
1998     config_release=`echo $config_os | sed s/$uname_sysname//`
1999   fi
2000 dnl
2001 AC_DEFUN(LIBC_KERNEL_ID, [dnl
2002     if test -r /vmunix; then
2003       kernel_id=`strings /vmunix | grep UNIX`
2004     elif test -r /dynix; then
2005       kernel_id=`strings /dynix | grep DYNIX`
2006     else
2007       kernel_id=
2008     fi
2009 ])dnl
2010
2011   AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
2012 LIBC_KERNEL_ID
2013 changequote(,)dnl
2014   kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
2015 changequote([,])dnl
2016   if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
2017          != x$config_release; then
2018     # The configuration release is a substring of the kernel release.
2019     libc_cv_uname_release=$kernel_release
2020   elif test x$config_release != x; then
2021     libc_cv_uname_release=$config_release
2022   elif test x$kernel_release != x; then
2023     libc_cv_uname_release=$kernel_release
2024   else
2025     libc_cv_uname_release=unknown
2026   fi])
2027   uname_release="$libc_cv_uname_release"
2028
2029   AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
2030 LIBC_KERNEL_ID
2031 changequote(,)dnl
2032   kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
2033 changequote([,])dnl
2034   if test -n "$kernel_version"; then
2035     libc_cv_uname_version="$kernel_version"
2036   else
2037     libc_cv_uname_version=unknown
2038   fi])
2039   uname_version="$libc_cv_uname_version"
2040
2041 AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
2042   config_uname=config-name.h:config-name.in
2043 else
2044   # For non-generic uname, we don't need to create config-name.h at all.
2045   config_uname=
2046 fi
2047
2048 dnl This is tested by existing code and it's simpler to avoid changing it.
2049 AC_DEFINE(USE_IN_LIBIO)
2050
2051 # Test for old glibc 2.0.x headers so that they can be removed properly
2052 # Search only in includedir.
2053 AC_MSG_CHECKING(for old glibc 2.0.x headers)
2054 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
2055 then
2056   old_glibc_headers=yes
2057 else
2058   old_glibc_headers=no
2059 fi
2060 AC_MSG_RESULT($old_glibc_headers)
2061 if test ${old_glibc_headers} = yes; then
2062   AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
2063   AC_MSG_WARN(*** be removed.)
2064 fi
2065 AC_SUBST(old_glibc_headers)
2066
2067 AC_SUBST(libc_cv_slibdir)
2068 AC_SUBST(libc_cv_localedir)
2069 AC_SUBST(libc_cv_sysconfdir)
2070 AC_SUBST(libc_cv_rootsbindir)
2071 AC_SUBST(libc_cv_forced_unwind)
2072
2073 AC_SUBST(use_ldconfig)
2074 AC_SUBST(ldd_rewrite_script)
2075
2076 AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf) AC_SUBST(xcoff)
2077 if test $gnu_ld = yes; then
2078   AC_DEFINE(HAVE_GNU_LD)
2079 fi
2080 if test $gnu_as = yes; then
2081   AC_DEFINE(HAVE_GNU_AS)
2082 fi
2083 if test $elf = yes; then
2084   AC_DEFINE(HAVE_ELF)
2085 fi
2086 if test $xcoff = yes; then
2087   AC_DEFINE(HAVE_XCOFF)
2088 fi
2089
2090 AC_SUBST(static)
2091 AC_SUBST(shared)
2092 if test $shared = default; then
2093   if test $gnu_ld = yes; then
2094     shared=$elf
2095   else
2096     # For now we do not assume shared libs are available.  In future more
2097     # tests might become available.
2098     shared=no
2099   fi
2100 fi
2101
2102 if test x"$libc_cv_idn" = xyes; then
2103   AC_DEFINE(HAVE_LIBIDN)
2104 fi
2105
2106 AC_CACHE_CHECK([whether -fPIC is default], pic_default,
2107 [pic_default=yes
2108 cat > conftest.c <<EOF
2109 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
2110 # error PIC is default.
2111 #endif
2112 EOF
2113 if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
2114   pic_default=no
2115 fi
2116 rm -f conftest.*])
2117 AC_SUBST(pic_default)
2118
2119 AC_SUBST(profile)
2120 AC_SUBST(omitfp)
2121 AC_SUBST(bounded)
2122 AC_SUBST(static_nss)
2123 AC_SUBST(nopic_initfini)
2124
2125 AC_SUBST(DEFINES)
2126
2127 case "$add_ons" in
2128   *door*) linux_doors=yes ;;
2129   *) linux_doors=no ;;
2130 esac
2131 AC_SUBST(linux_doors)
2132
2133 dnl See sysdeps/mach/configure.in for this variable.
2134 AC_SUBST(mach_interface_list)
2135
2136 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
2137   config_makefile=
2138 else
2139   config_makefile=Makefile
2140 fi
2141
2142 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
2143 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
2144 AC_SUBST(VERSION)
2145 AC_SUBST(RELEASE)
2146
2147 AC_CONFIG_FILES([config.make ${config_makefile} ${config_uname}])
2148 AC_CONFIG_COMMANDS([default],[[
2149 case $CONFIG_FILES in *config.make*)
2150 echo "$config_vars" >> config.make;;
2151 esac
2152 test -d bits || mkdir bits]],[[config_vars='$config_vars']])
2153 AC_OUTPUT