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