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