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