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