Moved to sysdeps/generic.
[glibc.git] / configure.in
blob4ad54cfefd0088e437acca04cae58a74d52aabb1
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])
9 if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then
10   AC_MSG_ERROR([you must configure in a separate build directory])
13 # This will get text that should go into config.make.
14 config_vars=
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
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
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
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
58 if test -n "$libgd_include"; then
59   config_vars="$config_vars
60 CFLAGS-memusagestat.c = $libgd_include"
62 if test -n "$libgd_ldflags"; then
63   config_vars="$config_vars
64 libgd-LDFLAGS = $libgd_ldflags"
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
105 AC_SUBST(with_cvs)
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=''])
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])
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])
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])
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")
175 AC_SUBST(oldest_abi)
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])
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])
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])
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)
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)
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)
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)
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
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)
266 AC_CANONICAL_HOST
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
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
286 # Don't allow vendor == "unknown"
287 test "$config_vendor" = unknown && config_vendor=
288 config_os="`echo $config_os | sed 's/^unknown-//'`"
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
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
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"
324 # Braindead PowerPC box with absolutely no FPU.
325 case "$machine-$host_os" in
326   powerpc*-*soft)
327     with_fp=no
328     ;;
329 esac
332 # An add-on can set this when it the tuple to disable the sanity check below.
333 libc_config_ok=no
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()
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
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
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`"
391 AC_SUBST(add_ons)
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
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.
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
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)
488 if test "$base_machine" = "i386"; then
489   AC_DEFINE(USE_REGPARMS)
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'`"
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 ;;
521   base_os='' ;;
522 esac
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"
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"
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
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
565 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
566 changequote([,])dnl
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"
599 if test -z "$os_used" && test "$os" != none; then
600   AC_MSG_ERROR(Operating system $os is not supported.)
602 if test -z "$machine_used" && test "$machine" != none; then
603   AC_MSG_ERROR(The $machine is not supported.)
606 # We have now validated the configuration.
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"
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
635   case " $names " in *" $name "*)
636     # Already in the list.
637     continue
638   esac
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
643   name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
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
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
684   # Add NAME to the list of names.
685   names="$names $name"
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
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
703 # Add the default directories.
704 default_sysnames=sysdeps/generic
705 if test "$elf" = yes; then
706   default_sysnames="sysdeps/generic/elf $default_sysnames"
708 sysnames="$names $default_sysnames"
709 AC_SUBST(sysnames)
710 # The other names were emitted during the scan.
711 AC_MSG_RESULT($default_sysnames)
714 ### Locate tools.
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'
721 AC_PROG_LN_S
723 AC_PROG_CC
724 if test $host != $build; then
725   AC_CHECK_PROGS(BUILD_CC, gcc cc)
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
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")
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.)
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")
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")
774 AC_CHECK_PROGS(AUTOCONF, autoconf, no)
775 case "x$AUTOCONF" in
776 xno|x|x:) AUTOCONF=no ;;
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"
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.])
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.])
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'`"
810 AC_SUBST(SYSINCLUDES)
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) {}
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
828 rm -rf conftest*])
829 if test "$libc_cv_ranlib_necessary" = no; then
830  RANLIB=:
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.])
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)
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
875 AC_SUBST(libc_cv_have_bash2)
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
890 AC_SUBST(libc_cv_have_ksh)
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
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)
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
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
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."
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.  */
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
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."
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
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
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)
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:
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})
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
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; }
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
1012 rm -f conftest*])
1013 if test $libc_cv_asm_set_directive = yes; then
1014   AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
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
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})
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
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
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
1058   cat > conftest.map <<EOF
1059 VERS_1 {
1060         global: sym;
1063 VERS_2 {
1064         global: sym;
1065 } VERS_1;
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
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
1094 AC_SUBST(VERSIONING)
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)."
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
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
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:
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)
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;
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
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; }
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
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;
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
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
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;
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
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; }
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
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; }
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)
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; }
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)
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; }
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)
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
1345   AC_CACHE_CHECK(for -Bgroup option,
1346                  libc_cv_Bgroup, [dnl
1347   cat > conftest.c <<EOF
1348 int _start (void) { return 42; }
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)
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; }
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)
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; }
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)
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) { }
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)
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); }
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)
1445   AC_CACHE_CHECK(for -z execstack,
1446                  libc_cv_z_execstack, [dnl
1447   cat > conftest.c <<EOF
1448 int _start (void) { return 42; }
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)
1462   AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
1463   cat > conftest.c <<EOF
1464 int foo;
1465 main () { return 0;}
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*])
1476   AC_SUBST(libc_cv_fpie)
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;
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
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
1494 AC_SUBST(fno_unit_at_a_time)
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
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;
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
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; }
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])
1556 rm -f conftest*])
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
1572 if test $libc_cv_asm_underscores = no; then
1573   AC_DEFINE(NO_UNDERSCORES)
1576 if test $elf = yes; then
1577   libc_cv_weak_symbols=yes
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
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
1594 rm -f conftest*])
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:
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*])
1616 fi # no .weak
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)
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
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
1639 rm -f conftest*])
1640 if test $libc_cv_asm_cfi_directives = yes; then
1641   AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
1644 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1645 cat > conftest.c <<\EOF
1646 _start () {}
1647 int __eh_pc;
1648 __throw () {}
1650 dnl No \ in command here because it ends up inside ''.
1651 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1652                             -nostdlib -nostartfiles -Wl,--no-whole-archive
1653                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1654   libc_cv_ld_no_whole_archive=yes
1655 else
1656   libc_cv_ld_no_whole_archive=no
1658 rm -f conftest*])
1659 if test $libc_cv_ld_no_whole_archive = yes; then
1660   no_whole_archive=-Wl,--no-whole-archive
1662 AC_SUBST(no_whole_archive)dnl
1664 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1665 cat > conftest.c <<\EOF
1666 _start () {}
1667 int __eh_pc;
1668 __throw () {}
1670 dnl No \ in command here because it ends up inside ''.
1671 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1672                             -nostdlib -nostartfiles -fexceptions
1673                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1674   libc_cv_gcc_exceptions=yes
1675 else
1676   libc_cv_gcc_exceptions=no
1678 rm -f conftest*])
1679 if test $libc_cv_gcc_exceptions = yes; then
1680   exceptions=-fexceptions
1682 AC_SUBST(exceptions)dnl
1684 if test "$host_cpu" = powerpc ; then
1685 # Check for a bug present in at least versions 2.8.x of GCC
1686 # and versions 1.0.x of EGCS.
1687 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1688 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1689                libc_cv_c_asmcr0_bug='no',
1690                libc_cv_c_asmcr0_bug='yes')])
1691 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1692   AC_DEFINE(BROKEN_PPC_ASM_CR0)
1696 AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
1697 [cat > conftest.c <<EOF
1698 #line $LINENO "configure"
1699 static char *__EH_FRAME_BEGIN__;
1700 _start ()
1702 #ifdef CHECK__register_frame
1703   __register_frame (__EH_FRAME_BEGIN__);
1704   __deregister_frame (__EH_FRAME_BEGIN__);
1705 #endif
1706 #ifdef CHECK__register_frame_info
1707   __register_frame_info (__EH_FRAME_BEGIN__);
1708   __deregister_frame_info (__EH_FRAME_BEGIN__);
1709 #endif
1711 int __eh_pc;
1712 __throw () {}
1713 /* FIXME: this is fragile.  */
1714 malloc () {}
1715 strcmp () {}
1716 strlen () {}
1717 memcpy () {}
1718 memset () {}
1719 free () {}
1720 abort () {}
1721 __bzero () {}
1722 dl_iterate_phdr () {}
1724 libc_unwind_check="${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame_info \
1725                             $LDFLAGS \
1726                             -nostdlib -nostartfiles -o conftest conftest.c \
1727                             -lgcc"
1728 # Some platforms' specs put -lgcc first.  The second one doesn't hurt.
1729 if AC_TRY_COMMAND([$libc_unwind_check >&AS_MESSAGE_LOG_FD]) ||
1730    AC_TRY_COMMAND([$libc_unwind_check -lgcc_eh -lgcc >&AS_MESSAGE_LOG_FD])
1731 then
1732   if $libc_unwind_check -v 2>&1 >/dev/null \
1733      | grep -- --eh-frame-hdr 2>&1 >/dev/null; then
1734     libc_cv_gcc_dwarf2_unwind_info=no_registry_needed
1735   else
1736     libc_cv_gcc_dwarf2_unwind_info=static
1737   fi
1738 else
1739   libc_cv_gcc_dwarf2_unwind_info=no
1741 if test $libc_cv_gcc_dwarf2_unwind_info = no; then
1742   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame
1743                               $LDFLAGS -nostdlib -nostartfiles
1744                               -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1745     libc_cv_gcc_dwarf2_unwind_info=yes
1746   else
1747     libc_cv_gcc_dwarf2_unwind_info=no
1748   fi
1750 rm -f conftest*])
1751 case $libc_cv_gcc_dwarf2_unwind_info in
1752 yes)
1753   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1754   ;;
1755 static)
1756   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1757   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
1758   ;;
1759 esac
1761 dnl Check whether compiler understands __builtin_expect.
1762 AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
1763 [cat > conftest.c <<EOF
1764 #line $LINENO "configure"
1765 int foo (int a)
1767   a = __builtin_expect (a, 10);
1768   return a == 10 ? 0 : 1;
1771 dnl No \ in command here because it ends up inside ''.
1772 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
1773                             -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1774   libc_cv_gcc_builtin_expect=yes
1775 else
1776   libc_cv_gcc_builtin_expect=no
1778 rm -f conftest*])
1779 if test "$libc_cv_gcc_builtin_expect" = yes; then
1780   AC_DEFINE(HAVE_BUILTIN_EXPECT)
1783 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1784 cat > conftest.c <<\EOF
1785 void zero (void *x)
1787   __builtin_memset (x, 0, 1000);
1791 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1792 then
1793   libc_cv_gcc_builtin_memset=no
1794 else
1795   libc_cv_gcc_builtin_memset=yes
1797 rm -f conftest* ])
1798 if test "$libc_cv_gcc_builtin_memset" = yes ; then
1799   AC_DEFINE(HAVE_BUILTIN_MEMSET)
1802 AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1803 cat > conftest.c <<\EOF
1804 extern char *strstr (const char *, const char *) __asm ("my_strstr");
1805 char *foo (const char *a, const char *b)
1807   return __builtin_strstr (a, b);
1811 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
1812 then
1813   libc_cv_gcc_builtin_redirection=yes
1814 else
1815   libc_cv_gcc_builtin_redirection=no
1817 rm -f conftest* ])
1818 if test "$libc_cv_gcc_builtin_redirection" = yes ; then
1819   AC_DEFINE(HAVE_BUILTIN_REDIRECTION)
1822 dnl Check whether the compiler supports subtraction of local labels.
1823 AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels,
1824 [cat > conftest.c <<EOF
1825 changequote(,)dnl
1826 #line $LINENO "configure"
1827 int foo (int a)
1829   static const int ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
1830   void *p = &&l1 + ar[a];
1831   goto *p;
1832  l1:
1833   return 1;
1834  l2:
1835   return 2;
1837 changequote([,])dnl
1839 dnl No \ in command here because it ends up inside ''.
1840 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
1841                             -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1842   libc_cv_gcc_subtract_local_labels=yes
1843 else
1844   libc_cv_gcc_subtract_local_labels=no
1846 rm -f conftest*])
1847 if test "$libc_cv_gcc_subtract_local_labels" = yes; then
1848   AC_DEFINE(HAVE_SUBTRACT_LOCAL_LABELS)
1851 dnl Check whether the compiler supports the __thread keyword.
1852 if test "x$use__thread" != xno; then
1853   AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1854   [cat > conftest.c <<\EOF
1855 __thread int a = 42;
1857   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
1858     libc_cv_gcc___thread=yes
1859   else
1860     libc_cv_gcc___thread=no
1861   fi
1862   rm -f conftest*])
1863   if test "$libc_cv_gcc___thread" = yes; then
1864     AC_DEFINE(HAVE___THREAD)
1865   fi
1866 else
1867   libc_cv_gcc___thread=no
1870 if test "$libc_cv_gcc___thread" = yes; then
1871   dnl Check whether the compiler supports the tls_model attribute.
1872   AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1873   cat > conftest.c <<\EOF
1874 extern __thread int a __attribute__((tls_model ("initial-exec")));
1876   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
1877     libc_cv_gcc_tls_model_attr=yes
1878   else
1879     libc_cv_gcc_tls_model_attr=no
1880   fi
1881   rm -f conftest*])
1882   if test "$libc_cv_gcc_tls_model_attr" = yes; then
1883     AC_DEFINE(HAVE_TLS_MODEL_ATTRIBUTE)
1884   fi
1887 dnl Check whether we have the gd library available.
1888 AC_MSG_CHECKING(for libgd)
1889 if test "$with_gd" != "no"; then
1890   old_CFLAGS="$CFLAGS"
1891   CFLAGS="$CFLAGS $libgd_include"
1892   old_LDFLAGS="$LDFLAGS"
1893   LDFLAGS="$LDFLAGS $libgd_ldflags"
1894   old_LIBS="$LIBS"
1895   LIBS="$LIBS -lgd -lpng -lz -lm"
1896   AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1897   CFLAGS="$old_CFLAGS"
1898   LDFLAGS="$old_LDFLAGS"
1899   LIBS="$old_LIBS"
1900 else
1901   LIBGD=no
1903 AC_MSG_RESULT($LIBGD)
1904 AC_SUBST(LIBGD)
1906 # SELinux detection
1907 if test x$with_selinux = xno ; then
1908   have_selinux=no;
1909 else
1910   # See if we have the SELinux library
1911   AC_CHECK_LIB(selinux, is_selinux_enabled,
1912                have_selinux=yes, have_selinux=no)
1913   # See if we have the SELinux header with the NSCD permissions in it.
1914   if test x$have_selinux = xyes ; then
1915     AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h])
1916     AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
1917                     [#ifdef NSCD__SHMEMHOST
1918                      return 0;
1919                      #else
1920                      #error NSCD__SHMEMHOST not defined
1921                      #endif],
1922                     have_selinux=yes, have_selinux=no)
1923     AC_MSG_RESULT($have_selinux)
1924   fi
1926   if test x$with_selinux = xyes ; then
1927     if test x$have_selinux = xno ; then
1928       AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found])
1929     fi
1930   fi
1932 # Check if we're building with SELinux support.
1933 if test "x$have_selinux" = xyes; then
1934   AC_DEFINE(HAVE_SELINUX,1,[SELinux support])
1936 AC_SUBST(have_selinux)
1938 dnl check for the size of 'long double'.
1939 AC_CHECK_SIZEOF(long double, 0)
1940 sizeof_long_double=$ac_cv_sizeof_long_double
1941 AC_SUBST(sizeof_long_double)
1943 ### End of automated tests.
1944 ### Now run sysdeps configure fragments.
1946 # They also can set these variables.
1947 use_ldconfig=no
1948 ldd_rewrite_script=no
1949 libc_cv_sysconfdir=$sysconfdir
1950 libc_cv_gcc_unwind_find_fde=no
1951 libc_cv_idn=no
1953 # Iterate over all the sysdep directories we will use, running their
1954 # configure fragments, and looking for a uname implementation.
1955 uname=
1956 for dir in $sysnames; do
1957   case $dir in
1958     /*) dest=$dir ;;
1959     *)  dest=$srcdir/$dir ;;
1960   esac
1961   if test -r $dest/configure; then
1962     AC_MSG_RESULT(running configure fragment for $dir)
1963     . $dest/configure
1964   fi
1966   if test -z "$uname"; then
1967     if test -r $dest/uname.c ||
1968        test -r $dest/uname.S ||
1969        { test -r $dest/syscalls.list &&
1970          grep '^uname[  ]' $dest/syscalls.list >/dev/null; }; then
1971       uname=$dir
1972     fi
1973   fi
1974 ]dnl
1975 done
1977 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
1978   AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
1980 AC_SUBST(libc_cv_gcc_unwind_find_fde)
1982 # If we will use the generic uname implementation, we must figure out what
1983 # it will say by examining the system, and write the results in config-name.h.
1984 if test "$uname" = "sysdeps/generic"; then
1986 changequote(,)dnl
1987   uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
1988 changequote([,])dnl
1989   if test $uname_sysname != $config_os; then
1990     config_release=`echo $config_os | sed s/$uname_sysname//`
1991   fi
1993 AC_DEFUN(LIBC_KERNEL_ID, [dnl
1994     if test -r /vmunix; then
1995       kernel_id=`strings /vmunix | grep UNIX`
1996     elif test -r /dynix; then
1997       kernel_id=`strings /dynix | grep DYNIX`
1998     else
1999       kernel_id=
2000     fi
2001 ])dnl
2003   AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
2004 LIBC_KERNEL_ID
2005 changequote(,)dnl
2006   kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
2007 changequote([,])dnl
2008   if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
2009          != x$config_release; then
2010     # The configuration release is a substring of the kernel release.
2011     libc_cv_uname_release=$kernel_release
2012   elif test x$config_release != x; then
2013     libc_cv_uname_release=$config_release
2014   elif test x$kernel_release != x; then
2015     libc_cv_uname_release=$kernel_release
2016   else
2017     libc_cv_uname_release=unknown
2018   fi])
2019   uname_release="$libc_cv_uname_release"
2021   AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
2022 LIBC_KERNEL_ID
2023 changequote(,)dnl
2024   kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
2025 changequote([,])dnl
2026   if test -n "$kernel_version"; then
2027     libc_cv_uname_version="$kernel_version"
2028   else
2029     libc_cv_uname_version=unknown
2030   fi])
2031   uname_version="$libc_cv_uname_version"
2033 AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
2034   config_uname=config-name.h:config-name.in
2035 else
2036   # For non-generic uname, we don't need to create config-name.h at all.
2037   config_uname=
2040 dnl This is tested by existing code and it's simpler to avoid changing it.
2041 AC_DEFINE(USE_IN_LIBIO)
2043 # Test for old glibc 2.0.x headers so that they can be removed properly
2044 # Search only in includedir.
2045 AC_MSG_CHECKING(for old glibc 2.0.x headers)
2046 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
2047 then
2048   old_glibc_headers=yes
2049 else
2050   old_glibc_headers=no
2052 AC_MSG_RESULT($old_glibc_headers)
2053 if test ${old_glibc_headers} = yes; then
2054   AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
2055   AC_MSG_WARN(*** be removed.)
2057 AC_SUBST(old_glibc_headers)
2059 AC_SUBST(libc_cv_slibdir)
2060 AC_SUBST(libc_cv_localedir)
2061 AC_SUBST(libc_cv_sysconfdir)
2062 AC_SUBST(libc_cv_rootsbindir)
2063 AC_SUBST(libc_cv_forced_unwind)
2065 AC_SUBST(use_ldconfig)
2066 AC_SUBST(ldd_rewrite_script)
2068 AC_SUBST(gnu_ld) AC_SUBST(gnu_as) AC_SUBST(elf) AC_SUBST(xcoff)
2069 if test $gnu_ld = yes; then
2070   AC_DEFINE(HAVE_GNU_LD)
2072 if test $gnu_as = yes; then
2073   AC_DEFINE(HAVE_GNU_AS)
2075 if test $elf = yes; then
2076   AC_DEFINE(HAVE_ELF)
2078 if test $xcoff = yes; then
2079   AC_DEFINE(HAVE_XCOFF)
2082 AC_SUBST(static)
2083 AC_SUBST(shared)
2084 if test $shared = default; then
2085   if test $gnu_ld = yes; then
2086     shared=$elf
2087   else
2088     # For now we do not assume shared libs are available.  In future more
2089     # tests might become available.
2090     shared=no
2091   fi
2094 if test x"$libc_cv_idn" = xyes; then
2095   AC_DEFINE(HAVE_LIBIDN)
2098 AC_CACHE_CHECK([whether -fPIC is default], pic_default,
2099 [pic_default=yes
2100 cat > conftest.c <<EOF
2101 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
2102 # error PIC is default.
2103 #endif
2105 if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
2106   pic_default=no
2108 rm -f conftest.*])
2109 AC_SUBST(pic_default)
2111 AC_SUBST(profile)
2112 AC_SUBST(omitfp)
2113 AC_SUBST(bounded)
2114 AC_SUBST(static_nss)
2115 AC_SUBST(nopic_initfini)
2117 AC_SUBST(DEFINES)
2119 case "$add_ons" in
2120   *door*) linux_doors=yes ;;
2121   *) linux_doors=no ;;
2122 esac
2123 AC_SUBST(linux_doors)
2125 dnl See sysdeps/mach/configure.in for this variable.
2126 AC_SUBST(mach_interface_list)
2128 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
2129   config_makefile=
2130 else
2131   config_makefile=Makefile
2134 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
2135 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
2136 AC_SUBST(VERSION)
2137 AC_SUBST(RELEASE)
2139 AC_CONFIG_FILES([config.make ${config_makefile} ${config_uname}])
2140 AC_CONFIG_COMMANDS([default],[[
2141 case $CONFIG_FILES in *config.make*)
2142 echo "$config_vars" >> config.make;;
2143 esac
2144 test -d bits || mkdir bits]],[[config_vars='$config_vars']])
2145 AC_OUTPUT