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