* malloc/malloc.c (munmap_chunk): Add sanity checks.
[glibc.git] / configure.in
blobf283c3f7fe359d00c515ac5fccf61aa47a3de12d
1 dnl Process this file with autoconf to produce a configure script.
2 AC_REVISION([$CVSid$])
3 AC_PREREQ(2.53)dnl              dnl Minimum Autoconf version required.
4 AC_INIT([GNU C Library], [(see version.h)], [glibc])
5 AC_CONFIG_SRCDIR([include/features.h])
6 AC_CONFIG_HEADERS([config.h])
7 AC_CONFIG_AUX_DIR([scripts])
9 if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then
10   AC_MSG_ERROR([you must configure in a separate build directory])
13 # This will get text that should go into config.make.
14 config_vars=
16 # Check for a --with-gmp argument and set gmp-srcdir in config.make.
17 AC_ARG_WITH([gmp],
18             AC_HELP_STRING([--with-gmp=DIRECTORY],
19                            [find GMP source code in DIRECTORY (not needed)]),
20             [
21 case "$with_gmp" in
22 yes) AC_MSG_ERROR([--with-gmp requires an argument; use --with-gmp=DIRECTORY]) ;;
23 ''|no) ;;
24 *) config_vars="$config_vars
25 gmp-srcdir = $withval" ;;
26 esac
28 # Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
29 AC_ARG_WITH([gd],
30             AC_HELP_STRING([--with-gd=DIR],
31                            [find libgd include dir and library with prefix DIR]),
32             [dnl
33 case "$with_gd" in
34 yes|''|no) ;;
35 *) libgd_include="-I$withval/include"
36    libgd_ldflags="-L$withval/lib" ;;
37 esac
39 AC_ARG_WITH([gd-include],
40             AC_HELP_STRING([--with-gd-include=DIR],
41                            [find libgd include files in DIR]),
42             [dnl
43 case "$with_gd_include" in
44 ''|no) ;;
45 *) libgd_include="-I$withval" ;;
46 esac
48 AC_ARG_WITH([gd-lib],
49             AC_HELP_STRING([--with-gd-lib=DIR],
50                            [find libgd library files in DIR]),
51             [dnl
52 case "$with_gd_lib" in
53 ''|no) ;;
54 *) libgd_ldflags="-L$withval" ;;
55 esac
58 if test -n "$libgd_include"; then
59   config_vars="$config_vars
60 CFLAGS-memusagestat.c = $libgd_include"
62 if test -n "$libgd_ldflags"; then
63   config_vars="$config_vars
64 libgd-LDFLAGS = $libgd_ldflags"
67 dnl Arguments to specify presence of other packages/features.
68 AC_ARG_WITH([fp],
69             AC_HELP_STRING([--with-fp],
70                            [if using floating-point hardware @<:@default=yes@:>@]),
71             [with_fp=$withval],
72             [with_fp=yes])
73 AC_SUBST(with_fp)
74 AC_ARG_WITH([binutils],
75             AC_HELP_STRING([--with-binutils=PATH],
76                            [specify location of binutils (as and ld)]),
77             [path_binutils=$withval],
78             [path_binutils=''])
79 AC_ARG_WITH([elf],
80             AC_HELP_STRING([--with-elf],
81                            [if using the ELF object format]),
82             [elf=$withval],
83             [elf=no])
84 AC_ARG_WITH([selinux],
85             AC_HELP_STRING([--with-selinux],
86                            [if building with SELinux support]),
87             [with_selinux=$withval],
88             [with_selinux=auto])
89 AC_ARG_WITH([xcoff],
90             AC_HELP_STRING([--with-xcoff],
91                            [if using the XCOFF object format]),
92             [xcoff=$withval],
93             [xcoff=no])
94 AC_ARG_WITH([cvs],
95             AC_HELP_STRING([--without-cvs],
96                            [if CVS should not be used]),
97             [with_cvs=$withval],
98             [with_cvs=yes])
99 if test "$with_cvs" = yes; then
100   if test -d $srcdir/CVS && grep :pserver: $srcdir/CVS/Root > /dev/null
101   then
102     with_cvs=no
103   fi
105 AC_SUBST(with_cvs)
107 AC_ARG_WITH([headers],
108             AC_HELP_STRING([--with-headers=PATH],
109                            [location of system headers to use
110                             (for example /usr/src/linux/include)
111                             @<:@default=compiler default@:>@]),
112             [sysheaders=$withval],
113             [sysheaders=''])
115 AC_ARG_ENABLE([sanity-checks],
116               AC_HELP_STRING([--disable-sanity-checks],
117                              [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
118               [enable_sanity=$enableval],
119               [enable_sanity=yes])
121 AC_SUBST(enable_check_abi)
122 AC_ARG_ENABLE([check-abi],
123               AC_HELP_STRING([--enable-check-abi],
124                              [do "make check-abi" in "make check" (no/warn/yes)
125                               @<:@default=no@:>@]),
126               [enable_check_abi=$enableval],
127               [enable_check_abi=no])
129 dnl Arguments to enable or disable building the static, shared, profiled,
130 dnl and -fomit-frame-pointer libraries.
131 dnl I've disabled this for now since we cannot build glibc without static
132 dnl libraries built in the moment.
133 dnl AC_ARG_ENABLE([static],
134 dnl               AC_HELP_STRING([--enable-static],
135 dnl                              [build static library @<:@default=yes@:>@]),
136 dnl               [static=$enableval],
137 dnl               [static=yes])
138 static=yes
139 AC_ARG_ENABLE([shared],
140               AC_HELP_STRING([--enable-shared],
141                              [build shared library @<:@default=yes if GNU ld & ELF@:>@]),
142               [shared=$enableval],
143               [shared=default])
144 AC_ARG_ENABLE([profile],
145               AC_HELP_STRING([--enable-profile],
146                              [build profiled library @<:@default=yes@:>@]),
147               [profile=$enableval],
148               [profile=yes])
149 AC_ARG_ENABLE([omitfp],
150               AC_HELP_STRING([--enable-omitfp],
151                              [build undebuggable optimized library @<:@default=no@:>@]),
152               [omitfp=$enableval],
153               [omitfp=no])
154 AC_ARG_ENABLE([bounded],
155               AC_HELP_STRING([--enable-bounded],
156                              [build with runtime bounds checking @<:@default=no@:>@]),
157               [bounded=$enableval],
158               [bounded=no])
159 AC_ARG_ENABLE([versioning],
160               AC_HELP_STRING([--disable-versioning],
161                              [do not include versioning information in the library objects @<:@default=yes if supported@:>@]),
162               [enable_versioning=$enableval],
163               [enable_versioning=yes])
165 AC_ARG_ENABLE([oldest-abi],
166               AC_HELP_STRING([--enable-oldest-abi=ABI],
167                              [configure the oldest ABI supported @<:@e.g. 2.2@:>@ @<:@default=glibc default@:>@]),
168               [oldest_abi=$enableval],
169               [oldest_abi=no])
170 if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
171   oldest_abi=default
172 else
173   AC_DEFINE_UNQUOTED(GLIBC_OLDEST_ABI, "$oldest_abi")
175 AC_SUBST(oldest_abi)
177 AC_ARG_ENABLE([stackguard-randomization],
178               AC_HELP_STRING([--enable-stackguard-randomization],
179                              [initialize __stack_chk_guard canary with a random number at program start]),
180               [enable_stackguard_randomize=$enableval],
181               [enable_stackguard_randomize=no])
182 if test "$enable_stackguard_randomize" = yes; then
183   AC_DEFINE(ENABLE_STACKGUARD_RANDOMIZE)
186 dnl Generic infrastructure for drop-in additions to libc.
187 AC_ARG_ENABLE([add-ons],
188               AC_HELP_STRING([--enable-add-ons@<:@=DIRS...@:>@],
189                              [configure and build add-ons in DIR1,DIR2,...  search for add-ons if no parameter given]),
190   [case "$enableval" in
191     yes) add_ons=`cd $srcdir && echo */configure | sed -e 's!/configure!!g'`
192          add_ons_automatic=yes
193          test "$add_ons" = "*" && add_ons= ;;
194     *) add_ons=`echo "$enableval" | sed 's/,/ /g'`
195        add_ons_automatic=no ;;
196    esac],
197   [add_ons= add_ons_automatic=no])
199 dnl Let the user avoid using TLS.  Don't know why but...
200 AC_ARG_WITH([tls],
201             AC_HELP_STRING([--with-tls],
202                            [enable support for TLS]),
203             [usetls=$withval],
204             [usetls=yes])
206 AC_ARG_WITH([__thread],
207             AC_HELP_STRING([--without-__thread],
208                            [do not use TLS features even when supporting them]),
209             [use__thread=$withval],
210             [use__thread=yes])
212 AC_ARG_ENABLE([hidden-plt],
213               AC_HELP_STRING([--disable-hidden-plt],
214                              [do not hide internal function calls to avoid PLT]),
215               [hidden=$enableval],
216               [hidden=yes])
217 if test "x$hidden" = xno; then
218   AC_DEFINE(NO_HIDDEN)
221 AC_ARG_ENABLE([bind-now],
222               AC_HELP_STRING([--enable-bind-now],
223                              [disable lazy relocations in DSOs]),
224               [bindnow=$enableval],
225               [bindnow=no])
226 AC_SUBST(bindnow)
228 dnl On some platforms we cannot use dynamic loading.  We must provide
229 dnl static NSS modules.
230 AC_ARG_ENABLE([static-nss],
231               AC_HELP_STRING([--enable-static-nss],
232                              [build static NSS modules @<:@default=no@:>@]),
233               [static_nss=$enableval],
234               [static_nss=no])
235 dnl Enable static NSS also if we build no shared objects.
236 if test x"$static_nss" = xyes || test x"$shared" = xno; then
237   static_nss=yes
238   AC_DEFINE(DO_STATIC_NSS)
241 AC_ARG_ENABLE([force-install],
242               AC_HELP_STRING([--disable-force-install],
243                              [don't force installation of files from this package, even if they are older than the installed files]),
244               [force_install=$enableval],
245               [force_install=yes])
246 AC_SUBST(force_install)
248 dnl On some platforms we allow dropping compatibility with all kernel
249 dnl versions.
250 AC_ARG_ENABLE([kernel],
251               AC_HELP_STRING([--enable-kernel=VERSION],
252                              [compile for compatibility with kernel not older than VERSION]),
253               [minimum_kernel=$enableval],
254               [])
255 dnl Prevent unreasonable values.
256 if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
257   # Better nothing than this.
258   minimum_kernel=""
259 else
260   if test "$minimum_kernel" = current; then
261     minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
262   fi
265 dnl For the development we sometimes want gcc to issue even more warnings.
266 dnl This is not the default since many of the extra warnings are not
267 dnl appropriate.
268 AC_ARG_ENABLE([all-warnings],
269               AC_HELP_STRING([--enable-all-warnings],
270                              [enable all useful warnings gcc can issue]),
271               [all_warnings=$enableval],
272               [])
273 AC_SUBST(all_warnings)
275 AC_CANONICAL_HOST
277 # The way shlib-versions is used to generate soversions.mk uses a
278 # fairly simplistic model for name recognition that can't distinguish
279 # i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a $host_os
280 # of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
281 # tell.  This doesn't get used much beyond that, so it's fairly safe.
282 case "$host_os" in
283 linux*)
284   ;;
285 gnu*)
286   host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
287   ;;
288 esac
290 # We keep the original values in `$config_*' and never modify them, so we
291 # can write them unchanged into config.make.  Everything else uses
292 # $machine, $vendor, and $os, and changes them whenever convenient.
293 config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
295 # Don't allow vendor == "unknown"
296 test "$config_vendor" = unknown && config_vendor=
297 config_os="`echo $config_os | sed 's/^unknown-//'`"
299 # Some configurations imply other options.
300 case "$host_os" in
301 # i586-linuxaout is mangled into i586-pc-linux-gnuaout
302 linux*ecoff* | linux*aout* | gnu*aout* | gnu*ecoff*)
303   ;;
304 gnu* | linux* | freebsd* | netbsd* | sysv4* | solaris2* | irix6*)
305   # These systems (almost) always use the ELF format.
306   elf=yes
307   ;;
308 aix*)
309   # These systems are always xcoff
310   xcoff=yes
311   elf=no
312   ;;
313 esac
315 # The configure fragment of an add-on port can modify these to supplement
316 # or override the table in the case statement below.  No fragment should
317 # ever change the config_* variables, however.
318 machine=$config_machine
319 vendor=$config_vendor
320 os=$config_os
322 # config.guess on some IBM machines says `rs6000' instead of `powerpc'.
323 # Unify this here.
324 if test "$machine" = rs6000; then
325   machine="powerpc"
328 # Braindead PowerPC box with absolutely no FPU.
329 case "$machine-$host_os" in
330   powerpc*-*soft)
331     with_fp=no
332     ;;
333 esac
336 # An add-on can set this when it the tuple to disable the sanity check below.
337 libc_config_ok=no
339 dnl Having this here, though empty, makes sure that if add-ons' fragments
340 dnl do AC_CONFIG_SUBDIRS([some-dir]), which just sets $subdirs, then
341 dnl our AC_OUTPUT will actually use it.
342 AC_CONFIG_SUBDIRS()
344 add_ons_sfx=
345 add_ons_pfx=
346 if test x"$add_ons" != x; then
347   for f in $add_ons; do
348     # Some sanity checks
349     case "$f" in
350     crypt)
351       AC_MSG_ERROR([
352 *** It seems that you're using an old \`crypt' add-on.  crypt is now
353 *** part of glibc and using the old add-on will not work with this
354 *** release.  Start again with fresh sources and without the old
355 *** \`crypt' add-on.])
356     ;;
357     localedata)
358       AC_MSG_ERROR([
359 *** It seems that you're using an old \`localedata' add-on.  localedata
360 *** is now part of glibc and using the old add-on will not work with
361 *** this release.  Start again with fresh sources and without the old
362 *** \`localedata' add-on.])
363     ;;
364     esac
366     # Test whether such a subdir really exists.
367     test -d $srcdir/$f || {
368       AC_MSG_ERROR(add-on directory \"$f\" does not exist)
369     }
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     libc_add_on_frag=$srcdir/$libc_add_on/configure
380     if test -r $libc_add_on_frag; then
381       AC_MSG_RESULT(running configure fragment for add-on $libc_add_on)
382       . $libc_add_on_frag
383     else
384       AC_MSG_WARN(add-on fragment $libc_add_on_frag missing)
385     fi
386     if test -n "$libc_add_on"; then
387       use_add_ons="$use_add_ons $libc_add_on"
388       add_ons_pfx="$add_ons_pfx $libc_add_on/"
389       add_ons_sfx="$add_ons_sfx /$libc_add_on"
390     fi
391   done
392   # Use echo to strip excess whitespace.
393   add_ons="`echo $use_add_ons`"
395 AC_SUBST(add_ons)
399 ### I put this here to prevent those annoying emails from people who cannot
400 ### read and try to compile glibc on unsupported platforms.  --drepper
402 ### By using the undocumented --enable-hacker-mode option for configure
403 ### one can skip this test to make the configuration not fail for unsupported
404 ### platforms.
406 if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
407   case "$machine-$host_os" in
408   *-linux* | *-gnu* | arm*-none* | powerpc-aix4.3.*)
409     ;;
410   *)
411     echo "*** The GNU C library is currently not available for this platform."
412     echo "*** So far nobody cared to port it and if there is no volunteer it"
413     echo "*** might never happen.  So, if you have interest to see glibc on"
414     echo "*** this platform visit"
415     echo "***   http://www.gnu.org/software/libc/porting.html"
416     echo "*** and join the group of porters"
417     exit 1
418     ;;
419   esac
422 dnl We need to use [ and ] for other purposes for a while now.
423 changequote(,)dnl
424 # Expand the configuration machine name into a subdirectory by architecture
425 # type and particular chip.  If an add-on configure fragment already set
426 # base_machine, we don't change it.
427 test -n "$base_machine" || case "$machine" in
428 a29k | am29000) base_machine=a29k machine=a29k ;;
429 alpha*)         base_machine=alpha machine=alpha/$machine ;;
430 c3[012])        base_machine=cx0 machine=cx0/c30 ;;
431 c4[04])         base_machine=cx0 machine=cx0/c40 ;;
432 hppa*64*)       base_machine=hppa machine=hppa/hppa64 ;;
433 hppa*)          base_machine=hppa machine=hppa/hppa1.1 ;;
434 i[34567]86)     base_machine=i386 machine=i386/$machine ;;
435 ia64)           base_machine=ia64 machine=ia64 ;;
436 m680?0)         base_machine=m68k machine=m68k/$machine ;;
437 m68k)           base_machine=m68k machine=m68k/m68020 ;;
438 m88???)         base_machine=m88k machine=m88k/$machine ;;
439 m88k)           base_machine=m88k machine=m88k/m88100 ;;
440 mips64*)        base_machine=mips64
441                 case "$CC $CFLAGS $CPPFLAGS " in
442                 *" -mabi=n32 "*) mips_cc_abi=n32 ;;
443                 *" -mabi=64 "*|*" -mabi=n64 "*) mips_cc_abi=64 ;;
444                 *" -mabi=32 "*|*" -mabi=o32 "*) mips_cc_abi=32 ;;
445                 *) mips_cc_abi=default ;;
446                 esac
447                 case $config_os in
448                 *abin32*) mips_config_abi=n32 ;;
449                 *abi64*|*abin64*) mips_config_abi=64 ;;
450                 *abi32*|*abio32*) mips_config_abi=32 ;;
451                 *) mips_config_abi=$mips_cc_abi ;;
452                 esac
453                 case $mips_config_abi in
454                 default) machine=mips/mips64/n32 mips_config_abi=n32 ;;
455                 n32) machine=mips/mips64/n32 ;;
456                 64) machine=mips/mips64/n64 ;;
457                 32) machine=mips/mips32/kern64 ;;
458                 esac
459                 machine=$machine/$config_machine
460                 if test $mips_config_abi != $mips_cc_abi; then
461                   # This won't make it to config.make, but we want to
462                   # set this in case configure tests depend on it.
463                   CPPFLAGS="$CPPFLAGS -mabi=$mips_config_abi"
464                 fi
465                 ;;
466 mips*)          base_machine=mips machine=mips/mips32/$machine ;;
467 powerpc)        base_machine=powerpc machine=powerpc/powerpc32 ;;
468 powerpc64)      base_machine=powerpc machine=powerpc/powerpc64 ;;
469 s390)           base_machine=s390 machine=s390/s390-32 ;;
470 s390x)          base_machine=s390 machine=s390/s390-64 ;;
471 sh3*)           base_machine=sh machine=sh/sh3 ;;
472 sh4*)           base_machine=sh machine=sh/sh4 ;;
473 sparc | sparcv[67])
474                 base_machine=sparc machine=sparc/sparc32 ;;
475 sparcv8 | supersparc | hypersparc)
476                 base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
477 sparcv8plus | sparcv8plusa | sparcv9)
478                 base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
479 sparcv8plusb | sparcv9b)
480                 base_machine=sparc machine=sparc/sparc32/sparcv9b ;;
481 sparc64)
482                 base_machine=sparc machine=sparc/sparc64 ;;
483 sparc64b)
484                 base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
485 *)              base_machine=$machine ;;
486 esac
487 changequote([,])dnl
488 AC_SUBST(base_machine)
490 if test "$base_machine" = "i386"; then
491   AC_DEFINE(USE_REGPARMS)
494 # Compute the list of sysdep directories for this configuration.
495 # This can take a while to compute.
496 sysdep_dir=$srcdir/sysdeps
497 AC_MSG_CHECKING(sysdep dirs)
498 dnl We need to use [ and ] for other purposes for a while now.
499 changequote(,)dnl
500 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
501 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
503 case "$os" in
504 gnu*)
505   base_os=mach/hurd ;;
506 netbsd* | 386bsd* | freebsd* | bsdi*)
507   base_os=unix/bsd/bsd4.4 ;;
508 osf* | sunos* | ultrix* | newsos* | dynix* | *bsd*)
509   base_os=unix/bsd ;;
510 sysv* | isc* | esix* | sco* | minix* | irix4* | linux*)
511   base_os=unix/sysv ;;
512 irix6*)
513   base_os=unix/sysv/irix6/$os ;;
514 solaris[2-9]*)
515   base_os=unix/sysv/sysv4 ;;
516 hpux*)
517   base_os=unix/sysv/hpux/$os ;;
518 aix4.3*)
519   base_os=unix/sysv/aix/aix4.3 ;;
520 none)
521   base_os=standalone ;;
523   base_os='' ;;
524 esac
526 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
527 tail=$os
528 ostry=$os
529 while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
530   ostry="$ostry /$o"
531   tail=$o
532 done
533 o=`echo $tail | sed 's/[0-9]*$//'`
534 if test $o != $tail; then
535   ostry="$ostry /$o"
537 # For linux-gnu, try linux-gnu, then linux.
538 o=`echo $tail | sed 's/-.*$//'`
539 if test $o != $tail; then
540   ostry="$ostry /$o"
543 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
544 base=
545 tail=$base_os
546 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
547   set $b
548   base="$base /$1"
549   tail="$2"
550 done
552 # For sparc/sparc32, try sparc/sparc32 and then sparc.
553 mach=
554 tail=$machine
555 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
556   set $m
557   # Prepend the machine's FPU directory unless --without-fp.
558   if test "$with_fp" = yes; then
559     mach="$mach /$1/fpu"
560   else
561     mach="$mach /$1/nofpu"
562   fi
563   mach="$mach /$1"
564   tail="$2"
565 done
567 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
568 changequote([,])dnl
570 # Find what sysdep directories exist.
571 sysnames=
572 IFS="${IFS=     }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
573 for b in $base ''; do
574   for m0 in $mach ''; do
575     for v in /$vendor ''; do
576       test "$v" = / && continue
577       for o in /$ostry ''; do
578         test "$o" = / && continue
579         for m in $mach ''; do
580           for d in $add_ons_pfx ''; do
581             for a in $add_ons_sfx ''; do
582               if test "$m0$m0sub$b$v$o$m$msub"; then
583                 try="${d}sysdeps$m0$m0sub$b$v$o$m$msub$a"
584                 test -n "$enable_debug_configure" &&
585                 echo "$0 [DEBUG]: try $try" >&2
586                 if test -d $srcdir/$try; then
587                   sysnames="$sysnames $try"
588                   { test -n "$o" || test -n "$b"; } && os_used=t
589                   { test -n "$m" || test -n "$m0"; } && machine_used=t
590                   case x${m0:-$m} in
591                   x*/$submachine) submachine_used=t ;;
592                   esac
593                 fi
594               fi
595             done
596           done
597         done
598       done
599     done
600   done
601 done
602 for d in $add_ons_pfx ''; do
603   for a in $add_ons_sfx ''; do
604     if test -n "$d" && test "$d" != "$a"; then
605       try="${d}sysdeps/generic${a}"
606       test -n "$enable_debug_configure" &&
607       echo "$0 DEBUG: try $try" >&2
608       if test -d $srcdir/$try; then
609         sysnames="$sysnames $try"
610       fi
611     fi
612   done
613 done
614 IFS="$ac_save_ifs"
616 if test -z "$os_used" && test "$os" != none; then
617   AC_MSG_ERROR(Operating system $os is not supported.)
619 if test -z "$machine_used" && test "$machine" != none; then
620   AC_MSG_ERROR(The $machine is not supported.)
623 # We have now validated the configuration.
626 # If using ELF, look for an `elf' subdirectory of each machine directory.
627 # We prepend these rather than inserting them whereever the machine appears
628 # because things specified by the machine's ELF ABI should override
629 # OS-specific things, and should always be the same for any OS on the
630 # machine (otherwise what's the point of an ABI?).
631 if test "$elf" = yes; then
632   elf_dirs=
633   for d in $add_ons_pfx ''; do
634     for m in $mach; do
635       if test -d $srcdir/${d}sysdeps$m/elf; then
636         elf_dirs="$elf_dirs ${d}sysdeps$m/elf"
637       fi
638     done
639   done
640   sysnames="`echo $elf_dirs | sed -e 's,//,/,g'` $sysnames"
644 # Expand the list of system names into a full list of directories
645 # from each element's parent name and Implies file (if present).
646 set $sysnames
647 names=
648 while test $# -gt 0; do
649   name=$1
650   shift
652   case " $names " in *" $name "*)
653     # Already in the list.
654     continue
655   esac
657   # Report each name as we discover it, so there is no long pause in output.
658   echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
660   name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
662   case $name in
663     /*) xsrcdir= ;;
664     *)  xsrcdir=$srcdir/ ;;
665   esac
666   test -n "$enable_debug_configure" &&
667   echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
669   if test -f $xsrcdir$name/Implies; then
670     # Collect more names from the `Implies' file (removing comments).
671     implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
672     implied=
673     for x in $implied_candidate; do
674       found=no
675       if test -d $xsrcdir$name_base/$x; then
676         implied="$implied $name_base/$x";
677         found=yes
678       fi
679       for d in $add_ons_pfx ''; do
680         try="${d}sysdeps/$x"
681         case $d in
682          /*) try_srcdir= ;;
683          *) try_srcdir=$srcdir/ ;;
684         esac
685         test -n "$enable_debug_configure" &&
686          echo "[DEBUG]: $name implied $x try($d) {$try_srcdir}$try" >&2
687         if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
688         then
689           implied="$implied $try"
690           found=yes
691         fi
692       done
693       if test $found = no; then
694         AC_MSG_WARN($name/Implies specifies nonexistent $x)
695       fi
696     done
697   else
698     implied=
699   fi
701   # Add NAME to the list of names.
702   names="$names $name"
704   # Find the parent of NAME, using the empty string if it has none.
705 changequote(,)dnl
706   parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
707 changequote([,])dnl
709   # Add the names implied by NAME, and NAME's parent (if it has one), to
710   # the list of names to be processed (the argument list).  We prepend the
711   # implied names to the list and append the parent.  We want implied
712   # directories to come before further directories inferred from the
713   # configuration components; this ensures that for sysv4, unix/common
714   # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
715   # after sysv4).
716   sysnames="`echo $implied $* $parent`"
717   test -n "$sysnames" && set $sysnames
718 done
720 # Add the default directories.
721 default_sysnames=sysdeps/generic
722 if test "$elf" = yes; then
723   default_sysnames="sysdeps/generic/elf $default_sysnames"
725 sysnames="$names $default_sysnames"
726 AC_SUBST(sysnames)
727 # The other names were emitted during the scan.
728 AC_MSG_RESULT($default_sysnames)
731 ### Locate tools.
733 AC_PROG_INSTALL
734 if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
735   # The makefiles need to use a different form to find it in $srcdir.
736   INSTALL='\$(..)./scripts/install-sh -c'
738 AC_PROG_LN_S
740 AC_PROG_CC
741 if test $host != $build; then
742   AC_CHECK_PROGS(BUILD_CC, gcc cc)
744 AC_SUBST(cross_compiling)
745 AC_PROG_CPP
746 # We need the C++ compiler only for testing.
747 AC_PROG_CXX
748 LIBC_PROG_BINUTILS
749 AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
751 # Accept binutils 2.13 or newer.
752 AC_CHECK_PROG_VER(AS, $AS, --version,
753                   [GNU assembler.* \([0-9]*\.[0-9.]*\)],
754                   [2.1[3-9]*], AS=: critic_missing="$critic_missing as")
755 AC_CHECK_PROG_VER(LD, $LD, --version,
756                   [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
757                   [2.1[3-9]*], LD=: critic_missing="$critic_missing ld")
759 # We need the physical current working directory.  We cannot use the
760 # "pwd -P" shell builtin since that's not portable.  Instead we try to
761 # find a pwd binary.  Note that assigning to the PWD environment
762 # variable might have some interesting side effects, so we don't do
763 # that.
764 AC_PATH_PROG(PWD_P, pwd, no)
765 if test "$PWD_P" = no; then
766   AC_MSG_ERROR(*** A pwd binary could not be found.)
769 # These programs are version sensitive.
770 AC_CHECK_TOOL_PREFIX
771 AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
772   [version \([egcygnustpi-]*[0-9.]*\)], [3.4* | 4.[0-9]* ],
773   critic_missing="$critic_missing gcc")
774 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
775   [GNU Make[^0-9]*\([0-9][0-9.]*\)],
776   [3.79* | 3.[89]*], critic_missing="$critic_missing make")
778 AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
779   [GNU gettext.* \([0-9]*\.[0-9.]*\)],
780   [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
781   MSGFMT=: aux_missing="$aux_missing msgfmt")
782 AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
783   [GNU texinfo.* \([0-9][0-9.]*\)],
784   [4.*],
785   MAKEINFO=: aux_missing="$aux_missing makeinfo")
786 AC_CHECK_PROG_VER(SED, sed, --version,
787   [GNU sed version \([0-9]*\.[0-9.]*\)],
788   [3.0[2-9]*|3.[1-9]*|[4-9]*],
789   SED=: aux_missing="$aux_missing sed")
791 AC_CHECK_PROGS(AUTOCONF, autoconf, no)
792 case "x$AUTOCONF" in
793 xno|x|x:) AUTOCONF=no ;;
795   AC_CACHE_CHECK(dnl
796 whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
797   if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
798     libc_cv_autoconf_works=yes
799   else
800     libc_cv_autoconf_works=no
801   fi])
802   test $libc_cv_autoconf_works = yes || AUTOCONF=no
803   ;;
804 esac
805 if test "x$with_cvs" = xyes && test "x$AUTOCONF" = xno; then
806   # If --without-cvs they probably won't change configure.in, so no complaints.
807   aux_missing="$aux_missing autoconf"
810 test -n "$critic_missing" && AC_MSG_ERROR([
811 *** These critical programs are missing or too old:$critic_missing
812 *** Check the INSTALL file for required versions.])
814 test -n "$aux_missing" && AC_MSG_WARN([
815 *** These auxiliary programs are missing or incompatible versions:$aux_missing
816 *** some features will be disabled.
817 *** Check the INSTALL file for required versions.])
819 # if using special system headers, find out the compiler's sekrit
820 # header directory and add that to the list.  NOTE: Only does the right
821 # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
822 if test -n "$sysheaders"; then
823   ccheaders=`$CC -print-file-name=include`
824   SYSINCLUDES="-nostdinc -isystem $ccheaders \
825 -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
827 AC_SUBST(SYSINCLUDES)
829 # check if ranlib is necessary
830 AC_CACHE_CHECK(whether ranlib is necessary, libc_cv_ranlib_necessary, [dnl
831 cat > conftest.c <<EOF
832 int a;
833 char b;
834 void c(void) {}
836 $CC $CFLAGS $CPPFLAGS -c conftest.c
837 $AR cr conftest.a conftest.o
838 cp conftest.a conftest2.a
839 $RANLIB conftest.a
840 if cmp -s conftest.a conftest2.a; then
841   libc_cv_ranlib_necessary=no
842 else
843   libc_cv_ranlib_necessary=yes
845 rm -rf conftest*])
846 if test "$libc_cv_ranlib_necessary" = no; then
847  RANLIB=:
850 # Test if LD_LIBRARY_PATH contains the notation for the current directory
851 # since this would lead to problems installing/building glibc.
852 # LD_LIBRARY_PATH contains the current directory if one of the following
853 # is true:
854 # - one of the terminals (":" and ";") is the first or last sign
855 # - two terminals occur directly after each other
856 # - the path contains an element with a dot in it
857 AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
858 changequote(,)dnl
859 case ${LD_LIBRARY_PATH} in
860   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
861     ld_library_path_setting="contains current directory"
862     ;;
863   *)
864     ld_library_path_setting="ok"
865     ;;
866 esac
867 changequote([,])dnl
868 AC_MSG_RESULT($ld_library_path_setting)
869 if test "$ld_library_path_setting" != "ok"; then
870 AC_MSG_ERROR([
871 *** LD_LIBRARY_PATH shouldn't contain the current directory when
872 *** building glibc. Please change the environment variable
873 *** and run configure again.])
876 AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
877 if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
878   libc_cv_gcc_static_libgcc=
879 else
880   libc_cv_gcc_static_libgcc=-static-libgcc
881 fi])
882 AC_SUBST(libc_cv_gcc_static_libgcc)
884 AC_PATH_PROG(BASH, bash, no)
885 if test "$BASH" != no &&
886    $BASH -c 'test "$BASH_VERSINFO" \
887              && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
888   libc_cv_have_bash2=yes
889 else
890   libc_cv_have_bash2=no
892 AC_SUBST(libc_cv_have_bash2)
894 dnl We need a ksh compatible shell for tzselect.
895 if test "$BASH" = no; then
896   AC_PATH_PROG(KSH, ksh, no)
897   if test "$KSH" = no; then
898     libc_cv_have_ksh=no
899   else
900     libc_cv_have_ksh=yes
901   fi
902 else
903   KSH="$BASH"
904   AC_SUBST(KSH)
905   libc_cv_have_ksh=yes
907 AC_SUBST(libc_cv_have_ksh)
909 AC_PROG_AWK
910 AC_PATH_PROG(PERL, perl, no)
911 if test "$PERL" != no &&
912    (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
913   PERL=no
915 AC_PATH_PROG(INSTALL_INFO, install-info, no,
916              $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
917 AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
919 AC_CACHE_CHECK(for signed size_t type, libc_cv_signed_size_t, [dnl
920 echo '#include <stddef.h>
921 FOOBAR __SIZE_TYPE__ FOOBAR' > conftest.c
922 if eval "$ac_cpp conftest.c 2>/dev/null" \
923 | grep '^FOOBAR.*unsigned.*FOOBAR$' >/dev/null; then
924   libc_cv_signed_size_t=no
925 else
926   libc_cv_signed_size_t=yes
928 rm -f conftest*])
929 if test $libc_cv_signed_size_t = yes; then
930   dnl Do this by hand instead of AC_DEFINE so can add #undef to avoid warnings.
931   cat >> confdefs.h <<\EOF
932 #undef __SIZE_TYPE__
933 #define __SIZE_TYPE__ unsigned
937 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
938 AC_TRY_COMPILE(dnl
939 [#define __need_size_t
940 #define __need_wchar_t
941 #include <stddef.h>
942 #define __need_NULL
943 #include <stddef.h>], [size_t size; wchar_t wchar;
944 #ifdef offsetof
945 #error stddef.h ignored __need_*
946 #endif
947 if (&size == NULL || &wchar == NULL) abort ();],
948                libc_cv_friendly_stddef=yes,
949                libc_cv_friendly_stddef=no)])
950 if test $libc_cv_friendly_stddef = yes; then
951   config_vars="$config_vars
952 override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
955 AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
956                libc_cv_need_minus_P, [dnl
957 cat > conftest.S <<EOF
958 #include "confdefs.h"
959 /* Nothing whatsoever.  */
961 if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
962   libc_cv_need_minus_P=no
963 else
964   libc_cv_need_minus_P=yes
966 rm -f conftest*])
967 if test $libc_cv_need_minus_P = yes; then
968   config_vars="$config_vars
969 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
972 AC_MSG_CHECKING(whether .text pseudo-op must be used)
973 AC_CACHE_VAL(libc_cv_dot_text, [dnl
974 cat > conftest.s <<EOF
975 .text
977 libc_cv_dot_text=
978 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
979   libc_cv_dot_text=.text
981 rm -f conftest*])
982 if test -z "$libc_cv_dot_text"; then
983   AC_MSG_RESULT(no)
984 else
985   AC_MSG_RESULT(yes)
988 AC_CACHE_CHECK(for assembler global-symbol directive,
989                libc_cv_asm_global_directive, [dnl
990 libc_cv_asm_global_directive=UNKNOWN
991 for ac_globl in .globl .global .EXPORT; do
992   cat > conftest.s <<EOF
993         ${libc_cv_dot_text}
994         ${ac_globl} foo
995 foo:
997   if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
998     libc_cv_asm_global_directive=${ac_globl}
999   fi
1000   rm -f conftest*
1001   test $libc_cv_asm_global_directive != UNKNOWN && break
1002 done])
1003 if test $libc_cv_asm_global_directive = UNKNOWN; then
1004   AC_MSG_ERROR(cannot determine asm global directive)
1005 else
1006   AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
1009 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
1010 cat > conftest.s <<EOF
1011 ${libc_cv_dot_text}
1012 foo:
1013 .set glibc_conftest_frobozz,foo
1014 $libc_cv_asm_global_directive glibc_conftest_frobozz
1016 # The alpha-dec-osf1 assembler gives only a warning for `.set'
1017 # (but it doesn't work), so we must do a linking check to be sure.
1018 cat > conftest1.c <<\EOF
1019 extern int glibc_conftest_frobozz;
1020 void _start() { glibc_conftest_frobozz = 1; }
1022 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1023             -nostartfiles -nostdlib \
1024             -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1025   libc_cv_asm_set_directive=yes
1026 else
1027   libc_cv_asm_set_directive=no
1029 rm -f conftest*])
1030 if test $libc_cv_asm_set_directive = yes; then
1031   AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
1034 AC_CACHE_CHECK(for assembler .type directive prefix,
1035                libc_cv_asm_type_prefix, [dnl
1036 libc_cv_asm_type_prefix=no
1037 for ac_try_prefix in '@' '%' '#'; do
1038   cat > conftest.s <<EOF
1039         ${libc_cv_dot_text}
1040         ${libc_cv_asm_global_directive} foo
1041         .type foo, ${ac_try_prefix}object
1042         .size foo, 1
1043 foo:
1044         .byte 1
1046   if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1047     libc_cv_asm_type_prefix=${ac_try_prefix}
1048   fi
1049   rm -f conftest*
1050   test "x$libc_cv_asm_type_prefix" != xno && break
1051 done])
1052 if test "x$libc_cv_asm_type_prefix" != xno; then
1053   AC_DEFINE_UNQUOTED(ASM_TYPE_DIRECTIVE_PREFIX, ${libc_cv_asm_type_prefix})
1056 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
1057 [cat > conftest.s <<EOF
1058 ${libc_cv_dot_text}
1059 _sym:
1060 .symver _sym,sym@VERS
1062 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1063   libc_cv_asm_symver_directive=yes
1064 else
1065   libc_cv_asm_symver_directive=no
1067 rm -f conftest*])
1068 AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
1069 if test $libc_cv_asm_symver_directive = yes; then
1070   cat > conftest.s <<EOF
1071 ${libc_cv_dot_text}
1072 _sym:
1073 .symver _sym,sym@VERS
1075   cat > conftest.map <<EOF
1076 VERS_1 {
1077         global: sym;
1080 VERS_2 {
1081         global: sym;
1082 } VERS_1;
1084   if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1085     if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
1086                                 -o conftest.so conftest.o
1087                                 -nostartfiles -nostdlib
1088                                 -Wl,--version-script,conftest.map
1089                        1>&AS_MESSAGE_LOG_FD]);
1090     then
1091       libc_cv_ld_version_script_option=yes
1092     else
1093       libc_cv_ld_version_script_option=no
1094     fi
1095   else
1096     libc_cv_ld_version_script_option=no
1097   fi
1098 else
1099   libc_cv_ld_version_script_option=no
1101 rm -f conftest*])
1102 if test $shared != no &&
1103    test $libc_cv_asm_symver_directive = yes &&
1104    test $libc_cv_ld_version_script_option = yes &&
1105    test $enable_versioning = yes; then
1106   VERSIONING=yes
1107   AC_DEFINE(DO_VERSIONING)
1108 else
1109   VERSIONING=no
1111 AC_SUBST(VERSIONING)
1113 if test $elf = yes && test $shared != no && test $VERSIONING = no; then
1114   echo "\
1115 *** WARNING: You should not compile GNU libc without versioning. Not using
1116 *** versioning will introduce incompatibilities so that old binaries
1117 *** will not run anymore.
1118 *** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
1120 if test $elf = yes; then
1121   AC_CACHE_CHECK(for .previous assembler directive,
1122                  libc_cv_asm_previous_directive, [dnl
1123   cat > conftest.s <<EOF
1124 .section foo_section
1125 .previous
1127   if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1128     libc_cv_asm_previous_directive=yes
1129   else
1130     libc_cv_asm_previous_directive=no
1131   fi
1132   rm -f conftest*])
1133   if test $libc_cv_asm_previous_directive = yes; then
1134     AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
1135   else
1136     AC_CACHE_CHECK(for .popsection assembler directive,
1137                    libc_cv_asm_popsection_directive, [dnl
1138     cat > conftest.s <<EOF
1139 .pushsection foo_section
1140 .popsection
1142     if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1143       libc_cv_asm_popsection_directive=yes
1144     else
1145       libc_cv_asm_popsection_directive=no
1146     fi
1147     rm -f conftest*])
1148     if test $libc_cv_asm_popsection_directive = yes; then
1149       AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
1150     fi
1151   fi
1152   AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1153                  libc_cv_asm_protected_directive, [dnl
1154   cat > conftest.s <<EOF
1155 .protected foo
1156 foo:
1157 .hidden bar
1158 bar:
1160   if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1161     libc_cv_asm_protected_directive=yes
1162   else
1163     libc_cv_asm_protected_directive=no
1164   fi
1165   rm -f conftest*])
1166   AC_SUBST(libc_cv_asm_protected_directive)
1167   AC_DEFINE(HAVE_PROTECTED)
1168   AC_DEFINE(HAVE_HIDDEN)
1170   if test $libc_cv_asm_protected_directive = yes; then
1171     AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
1172                  libc_cv_visibility_attribute,
1173                  [cat > conftest.c <<EOF
1174                   int foo __attribute__ ((visibility ("hidden"))) = 1;
1175                   int bar __attribute__ ((visibility ("protected"))) = 1;
1177                   libc_cv_visibility_attribute=no
1178                   if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1179                     if grep '\.hidden.*foo' conftest.s >/dev/null; then
1180                       if grep '\.protected.*bar' conftest.s >/dev/null; then
1181                         libc_cv_visibility_attribute=yes
1182                       fi
1183                     fi
1184                   fi
1185                   rm -f conftest.[cs]
1186                  ])
1187     if test $libc_cv_visibility_attribute = yes; then
1188       AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE)
1189     fi
1190   fi
1192   if test $libc_cv_visibility_attribute = yes; then
1193     AC_CACHE_CHECK(for broken __attribute__((visibility())),
1194                  libc_cv_broken_visibility_attribute,
1195                  [cat > conftest.c <<EOF
1196                   int foo (int x);
1197                   int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1198                   int bar (int x) { return x; }
1200                   libc_cv_broken_visibility_attribute=yes
1201                   if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s1>&AS_MESSAGE_LOG_FD); then
1202 changequote(,)dnl
1203                     if grep '\.hidden[  _]foo' conftest.s >/dev/null; then
1204 changequote([,])dnl
1205                       libc_cv_broken_visibility_attribute=no
1206                     fi
1207                   fi
1208                   rm -f conftest.c conftest.s
1209                  ])
1210     if test $libc_cv_broken_visibility_attribute = yes; then
1211       AC_DEFINE(HAVE_BROKEN_VISIBILITY_ATTRIBUTE)
1212     fi
1213   fi
1215   AC_CACHE_CHECK(for broken __attribute__((alias())),
1216                  libc_cv_broken_alias_attribute,
1217                  [cat > conftest.c <<EOF
1218                   extern int foo (int x) __asm ("xyzzy");
1219                   int bar (int x) { return x; }
1220                   extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1221                   extern int dfoo;
1222                   extern __typeof (dfoo) dfoo __asm ("abccb");
1223                   int dfoo = 1;
1225                   libc_cv_broken_alias_attribute=yes
1226                   if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1227                     if grep 'xyzzy' conftest.s >/dev/null &&
1228                        grep 'abccb' conftest.s >/dev/null; then
1229                       libc_cv_broken_alias_attribute=no
1230                     fi
1231                   fi
1232                   rm -f conftest.c conftest.s
1233                  ])
1234   if test $libc_cv_broken_alias_attribute = yes; then
1235     AC_DEFINE(HAVE_BROKEN_ALIAS_ATTRIBUTE)
1236   fi
1238   if test $libc_cv_visibility_attribute = yes; then
1239     AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1240                  libc_cv_have_sdata_section,
1241                  [echo "int i;" > conftest.c
1242                   libc_cv_have_sdata_section=no
1243                   if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1244                      | grep '\.sdata' >/dev/null; then
1245                     libc_cv_have_sdata_section=yes
1246                   fi
1247                   rm -f conftest.c conftest.so
1248                  ])
1249     if test $libc_cv_have_sdata_section = yes; then
1250       AC_DEFINE(HAVE_SDATA_SECTION)
1251     fi
1252   fi
1254   AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1255                  libc_cv_initfini_array, [dnl
1256   cat > conftest.c <<EOF
1257 int _start (void) { return 0; }
1258 int __start (void) { return 0; }
1259 int foo (void) { return 1; }
1260 int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
1262   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest conftest.c
1263                      -static -nostartfiles -nostdlib 1>&AS_MESSAGE_LOG_FD])
1264   then
1265     if readelf -S conftest | fgrep INIT_ARRAY > /dev/null; then
1266       libc_cv_initfini_array=yes
1267     else
1268       libc_cv_initfini_array=no
1269     fi
1270   else
1271     libc_cv_initfini_array=no
1272   fi
1273   rm -f conftest*])
1274   if test $libc_cv_initfini_array != yes; then
1275     AC_MSG_ERROR([Need linker with .init_array/.fini_array support.])
1276   fi
1278   AC_CACHE_CHECK(for libunwind-support in compiler,
1279                  libc_cv_cc_with_libunwind, [
1280     cat > conftest.c <<EOF
1281 int main (void) { return 0; }
1283     if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
1284        conftest.c -v 2>&1 >/dev/null | grep -q " -lunwind "; then
1285       libc_cv_cc_with_libunwind=yes
1286     else
1287       libc_cv_cc_with_libunwind=no
1288     fi
1289     rm -f conftest*])
1290   AC_SUBST(libc_cv_cc_with_libunwind)
1291   if test $libc_cv_cc_with_libunwind = yes; then
1292     AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
1293   fi
1295   AC_CACHE_CHECK(for -z nodelete option,
1296                  libc_cv_z_nodelete, [dnl
1297   cat > conftest.c <<EOF
1298 int _start (void) { return 42; }
1300   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1301                      -fPIC -shared -o conftest.so conftest.c
1302                      -nostartfiles -nostdlib
1303                      -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
1304   then
1305     libc_cv_z_nodelete=yes
1306   else
1307     libc_cv_z_nodelete=no
1308   fi
1309   rm -f conftest*])
1310   AC_SUBST(libc_cv_z_nodelete)
1312   AC_CACHE_CHECK(for -z nodlopen option,
1313                  libc_cv_z_nodlopen, [dnl
1314   cat > conftest.c <<EOF
1315 int _start (void) { return 42; }
1317   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1318                         -fPIC -shared -o conftest.so conftest.c
1319                         -nostartfiles -nostdlib
1320                         -Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
1321   then
1322     libc_cv_z_nodlopen=yes
1323   else
1324     libc_cv_z_nodlopen=no
1325   fi
1326   rm -f conftest*])
1327   AC_SUBST(libc_cv_z_nodlopen)
1329   AC_CACHE_CHECK(for -z initfirst option,
1330                  libc_cv_z_initfirst, [dnl
1331   cat > conftest.c <<EOF
1332 int _start (void) { return 42; }
1334   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1335                         -fPIC -shared -o conftest.so conftest.c
1336                         -nostartfiles -nostdlib
1337                         -Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
1338   then
1339     libc_cv_z_initfirst=yes
1340   else
1341     libc_cv_z_initfirst=no
1342   fi
1343   rm -f conftest*])
1344   AC_SUBST(libc_cv_z_initfirst)
1346   AC_CACHE_CHECK(for -z relro option,
1347                  libc_cv_z_relro, [dnl
1348   libc_cv_z_relro=no
1349   if AC_TRY_COMMAND([${CC-cc} -v --help 2>&1|grep "z relro" 1>&AS_MESSAGE_LOG_FD])
1350   then
1351     if AC_TRY_COMMAND([${CC-cc} -Wl,--verbose 2>&1|grep DATA_SEGMENT_RELRO_END 1>&AS_MESSAGE_LOG_FD])
1352     then
1353       libc_cv_z_relro=yes
1354     fi
1355   fi])
1356   AC_SUBST(libc_cv_z_relro)
1357   if test $libc_cv_z_relro = yes; then
1358     AC_DEFINE(HAVE_Z_RELRO)
1359   fi
1361   AC_CACHE_CHECK(for -Bgroup option,
1362                  libc_cv_Bgroup, [dnl
1363   cat > conftest.c <<EOF
1364 int _start (void) { return 42; }
1366   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1367                               -fPIC -shared -o conftest.so conftest.c
1368                               -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1369   then
1370     libc_cv_Bgroup=yes
1371   else
1372     libc_cv_Bgroup=no
1373   fi
1374   rm -f conftest*])
1375   AC_SUBST(libc_cv_Bgroup)
1377   AC_CACHE_CHECK(for libgcc_s suffix,
1378                  libc_cv_libgcc_s_suffix, [dnl
1379   cat > conftest.c <<EOF
1380 int main (void) { return 0; }
1382 changequote(,)dnl
1383   libc_cv_libgcc_s_suffix=`${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1384                            -fPIC -shared -shared-libgcc -o conftest.so \
1385                            conftest.c -v 2>&1 >/dev/null \
1386                            | sed -n 's/^.* -lgcc_s\([^ ]*\) .*$/\1/p'`
1387 changequote([,])dnl
1388   rm -f conftest*])
1389   AC_SUBST(libc_cv_libgcc_s_suffix)
1391   AC_CACHE_CHECK(for --as-needed option,
1392                  libc_cv_as_needed, [dnl
1393   cat > conftest.c <<EOF
1394 int main (void) { return 0; }
1396   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1397                               -fPIC -shared -o conftest.so conftest.c
1398                               -lgcc_s$libc_cv_libgcc_s_suffix -Wl,--as-needed
1399                               -nostdlib 1>&AS_MESSAGE_LOG_FD])
1400   then
1401     libc_cv_as_needed=yes
1402   else
1403     libc_cv_as_needed=no
1404   fi
1405   rm -f conftest*])
1406   AC_SUBST(libc_cv_as_needed)
1408   ASFLAGS_config=
1409   AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1410                  libc_cv_as_noexecstack, [dnl
1411   cat > conftest.c <<EOF
1412 void foo (void) { }
1414   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1415                      -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
1416      && grep -q .note.GNU-stack conftest.s \
1417      && AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -Wa,--noexecstack
1418                        -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1419   then
1420     libc_cv_as_noexecstack=yes
1421   else
1422     libc_cv_as_noexecstack=no
1423   fi
1424   rm -f conftest*])
1425   if test $libc_cv_as_noexecstack = yes; then
1426     ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1427   fi
1428   AC_SUBST(ASFLAGS_config)
1430   AC_CACHE_CHECK(for -z combreloc,
1431                  libc_cv_z_combreloc, [dnl
1432   cat > conftest.c <<EOF
1433 extern int bar (int);
1434 extern int mumble;
1435 int foo (void) { return bar (mumble); }
1437   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1438                         -fPIC -shared -o conftest.so conftest.c
1439                         -nostdlib -nostartfiles
1440                         -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
1441   then
1442 dnl The following test is a bit weak.  We must use a tool which can test
1443 dnl cross-platform since the gcc used can be a cross compiler.  Without
1444 dnl introducing new options this is not easily doable.  Instead use a tool
1445 dnl which always is cross-platform: readelf.  To detect whether -z combreloc
1446 dnl look for a section named .rel.dyn.
1447     if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1448       libc_cv_z_combreloc=yes
1449     else
1450       libc_cv_z_combreloc=no
1451     fi
1452   else
1453     libc_cv_z_combreloc=no
1454   fi
1455   rm -f conftest*])
1456   if test "$libc_cv_z_combreloc" = yes; then
1457     AC_DEFINE(HAVE_Z_COMBRELOC)
1458   fi
1459   AC_SUBST(libc_cv_z_combreloc)
1461   AC_CACHE_CHECK(for -z execstack,
1462                  libc_cv_z_execstack, [dnl
1463   cat > conftest.c <<EOF
1464 int _start (void) { return 42; }
1466   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1467                               -fPIC -shared -o conftest.so conftest.c
1468                               -Wl,-z,execstack -nostdlib
1469                               1>&AS_MESSAGE_LOG_FD])
1470   then
1471     libc_cv_z_execstack=yes
1472   else
1473     libc_cv_z_execstack=no
1474   fi
1475   rm -f conftest*])
1476   AC_SUBST(libc_cv_z_execstack)
1478   AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
1479   cat > conftest.c <<EOF
1480 int foo;
1481 main () { return 0;}
1483   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fpie
1484                               -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1485   then
1486     libc_cv_fpie=yes
1487   else
1488     libc_cv_fpie=no
1489   fi
1490   rm -f conftest*])
1492   AC_SUBST(libc_cv_fpie)
1495 AC_CACHE_CHECK(for -fno-unit-at-a-time, libc_cv_fno_unit_at_a_time, [dnl
1496 cat > conftest.c <<EOF
1497 int foo;
1499 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-unit-at-a-time
1500                             conftest.c 1>&AS_MESSAGE_LOG_FD])
1501 then
1502   libc_cv_fno_unit_at_a_time=yes
1503 else
1504   libc_cv_fno_unit_at_a_time=no
1506 rm -f conftest*])
1507 if test $libc_cv_fno_unit_at_a_time = yes; then
1508   fno_unit_at_a_time=-fno-unit-at-a-time
1510 AC_SUBST(fno_unit_at_a_time)
1512 AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
1513 cat > conftest.c <<EOF
1514 int foo;
1515 main () { return 0;}
1517 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -fstack-protector
1518                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1519 then
1520   libc_cv_ssp=yes
1521 else
1522   libc_cv_ssp=no
1524 rm -f conftest*])
1525 AC_SUBST(libc_cv_ssp)
1527 if test $elf != yes; then
1528   AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
1529                  [AC_TRY_COMPILE(, [asm (".section .init");
1530                                     asm (".section .fini");
1531                                     asm ("${libc_cv_dot_text}");],
1532                                  libc_cv_have_initfini=yes,
1533                                  libc_cv_have_initfini=no)])
1534   AC_SUBST(libc_cv_have_initfini)dnl
1535   if test $libc_cv_have_initfini = yes; then
1536     AC_DEFINE(HAVE_INITFINI)
1537   fi
1540 if test $elf = yes; then
1541   AC_CACHE_CHECK(whether cc puts quotes around section names,
1542                  libc_cv_have_section_quotes,
1543                  [cat > conftest.c <<EOF
1544                   static const int foo
1545                   __attribute__ ((section ("bar"))) = 1;
1547                   if ${CC-cc} -S conftest.c -o conftest.s; then
1548                     if grep '\.section.*"bar"' conftest.s >/dev/null; then
1549                       libc_cv_have_section_quotes=yes
1550                     else
1551                       libc_cv_have_section_quotes=no
1552                     fi
1553                   else
1554                     libc_cv_have_section_quotes=unknown
1555                   fi
1556                   rm -f conftest.[cs]
1557                  ])
1558   if test $libc_cv_have_section_quotes = yes; then
1559     AC_DEFINE(HAVE_SECTION_QUOTES)
1560   fi
1563 dnl AC_CHECK_ASM_UNDERSCORE([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
1564 AC_DEFUN(AC_CHECK_ASM_UNDERSCORE,
1565 [cat > conftest.$ac_ext <<EOF
1566 dnl This sometimes fails to find confdefs.h, for some reason.
1567 dnl [#]line $LINENO "[$]0"
1568 [#]line $LINENO "configure"
1569 #include "confdefs.h"
1570 void underscore_test(void) {
1571 return; }
1573 if AC_TRY_EVAL(ac_compile); then
1574   if grep _underscore_test conftest* >/dev/null; then
1575     ifelse([$1], , :, [rm -f conftest*
1576     $1])
1577   else
1578     ifelse([$2], , , [rm -f conftest*
1579     $2])
1580   fi
1581 else
1582   echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
1583   cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
1584   ifelse([$2], , , [rm -f conftest*
1585   $2])
1587 rm -f conftest*])
1589 if test $elf = yes; then
1590   libc_cv_asm_underscores=no
1591 else
1592   if test $ac_cv_prog_cc_works = yes; then
1593     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1594                    [AC_TRY_LINK([asm ("_glibc_foobar:");], [glibc_foobar ();],
1595                                 libc_cv_asm_underscores=yes,
1596                                 libc_cv_asm_underscores=no)])
1597   else
1598     AC_CACHE_CHECK(for _ prefix on C symbol names, libc_cv_asm_underscores,
1599                    [AC_CHECK_ASM_UNDERSCORE(libc_cv_asm_underscores=yes,
1600                                             libc_cv_asm_underscores=no)])
1601   fi
1603 if test $libc_cv_asm_underscores = no; then
1604   AC_DEFINE(NO_UNDERSCORES)
1607 if test $elf = yes; then
1608   libc_cv_weak_symbols=yes
1611 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1612                [dnl
1613 cat > conftest.s <<EOF
1614 ${libc_cv_dot_text}
1615 ${libc_cv_asm_global_directive} foo
1616 foo:
1617 .weak foo
1618 .weak bar; bar = foo
1620 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1621   libc_cv_asm_weak_directive=yes
1622 else
1623   libc_cv_asm_weak_directive=no
1625 rm -f conftest*])
1627 if test $libc_cv_asm_weak_directive = no; then
1628   AC_CACHE_CHECK(for assembler .weakext directive,
1629                  libc_cv_asm_weakext_directive,
1630                  [dnl
1631 cat > conftest.s <<EOF
1632 ${libc_cv_dot_text}
1633 ${libc_cv_asm_global_directive} foo
1634 foo:
1635 .weakext bar foo
1636 .weakext baz
1637 ${libc_cv_asm_global_directive} baz
1638 baz:
1640   if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1641     libc_cv_asm_weakext_directive=yes
1642   else
1643     libc_cv_asm_weakext_directive=no
1644   fi
1645   rm -f conftest*])
1647 fi # no .weak
1649 if test $libc_cv_asm_weak_directive = yes; then
1650   AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1651 elif test $libc_cv_asm_weakext_directive = yes; then
1652   AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1655 AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
1656 cat > conftest.s <<EOF
1657         .text
1658         .type   func,%function
1659 func:
1660         .cfi_startproc
1661         .cfi_remember_state
1662         .cfi_rel_offset 1, 0
1663         .cfi_endproc
1665 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1666   libc_cv_asm_cfi_directives=yes
1667 else
1668   libc_cv_asm_cfi_directives=no
1670 rm -f conftest*])
1671 if test $libc_cv_asm_cfi_directives = yes; then
1672   AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
1675 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1676 cat > conftest.c <<\EOF
1677 _start () {}
1678 int __eh_pc;
1679 __throw () {}
1681 dnl No \ in command here because it ends up inside ''.
1682 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1683                             -nostdlib -nostartfiles -Wl,--no-whole-archive
1684                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1685   libc_cv_ld_no_whole_archive=yes
1686 else
1687   libc_cv_ld_no_whole_archive=no
1689 rm -f conftest*])
1690 if test $libc_cv_ld_no_whole_archive = yes; then
1691   no_whole_archive=-Wl,--no-whole-archive
1693 AC_SUBST(no_whole_archive)dnl
1695 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1696 cat > conftest.c <<\EOF
1697 _start () {}
1698 int __eh_pc;
1699 __throw () {}
1701 dnl No \ in command here because it ends up inside ''.
1702 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1703                             -nostdlib -nostartfiles -fexceptions
1704                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1705   libc_cv_gcc_exceptions=yes
1706 else
1707   libc_cv_gcc_exceptions=no
1709 rm -f conftest*])
1710 if test $libc_cv_gcc_exceptions = yes; then
1711   exceptions=-fexceptions
1713 AC_SUBST(exceptions)dnl
1715 if test "$host_cpu" = powerpc ; then
1716 # Check for a bug present in at least versions 2.8.x of GCC
1717 # and versions 1.0.x of EGCS.
1718 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1719 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1720                libc_cv_c_asmcr0_bug='no',
1721                libc_cv_c_asmcr0_bug='yes')])
1722 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1723   AC_DEFINE(BROKEN_PPC_ASM_CR0)
1727 AC_CACHE_CHECK(for DWARF2 unwind info support, libc_cv_gcc_dwarf2_unwind_info,
1728 [cat > conftest.c <<EOF
1729 #line $LINENO "configure"
1730 static char *__EH_FRAME_BEGIN__;
1731 _start ()
1733 #ifdef CHECK__register_frame
1734   __register_frame (__EH_FRAME_BEGIN__);
1735   __deregister_frame (__EH_FRAME_BEGIN__);
1736 #endif
1737 #ifdef CHECK__register_frame_info
1738   __register_frame_info (__EH_FRAME_BEGIN__);
1739   __deregister_frame_info (__EH_FRAME_BEGIN__);
1740 #endif
1742 int __eh_pc;
1743 __throw () {}
1744 /* FIXME: this is fragile.  */
1745 malloc () {}
1746 strcmp () {}
1747 strlen () {}
1748 memcpy () {}
1749 memset () {}
1750 free () {}
1751 abort () {}
1752 __bzero () {}
1753 dl_iterate_phdr () {}
1755 libc_unwind_check="${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame_info \
1756                             $LDFLAGS \
1757                             -nostdlib -nostartfiles -o conftest conftest.c \
1758                             -lgcc"
1759 # Some platforms' specs put -lgcc first.  The second one doesn't hurt.
1760 if AC_TRY_COMMAND([$libc_unwind_check >&AS_MESSAGE_LOG_FD]) ||
1761    AC_TRY_COMMAND([$libc_unwind_check -lgcc_eh -lgcc >&AS_MESSAGE_LOG_FD])
1762 then
1763   if $libc_unwind_check -v 2>&1 >/dev/null \
1764      | grep -- --eh-frame-hdr 2>&1 >/dev/null; then
1765     libc_cv_gcc_dwarf2_unwind_info=no_registry_needed
1766   else
1767     libc_cv_gcc_dwarf2_unwind_info=static
1768   fi
1769 else
1770   libc_cv_gcc_dwarf2_unwind_info=no
1772 if test $libc_cv_gcc_dwarf2_unwind_info = no; then
1773   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -DCHECK__register_frame
1774                               $LDFLAGS -nostdlib -nostartfiles
1775                               -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1776     libc_cv_gcc_dwarf2_unwind_info=yes
1777   else
1778     libc_cv_gcc_dwarf2_unwind_info=no
1779   fi
1781 rm -f conftest*])
1782 case $libc_cv_gcc_dwarf2_unwind_info in
1783 yes)
1784   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1785   ;;
1786 static)
1787   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO)
1788   AC_DEFINE(HAVE_DWARF2_UNWIND_INFO_STATIC)
1789   ;;
1790 esac
1792 dnl Check whether compiler understands __builtin_expect.
1793 AC_CACHE_CHECK(for __builtin_expect, libc_cv_gcc_builtin_expect,
1794 [cat > conftest.c <<EOF
1795 #line $LINENO "configure"
1796 int foo (int a)
1798   a = __builtin_expect (a, 10);
1799   return a == 10 ? 0 : 1;
1802 dnl No \ in command here because it ends up inside ''.
1803 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostdlib -nostartfiles
1804                             -o conftest conftest.c -lgcc >&AS_MESSAGE_LOG_FD]); then
1805   libc_cv_gcc_builtin_expect=yes
1806 else
1807   libc_cv_gcc_builtin_expect=no
1809 rm -f conftest*])
1810 if test "$libc_cv_gcc_builtin_expect" = yes; then
1811   AC_DEFINE(HAVE_BUILTIN_EXPECT)
1814 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1815 cat > conftest.c <<\EOF
1816 void zero (void *x)
1818   __builtin_memset (x, 0, 1000);
1822 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1823 then
1824   libc_cv_gcc_builtin_memset=no
1825 else
1826   libc_cv_gcc_builtin_memset=yes
1828 rm -f conftest* ])
1829 if test "$libc_cv_gcc_builtin_memset" = yes ; then
1830   AC_DEFINE(HAVE_BUILTIN_MEMSET)
1833 AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1834 cat > conftest.c <<\EOF
1835 extern char *strstr (const char *, const char *) __asm ("my_strstr");
1836 char *foo (const char *a, const char *b)
1838   return __builtin_strstr (a, b);
1842 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
1843 then
1844   libc_cv_gcc_builtin_redirection=yes
1845 else
1846   libc_cv_gcc_builtin_redirection=no
1848 rm -f conftest* ])
1849 if test "$libc_cv_gcc_builtin_redirection" = yes ; then
1850   AC_DEFINE(HAVE_BUILTIN_REDIRECTION)
1853 dnl Check whether the compiler supports the __thread keyword.
1854 if test "x$use__thread" != xno; then
1855   AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1856   [cat > conftest.c <<\EOF
1857 __thread int a = 42;
1859   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
1860     libc_cv_gcc___thread=yes
1861   else
1862     libc_cv_gcc___thread=no
1863   fi
1864   rm -f conftest*])
1865   if test "$libc_cv_gcc___thread" = yes; then
1866     AC_DEFINE(HAVE___THREAD)
1867   fi
1868 else
1869   libc_cv_gcc___thread=no
1872 if test "$libc_cv_gcc___thread" = yes; then
1873   dnl Check whether the compiler supports the tls_model attribute.
1874   AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1875   cat > conftest.c <<\EOF
1876 extern __thread int a __attribute__((tls_model ("initial-exec")));
1878   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
1879     libc_cv_gcc_tls_model_attr=yes
1880   else
1881     libc_cv_gcc_tls_model_attr=no
1882   fi
1883   rm -f conftest*])
1884   if test "$libc_cv_gcc_tls_model_attr" = yes; then
1885     AC_DEFINE(HAVE_TLS_MODEL_ATTRIBUTE)
1886   fi
1889 dnl Check whether we have the gd library available.
1890 AC_MSG_CHECKING(for libgd)
1891 if test "$with_gd" != "no"; then
1892   old_CFLAGS="$CFLAGS"
1893   CFLAGS="$CFLAGS $libgd_include"
1894   old_LDFLAGS="$LDFLAGS"
1895   LDFLAGS="$LDFLAGS $libgd_ldflags"
1896   old_LIBS="$LIBS"
1897   LIBS="$LIBS -lgd -lpng -lz -lm"
1898   AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1899   CFLAGS="$old_CFLAGS"
1900   LDFLAGS="$old_LDFLAGS"
1901   LIBS="$old_LIBS"
1902 else
1903   LIBGD=no
1905 AC_MSG_RESULT($LIBGD)
1906 AC_SUBST(LIBGD)
1908 # SELinux detection
1909 if test x$with_selinux = xno ; then
1910   have_selinux=no;
1911 else
1912   # See if we have the SELinux library
1913   AC_CHECK_LIB(selinux, is_selinux_enabled,
1914                have_selinux=yes, have_selinux=no)
1915   # See if we have the SELinux header with the NSCD permissions in it.
1916   if test x$have_selinux = xyes ; then
1917     AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h])
1918     AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
1919                     [#ifdef NSCD__SHMEMHOST
1920                      return 0;
1921                      #else
1922                      #error NSCD__SHMEMHOST not defined
1923                      #endif],
1924                     have_selinux=yes, have_selinux=no)
1925     AC_MSG_RESULT($have_selinux)
1926   fi
1928   if test x$with_selinux = xyes ; then
1929     if test x$have_selinux = xno ; then
1930       AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found])
1931     fi
1932   fi
1934 # Check if we're building with SELinux support.
1935 if test "x$have_selinux" = xyes; then
1936   AC_DEFINE(HAVE_SELINUX,1,[SELinux support])
1938   # See if we have the libaudit library
1939   AC_CHECK_LIB(audit, audit_log_avc,
1940               have_libaudit=yes, have_libaudit=no)
1941   if test "x$have_libaudit" = xyes; then
1942     AC_DEFINE(HAVE_LIBAUDIT,1,[SELinux libaudit support])
1943   fi
1944   AC_SUBST(have_libaudit)
1946 AC_SUBST(have_selinux)
1948 dnl check for the size of 'long double'.
1949 AC_CHECK_SIZEOF(long double, 0)
1950 sizeof_long_double=$ac_cv_sizeof_long_double
1951 AC_SUBST(sizeof_long_double)
1953 ### End of automated tests.
1954 ### Now run sysdeps configure fragments.
1956 # They also can set these variables.
1957 use_ldconfig=no
1958 ldd_rewrite_script=no
1959 libc_cv_sysconfdir=$sysconfdir
1960 libc_cv_gcc_unwind_find_fde=no
1961 libc_cv_idn=no
1963 # Iterate over all the sysdep directories we will use, running their
1964 # configure fragments, and looking for a uname implementation.
1965 uname=
1966 for dir in $sysnames; do
1967   case $dir in
1968     /*) dest=$dir ;;
1969     *)  dest=$srcdir/$dir ;;
1970   esac
1971   if test -r $dest/configure; then
1972     AC_MSG_RESULT(running configure fragment for $dir)
1973     . $dest/configure
1974   fi
1976   if test -z "$uname"; then
1977     if test -r $dest/uname.c ||
1978        test -r $dest/uname.S ||
1979        { test -r $dest/syscalls.list &&
1980          grep '^uname[  ]' $dest/syscalls.list >/dev/null; }; then
1981       uname=$dir
1982     fi
1983   fi
1984 ]dnl
1985 done
1987 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
1988   AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
1990 AC_SUBST(libc_cv_gcc_unwind_find_fde)
1992 # If we will use the generic uname implementation, we must figure out what
1993 # it will say by examining the system, and write the results in config-name.h.
1994 if test "$uname" = "sysdeps/generic"; then
1996 changequote(,)dnl
1997   uname_sysname=`echo $config_os | sed 's/[0-9.]*$//'`
1998 changequote([,])dnl
1999   if test $uname_sysname != $config_os; then
2000     config_release=`echo $config_os | sed s/$uname_sysname//`
2001   fi
2003 AC_DEFUN(LIBC_KERNEL_ID, [dnl
2004     if test -r /vmunix; then
2005       kernel_id=`strings /vmunix | grep UNIX`
2006     elif test -r /dynix; then
2007       kernel_id=`strings /dynix | grep DYNIX`
2008     else
2009       kernel_id=
2010     fi
2011 ])dnl
2013   AC_CACHE_CHECK(OS release for uname, libc_cv_uname_release, [dnl
2014 LIBC_KERNEL_ID
2015 changequote(,)dnl
2016   kernel_release=`echo "$kernel_id" | sed 's/^[^0-9.]*\([0-9.]*\).*$/\1/'`
2017 changequote([,])dnl
2018   if test x`echo "$config_release" | sed "s/^$kernel_release//"` \
2019          != x$config_release; then
2020     # The configuration release is a substring of the kernel release.
2021     libc_cv_uname_release=$kernel_release
2022   elif test x$config_release != x; then
2023     libc_cv_uname_release=$config_release
2024   elif test x$kernel_release != x; then
2025     libc_cv_uname_release=$kernel_release
2026   else
2027     libc_cv_uname_release=unknown
2028   fi])
2029   uname_release="$libc_cv_uname_release"
2031   AC_CACHE_CHECK(OS version for uname, libc_cv_uname_version, [dnl
2032 LIBC_KERNEL_ID
2033 changequote(,)dnl
2034   kernel_version=`echo "$kernel_id" | sed 's/^[^#]*#\([0-9]*\).*$/\1/'`
2035 changequote([,])dnl
2036   if test -n "$kernel_version"; then
2037     libc_cv_uname_version="$kernel_version"
2038   else
2039     libc_cv_uname_version=unknown
2040   fi])
2041   uname_version="$libc_cv_uname_version"
2043 AC_SUBST(uname_sysname) AC_SUBST(uname_release) AC_SUBST(uname_version)dnl
2044   config_uname=config-name.h:config-name.in
2045 else
2046   # For non-generic uname, we don't need to create config-name.h at all.
2047   config_uname=
2050 dnl This is tested by existing code and it's simpler to avoid changing it.
2051 AC_DEFINE(USE_IN_LIBIO)
2053 # Test for old glibc 2.0.x headers so that they can be removed properly
2054 # Search only in includedir.
2055 AC_MSG_CHECKING(for old glibc 2.0.x headers)
2056 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
2057 then
2058   old_glibc_headers=yes
2059 else
2060   old_glibc_headers=no
2062 AC_MSG_RESULT($old_glibc_headers)
2063 if test ${old_glibc_headers} = yes; then
2064   AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
2065   AC_MSG_WARN(*** be removed.)
2067 AC_SUBST(old_glibc_headers)
2069 AC_SUBST(libc_cv_slibdir)
2070 AC_SUBST(libc_cv_localedir)
2071 AC_SUBST(libc_cv_sysconfdir)
2072 AC_SUBST(libc_cv_rootsbindir)
2073 AC_SUBST(libc_cv_forced_unwind)
2075 AC_SUBST(use_ldconfig)
2076 AC_SUBST(ldd_rewrite_script)
2078 AC_SUBST(elf) AC_SUBST(xcoff)
2079 if test $elf = yes; then
2080   AC_DEFINE(HAVE_ELF)
2082 if test $xcoff = yes; then
2083   AC_DEFINE(HAVE_XCOFF)
2086 AC_SUBST(static)
2087 AC_SUBST(shared)
2088 if test $shared = default; then
2089   shared=$elf
2092 if test x"$libc_cv_idn" = xyes; then
2093   AC_DEFINE(HAVE_LIBIDN)
2096 AC_CACHE_CHECK([whether -fPIC is default], pic_default,
2097 [pic_default=yes
2098 cat > conftest.c <<EOF
2099 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
2100 # error PIC is default.
2101 #endif
2103 if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
2104   pic_default=no
2106 rm -f conftest.*])
2107 AC_SUBST(pic_default)
2109 AC_SUBST(profile)
2110 AC_SUBST(omitfp)
2111 AC_SUBST(bounded)
2112 AC_SUBST(static_nss)
2113 AC_SUBST(nopic_initfini)
2115 AC_SUBST(DEFINES)
2117 dnl See sysdeps/mach/configure.in for this variable.
2118 AC_SUBST(mach_interface_list)
2120 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
2121   config_makefile=
2122 else
2123   config_makefile=Makefile
2126 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
2127 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
2128 AC_SUBST(VERSION)
2129 AC_SUBST(RELEASE)
2131 AC_CONFIG_FILES([config.make ${config_makefile} ${config_uname}])
2132 AC_CONFIG_COMMANDS([default],[[
2133 case $CONFIG_FILES in *config.make*)
2134 echo "$config_vars" >> config.make;;
2135 esac
2136 test -d bits || mkdir bits]],[[config_vars='$config_vars']])
2137 AC_OUTPUT