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