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