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