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