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