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