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