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