.
[glibc/history.git] / configure.in
blobd7b22f3a3b31dfa65f0540beb4f15083171f5739
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_CANONICAL_HOST
259 # The way shlib-versions is used to generate soversions.mk uses a
260 # fairly simplistic model for name recognition that can't distinguish
261 # i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a $host_os
262 # of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
263 # tell.  This doesn't get used much beyond that, so it's fairly safe.
264 case "$host_os" in
265 linux*)
266   ;;
267 gnu*)
268   host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
269   ;;
270 esac
272 # We keep the original values in `$config_*' and never modify them, so we
273 # can write them unchanged into config.make.  Everything else uses
274 # $machine, $vendor, and $os, and changes them whenever convenient.
275 config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
277 # Don't allow vendor == "unknown"
278 test "$config_vendor" = unknown && config_vendor=
279 config_os="`echo $config_os | sed 's/^unknown-//'`"
281 # Some configurations imply other options.
282 case "$host_os" in
283 # i586-linuxaout is mangled into i586-pc-linux-gnuaout
284 linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
285   ;;
286 gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*)
287   # These systems (almost) always use the ELF format.
288   elf=yes
289   ;;
290 aix*)
291   # These systems are always xcoff
292   xcoff=yes
293   elf=no
294   ;;
295 esac
297 # The configure fragment of an add-on port can modify these to supplement
298 # or override the table in the case statement below.  No fragment should
299 # ever change the config_* variables, however.
300 machine=$config_machine
301 vendor=$config_vendor
302 os=$config_os
303 base_os=''
305 # config.guess on some IBM machines says `rs6000' instead of `powerpc'.
306 # Unify this here.
307 if test "$machine" = rs6000; then
308   machine="powerpc"
311 # Braindead PowerPC box with absolutely no FPU.
312 case "$machine-$host_os" in
313   powerpc*-*soft)
314     with_fp=no
315     ;;
316 esac
318 submachine=
319 AC_ARG_WITH([cpu],
320             AS_HELP_STRING([--with-cpu=CPU], [select code for CPU variant]),
321             [dnl
322   case "$withval" in
323   yes|'') AC_MSG_ERROR([--with-cpu requires an argument]) ;;
324   no) ;;
325   *) submachine="$withval" ;;
326   esac
329 # An add-on can set this when it wants to disable the sanity check below.
330 libc_config_ok=no
332 dnl Having this here, though empty, makes sure that if add-ons' fragments
333 dnl do AC_CONFIG_SUBDIRS([some-dir]), which just sets $subdirs, then
334 dnl our AC_OUTPUT will actually use it.
335 AC_CONFIG_SUBDIRS()
337 case "$enable_add_ons" in
338 ''|no) add_ons= ;;
339 yes|'*')
340  add_ons=`cd $srcdir && ls -d 2> /dev/null */configure */sysdeps |
341           sed 's@/[[^/]]*$@@' | sort | uniq`
342          add_ons_automatic=yes
343          ;;
344 *) add_ons=`echo "$enable_add_ons" | sed 's/,/ /g'`
345        add_ons_automatic=no ;;
346 esac
348 configured_add_ons=
349 add_ons_sfx=
350 add_ons_pfx=
351 if test x"$add_ons" != x; then
352   for f in $add_ons; do
353     # Some sanity checks
354     case "$f" in
355     crypt)
356       AC_MSG_ERROR([
357 *** It seems that you're using an old \`crypt' add-on.  crypt is now
358 *** part of glibc and using the old add-on will not work with this
359 *** release.  Start again with fresh sources and without the old
360 *** \`crypt' add-on.])
361     ;;
362     localedata)
363       AC_MSG_ERROR([
364 *** It seems that you're using an old \`localedata' add-on.  localedata
365 *** is now part of glibc and using the old add-on will not work with
366 *** this release.  Start again with fresh sources and without the old
367 *** \`localedata' add-on.])
368     ;;
369     esac
370   done
372   # Now source each add-on's configure fragment.
373   # The fragments can use $srcdir/$libc_add_on to find themselves,
374   # and test $add_ons_automatic to see if they were explicitly requested.
375   # A fragment can clear (or even change) $libc_add_on to affect
376   # whether it goes into the list to be actually used in the build.
377   use_add_ons=
378   for libc_add_on in $add_ons; do
379     # Test whether such a directory really exists.
380     # It can be absolute, or relative to $srcdir, or relative to the build dir.
381     case "$libc_add_on" in
382     /*)
383       libc_add_on_srcdir=$libc_add_on
384       ;;
385     *)
386       test -d "$srcdir/$libc_add_on" || {
387         if test -d "$libc_add_on"; then
388           libc_add_on="`pwd`/$libc_add_on"
389         else
390           AC_MSG_ERROR(add-on directory \"$libc_add_on\" does not exist)
391         fi
392       }
393       libc_add_on_srcdir=$srcdir/$libc_add_on
394       ;;
395     esac
397     libc_add_on_frag=$libc_add_on_srcdir/configure
398     libc_add_on_canonical=
399     if test -r "$libc_add_on_frag"; then
400       AC_MSG_NOTICE(running configure fragment for add-on $libc_add_on)
401       libc_add_on_canonical=unknown
402       libc_add_on_subdirs=
403       . "$libc_add_on_frag"
404       test -z "$libc_add_on" || {
405         configured_add_ons="$configured_add_ons $libc_add_on"
406         if test "x$libc_add_on_canonical" = xunknown; then
407           AC_MSG_ERROR(fragment must set \$libc_add_on_canonical)
408         fi
409         for d in $libc_add_on_subdirs; do
410           case "$libc_add_on" in
411           /*) subdir_srcdir="$libc_add_on" ;;
412           *) subdir_srcdir="\$(..)$libc_add_on" ;;
413           esac
414           case "$d" in
415           .)
416             d="${libc_add_on_canonical:-$libc_add_on}"
417             ;;
418           /*)
419             subdir_srcdir="$d"
420             ;;
421           *)
422             subdir_srcdir="$subdir_srcdir/$d"
423             ;;
424           esac
425           d=`echo "$d" | sed 's@/*$@@;s@^.*/@@'`
426           add_on_subdirs="$add_on_subdirs $d"
427           test "$subdir_srcdir" = "\$(..)$d" || config_vars="$config_vars
428 $d-srcdir = $subdir_srcdir"
429         done
430       }
431     fi
432     if test -n "$libc_add_on"; then
433       if frags=`ls -d $libc_add_on_srcdir/sysdeps/*/preconfigure 2> /dev/null`
434       then
435         AC_MSG_CHECKING(add-on $libc_add_on for preconfigure fragments)
436         for frag in $frags; do
437           name=`echo "$frag" | sed 's@/[[^/]]*$@@;s@^.*/@@'`
438           echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
439           . "$frag"
440         done
441         AC_MSG_RESULT()
442       fi
443       use_add_ons="$use_add_ons $libc_add_on"
444       add_ons_pfx="$add_ons_pfx $libc_add_on/"
445       test -z "$libc_add_on_canonical" ||
446       add_ons_sfx="$add_ons_sfx /$libc_add_on_canonical"
447     fi
448   done
449   # Use echo to strip excess whitespace.
450   add_ons="`echo $use_add_ons`"
452 AC_SUBST(add_ons)
453 AC_SUBST(add_on_subdirs)
457 ### I put this here to prevent those annoying emails from people who cannot
458 ### read and try to compile glibc on unsupported platforms.  --drepper
460 ### By using the undocumented --enable-hacker-mode option for configure
461 ### one can skip this test to make the configuration not fail for unsupported
462 ### platforms.
464 if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
465   case "$machine-$host_os" in
466   *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*)
467     ;;
468   *)
469     echo "*** The GNU C library is currently not available for this platform."
470     echo "*** So far nobody cared to port it and if there is no volunteer it"
471     echo "*** might never happen.  So, if you have interest to see glibc on"
472     echo "*** this platform visit"
473     echo "***   http://www.gnu.org/software/libc/porting.html"
474     echo "*** and join the group of porters"
475     exit 1
476     ;;
477   esac
480 dnl We need to use [ and ] for other purposes for a while now.
481 changequote(,)dnl
482 # Expand the configuration machine name into a subdirectory by architecture
483 # type and particular chip.  If an add-on configure fragment already set
484 # base_machine, we don't change it.
485 test -n "$base_machine" || case "$machine" in
486 a29k | am29000) base_machine=a29k machine=a29k ;;
487 c3[012])        base_machine=cx0 machine=cx0/c30 ;;
488 c4[04])         base_machine=cx0 machine=cx0/c40 ;;
489 i[34567]86)     base_machine=i386 machine=i386/$machine ;;
490 ia64)           base_machine=ia64 machine=ia64 ;;
491 m88???)         base_machine=m88k machine=m88k/$machine ;;
492 m88k)           base_machine=m88k machine=m88k/m88100 ;;
493 powerpc)        base_machine=powerpc machine=powerpc/powerpc32 ;;
494 powerpc64)      base_machine=powerpc machine=powerpc/powerpc64 ;;
495 s390)           base_machine=s390 machine=s390/s390-32 ;;
496 s390x)          base_machine=s390 machine=s390/s390-64 ;;
497 sh3*)           base_machine=sh machine=sh/sh3 ;;
498 sh4*)           base_machine=sh machine=sh/sh4 ;;
499 sparc | sparcv[67])
500                 base_machine=sparc machine=sparc/sparc32 ;;
501 sparcv8 | supersparc | hypersparc)
502                 base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
503 sparcv8plus | sparcv8plusa | sparcv9)
504                 base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
505 sparcv8plusb | sparcv9b)
506                 base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9b ;;
507 sparcv9v)
508                 base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v ;;
509 sparcv9v2)
510                 base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v2 ;;
511 sparc64)
512                 base_machine=sparc machine=sparc/sparc64 ;;
513 sparc64b)
514                 base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
515 sparc64v)
516                 base_machine=sparc machine=sparc/sparc64/sparcv9v ;;
517 sparc64v2)
518                 base_machine=sparc machine=sparc/sparc64/sparcv9v2 ;;
519 *)              base_machine=$machine ;;
520 esac
521 changequote([,])dnl
522 AC_SUBST(base_machine)
524 if test "$base_machine" = "i386"; then
525   AC_DEFINE(USE_REGPARMS)
528 # Compute the list of sysdep directories for this configuration.
529 # This can take a while to compute.
530 sysdep_dir=$srcdir/sysdeps
531 AC_MSG_CHECKING(sysdep dirs)
532 dnl We need to use [ and ] for other purposes for a while now.
533 changequote(,)dnl
534 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
535 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
537 test "x$base_os" != x || case "$os" in
538 gnu*)
539   base_os=mach/hurd ;;
540 netbsd* | 386bsd* | freebsd* | bsdi*)
541   base_os=unix/bsd/bsd4.4 ;;
542 osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
543   base_os=unix/bsd ;;
544 sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
545   base_os=unix/sysv ;;
546 irix6*)
547   base_os=unix/sysv/irix6/$os ;;
548 solaris[2-9]*)
549   base_os=unix/sysv/sysv4 ;;
550 hpux*)
551   base_os=unix/sysv/hpux/$os ;;
552 aix4.3*)
553   base_os=unix/sysv/aix/aix4.3 ;;
554 none)
555   base_os=standalone ;;
556 esac
558 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
559 tail=$os
560 ostry=$os
561 while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
562   ostry="$ostry /$o"
563   tail=$o
564 done
565 o=`echo $tail | sed 's/[0-9]*$//'`
566 if test $o != $tail; then
567   ostry="$ostry /$o"
569 # For linux-gnu, try linux-gnu, then linux.
570 o=`echo $tail | sed 's/-.*$//'`
571 if test $o != $tail; then
572   ostry="$ostry /$o"
575 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
576 base=
577 tail=$base_os
578 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
579   set $b
580   base="$base /$1"
581   tail="$2"
582 done
584 # For sparc/sparc32, try sparc/sparc32 and then sparc.
585 mach=
586 tail=$machine${submachine:+/$submachine}
587 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
588   set $m
589   # Prepend the machine's FPU directory unless --without-fp.
590   if test "$with_fp" = yes; then
591     mach="$mach /$1/fpu"
592   else
593     mach="$mach /$1/nofpu"
594   fi
595   mach="$mach /$1"
596   tail="$2"
597 done
599 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
600 changequote([,])dnl
602 # Find what sysdep directories exist.
603 sysnames_add_ons=
604 sysnames=
605 for b in $base ''; do
606   for m0 in $mach ''; do
607     for v in /$vendor ''; do
608       test "$v" = / && continue
609       for o in /$ostry ''; do
610         test "$o" = / && continue
611         for m in $mach ''; do
612           for d in $add_ons_pfx ''; do
613             for a in $add_ons_sfx ''; do
614               if test -n "$m0$m0sub$b$v$o$m$msub"; then
615                 try_srcdir="${srcdir}/"
616                 case "$d" in
617                 /*) try_srcdir= ;;
618                 esac
619                 try="${d}sysdeps$m0$m0sub$b$v$o$m$msub$a"
620                 test -n "$enable_debug_configure" &&
621                 echo "$0 [DEBUG]: try $try" >&2
622                 if test -d "$try_srcdir$try"; then
623                   sysnames="$sysnames $try"
624                   { test -n "$o" || test -n "$b"; } && os_used=t
625                   { test -n "$m" || test -n "$m0"; } && machine_used=t
626                   case x${m0:-$m} in
627                   x*/$submachine) submachine_used=t ;;
628                   esac
629                   if test -n "$d"; then
630                     case "$sysnames_add_ons" in
631                     *" $d "*) ;;
632                     *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
633                     esac
634                   fi
635                 fi
636               fi
637             done
638           done
639         done
640       done
641     done
642   done
643 done
645 if test -z "$os_used" && test "$os" != none; then
646   AC_MSG_ERROR(Operating system $os is not supported.)
648 if test -z "$machine_used" && test "$machine" != none; then
649   AC_MSG_ERROR(The $machine is not supported.)
651 if test -z "$submachine_used" && test -n "$submachine"; then
652   AC_MSG_ERROR(The $submachine subspecies of $host_cpu is not supported.)
654 AC_SUBST(submachine)
656 # We have now validated the configuration.
659 # If using ELF, look for an `elf' subdirectory of each machine directory.
660 # We prepend these rather than inserting them whereever the machine appears
661 # because things specified by the machine's ELF ABI should override
662 # OS-specific things, and should always be the same for any OS on the
663 # machine (otherwise what's the point of an ABI?).
664 if test "$elf" = yes; then
665   elf_dirs=
666   for d in $add_ons_pfx ''; do
667     for m in $mach; do
668       if test -d $srcdir/${d}sysdeps$m/elf; then
669         elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
670       fi
671     done
672   done
673   sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
677 # Expand the list of system names into a full list of directories
678 # from each element's parent name and Implies file (if present).
679 set $sysnames
680 names=
681 while test $# -gt 0; do
682   name=$1
683   shift
685   case " $names " in *" $name "*)
686     # Already in the list.
687     continue
688   esac
690   # Report each name as we discover it, so there is no long pause in output.
691   echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
693   name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
695   case $name in
696     /*) xsrcdir= ;;
697     *)  xsrcdir=$srcdir/ ;;
698   esac
699   test -n "$enable_debug_configure" &&
700   echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
702   if test -f $xsrcdir$name/Implies; then
703     # Collect more names from the `Implies' file (removing comments).
704     implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
705     implied=
706     for x in $implied_candidate; do
707       found=no
708       if test -d $xsrcdir$name_base/$x; then
709         implied="$implied $name_base/$x";
710         found=yes
711       fi
712       for d in $add_ons_pfx ''; do
713         try="${d}sysdeps/$x"
714         case $d in
715          /*) try_srcdir= ;;
716          *) try_srcdir=$srcdir/ ;;
717         esac
718         test -n "$enable_debug_configure" &&
719          echo "[DEBUG]: $name implied $x try($d) {$try_srcdir}$try" >&2
720         if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
721         then
722           implied="$implied $try"
723           found=yes
724           case "$sysnames_add_ons" in
725           *" $d "*) ;;
726           *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
727           esac
728         fi
729       done
730       if test $found = no; then
731         AC_MSG_WARN($name/Implies specifies nonexistent $x)
732       fi
733     done
734   else
735     implied=
736   fi
738   # Add NAME to the list of names.
739   names="$names $name"
741   # Find the parent of NAME, using the empty string if it has none.
742 changequote(,)dnl
743   parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
744 changequote([,])dnl
746   # Add the names implied by NAME, and NAME's parent (if it has one), to
747   # the list of names to be processed (the argument list).  We prepend the
748   # implied names to the list and append the parent.  We want implied
749   # directories to come before further directories inferred from the
750   # configuration components; this ensures that for sysv4, unix/common
751   # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
752   # after sysv4).
753   sysnames="`echo $implied $* $parent`"
754   test -n "$sysnames" && set $sysnames
755 done
757 # Add the default directories.
758 default_sysnames=sysdeps/generic
759 if test "$elf" = yes; then
760   default_sysnames="sysdeps/generic/elf $default_sysnames"
762 sysnames="$names $default_sysnames"
763 AC_SUBST(sysnames)
764 # The other names were emitted during the scan.
765 AC_MSG_RESULT($default_sysnames)
767 # Collect the list of add-ons that supply partial sysdeps trees.
768 sysdeps_add_ons=
769 for add_on in $add_ons; do
770   case "$add_on" in
771   /*) xsrcdir= ;;
772   *) xsrcdir="$srcdir/" ;;
773   esac
775   test -d "$xsrcdir$add_on/sysdeps" || {
776     case "$configured_add_ons " in
777     *" $add_on "*) ;;
778     *|'')
779       AC_MSG_ERROR(add-on $add_on has no configure fragment or sysdeps tree)
780       ;;
781     esac
782     continue
783   }
785   sysdeps_add_ons="$sysdeps_add_ons $add_on"
786   case "$sysnames_add_ons" in
787   *" $add_on/ "*) ;;
788   *|'')
789     AC_MSG_WARN(add-on $add_on contributed no sysdeps directories)
790     continue ;;
791   esac
793   found=no
794   for d in $sysnames; do
795     case "$d" in
796     $add_on/sysdeps/*) ;;
797     *) continue ;;
798     esac
799     (cd "$xsrcdir$d" && for f in *[[!~]]; do
800        case "$f" in
801        sys|bits)
802          for ff in $f/*.h; do
803            test -d "$ff" || { test -e "$ff" && exit 88; }
804          done
805          ;;
806        *)
807          test -d "$f" || { test -e "$f" && exit 88; }
808          ;;
809        esac
810      done)
811     if test $? -eq 88; then
812       found=yes
813       break
814     fi
815   done
816   if test $found = no; then
817     AC_MSG_WARN(add-on $add_on contributed no useful sysdeps directories)
818   fi
819 done
820 AC_SUBST(sysdeps_add_ons)
823 ### Locate tools.
825 AC_PROG_INSTALL
826 if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
827   # The makefiles need to use a different form to find it in $srcdir.
828   INSTALL='\$(..)./scripts/install-sh -c'
830 AC_PROG_LN_S
832 AC_PROG_CC
833 if test $host != $build; then
834   AC_CHECK_PROGS(BUILD_CC, gcc cc)
836 AC_SUBST(cross_compiling)
837 AC_PROG_CPP
838 # We need the C++ compiler only for testing.
839 AC_PROG_CXX
840 LIBC_PROG_BINUTILS
841 AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
843 # Accept binutils 2.13 or newer.
844 AC_CHECK_PROG_VER(AS, $AS, --version,
845                   [GNU assembler.* \([0-9]*\.[0-9.]*\)],
846                   [2.1[3-9]*], AS=: critic_missing="$critic_missing as")
847 AC_CHECK_PROG_VER(LD, $LD, --version,
848                   [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
849                   [2.1[3-9]*], LD=: critic_missing="$critic_missing ld")
851 # We need the physical current working directory.  We cannot use the
852 # "pwd -P" shell builtin since that's not portable.  Instead we try to
853 # find a pwd binary.  Note that assigning to the PWD environment
854 # variable might have some interesting side effects, so we don't do
855 # that.
856 AC_PATH_PROG(PWD_P, pwd, no)
857 if test "$PWD_P" = no; then
858   AC_MSG_ERROR(*** A pwd binary could not be found.)
861 # These programs are version sensitive.
862 AC_CHECK_TOOL_PREFIX
863 AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
864   [version \([egcygnustpi-]*[0-9.]*\)], [3.4* | 4.[0-9]* ],
865   critic_missing="$critic_missing gcc")
866 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
867   [GNU Make[^0-9]*\([0-9][0-9.]*\)],
868   [3.79* | 3.[89]*], critic_missing="$critic_missing make")
870 AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
871   [GNU gettext.* \([0-9]*\.[0-9.]*\)],
872   [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
873   MSGFMT=: aux_missing="$aux_missing msgfmt")
874 AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
875   [GNU texinfo.* \([0-9][0-9.]*\)],
876   [4.*],
877   MAKEINFO=: aux_missing="$aux_missing makeinfo")
878 AC_CHECK_PROG_VER(SED, sed, --version,
879   [GNU sed version \([0-9]*\.[0-9.]*\)],
880   [3.0[2-9]*|3.[1-9]*|[4-9]*],
881   SED=: aux_missing="$aux_missing sed")
883 AC_CHECK_PROGS(AUTOCONF, autoconf, no)
884 case "x$AUTOCONF" in
885 xno|x|x:) AUTOCONF=no ;;
887   AC_CACHE_CHECK(dnl
888 whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
889   if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
890     libc_cv_autoconf_works=yes
891   else
892     libc_cv_autoconf_works=no
893   fi])
894   test $libc_cv_autoconf_works = yes || AUTOCONF=no
895   ;;
896 esac
897 if test "x$with_cvs" = xyes && test "x$AUTOCONF" = xno; then
898   # If --without-cvs they probably won't change configure.in, so no complaints.
899   aux_missing="$aux_missing autoconf"
902 test -n "$critic_missing" && AC_MSG_ERROR([
903 *** These critical programs are missing or too old:$critic_missing
904 *** Check the INSTALL file for required versions.])
906 test -n "$aux_missing" && AC_MSG_WARN([
907 *** These auxiliary programs are missing or incompatible versions:$aux_missing
908 *** some features will be disabled.
909 *** Check the INSTALL file for required versions.])
911 # if using special system headers, find out the compiler's sekrit
912 # header directory and add that to the list.  NOTE: Only does the right
913 # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
914 if test -n "$sysheaders"; then
915   SYSINCLUDES=-nostdinc
916   for d in include include-fixed; do
917     i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
918     SYSINCLUDES="$SYSINCLUDES -isystem $i"
919   done
920   SYSINCLUDES="$SYSINCLUDES \
921 -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
922   if test -n "$CXX"; then
923     cxxversion=`$CXX -dumpversion 2>&AS_MESSAGE_LOG_FD` &&
924     cxxmachine=`$CXX -dumpmachine 2>&AS_MESSAGE_LOG_FD` &&
925     cxxheaders=`$CXX -print-file-name=../../../../include/c++/`"$cxxversion" &&
926     CXX_SYSINCLUDES="-isystem $cxxheaders \
927 -isystem $cxxheaders/$cxxmachine -isystem $cxxheaders/backward"
928   fi
930 AC_SUBST(SYSINCLUDES)
931 AC_SUBST(CXX_SYSINCLUDES)
933 # check if ranlib is necessary
934 AC_CACHE_CHECK(whether ranlib is necessary, libc_cv_ranlib_necessary, [dnl
935 cat > conftest.c <<EOF
936 int a;
937 char b;
938 void c(void) {}
940 $CC $CFLAGS $CPPFLAGS -c conftest.c
941 $AR cr conftest.a conftest.o
942 cp conftest.a conftest2.a
943 $RANLIB conftest.a
944 if cmp -s conftest.a conftest2.a; then
945   libc_cv_ranlib_necessary=no
946 else
947   libc_cv_ranlib_necessary=yes
949 rm -rf conftest*])
950 if test "$libc_cv_ranlib_necessary" = no; then
951  RANLIB=:
954 # Test if LD_LIBRARY_PATH contains the notation for the current directory
955 # since this would lead to problems installing/building glibc.
956 # LD_LIBRARY_PATH contains the current directory if one of the following
957 # is true:
958 # - one of the terminals (":" and ";") is the first or last sign
959 # - two terminals occur directly after each other
960 # - the path contains an element with a dot in it
961 AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
962 changequote(,)dnl
963 case ${LD_LIBRARY_PATH} in
964   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
965     ld_library_path_setting="contains current directory"
966     ;;
967   *)
968     ld_library_path_setting="ok"
969     ;;
970 esac
971 changequote([,])dnl
972 AC_MSG_RESULT($ld_library_path_setting)
973 if test "$ld_library_path_setting" != "ok"; then
974 AC_MSG_ERROR([
975 *** LD_LIBRARY_PATH shouldn't contain the current directory when
976 *** building glibc. Please change the environment variable
977 *** and run configure again.])
980 AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
981 if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
982   libc_cv_gcc_static_libgcc=
983 else
984   libc_cv_gcc_static_libgcc=-static-libgcc
985 fi])
986 AC_SUBST(libc_cv_gcc_static_libgcc)
988 AC_PATH_PROG(BASH_SHELL, bash, no)
989 if test "$BASH_SHELL" != no &&
990    $BASH_SHELL -c 'test "$BASH_VERSINFO" \
991              && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
992   libc_cv_have_bash2=yes
993 else
994   libc_cv_have_bash2=no
996 AC_SUBST(libc_cv_have_bash2)
998 dnl We need a ksh compatible shell for tzselect.
999 if test "$BASH_SHELL" = no; then
1000   AC_PATH_PROG(KSH, ksh, no)
1001   if test "$KSH" = no; then
1002     libc_cv_have_ksh=no
1003   else
1004     libc_cv_have_ksh=yes
1005   fi
1006 else
1007   KSH="$BASH_SHELL"
1008   AC_SUBST(KSH)
1009   libc_cv_have_ksh=yes
1011 AC_SUBST(libc_cv_have_ksh)
1013 AC_PROG_AWK
1014 AC_PATH_PROG(PERL, perl, no)
1015 if test "$PERL" != no &&
1016    (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
1017   PERL=no
1019 AC_PATH_PROG(INSTALL_INFO, install-info, no,
1020              $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
1021 AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
1023 AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
1024 echo '#include <stddef.h>
1025 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
1026 if eval "$ac_cpp conftest.c 2>/dev/null" \
1027 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
1028   libc_cv_signed_size_t=no
1029 else
1030   libc_cv_signed_size_t=yes
1032 rm -f conftest*])
1033 if test $libc_cv_signed_size_t = yes; then
1034   dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
1035   cat >> confdefs.h <<\EOF
1036 #undef __SIZE_TYPE__
1037 #define __SIZE_TYPE__ unsigned
1041 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
1042 AC_TRY_COMPILE(dnl
1043 [#define __need_size_t
1044 #define __need_wchar_t
1045 #include <stddef.h>
1046 #define __need_NULL
1047 #include <stddef.h>], [size_t size; wchar_t wchar;
1048 #ifdef offsetof
1049 #error stddef.h ignored __need_*
1050 #endif
1051 if (&size == NULL || &wchar == NULL) abort ();],
1052                libc_cv_friendly_stddef=yes,
1053                libc_cv_friendly_stddef=no)])
1054 if test $libc_cv_friendly_stddef = yes; then
1055   config_vars="$config_vars
1056 override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
1059 AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
1060                libc_cv_need_minus_P, [dnl
1061 cat > conftest.S <<EOF
1062 #include "confdefs.h"
1063 /* Nothing whatsoever.  */
1065 if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
1066   libc_cv_need_minus_P=no
1067 else
1068   libc_cv_need_minus_P=yes
1070 rm -f conftest*])
1071 if test $libc_cv_need_minus_P = yes; then
1072   config_vars="$config_vars
1073 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
1076 AC_MSG_CHECKING(whether .text pseudo-op must be used)
1077 AC_CACHE_VAL(libc_cv_dot_text, [dnl
1078 cat > conftest.s <<EOF
1079 .text
1081 libc_cv_dot_text=
1082 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1083   libc_cv_dot_text=.text
1085 rm -f conftest*])
1086 if test -z "$libc_cv_dot_text"; then
1087   AC_MSG_RESULT(no)
1088 else
1089   AC_MSG_RESULT(yes)
1092 AC_CACHE_CHECK(for assembler global-symbol directive,
1093                libc_cv_asm_global_directive, [dnl
1094 libc_cv_asm_global_directive=UNKNOWN
1095 for ac_globl in .globl .global .EXPORT; do
1096   cat > conftest.s <<EOF
1097         ${libc_cv_dot_text}
1098         ${ac_globl} foo
1099 foo:
1101   if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1102     libc_cv_asm_global_directive=${ac_globl}
1103   fi
1104   rm -f conftest*
1105   test $libc_cv_asm_global_directive != UNKNOWN && break
1106 done])
1107 if test $libc_cv_asm_global_directive = UNKNOWN; then
1108   AC_MSG_ERROR(cannot determine asm global directive)
1109 else
1110   AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
1113 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
1114 cat > conftest.s <<EOF
1115 ${libc_cv_dot_text}
1116 foo:
1117 .set glibc_conftest_frobozz,foo
1118 $libc_cv_asm_global_directive glibc_conftest_frobozz
1120 # The alpha-dec-osf1 assembler gives only a warning for `.set'
1121 # (but it doesn't work), so we must do a linking check to be sure.
1122 cat > conftest1.c <<\EOF
1123 extern int glibc_conftest_frobozz;
1124 void _start() { glibc_conftest_frobozz = 1; }
1126 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1127             -nostartfiles -nostdlib \
1128             -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1129   libc_cv_asm_set_directive=yes
1130 else
1131   libc_cv_asm_set_directive=no
1133 rm -f conftest*])
1134 if test $libc_cv_asm_set_directive = yes; then
1135   AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
1138 AC_CACHE_CHECK(for assembler .type directive prefix,
1139                libc_cv_asm_type_prefix, [dnl
1140 libc_cv_asm_type_prefix=no
1141 for ac_try_prefix in '@' '%' '#'; do
1142   cat > conftest.s <<EOF
1143         ${libc_cv_dot_text}
1144         ${libc_cv_asm_global_directive} foo
1145         .type foo, ${ac_try_prefix}object
1146         .size foo, 1
1147 foo:
1148         .byte 1
1150   if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1151     libc_cv_asm_type_prefix=${ac_try_prefix}
1152   fi
1153   rm -f conftest*
1154   test "x$libc_cv_asm_type_prefix" != xno && break
1155 done])
1156 if test "x$libc_cv_asm_type_prefix" != xno; then
1157   AC_DEFINE_UNQUOTED(ASM_TYPE_DIRECTIVE_PREFIX, ${libc_cv_asm_type_prefix})
1160 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
1161 [cat > conftest.s <<EOF
1162 ${libc_cv_dot_text}
1163 _sym:
1164 .symver _sym,sym@VERS
1166 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1167   libc_cv_asm_symver_directive=yes
1168 else
1169   libc_cv_asm_symver_directive=no
1171 rm -f conftest*])
1172 AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
1173 if test $libc_cv_asm_symver_directive = yes; then
1174   cat > conftest.s <<EOF
1175 ${libc_cv_dot_text}
1176 _sym:
1177 .symver _sym,sym@VERS
1179   cat > conftest.map <<EOF
1180 VERS_1 {
1181         global: sym;
1184 VERS_2 {
1185         global: sym;
1186 } VERS_1;
1188   if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1189     if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
1190                                 -o conftest.so conftest.o
1191                                 -nostartfiles -nostdlib
1192                                 -Wl,--version-script,conftest.map
1193                        1>&AS_MESSAGE_LOG_FD]);
1194     then
1195       libc_cv_ld_version_script_option=yes
1196     else
1197       libc_cv_ld_version_script_option=no
1198     fi
1199   else
1200     libc_cv_ld_version_script_option=no
1201   fi
1202 else
1203   libc_cv_ld_version_script_option=no
1205 rm -f conftest*])
1206 if test $shared != no &&
1207    test $libc_cv_asm_symver_directive = yes &&
1208    test $libc_cv_ld_version_script_option = yes &&
1209    test $enable_versioning = yes; then
1210   VERSIONING=yes
1211   AC_DEFINE(DO_VERSIONING)
1212 else
1213   VERSIONING=no
1215 AC_SUBST(VERSIONING)
1217 if test $elf = yes && test $shared != no && test $VERSIONING = no; then
1218   echo "\
1219 *** WARNING: You should not compile GNU libc without versioning. Not using
1220 *** versioning will introduce incompatibilities so that old binaries
1221 *** will not run anymore.
1222 *** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
1224 if test $elf = yes; then
1225   AC_CACHE_CHECK(for .previous assembler directive,
1226                  libc_cv_asm_previous_directive, [dnl
1227   cat > conftest.s <<EOF
1228 .section foo_section
1229 .previous
1231   if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1232     libc_cv_asm_previous_directive=yes
1233   else
1234     libc_cv_asm_previous_directive=no
1235   fi
1236   rm -f conftest*])
1237   if test $libc_cv_asm_previous_directive = yes; then
1238     AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
1239   else
1240     AC_CACHE_CHECK(for .popsection assembler directive,
1241                    libc_cv_asm_popsection_directive, [dnl
1242     cat > conftest.s <<EOF
1243 .pushsection foo_section
1244 .popsection
1246     if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1247       libc_cv_asm_popsection_directive=yes
1248     else
1249       libc_cv_asm_popsection_directive=no
1250     fi
1251     rm -f conftest*])
1252     if test $libc_cv_asm_popsection_directive = yes; then
1253       AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
1254     fi
1255   fi
1256   AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1257                  libc_cv_asm_protected_directive, [dnl
1258   cat > conftest.s <<EOF
1259 .protected foo
1260 foo:
1261 .hidden bar
1262 bar:
1264   if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1265     libc_cv_asm_protected_directive=yes
1266   else
1267     AC_MSG_ERROR(assembler support for symbol visibility is required)
1268   fi
1269   rm -f conftest*])
1271   if test $libc_cv_asm_protected_directive = yes; then
1272     AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
1273                  libc_cv_visibility_attribute,
1274                  [cat > conftest.c <<EOF
1275                   int foo __attribute__ ((visibility ("hidden"))) = 1;
1276                   int bar __attribute__ ((visibility ("protected"))) = 1;
1278                   libc_cv_visibility_attribute=no
1279                   if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1280                     if grep '\.hidden.*foo' conftest.s >/dev/null; then
1281                       if grep '\.protected.*bar' conftest.s >/dev/null; then
1282                         libc_cv_visibility_attribute=yes
1283                       fi
1284                     fi
1285                   fi
1286                   rm -f conftest.[cs]
1287                  ])
1288     if test $libc_cv_visibility_attribute != yes; then
1289       AC_MSG_ERROR(compiler support for visibility attribute is required)
1290     fi
1291   fi
1293   if test $libc_cv_visibility_attribute = yes; then
1294     AC_CACHE_CHECK(for broken __attribute__((visibility())),
1295                  libc_cv_broken_visibility_attribute,
1296                  [cat > conftest.c <<EOF
1297                   int foo (int x);
1298                   int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1299                   int bar (int x) { return x; }
1301                   libc_cv_broken_visibility_attribute=yes
1302                   if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s1>&AS_MESSAGE_LOG_FD); then
1303 changequote(,)dnl
1304                     if grep '\.hidden[  _]foo' conftest.s >/dev/null; then
1305 changequote([,])dnl
1306                       libc_cv_broken_visibility_attribute=no
1307                     fi
1308                   fi
1309                   rm -f conftest.c conftest.s
1310                  ])
1311     if test $libc_cv_broken_visibility_attribute = yes; then
1312       AC_MSG_ERROR(working compiler support for visibility attribute is required)
1313     fi
1314   fi
1316   AC_CACHE_CHECK(for broken __attribute__((alias())),
1317                  libc_cv_broken_alias_attribute,
1318                  [cat > conftest.c <<EOF
1319                   extern int foo (int x) __asm ("xyzzy");
1320                   int bar (int x) { return x; }
1321                   extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1322                   extern int dfoo;
1323                   extern __typeof (dfoo) dfoo __asm ("abccb");
1324                   int dfoo = 1;
1326                   libc_cv_broken_alias_attribute=yes
1327                   if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1328                     if grep 'xyzzy' conftest.s >/dev/null &&
1329                        grep 'abccb' conftest.s >/dev/null; then
1330                       libc_cv_broken_alias_attribute=no
1331                     fi
1332                   fi
1333                   rm -f conftest.c conftest.s
1334                  ])
1335   if test $libc_cv_broken_alias_attribute = yes; then
1336     AC_MSG_ERROR(working alias attribute support required)
1337   fi
1339   if test $libc_cv_visibility_attribute = yes; then
1340     AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1341                  libc_cv_have_sdata_section,
1342                  [echo "int i;" > conftest.c
1343                   libc_cv_have_sdata_section=no
1344                   if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1345                      | grep '\.sdata' >/dev/null; then
1346                     libc_cv_have_sdata_section=yes
1347                   fi
1348                   rm -f conftest.c conftest.so
1349                  ])
1350     if test $libc_cv_have_sdata_section = yes; then
1351       AC_DEFINE(HAVE_SDATA_SECTION)
1352     fi
1353   fi
1355   AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1356                  libc_cv_initfini_array, [dnl
1357   cat > conftest.c <<EOF
1358 int _start (void) { return 0; }
1359 int __start (void) { return 0; }
1360 int foo (void) { return 1; }
1361 int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
1363   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c
1364                      -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
1365   then
1366     if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
1367       libc_cv_initfini_array=yes
1368     else
1369       libc_cv_initfini_array=no
1370     fi
1371   else
1372     libc_cv_initfini_array=no
1373   fi
1374   rm -f conftest*])
1375   if test $libc_cv_initfini_array != yes; then
1376     AC_MSG_ERROR([Need linker with .init_array/.fini_array support.])
1377   fi
1379   AC_CACHE_CHECK(for libunwind-support in compiler,
1380                  libc_cv_cc_with_libunwind, [
1381     cat > conftest.c <<EOF
1382 int main (void) { return 0; }
1384     if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
1385        conftest.c -v 2>&1 >/dev/null | grep -q " -lunwind "; then
1386       libc_cv_cc_with_libunwind=yes
1387     else
1388       libc_cv_cc_with_libunwind=no
1389     fi
1390     rm -f conftest*])
1391   AC_SUBST(libc_cv_cc_with_libunwind)
1392   if test $libc_cv_cc_with_libunwind = yes; then
1393     AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
1394   fi
1396   AC_CACHE_CHECK(for -z nodelete option,
1397                  libc_cv_z_nodelete, [dnl
1398   cat > conftest.c <<EOF
1399 int _start (void) { return 42; }
1401   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1402                      -fPIC -shared -o conftest.so conftest.c
1403                      -nostartfiles -nostdlib
1404                      -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
1405   then
1406     libc_cv_z_nodelete=yes
1407   else
1408     AC_MSG_ERROR(linker with -z nodelete support required)
1409   fi
1410   rm -f conftest*])
1412   AC_CACHE_CHECK(for -z nodlopen option,
1413                  libc_cv_z_nodlopen, [dnl
1414   cat > conftest.c <<EOF
1415 int _start (void) { return 42; }
1417   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1418                         -fPIC -shared -o conftest.so conftest.c
1419                         -nostartfiles -nostdlib
1420                         -Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
1421   then
1422     libc_cv_z_nodlopen=yes
1423   else
1424     AC_MSG_ERROR(linker with -z nodlopen support required)
1425   fi
1426   rm -f conftest*])
1428   AC_CACHE_CHECK(for -z initfirst option,
1429                  libc_cv_z_initfirst, [dnl
1430   cat > conftest.c <<EOF
1431 int _start (void) { return 42; }
1433   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1434                         -fPIC -shared -o conftest.so conftest.c
1435                         -nostartfiles -nostdlib
1436                         -Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
1437   then
1438     libc_cv_z_initfirst=yes
1439   else
1440     AC_MSG_ERROR(linker with -z initfirst support required)
1441   fi
1442   rm -f conftest*])
1444   case "$base_machine" in
1445 changequote(,)dnl
1446     i[34567]86 | x86_64 | powerpc* | s390* | sparc* | alpha*)
1447 changequote([,])dnl
1448       AC_CACHE_CHECK(for -z relro option,
1449                      libc_cv_z_relro, [dnl
1450   libc_cv_z_relro=no
1451   if AC_TRY_COMMAND([${CC-cc} -v --help 2>&1|grep "z relro" 1>&AS_MESSAGE_LOG_FD])
1452   then
1453     if AC_TRY_COMMAND([${CC-cc} -Wl,--verbose 2>&1|grep DATA_SEGMENT_RELRO_END 1>&AS_MESSAGE_LOG_FD])
1454     then
1455       libc_cv_z_relro=yes
1456     fi
1457   fi])
1458       if test "$libc_cv_z_relro" = no; then
1459         AC_MSG_ERROR(linker with -z relro support required)
1460       fi
1461       ;;
1462     *) ;;
1463    esac
1465   AC_CACHE_CHECK(for -Bgroup option,
1466                  libc_cv_Bgroup, [dnl
1467   cat > conftest.c <<EOF
1468 int _start (void) { return 42; }
1470   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1471                               -fPIC -shared -o conftest.so conftest.c
1472                               -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1473   then
1474     libc_cv_Bgroup=yes
1475   else
1476     libc_cv_Bgroup=no
1477   fi
1478   rm -f conftest*])
1479   AC_SUBST(libc_cv_Bgroup)
1481   AC_CACHE_CHECK(for libgcc_s suffix,
1482                  libc_cv_libgcc_s_suffix, [dnl
1483   cat > conftest.c <<EOF
1484 int main (void) { return 0; }
1486 changequote(,)dnl
1487   libc_cv_libgcc_s_suffix=`${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1488                            -fPIC -shared -shared-libgcc -o conftest.so \
1489                            conftest.c -v 2>&1 >/dev/null \
1490                            | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'`
1491 changequote([,])dnl
1492   rm -f conftest*])
1493   AC_SUBST(libc_cv_libgcc_s_suffix)
1495   AC_CACHE_CHECK(for --as-needed option,
1496                  libc_cv_as_needed, [dnl
1497   cat > conftest.c <<EOF
1498 int main (void) { return 0; }
1500   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1501                               -fPIC -shared -o conftest.so conftest.c
1502                               -lgcc_s$libc_cv_libgcc_s_suffix -Wl,--as-needed
1503                               -nostdlib 1>&AS_MESSAGE_LOG_FD])
1504   then
1505     libc_cv_as_needed=yes
1506   else
1507     libc_cv_as_needed=no
1508   fi
1509   rm -f conftest*])
1510   AC_SUBST(libc_cv_as_needed)
1512   ASFLAGS_config=
1513   AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1514                  libc_cv_as_noexecstack, [dnl
1515   cat > conftest.c <<EOF
1516 void foo (void) { }
1518   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1519                      -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
1520      && grep -q .note.GNU-stack conftest.s \
1521      && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
1522                        -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1523   then
1524     libc_cv_as_noexecstack=yes
1525   else
1526     libc_cv_as_noexecstack=no
1527   fi
1528   rm -f conftest*])
1529   if test $libc_cv_as_noexecstack = yes; then
1530     ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1531   fi
1532   AC_SUBST(ASFLAGS_config)
1534   AC_CACHE_CHECK(for -z combreloc,
1535                  libc_cv_z_combreloc, [dnl
1536   cat > conftest.c <<EOF
1537 extern int bar (int);
1538 extern int mumble;
1539 int foo (void) { return bar (mumble); }
1541   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1542                         -fPIC -shared -o conftest.so conftest.c
1543                         -nostdlib -nostartfiles
1544                         -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
1545   then
1546 dnl The following test is a bit weak.  We must use a tool which can test
1547 dnl cross-platform since the gcc used can be a cross compiler.  Without
1548 dnl introducing new options this is not easily doable.  Instead use a tool
1549 dnl which always is cross-platform: readelf.  To detect whether -z combreloc
1550 dnl look for a section named .rel.dyn.
1551     if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1552       libc_cv_z_combreloc=yes
1553     else
1554       libc_cv_z_combreloc=no
1555     fi
1556   else
1557     libc_cv_z_combreloc=no
1558   fi
1559   rm -f conftest*])
1560   if test "$libc_cv_z_combreloc" = yes; then
1561     AC_DEFINE(HAVE_Z_COMBRELOC)
1562   fi
1563   AC_SUBST(libc_cv_z_combreloc)
1565   AC_CACHE_CHECK(for -z execstack,
1566                  libc_cv_z_execstack, [dnl
1567   cat > conftest.c <<EOF
1568 int _start (void) { return 42; }
1570   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1571                               -fPIC -shared -o conftest.so conftest.c
1572                               -Wl,-z,execstack -nostdlib
1573                               1>&AS_MESSAGE_LOG_FD])
1574   then
1575     libc_cv_z_execstack=yes
1576   else
1577     libc_cv_z_execstack=no
1578   fi
1579   rm -f conftest*])
1580   AC_SUBST(libc_cv_z_execstack)
1582   AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
1583   cat > conftest.c <<EOF
1584 int foo;
1585 main () { return 0;}
1587   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fpie
1588                               -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1589   then
1590     libc_cv_fpie=yes
1591   else
1592     libc_cv_fpie=no
1593   fi
1594   rm -f conftest*])
1596   AC_SUBST(libc_cv_fpie)
1598   AC_CACHE_CHECK(for --hash-style option,
1599                  libc_cv_hashstyle, [dnl
1600   cat > conftest.c <<EOF
1601 int _start (void) { return 42; }
1603   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1604                               -fPIC -shared -o conftest.so conftest.c
1605                               -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
1606   then
1607     libc_cv_hashstyle=yes
1608   else
1609     libc_cv_hashstyle=no
1610   fi
1611   rm -f conftest*])
1612   AC_SUBST(libc_cv_hashstyle)
1615 AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl
1616 cat > conftest.c <<EOF
1617 int foo;
1619 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-anchors
1620                             conftest.c 1>&AS_MESSAGE_LOG_FD])
1621 then
1622   libc_cv_fno_toplevel_reorder=yes
1623 else
1624   libc_cv_fno_toplevel_reorder=no
1626 rm -f conftest*])
1627 if test $libc_cv_fno_toplevel_reorder = yes; then
1628   fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
1629 else
1630   fno_unit_at_a_time=-fno-unit-at-a-time
1632 AC_SUBST(fno_unit_at_a_time)
1634 AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
1635 cat > conftest.c <<EOF
1636 int foo;
1637 main () { return 0;}
1639 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Werror -fstack-protector
1640                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1641 then
1642   libc_cv_ssp=yes
1643 else
1644   libc_cv_ssp=no
1646 rm -f conftest*])
1647 AC_SUBST(libc_cv_ssp)
1649 AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl
1650 cat > conftest.c <<EOF
1651 int foo;
1652 #ifdef __GNUC_GNU_INLINE__
1653 main () { return 0;}
1654 #else
1655 #error
1656 #endif
1658 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -std=gnu99 -fgnu89-inline
1659                             -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD])
1660 then
1661   libc_cv_gnu89_inline=yes
1662 else
1663   libc_cv_gnu89_inline=no
1665 rm -f conftest*])
1666 if test $libc_cv_gnu89_inline = yes; then
1667   libc_cv_gnu89_inline=-fgnu89-inline
1668 else
1669   libc_cv_gnu89_inline=
1671 AC_SUBST(libc_cv_gnu89_inline)
1673 if test $elf != yes; then
1674   AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
1675                  [AC_TRY_COMPILE(, [asm (".section .init");
1676                                     asm (".section .fini");
1677                                     asm ("${libc_cv_dot_text}");],
1678                                  libc_cv_have_initfini=yes,
1679                                  libc_cv_have_initfini=no)])
1680   AC_SUBST(libc_cv_have_initfini)dnl
1681   if test $libc_cv_have_initfini = yes; then
1682     AC_DEFINE(HAVE_INITFINI)
1683   fi
1686 if test $elf = yes; then
1687   AC_CACHE_CHECK(whether cc puts quotes around section names,
1688                  libc_cv_have_section_quotes,
1689                  [cat > conftest.c <<EOF
1690                   static const int foo
1691                   __attribute__ ((section ("bar"))) = 1;
1693                   if ${CC-cc} -S conftest.c -o conftest.s; then
1694                     if grep '\.section.*"bar"' conftest.s >/dev/null; then
1695                       libc_cv_have_section_quotes=yes
1696                     else
1697                       libc_cv_have_section_quotes=no
1698                     fi
1699                   else
1700                     libc_cv_have_section_quotes=unknown
1701                   fi
1702                   rm -f conftest.[cs]
1703                  ])
1704   if test $libc_cv_have_section_quotes = yes; then
1705     AC_DEFINE(HAVE_SECTION_QUOTES)
1706   fi
1709 dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
1710 AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
1711 [cat > conftest.$ac_ext <<EOF
1712 dnl This sometimes fails to find confdefs.h, for some reason.
1713 dnl [#]line $LINENO "[$]0"
1714 [#]line $LINENO "configure"
1715 #include "confdefs.h"
1716 void underscore_test(void) {
1717 return; }
1719 if AC_TRY_EVAL(ac_compile); then
1720   if grep _underscore_test conftest* >/dev/null; then
1721     ifelse([$1], , :, [rm -f conftest*
1722     $1])
1723   else
1724     ifelse([$2], , , [rm -f conftest*
1725     $2])
1726   fi
1727 else
1728   echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
1729   cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
1730   ifelse([$2], , , [rm -f conftest*
1731   $2])
1733 rm -f conftest*])
1735 if test $elf = yes; then
1736   libc_cv_asm_underscores=no
1737 else
1738   if test $ac_cv_prog_cc_works = yes; then
1739     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1740                    [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
1741                                 libc_cv_asm_underscores=yes,
1742                                 libc_cv_asm_underscores=no)])
1743   else
1744     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1745                    [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
1746                                             libc_cv_asm_underscores=no)])
1747   fi
1749 if test $libc_cv_asm_underscores = no; then
1750   AC_DEFINE(NO_UNDERSCORES)
1753 if test $elf = yes; then
1754   libc_cv_weak_symbols=yes
1757 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1758                [dnl
1759 cat > conftest.s <<EOF
1760 ${libc_cv_dot_text}
1761 ${libc_cv_asm_global_directive} foo
1762 foo:
1763 .weak foo
1764 .weak bar; bar = foo
1766 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1767   libc_cv_asm_weak_directive=yes
1768 else
1769   libc_cv_asm_weak_directive=no
1771 rm -f conftest*])
1773 if test $libc_cv_asm_weak_directive = no; then
1774   AC_CACHE_CHECK(for assembler .weakext directive,
1775                  libc_cv_asm_weakext_directive,
1776                  [dnl
1777 cat > conftest.s <<EOF
1778 ${libc_cv_dot_text}
1779 ${libc_cv_asm_global_directive} foo
1780 foo:
1781 .weakext bar foo
1782 .weakext baz
1783 ${libc_cv_asm_global_directive} baz
1784 baz:
1786   if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1787     libc_cv_asm_weakext_directive=yes
1788   else
1789     libc_cv_asm_weakext_directive=no
1790   fi
1791   rm -f conftest*])
1793 fi # no .weak
1795 if test $libc_cv_asm_weak_directive = yes; then
1796   AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1797 elif test $libc_cv_asm_weakext_directive = yes; then
1798   AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1801 AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
1802 case $machine in
1803   sparc/sparc64*) cfi_offset=2047;;
1804   *) cfi_offset=0;;
1805 esac
1806 cat > conftest.s <<EOF
1807         .text
1808         .type   func,%function
1809 func:
1810         .cfi_startproc
1811         .cfi_remember_state
1812         .cfi_rel_offset 1, $cfi_offset
1813         .cfi_endproc
1815 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1816   libc_cv_asm_cfi_directives=yes
1817 else
1818   libc_cv_asm_cfi_directives=no
1820 rm -f conftest*])
1821 if test $libc_cv_asm_cfi_directives = yes; then
1822   AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
1825 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1826 cat > conftest.c <<\EOF
1827 _start () {}
1828 int __eh_pc;
1829 __throw () {}
1831 dnl No \ in command here because it ends up inside ''.
1832 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1833                             -nostdlib -nostartfiles -Wl,--no-whole-archive
1834                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1835   libc_cv_ld_no_whole_archive=yes
1836 else
1837   libc_cv_ld_no_whole_archive=no
1839 rm -f conftest*])
1840 if test $libc_cv_ld_no_whole_archive = yes; then
1841   no_whole_archive=-Wl,--no-whole-archive
1843 AC_SUBST(no_whole_archive)dnl
1845 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1846 cat > conftest.c <<\EOF
1847 _start () {}
1848 int __eh_pc;
1849 __throw () {}
1851 dnl No \ in command here because it ends up inside ''.
1852 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1853                             -nostdlib -nostartfiles -fexceptions
1854                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1855   libc_cv_gcc_exceptions=yes
1856 else
1857   libc_cv_gcc_exceptions=no
1859 rm -f conftest*])
1860 if test $libc_cv_gcc_exceptions = yes; then
1861   exceptions=-fexceptions
1863 AC_SUBST(exceptions)dnl
1865 if test "$host_cpu" = powerpc ; then
1866 # Check for a bug present in at least versions 2.8.x of GCC
1867 # and versions 1.0.x of EGCS.
1868 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1869 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1870                libc_cv_c_asmcr0_bug='no',
1871                libc_cv_c_asmcr0_bug='yes')])
1872 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1873   AC_DEFINE(BROKEN_PPC_ASM_CR0)
1877 dnl Check whether compiler understands __builtin_expect.
1878 AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
1879 [cat > conftest.c <<EOF
1880 #line $LINENO "configure"
1881 int foo (int a)
1883   a = __builtin_expect (a, 10);
1884   return a == 10 ? 0 : 1;
1887 dnl No \ in command here because it ends up inside ''.
1888 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
1889                             -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1890   libc_cv_gcc_builtin_expect=yes
1891 else
1892   libc_cv_gcc_builtin_expect=no
1894 rm -f conftest*])
1895 if test "$libc_cv_gcc_builtin_expect" = yes; then
1896   AC_DEFINE(HAVE_BUILTIN_EXPECT)
1899 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1900 cat > conftest.c <<\EOF
1901 void zero (void *x)
1903   __builtin_memset (x, 0, 1000);
1907 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1908 then
1909   libc_cv_gcc_builtin_memset=no
1910 else
1911   libc_cv_gcc_builtin_memset=yes
1913 rm -f conftest* ])
1914 if test "$libc_cv_gcc_builtin_memset" = yes ; then
1915   AC_DEFINE(HAVE_BUILTIN_MEMSET)
1918 AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1919 cat > conftest.c <<\EOF
1920 extern char *strstr (const char *, const char *) __asm ("my_strstr");
1921 char *foo (const char *a, const char *b)
1923   return __builtin_strstr (a, b);
1927 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
1928 then
1929   libc_cv_gcc_builtin_redirection=yes
1930 else
1931   libc_cv_gcc_builtin_redirection=no
1933 rm -f conftest* ])
1934 if test "$libc_cv_gcc_builtin_redirection" = yes ; then
1935   AC_DEFINE(HAVE_BUILTIN_REDIRECTION)
1938 dnl Check whether the compiler supports the __thread keyword.
1939 if test "x$use__thread" != xno; then
1940   AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1941   [cat > conftest.c <<\EOF
1942 __thread int a = 42;
1944   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
1945     libc_cv_gcc___thread=yes
1946   else
1947     libc_cv_gcc___thread=no
1948   fi
1949   rm -f conftest*])
1950   if test "$libc_cv_gcc___thread" = yes; then
1951     AC_DEFINE(HAVE___THREAD)
1952   fi
1953 else
1954   libc_cv_gcc___thread=no
1957 if test "$libc_cv_gcc___thread" = yes; then
1958   dnl Check whether the compiler supports the tls_model attribute.
1959   AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1960   cat > conftest.c <<\EOF
1961 extern __thread int a __attribute__((tls_model ("initial-exec")));
1963   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
1964     libc_cv_gcc_tls_model_attr=yes
1965   else
1966     libc_cv_gcc_tls_model_attr=no
1967   fi
1968   rm -f conftest*])
1969   if test "$libc_cv_gcc_tls_model_attr" = yes; then
1970     AC_DEFINE(HAVE_TLS_MODEL_ATTRIBUTE)
1971   fi
1974 if test -n "$submachine"; then
1975   AC_CACHE_CHECK([for compiler option for CPU variant],
1976                  libc_cv_cc_submachine, [dnl
1977   libc_cv_cc_submachine=no
1978   for opt in "-march=$submachine" "-mcpu=$submachine"; do
1979     if AC_TRY_COMMAND([${CC-cc} $opt -xc /dev/null -S -o /dev/null]); then
1980       libc_cv_cc_submachine="$opt"
1981       break
1982     fi
1983   done])
1984   if test "x$libc_cv_cc_submachine" = xno; then
1985     AC_MSG_ERROR([${CC-cc} does not support $submachine])
1986   fi
1988 AC_SUBST(libc_cv_cc_submachine)
1990 dnl Check whether we have the gd library available.
1991 AC_MSG_CHECKING(for libgd)
1992 if test "$with_gd" != "no"; then
1993   old_CFLAGS="$CFLAGS"
1994   CFLAGS="$CFLAGS $libgd_include"
1995   old_LDFLAGS="$LDFLAGS"
1996   LDFLAGS="$LDFLAGS $libgd_ldflags"
1997   old_LIBS="$LIBS"
1998   LIBS="$LIBS -lgd -lpng -lz -lm"
1999   AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
2000   CFLAGS="$old_CFLAGS"
2001   LDFLAGS="$old_LDFLAGS"
2002   LIBS="$old_LIBS"
2003 else
2004   LIBGD=no
2006 AC_MSG_RESULT($LIBGD)
2007 AC_SUBST(LIBGD)
2009 # SELinux detection
2010 if test x$with_selinux = xno ; then
2011   have_selinux=no;
2012 else
2013   # See if we have the SELinux library
2014   AC_CHECK_LIB(selinux, is_selinux_enabled,
2015                have_selinux=yes, have_selinux=no)
2016   # See if we have the SELinux header with the NSCD permissions in it.
2017   if test x$have_selinux = xyes ; then
2018     AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h])
2019     AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
2020                     [#ifdef NSCD__SHMEMHOST
2021                      return 0;
2022                      #else
2023                      #error NSCD__SHMEMHOST not defined
2024                      #endif],
2025                     have_selinux=yes, have_selinux=no)
2026     AC_MSG_RESULT($have_selinux)
2027   fi
2029   if test x$with_selinux = xyes ; then
2030     if test x$have_selinux = xno ; then
2031       AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found])
2032     fi
2033   fi
2035 # Check if we're building with SELinux support.
2036 if test "x$have_selinux" = xyes; then
2037   AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
2039   # See if we have the libaudit library
2040   AC_CHECK_LIB(audit, audit_log_user_avc_message,
2041                have_libaudit=yes, have_libaudit=no)
2042   if test "x$have_libaudit" = xyes; then
2043     AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
2044   fi
2045   AC_SUBST(have_libaudit)
2047   # See if we have the libcap library
2048   AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
2049   if test "x$have_libcap" = xyes; then
2050     AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
2051   fi
2052   AC_SUBST(have_libcap)
2054 AC_SUBST(have_selinux)
2056 dnl check for the size of 'long double'.
2057 AC_CHECK_SIZEOF(long double, 0)
2058 sizeof_long_double=$ac_cv_sizeof_long_double
2059 AC_SUBST(sizeof_long_double)
2061 ### End of automated tests.
2062 ### Now run sysdeps configure fragments.
2064 # They also can set these variables.
2065 use_ldconfig=no
2066 ldd_rewrite_script=no
2067 libc_cv_sysconfdir=$sysconfdir
2068 libc_cv_gcc_unwind_find_fde=no
2069 libc_cv_idn=no
2071 # Iterate over all the sysdep directories we will use, running their
2072 # configure fragments, and looking for a uname implementation.
2073 uname=
2074 for dir in $sysnames; do
2075   case $dir in
2076     /*) dest=$dir ;;
2077     *)  dest=$srcdir/$dir ;;
2078   esac
2079   if test -r $dest/configure; then
2080     AC_MSG_RESULT(running configure fragment for $dir)
2081     . $dest/configure
2082   fi
2084   if test -z "$uname"; then
2085     if test -r $dest/uname.c ||
2086        test -r $dest/uname.S ||
2087        { test -r $dest/syscalls.list &&
2088          grep '^uname[  ]' $dest/syscalls.list >/dev/null; }; then
2089       uname=$dir
2090     fi
2091   fi
2092 ]dnl
2093 done
2095 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
2096   AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
2098 AC_SUBST(libc_cv_gcc_unwind_find_fde)
2100 # If we will use the generic uname implementation, we must figure out what
2101 # it will say by examining the system, and write the results in config-name.h.
2102 if test "$uname" = "sysdeps/generic"; then
2104 changequote(,)dnl
2105   uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
2106 changequote([,])dnl
2107   if test $uname_sysname != $config_os; then
2108     config_release=`echo $config_os | sed s/$uname_sysname//`
2109   fi
2111 AC_DEFUN(LIBC_KERNEL_ID, [dnl
2112     if test -r /vmunix; then
2113       kernel_id=`strings /vmunix | grep UNIX`
2114     elif test -r /dynix; then
2115       kernel_id=`strings /dynix | grep DYNIX`
2116     else
2117       kernel_id=
2118     fi
2119 ])dnl
2121   AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
2122 LIBC_KERNEL_ID
2123 changequote(,)dnl
2124   kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
2125 changequote([,])dnl
2126   if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
2127          != x$config_release; then
2128     # The configuration release is a substring of the kernel release.
2129     libc_cv_uname_release=$kernel_release
2130   elif test x$config_release != x; then
2131     libc_cv_uname_release=$config_release
2132   elif test x$kernel_release != x; then
2133     libc_cv_uname_release=$kernel_release
2134   else
2135     libc_cv_uname_release=unknown
2136   fi])
2137   uname_release="$libc_cv_uname_release"
2139   AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
2140 LIBC_KERNEL_ID
2141 changequote(,)dnl
2142   kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
2143 changequote([,])dnl
2144   if test -n "$kernel_version"; then
2145     libc_cv_uname_version="$kernel_version"
2146   else
2147     libc_cv_uname_version=unknown
2148   fi])
2149   uname_version="$libc_cv_uname_version"
2151 AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
2152   config_uname=config-name.h:config-name.in
2153 else
2154   # For non-generic uname, we don't need to create config-name.h at all.
2155   config_uname=
2158 dnl This is tested by existing code and it's simpler to avoid changing it.
2159 AC_DEFINE(USE_IN_LIBIO)
2161 # Test for old glibc 2.0.x headers so that they can be removed properly
2162 # Search only in includedir.
2163 AC_MSG_CHECKING(for old glibc 2.0.x headers)
2164 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
2165 then
2166   old_glibc_headers=yes
2167 else
2168   old_glibc_headers=no
2170 AC_MSG_RESULT($old_glibc_headers)
2171 if test ${old_glibc_headers} = yes; then
2172   AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
2173   AC_MSG_WARN(*** be removed.)
2175 AC_SUBST(old_glibc_headers)
2177 AC_SUBST(libc_cv_slibdir)
2178 AC_SUBST(libc_cv_localedir)
2179 AC_SUBST(libc_cv_sysconfdir)
2180 AC_SUBST(libc_cv_rootsbindir)
2181 AC_SUBST(libc_cv_forced_unwind)
2183 dnl sysdeps/CPU/configure.in checks set this via arch-specific asm tests
2184 AC_SUBST(libc_cv_cpp_asm_debuginfo)
2186 AC_SUBST(use_ldconfig)
2187 AC_SUBST(ldd_rewrite_script)
2189 AC_SUBST(elf) AC_SUBST(xcoff)
2190 if test $elf = yes; then
2191   AC_DEFINE(HAVE_ELF)
2193 if test $xcoff = yes; then
2194   AC_DEFINE(HAVE_XCOFF)
2197 AC_SUBST(static)
2198 AC_SUBST(shared)
2199 if test $shared = default; then
2200   shared=$elf
2203 AC_CACHE_CHECK([whether -fPIC is default], pic_default,
2204 [pic_default=yes
2205 cat > conftest.c <<EOF
2206 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
2207 # error PIC is default.
2208 #endif
2210 if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
2211   pic_default=no
2213 rm -f conftest.*])
2214 AC_SUBST(pic_default)
2216 AC_SUBST(profile)
2217 AC_SUBST(omitfp)
2218 AC_SUBST(bounded)
2219 AC_SUBST(static_nss)
2220 AC_SUBST(nopic_initfini)
2222 AC_SUBST(DEFINES)
2224 dnl See sysdeps/mach/configure.in for this variable.
2225 AC_SUBST(mach_interface_list)
2227 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
2228   config_makefile=
2229 else
2230   config_makefile=Makefile
2233 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
2234 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
2235 AC_SUBST(VERSION)
2236 AC_SUBST(RELEASE)
2238 AC_CONFIG_FILES([config.make ${config_makefile} ${config_uname}])
2239 AC_CONFIG_COMMANDS([default],[[
2240 case $CONFIG_FILES in *config.make*)
2241 echo "$config_vars" >> config.make;;
2242 esac
2243 test -d bits || mkdir bits]],[[config_vars='$config_vars']])
2244 AC_OUTPUT