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