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