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