Avoid "anonymous" code in pthread_spin_lock.
[glibc.git] / configure.in
blob19a2c1a0f0f410e039946a2cb6d87bd23d07a736
1 dnl Process this file with autoconf to produce a configure script.
2 AC_PREREQ(2.53)dnl              dnl Minimum Autoconf version required.
3 AC_INIT([GNU C Library], [(see version.h)], [http://sourceware.org/bugzilla/], [glibc])
4 AC_CONFIG_SRCDIR([include/features.h])
5 AC_CONFIG_HEADERS([config.h])
6 AC_CONFIG_AUX_DIR([scripts])
8 dnl This is here so we can set $subdirs directly based on configure fragments.
9 AC_CONFIG_SUBDIRS()
11 AC_CANONICAL_HOST
13 AC_PROG_CC
14 if test $host != $build; then
15   AC_CHECK_PROGS(BUILD_CC, gcc cc)
17 AC_SUBST(cross_compiling)
18 AC_PROG_CPP
19 # We need the C++ compiler only for testing.
20 AC_PROG_CXX
22 if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then
23   AC_MSG_ERROR([you must configure in a separate build directory])
26 # This will get text that should go into config.make.
27 config_vars=
29 # Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
30 AC_ARG_WITH([gd],
31             AC_HELP_STRING([--with-gd=DIR],
32                            [find libgd include dir and library with prefix DIR]),
33             [dnl
34 case "$with_gd" in
35 yes|''|no) ;;
36 *) libgd_include="-I$withval/include"
37    libgd_ldflags="-L$withval/lib" ;;
38 esac
40 AC_ARG_WITH([gd-include],
41             AC_HELP_STRING([--with-gd-include=DIR],
42                            [find libgd include files in DIR]),
43             [dnl
44 case "$with_gd_include" in
45 ''|no) ;;
46 *) libgd_include="-I$withval" ;;
47 esac
49 AC_ARG_WITH([gd-lib],
50             AC_HELP_STRING([--with-gd-lib=DIR],
51                            [find libgd library files in DIR]),
52             [dnl
53 case "$with_gd_lib" in
54 ''|no) ;;
55 *) libgd_ldflags="-L$withval" ;;
56 esac
59 if test -n "$libgd_include"; then
60   config_vars="$config_vars
61 CFLAGS-memusagestat.c = $libgd_include"
63 if test -n "$libgd_ldflags"; then
64   config_vars="$config_vars
65 libgd-LDFLAGS = $libgd_ldflags"
68 dnl Arguments to specify presence of other packages/features.
69 AC_ARG_WITH([fp],
70             AC_HELP_STRING([--with-fp],
71                            [if using floating-point hardware @<:@default=yes@:>@]),
72             [with_fp=$withval],
73             [with_fp=yes])
74 AC_SUBST(with_fp)
75 AC_ARG_WITH([binutils],
76             AC_HELP_STRING([--with-binutils=PATH],
77                            [specify location of binutils (as and ld)]),
78             [path_binutils=$withval],
79             [path_binutils=''])
80 AC_ARG_WITH([selinux],
81             AC_HELP_STRING([--with-selinux],
82                            [if building with SELinux support]),
83             [with_selinux=$withval],
84             [with_selinux=auto])
86 AC_ARG_WITH([headers],
87             AC_HELP_STRING([--with-headers=PATH],
88                            [location of system headers to use
89                             (for example /usr/src/linux/include)
90                             @<:@default=compiler default@:>@]),
91             [sysheaders=$withval],
92             [sysheaders=''])
94 AC_SUBST(use_default_link)
95 AC_ARG_WITH([default-link],
96             AC_HELP_STRING([--with-default-link],
97                            [do not use explicit linker scripts]),
98             [use_default_link=$withval],
99             [use_default_link=default])
101 AC_ARG_ENABLE([sanity-checks],
102               AC_HELP_STRING([--disable-sanity-checks],
103                              [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
104               [enable_sanity=$enableval],
105               [enable_sanity=yes])
107 AC_ARG_ENABLE([shared],
108               AC_HELP_STRING([--enable-shared],
109                              [build shared library @<:@default=yes if GNU ld@:>@]),
110               [shared=$enableval],
111               [shared=yes])
112 AC_ARG_ENABLE([profile],
113               AC_HELP_STRING([--enable-profile],
114                              [build profiled library @<:@default=no@:>@]),
115               [profile=$enableval],
116               [profile=no])
117 AC_ARG_ENABLE([versioning],
118               AC_HELP_STRING([--disable-versioning],
119                              [do not include versioning information in the library objects @<:@default=yes if supported@:>@]),
120               [enable_versioning=$enableval],
121               [enable_versioning=yes])
123 AC_ARG_ENABLE([oldest-abi],
124               AC_HELP_STRING([--enable-oldest-abi=ABI],
125                              [configure the oldest ABI supported @<:@e.g. 2.2@:>@ @<:@default=glibc default@:>@]),
126               [oldest_abi=$enableval],
127               [oldest_abi=no])
128 if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
129   oldest_abi=default
130 else
131   AC_DEFINE_UNQUOTED(GLIBC_OLDEST_ABI, "$oldest_abi")
133 AC_SUBST(oldest_abi)
135 AC_ARG_ENABLE([stackguard-randomization],
136               AC_HELP_STRING([--enable-stackguard-randomization],
137                              [initialize __stack_chk_guard canary with a random number at program start]),
138               [enable_stackguard_randomize=$enableval],
139               [enable_stackguard_randomize=no])
140 if test "$enable_stackguard_randomize" = yes; then
141   AC_DEFINE(ENABLE_STACKGUARD_RANDOMIZE)
144 dnl Generic infrastructure for drop-in additions to libc.
145 AC_ARG_ENABLE([add-ons],
146               AC_HELP_STRING([--enable-add-ons@<:@=DIRS...@:>@],
147                              [configure and build add-ons in DIR1,DIR2,...
148                               search for add-ons if no parameter given]),
149                              , [enable_add_ons=yes])
151 AC_ARG_ENABLE([hidden-plt],
152               AC_HELP_STRING([--disable-hidden-plt],
153                              [do not hide internal function calls to avoid PLT]),
154               [hidden=$enableval],
155               [hidden=yes])
156 if test "x$hidden" = xno; then
157   AC_DEFINE(NO_HIDDEN)
160 AC_ARG_ENABLE([bind-now],
161               AC_HELP_STRING([--enable-bind-now],
162                              [disable lazy relocations in DSOs]),
163               [bindnow=$enableval],
164               [bindnow=no])
165 AC_SUBST(bindnow)
167 dnl On some platforms we cannot use dynamic loading.  We must provide
168 dnl static NSS modules.
169 AC_ARG_ENABLE([static-nss],
170               AC_HELP_STRING([--enable-static-nss],
171                              [build static NSS modules @<:@default=no@:>@]),
172               [static_nss=$enableval],
173               [static_nss=no])
174 dnl Enable static NSS also if we build no shared objects.
175 if test x"$static_nss" = xyes || test x"$shared" = xno; then
176   static_nss=yes
177   AC_DEFINE(DO_STATIC_NSS)
180 AC_ARG_ENABLE([force-install],
181               AC_HELP_STRING([--disable-force-install],
182                              [don't force installation of files from this package, even if they are older than the installed files]),
183               [force_install=$enableval],
184               [force_install=yes])
185 AC_SUBST(force_install)
187 dnl On some platforms we allow dropping compatibility with all kernel
188 dnl versions.
189 AC_ARG_ENABLE([kernel],
190               AC_HELP_STRING([--enable-kernel=VERSION],
191                              [compile for compatibility with kernel not older than VERSION]),
192               [minimum_kernel=$enableval],
193               [])
194 dnl Prevent unreasonable values.
195 if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
196   # Better nothing than this.
197   minimum_kernel=""
198 else
199   if test "$minimum_kernel" = current; then
200     minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
201   fi
204 dnl For the development we sometimes want gcc to issue even more warnings.
205 dnl This is not the default since many of the extra warnings are not
206 dnl appropriate.
207 AC_ARG_ENABLE([all-warnings],
208               AC_HELP_STRING([--enable-all-warnings],
209                              [enable all useful warnings gcc can issue]),
210               [all_warnings=$enableval],
211               [])
212 AC_SUBST(all_warnings)
214 AC_ARG_ENABLE([multi-arch],
215               AC_HELP_STRING([--enable-multi-arch],
216                              [enable single DSO with optimizations for multiple architectures]),
217               [multi_arch=$enableval],
218               [multi_arch=default])
220 AC_ARG_ENABLE([nss-crypt],
221               AC_HELP_STRING([--enable-nss-crypt],
222                              [enable libcrypt to use nss]),
223               [nss_crypt=$enableval],
224               [nss_crypt=no])
225 if test x$nss_crypt = xyes; then
226   nss_includes=-I$(nss-config --includedir 2>/dev/null)
227   if test $? -ne 0; then
228     AC_MSG_ERROR([cannot find include directory with nss-config])
229   fi
230   old_CFLAGS="$CFLAGS"
231   CFLAGS="$CFLAGS $nss_includes"
232   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
233 #include <hasht.h>
234 #include <nsslowhash.h>
235 void f (void) { NSSLOW_Init (); }])],
236              libc_cv_nss_crypt=yes,
237              AC_MSG_ERROR([
238 cannot find NSS headers with lowlevel hash function interfaces]))
239   old_LIBS="$LIBS"
240   LIBS="$LIBS -lfreebl3"
241   AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
242 #include <hasht.h>
243 #include <nsslowhash.h>],
244                                   [NSSLOW_Init();])],
245                  libc_cv_nss_crypt=yes,
246                  AC_MSG_ERROR([
247 cannot link program using lowlevel NSS hash functions]))
248   CFLAGS="$old_CFLAGS"
249   LIBS="$old_LIBS"
250 else
251   libc_cv_nss_crypt=no
253 AC_SUBST(libc_cv_nss_crypt)
255 # The way shlib-versions is used to generate soversions.mk uses a
256 # fairly simplistic model for name recognition that can't distinguish
257 # i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a $host_os
258 # of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
259 # tell.  This doesn't get used much beyond that, so it's fairly safe.
260 case "$host_os" in
261 linux*)
262   ;;
263 gnu*)
264   host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
265   ;;
266 esac
268 # We keep the original values in `$config_*' and never modify them, so we
269 # can write them unchanged into config.make.  Everything else uses
270 # $machine, $vendor, and $os, and changes them whenever convenient.
271 config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
273 # Don't allow vendor == "unknown"
274 test "$config_vendor" = unknown && config_vendor=
275 config_os="`echo $config_os | sed 's/^unknown-//'`"
277 # Some configurations imply other options.
278 elf=yes
280 # The configure fragment of an add-on port can modify these to supplement
281 # or override the table in the case statement below.  No fragment should
282 # ever change the config_* variables, however.
283 machine=$config_machine
284 vendor=$config_vendor
285 os=$config_os
286 base_os=''
288 # config.guess on some IBM machines says `rs6000' instead of `powerpc'.
289 # Unify this here.
290 if test "$machine" = rs6000; then
291   machine="powerpc"
294 # Braindead PowerPC box with absolutely no FPU.
295 case "$machine-$host_os" in
296   powerpc*-*soft)
297     with_fp=no
298     ;;
299 esac
301 submachine=
302 AC_ARG_WITH([cpu],
303             AS_HELP_STRING([--with-cpu=CPU], [select code for CPU variant]),
304             [dnl
305   case "$withval" in
306   yes|'') AC_MSG_ERROR([--with-cpu requires an argument]) ;;
307   no) ;;
308   *) submachine="$withval" ;;
309   esac
312 dnl Let sysdeps/*/preconfigure act here, like they can in add-ons.
313 LIBC_PRECONFIGURE([$srcdir], [for sysdeps])
315 # An add-on can set this when it wants to disable the sanity check below.
316 libc_config_ok=no
318 dnl Having this here, though empty, makes sure that if add-ons' fragments
319 dnl do AC_CONFIG_SUBDIRS([some-dir]), which just sets $subdirs, then
320 dnl our AC_OUTPUT will actually use it.
321 AC_CONFIG_SUBDIRS()
323 case "$enable_add_ons" in
324 ''|no) add_ons= ;;
325 yes|'*')
326  add_ons=`cd $srcdir && ls -d 2> /dev/null */configure */sysdeps |
327           sed 's@/[[^/]]*$@@' | sort | uniq`
328          add_ons_automatic=yes
329          ;;
330 *) add_ons=`echo "$enable_add_ons" | sed 's/,/ /g'`
331        add_ons_automatic=no ;;
332 esac
334 configured_add_ons=
335 add_ons_sfx=
336 add_ons_pfx=
337 if test x"$add_ons" != x; then
338   for f in $add_ons; do
339     # Some sanity checks
340     case "$f" in
341     crypt)
342       AC_MSG_ERROR([
343 *** It seems that you're using an old \`crypt' add-on.  crypt is now
344 *** part of glibc and using the old add-on will not work with this
345 *** release.  Start again with fresh sources and without the old
346 *** \`crypt' add-on.])
347     ;;
348     localedata)
349       AC_MSG_ERROR([
350 *** It seems that you're using an old \`localedata' add-on.  localedata
351 *** is now part of glibc and using the old add-on will not work with
352 *** this release.  Start again with fresh sources and without the old
353 *** \`localedata' add-on.])
354     ;;
355     esac
356   done
358   # Now source each add-on's configure fragment.
359   # The fragments can use $srcdir/$libc_add_on to find themselves,
360   # and test $add_ons_automatic to see if they were explicitly requested.
361   # A fragment can clear (or even change) $libc_add_on to affect
362   # whether it goes into the list to be actually used in the build.
363   use_add_ons=
364   for libc_add_on in $add_ons; do
365     # Test whether such a directory really exists.
366     # It can be absolute, or relative to $srcdir, or relative to the build dir.
367     case "$libc_add_on" in
368     /*)
369       libc_add_on_srcdir=$libc_add_on
370       ;;
371     *)
372       test -d "$srcdir/$libc_add_on" || {
373         if test -d "$libc_add_on"; then
374           libc_add_on="`pwd`/$libc_add_on"
375         else
376           AC_MSG_ERROR(add-on directory \"$libc_add_on\" does not exist)
377         fi
378       }
379       libc_add_on_srcdir=$srcdir/$libc_add_on
380       ;;
381     esac
383     libc_add_on_frag=$libc_add_on_srcdir/configure
384     libc_add_on_canonical=
385     libc_add_on_config_subdirs=
386     if test -r "$libc_add_on_frag"; then
387       AC_MSG_NOTICE(running configure fragment for add-on $libc_add_on)
388       libc_add_on_canonical=unknown
389       libc_add_on_subdirs=
390       . "$libc_add_on_frag"
391       test -z "$libc_add_on" || {
392         configured_add_ons="$configured_add_ons $libc_add_on"
393         if test "x$libc_add_on_canonical" = xunknown; then
394           AC_MSG_ERROR(fragment must set \$libc_add_on_canonical)
395         fi
396         for d in $libc_add_on_subdirs; do
397           case "$libc_add_on" in
398           /*) subdir_srcdir="$libc_add_on" ;;
399           *) subdir_srcdir="\$(..)$libc_add_on" ;;
400           esac
401           case "$d" in
402           .)
403             d="${libc_add_on_canonical:-$libc_add_on}"
404             ;;
405           /*)
406             subdir_srcdir="$d"
407             ;;
408           *)
409             subdir_srcdir="$subdir_srcdir/$d"
410             ;;
411           esac
412           d=`echo "$d" | sed 's@/*$@@;s@^.*/@@'`
413           add_on_subdirs="$add_on_subdirs $d"
414           test "$subdir_srcdir" = "\$(..)$d" || config_vars="$config_vars
415 $d-srcdir = $subdir_srcdir"
416         done
417         for d in $libc_add_on_config_subdirs; do
418           case "$d" in
419           /*) AC_MSG_ERROR(dnl
420 fragment uses absolute path in \$libc_add_on_config_subdirs) ;;
421           esac
422           if test ! -d "$libc_add_on_srcdir/$d"; then
423             AC_MSG_ERROR(fragment wants to configure missing directory $d)
424           fi
425           case "$libc_add_on" in
426           /*) AC_MSG_ERROR(dnl
427 relative path required for add-on using \$libc_add_on_config_subdirs) ;;
428           esac
429           subdirs="$subdirs $libc_add_on/$d"
430         done
431       }
432     fi
433     if test -n "$libc_add_on"; then
434       LIBC_PRECONFIGURE([$libc_add_on_srcdir], [add-on $libc_add_on for])
435       use_add_ons="$use_add_ons $libc_add_on"
436       add_ons_pfx="$add_ons_pfx $libc_add_on/"
437       test -z "$libc_add_on_canonical" ||
438       add_ons_sfx="$add_ons_sfx /$libc_add_on_canonical"
439     fi
440   done
441   # Use echo to strip excess whitespace.
442   add_ons="`echo $use_add_ons`"
444 AC_SUBST(add_ons)
445 AC_SUBST(add_on_subdirs)
449 ### I put this here to prevent those annoying emails from people who cannot
450 ### read and try to compile glibc on unsupported platforms.  --drepper
452 ### By using the undocumented --enable-hacker-mode option for configure
453 ### one can skip this test to make the configuration not fail for unsupported
454 ### platforms.
456 if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
457   case "$machine-$host_os" in
458   *-linux* | *-gnu*)
459     ;;
460   *)
461     echo "*** The GNU C library is currently not available for this platform."
462     echo "*** So far nobody cared to port it and if there is no volunteer it"
463     echo "*** might never happen.  So, if you have interest to see glibc on"
464     echo "*** this platform visit"
465     echo "***   http://www.gnu.org/software/libc/porting.html"
466     echo "*** and join the group of porters"
467     exit 1
468     ;;
469   esac
472 dnl We need to use [ and ] for other purposes for a while now.
473 changequote(,)dnl
474 # Expand the configuration machine name into a subdirectory by architecture
475 # type and particular chip.  If an add-on configure fragment already set
476 # base_machine, we don't change it.
477 test -n "$base_machine" || case "$machine" in
478 i[34567]86)     base_machine=i386 machine=i386/$machine ;;
479 powerpc)        base_machine=powerpc machine=powerpc/powerpc32 ;;
480 powerpc64)      base_machine=powerpc machine=powerpc/powerpc64 ;;
481 s390)           base_machine=s390 machine=s390/s390-32 ;;
482 s390x)          base_machine=s390 machine=s390/s390-64 ;;
483 sh3*)           base_machine=sh machine=sh/sh3 ;;
484 sh4*)           base_machine=sh machine=sh/sh4 ;;
485 sparc | sparcv[67])
486                 base_machine=sparc machine=sparc/sparc32 ;;
487 sparcv8 | supersparc | hypersparc)
488                 base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
489 sparcv8plus | sparcv8plusa | sparcv9)
490                 base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
491 sparcv8plusb | sparcv9b)
492                 base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9b ;;
493 sparcv9v)
494                 base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v ;;
495 sparcv9v2)
496                 base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v2 ;;
497 sparc64)
498                 base_machine=sparc machine=sparc/sparc64 ;;
499 sparc64b)
500                 base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
501 sparc64v)
502                 base_machine=sparc machine=sparc/sparc64/sparcv9v ;;
503 sparc64v2)
504                 base_machine=sparc machine=sparc/sparc64/sparcv9v2 ;;
505 *)              base_machine=$machine ;;
506 esac
507 changequote([,])dnl
508 AC_SUBST(base_machine)
510 if test "$base_machine" = "i386"; then
511   AC_DEFINE(USE_REGPARMS)
514 # For the multi-arch option we need support in the assembler.
515 AC_CACHE_CHECK([for assembler gnu_indirect_function symbol type support],
516                libc_cv_asm_gnu_indirect_function, [dnl
517 cat > conftest.s <<EOF
518 .type foo,%gnu_indirect_function
520 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD;
521 then
522   libc_cv_asm_gnu_indirect_function=yes
523 else
524   libc_cv_asm_gnu_indirect_function=no
526 rm -f conftest*])
528 AC_MSG_CHECKING(whether .text pseudo-op must be used)
529 AC_CACHE_VAL(libc_cv_dot_text, [dnl
530 cat > conftest.s <<EOF
531 .text
533 libc_cv_dot_text=
534 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
535   libc_cv_dot_text=.text
537 rm -f conftest*])
538 if test -z "$libc_cv_dot_text"; then
539   AC_MSG_RESULT(no)
540 else
541   AC_MSG_RESULT(yes)
544 AC_CACHE_CHECK(for assembler global-symbol directive,
545                libc_cv_asm_global_directive, [dnl
546 libc_cv_asm_global_directive=UNKNOWN
547 for ac_globl in .globl .global .EXPORT; do
548   cat > conftest.s <<EOF
549         ${libc_cv_dot_text}
550         ${ac_globl} foo
551 foo:
553   if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
554     libc_cv_asm_global_directive=${ac_globl}
555   fi
556   rm -f conftest*
557   test $libc_cv_asm_global_directive != UNKNOWN && break
558 done])
559 if test $libc_cv_asm_global_directive = UNKNOWN; then
560   AC_MSG_ERROR(cannot determine asm global directive)
561 else
562   AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
565 AC_CACHE_CHECK(for assembler .type directive prefix,
566                libc_cv_asm_type_prefix, [dnl
567 libc_cv_asm_type_prefix=no
568 for ac_try_prefix in '@' '%' '#'; do
569   cat > conftest.s <<EOF
570         ${libc_cv_dot_text}
571         ${libc_cv_asm_global_directive} foo
572         .type foo, ${ac_try_prefix}object
573         .size foo, 1
574 foo:
575         .byte 1
577   if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
578     libc_cv_asm_type_prefix=${ac_try_prefix}
579   fi
580   rm -f conftest*
581   test "x$libc_cv_asm_type_prefix" != xno && break
582 done])
583 if test "x$libc_cv_asm_type_prefix" != xno; then
584   AC_DEFINE_UNQUOTED(ASM_TYPE_DIRECTIVE_PREFIX, ${libc_cv_asm_type_prefix})
587 if test x"$libc_cv_asm_gnu_indirect_function" != xyes -o x"$libc_cv_asm_type_prefix" = xno; then
588   if test x"$multi_arch" = xyes; then
589     AC_MSG_ERROR([--enable-multi-arch support requires assembler and linker support])
590   else
591     multi_arch=no
592   fi
594 if test x"$multi_arch" != xno; then
595   multi_arch_d=/multiarch
598 # Compute the list of sysdep directories for this configuration.
599 # This can take a while to compute.
600 sysdep_dir=$srcdir/sysdeps
601 AC_MSG_CHECKING(sysdep dirs)
602 dnl We need to use [ and ] for other purposes for a while now.
603 changequote(,)dnl
604 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
605 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
607 test "x$base_os" != x || case "$os" in
608 gnu*)
609   base_os=mach/hurd ;;
610 linux*)
611   base_os=unix/sysv ;;
612 esac
614 # For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
615 tail=$os
616 ostry=$os
617 while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
618   ostry="$ostry /$o"
619   tail=$o
620 done
621 o=`echo $tail | sed 's/[0-9]*$//'`
622 if test $o != $tail; then
623   ostry="$ostry /$o"
625 # For linux-gnu, try linux-gnu, then linux.
626 o=`echo $tail | sed 's/-.*$//'`
627 if test $o != $tail; then
628   ostry="$ostry /$o"
631 # For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
632 base=
633 tail=$base_os
634 while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
635   set $b
636   base="$base /$1"
637   tail="$2"
638 done
640 # For sparc/sparc32, try sparc/sparc32 and then sparc.
641 mach=
642 tail=$machine${submachine:+/$submachine}
643 while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
644   set $m
645   # Prepend the machine's FPU directory unless --without-fp.
646   if test "$with_fp" = yes; then
647     mach="$mach /$1/fpu"
648   else
649     mach="$mach /$1/nofpu"
650   fi
651   mach="$mach /$1"
652   tail="$2"
653 done
655 dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
656 changequote([,])dnl
658 # Find what sysdep directories exist.
659 sysnames_add_ons=
660 sysnames=
661 for b in $base ''; do
662   for m0 in $mach ''; do
663     for v in /$vendor ''; do
664       test "$v" = / && continue
665       for o in /$ostry ''; do
666         test "$o" = / && continue
667         for m in $multi_arch_d $mach ''; do
668           for d in $add_ons_pfx ''; do
669             for a in $add_ons_sfx ''; do
670               if test -n "$m0$m0sub$b$v$o$m$msub"; then
671                 try_srcdir="${srcdir}/"
672                 case "$d" in
673                 /*) try_srcdir= ;;
674                 esac
675                 try="${d}sysdeps$m0$m0sub$b$v$o$m$msub$a"
676                 test -n "$enable_debug_configure" &&
677                 echo "$0 [DEBUG]: try $try" >&2
678                 if test -d "$try_srcdir$try"; then
679                   sysnames="$sysnames $try"
680                   { test -n "$o" || test -n "$b"; } && os_used=t
681                   { test -n "$m" || test -n "$m0"; } && machine_used=t
682                   case x${m0:-$m} in
683                   x*/$submachine) submachine_used=t ;;
684                   esac
685                   if test -n "$d"; then
686                     case "$sysnames_add_ons" in
687                     *" $d "*) ;;
688                     *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
689                     esac
690                   fi
691                 fi
692               fi
693             done
694           done
695         done
696       done
697     done
698   done
699 done
701 # If the assembler supports gnu_indirect_function symbol type and the
702 # architecture supports multi-arch, we enable multi-arch by default.
703 case $sysnames_add_ons$sysnames in
704 *"$multi_arch_d"*)
705   ;;
707   test x"$multi_arch" = xdefault && multi_arch=no
708   ;;
709 esac
710 if test x"$multi_arch" != xno; then
711   AC_DEFINE(USE_MULTIARCH)
713 AC_SUBST(multi_arch)
715 if test -z "$os_used" && test "$os" != none; then
716   AC_MSG_ERROR(Operating system $os is not supported.)
718 if test -z "$machine_used" && test "$machine" != none; then
719   AC_MSG_ERROR(The $machine is not supported.)
721 if test -z "$submachine_used" && test -n "$submachine"; then
722   AC_MSG_ERROR(The $submachine subspecies of $host_cpu is not supported.)
724 AC_SUBST(submachine)
726 # We have now validated the configuration.
728 # Expand the list of system names into a full list of directories
729 # from each element's parent name and Implies file (if present).
730 set $sysnames
731 names=
732 while test $# -gt 0; do
733   name=$1
734   shift
736   case " $names " in *" $name "*)
737     # Already in the list.
738     continue
739   esac
741   # Report each name as we discover it, so there is no long pause in output.
742   echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
744   name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
746   case $name in
747     /*) xsrcdir= ;;
748     *)  xsrcdir=$srcdir/ ;;
749   esac
750   test -n "$enable_debug_configure" &&
751   echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
753   if test -f $xsrcdir$name/Implies; then
754     # Collect more names from the `Implies' file (removing comments).
755     implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/Implies`"
756     implied=
757     for x in $implied_candidate; do
758       found=no
759       if test -d $xsrcdir$name_base/$x; then
760         implied="$implied $name_base/$x";
761         found=yes
762       fi
763       for d in $add_ons_pfx ''; do
764         try="${d}sysdeps/$x"
765         case $d in
766          /*) try_srcdir= ;;
767          *) try_srcdir=$srcdir/ ;;
768         esac
769         test -n "$enable_debug_configure" &&
770          echo "[DEBUG]: $name implied $x try($d) {$try_srcdir}$try" >&2
771         if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
772         then
773           implied="$implied $try"
774           found=yes
775           case "$sysnames_add_ons" in
776           *" $d "*) ;;
777           *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
778           esac
779         fi
780       done
781       if test $found = no; then
782         AC_MSG_WARN($name/Implies specifies nonexistent $x)
783       fi
784     done
785   else
786     implied=
787   fi
789   # Add NAME to the list of names.
790   names="$names $name"
792   # Find the parent of NAME, using the empty string if it has none.
793 changequote(,)dnl
794   parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
795 changequote([,])dnl
797   # Add the names implied by NAME, and NAME's parent (if it has one), to
798   # the list of names to be processed (the argument list).  We prepend the
799   # implied names to the list and append the parent.  We want implied
800   # directories to come before further directories inferred from the
801   # configuration components; this ensures that for sysv4, unix/common
802   # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
803   # after sysv4).
804   sysnames="`echo $implied $* $parent`"
805   test -n "$sysnames" && set $sysnames
806 done
808 # Add the default directories.
809 default_sysnames="sysdeps/generic"
810 sysnames="$names $default_sysnames"
811 AC_SUBST(sysnames)
812 # The other names were emitted during the scan.
813 AC_MSG_RESULT($default_sysnames)
815 # Collect the list of add-ons that supply partial sysdeps trees.
816 sysdeps_add_ons=
817 for add_on in $add_ons; do
818   case "$add_on" in
819   /*) xsrcdir= ;;
820   *) xsrcdir="$srcdir/" ;;
821   esac
823   test -d "$xsrcdir$add_on/sysdeps" || {
824     case "$configured_add_ons " in
825     *" $add_on "*) ;;
826     *|'')
827       AC_MSG_ERROR(add-on $add_on has no configure fragment or sysdeps tree)
828       ;;
829     esac
830     continue
831   }
833   sysdeps_add_ons="$sysdeps_add_ons $add_on"
834   case "$sysnames_add_ons" in
835   *" $add_on/ "*) ;;
836   *|'')
837     AC_MSG_WARN(add-on $add_on contributed no sysdeps directories)
838     continue ;;
839   esac
841   found=no
842   for d in $sysnames; do
843     case "$d" in
844     $add_on/sysdeps/*) ;;
845     *) continue ;;
846     esac
847     (cd "$xsrcdir$d" && for f in *[[!~]]; do
848        case "$f" in
849        sys|bits)
850          for ff in $f/*.h; do
851            test -d "$ff" || { test -e "$ff" && exit 88; }
852          done
853          ;;
854        *)
855          test -d "$f" || { test -e "$f" && exit 88; }
856          ;;
857        esac
858      done)
859     if test $? -eq 88; then
860       found=yes
861       break
862     fi
863   done
864   if test $found = no; then
865     AC_MSG_WARN(add-on $add_on contributed no useful sysdeps directories)
866   fi
867 done
868 AC_SUBST(sysdeps_add_ons)
871 ### Locate tools.
873 AC_PROG_INSTALL
874 if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
875   # The makefiles need to use a different form to find it in $srcdir.
876   INSTALL='\$(..)./scripts/install-sh -c'
878 AC_PROG_LN_S
880 LIBC_PROG_BINUTILS
881 AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
883 # Accept binutils 2.20 or newer.
884 AC_CHECK_PROG_VER(AS, $AS, --version,
885                   [GNU assembler.* \([0-9]*\.[0-9.]*\)],
886                   [2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], AS=: critic_missing="$critic_missing as")
887 AC_CHECK_PROG_VER(LD, $LD, --version,
888                   [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
889                   [2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], LD=: critic_missing="$critic_missing ld")
891 # These programs are version sensitive.
892 AC_CHECK_TOOL_PREFIX
893 AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
894   [version \([egcygnustpi-]*[0-9.]*\)], [4.[3-9].* | 4.[1-9][0-9].* | [5-9].* ],
895   critic_missing="$critic_missing gcc")
896 AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
897   [GNU Make[^0-9]*\([0-9][0-9.]*\)],
898   [3.79* | 3.[89]*], critic_missing="$critic_missing make")
900 AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
901   [GNU gettext.* \([0-9]*\.[0-9.]*\)],
902   [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
903   MSGFMT=: aux_missing="$aux_missing msgfmt")
904 AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
905   [GNU texinfo.* \([0-9][0-9.]*\)],
906   [4.*],
907   MAKEINFO=: aux_missing="$aux_missing makeinfo")
908 AC_CHECK_PROG_VER(SED, sed, --version,
909   [GNU sed version \([0-9]*\.[0-9.]*\)],
910   [3.0[2-9]*|3.[1-9]*|[4-9]*],
911   SED=: aux_missing="$aux_missing sed")
913 AC_CHECK_TOOL(READELF, readelf, false)
915 AC_CHECK_PROGS(AUTOCONF, autoconf, no)
916 case "x$AUTOCONF" in
917 xno|x|x:) AUTOCONF=no ;;
919   AC_CACHE_CHECK(dnl
920 whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
921   if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
922     libc_cv_autoconf_works=yes
923   else
924     libc_cv_autoconf_works=no
925   fi])
926   test $libc_cv_autoconf_works = yes || AUTOCONF=no
927   ;;
928 esac
929 if test "x$AUTOCONF" = xno; then
930   aux_missing="$aux_missing autoconf"
933 test -n "$critic_missing" && AC_MSG_ERROR([
934 *** These critical programs are missing or too old:$critic_missing
935 *** Check the INSTALL file for required versions.])
937 test -n "$aux_missing" && AC_MSG_WARN([
938 *** These auxiliary programs are missing or incompatible versions:$aux_missing
939 *** some features will be disabled.
940 *** Check the INSTALL file for required versions.])
942 # if using special system headers, find out the compiler's sekrit
943 # header directory and add that to the list.  NOTE: Only does the right
944 # thing on a system that doesn't need fixincludes.  (Not presently a problem.)
945 if test -n "$sysheaders"; then
946   SYSINCLUDES=-nostdinc
947   for d in include include-fixed; do
948     i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
949     SYSINCLUDES="$SYSINCLUDES -isystem $i"
950   done
951   SYSINCLUDES="$SYSINCLUDES \
952 -isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
953   if test -n "$CXX"; then
954     CXX_SYSINCLUDES=
955     cxxversion=`$CXX -dumpversion 2>&AS_MESSAGE_LOG_FD` &&
956     cxxmachine=`$CXX -dumpmachine 2>&AS_MESSAGE_LOG_FD` &&
957     for d in include "$cxxmachine/include"; do
958       i=../../../../$d/c++/$cxxversion
959       cxxheaders=`$CXX -print-file-name="$i"` &&
960       test "x$cxxheaders" != x && test "x$i" != "x$cxxheaders" &&
961       CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders \
962 -isystem $cxxheaders/$cxxmachine -isystem $cxxheaders/backward"
963     done
964   fi
966 AC_SUBST(SYSINCLUDES)
967 AC_SUBST(CXX_SYSINCLUDES)
969 # Test if LD_LIBRARY_PATH contains the notation for the current directory
970 # since this would lead to problems installing/building glibc.
971 # LD_LIBRARY_PATH contains the current directory if one of the following
972 # is true:
973 # - one of the terminals (":" and ";") is the first or last sign
974 # - two terminals occur directly after each other
975 # - the path contains an element with a dot in it
976 AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
977 changequote(,)dnl
978 case ${LD_LIBRARY_PATH} in
979   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
980     ld_library_path_setting="contains current directory"
981     ;;
982   *)
983     ld_library_path_setting="ok"
984     ;;
985 esac
986 changequote([,])dnl
987 AC_MSG_RESULT($ld_library_path_setting)
988 if test "$ld_library_path_setting" != "ok"; then
989 AC_MSG_ERROR([
990 *** LD_LIBRARY_PATH shouldn't contain the current directory when
991 *** building glibc. Please change the environment variable
992 *** and run configure again.])
995 AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
996 if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
997   libc_cv_gcc_static_libgcc=
998 else
999   libc_cv_gcc_static_libgcc=-static-libgcc
1000 fi])
1001 AC_SUBST(libc_cv_gcc_static_libgcc)
1003 AC_PATH_PROG(BASH_SHELL, bash, no)
1004 if test "$BASH_SHELL" != no &&
1005    $BASH_SHELL -c 'test "$BASH_VERSINFO" \
1006              && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
1007   libc_cv_have_bash2=yes
1008 else
1009   libc_cv_have_bash2=no
1011 AC_SUBST(libc_cv_have_bash2)
1013 dnl We need a ksh compatible shell for tzselect.
1014 if test "$BASH_SHELL" = no; then
1015   AC_PATH_PROG(KSH, ksh, no)
1016   if test "$KSH" = no; then
1017     libc_cv_have_ksh=no
1018   else
1019     libc_cv_have_ksh=yes
1020   fi
1021 else
1022   KSH="$BASH_SHELL"
1023   AC_SUBST(KSH)
1024   libc_cv_have_ksh=yes
1026 AC_SUBST(libc_cv_have_ksh)
1028 AC_PROG_AWK
1029 AC_PATH_PROG(PERL, perl, no)
1030 if test "$PERL" != no &&
1031    (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
1032   PERL=no
1034 AC_PATH_PROG(INSTALL_INFO, install-info, no,
1035              $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
1036 AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
1038 AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
1039 AC_TRY_COMPILE(dnl
1040 [#define __need_size_t
1041 #define __need_wchar_t
1042 #include <stddef.h>
1043 #define __need_NULL
1044 #include <stddef.h>], [size_t size; wchar_t wchar;
1045 #ifdef offsetof
1046 #error stddef.h ignored __need_*
1047 #endif
1048 if (&size == NULL || &wchar == NULL) abort ();],
1049                libc_cv_friendly_stddef=yes,
1050                libc_cv_friendly_stddef=no)])
1051 if test $libc_cv_friendly_stddef = yes; then
1052   config_vars="$config_vars
1053 override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
1056 AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
1057                libc_cv_need_minus_P, [dnl
1058 cat > conftest.S <<EOF
1059 #include "confdefs.h"
1060 /* Nothing whatsoever.  */
1062 if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
1063   libc_cv_need_minus_P=no
1064 else
1065   libc_cv_need_minus_P=yes
1067 rm -f conftest*])
1068 if test $libc_cv_need_minus_P = yes; then
1069   config_vars="$config_vars
1070 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
1073 AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
1074 cat > conftest.s <<EOF
1075 ${libc_cv_dot_text}
1076 foo:
1077 .set glibc_conftest_frobozz,foo
1078 $libc_cv_asm_global_directive glibc_conftest_frobozz
1080 # The alpha-dec-osf1 assembler gives only a warning for `.set'
1081 # (but it doesn't work), so we must do a linking check to be sure.
1082 cat > conftest1.c <<\EOF
1083 extern int glibc_conftest_frobozz;
1084 void _start() { glibc_conftest_frobozz = 1; }
1086 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1087             -nostartfiles -nostdlib \
1088             -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1089   libc_cv_asm_set_directive=yes
1090 else
1091   libc_cv_asm_set_directive=no
1093 rm -f conftest*])
1094 if test $libc_cv_asm_set_directive = yes; then
1095   AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
1098 AC_CACHE_CHECK(for assembler gnu_unique_object symbol type,
1099                libc_cv_asm_unique_object, [dnl
1100 cat > conftest.s <<EOF
1101 ${libc_cv_dot_text}
1102 _sym:
1103 .type _sym, ${libc_cv_asm_type_prefix}gnu_unique_object
1105 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1106   libc_cv_asm_unique_object=yes
1107 else
1108   libc_cv_asm_unique_object=no
1110 rm -f conftest*])
1111 if test $libc_cv_asm_unique_object = yes; then
1112   AC_DEFINE(HAVE_ASM_UNIQUE_OBJECT)
1115 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
1116 [cat > conftest.s <<EOF
1117 ${libc_cv_dot_text}
1118 _sym:
1119 .symver _sym,sym@VERS
1121 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1122   libc_cv_asm_symver_directive=yes
1123 else
1124   libc_cv_asm_symver_directive=no
1126 rm -f conftest*])
1127 AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
1128 if test $libc_cv_asm_symver_directive = yes; then
1129   cat > conftest.s <<EOF
1130 ${libc_cv_dot_text}
1131 _sym:
1132 .symver _sym,sym@VERS
1134   cat > conftest.map <<EOF
1135 VERS_1 {
1136         global: sym;
1139 VERS_2 {
1140         global: sym;
1141 } VERS_1;
1143   if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1144     if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
1145                                 -o conftest.so conftest.o
1146                                 -nostartfiles -nostdlib
1147                                 -Wl,--version-script,conftest.map
1148                        1>&AS_MESSAGE_LOG_FD]);
1149     then
1150       libc_cv_ld_version_script_option=yes
1151     else
1152       libc_cv_ld_version_script_option=no
1153     fi
1154   else
1155     libc_cv_ld_version_script_option=no
1156   fi
1157 else
1158   libc_cv_ld_version_script_option=no
1160 rm -f conftest*])
1161 if test $shared != no &&
1162    test $libc_cv_asm_symver_directive = yes &&
1163    test $libc_cv_ld_version_script_option = yes &&
1164    test $enable_versioning = yes; then
1165   VERSIONING=yes
1166   AC_DEFINE(DO_VERSIONING)
1167 else
1168   VERSIONING=no
1170 AC_SUBST(VERSIONING)
1172 if test $shared != no && test $VERSIONING = no; then
1173   echo "\
1174 *** WARNING: You should not compile GNU libc without versioning. Not using
1175 *** versioning will introduce incompatibilities so that old binaries
1176 *** will not run anymore.
1177 *** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
1179 AC_CACHE_CHECK(for .previous assembler directive,
1180                libc_cv_asm_previous_directive, [dnl
1181 cat > conftest.s <<EOF
1182 .section foo_section
1183 .previous
1185 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1186   libc_cv_asm_previous_directive=yes
1187 else
1188   libc_cv_asm_previous_directive=no
1190 rm -f conftest*])
1191 if test $libc_cv_asm_previous_directive = yes; then
1192   AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
1193 else
1194   AC_CACHE_CHECK(for .popsection assembler directive,
1195                  libc_cv_asm_popsection_directive, [dnl
1196   cat > conftest.s <<EOF
1197 .pushsection foo_section
1198 .popsection
1200   if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1201     libc_cv_asm_popsection_directive=yes
1202   else
1203     libc_cv_asm_popsection_directive=no
1204   fi
1205   rm -f conftest*])
1206   if test $libc_cv_asm_popsection_directive = yes; then
1207     AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
1208   fi
1210 AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1211                libc_cv_asm_protected_directive, [dnl
1212 cat > conftest.s <<EOF
1213 .protected foo
1214 foo:
1215 .hidden bar
1216 bar:
1218 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1219   libc_cv_asm_protected_directive=yes
1220 else
1221   AC_MSG_ERROR(assembler support for symbol visibility is required)
1223 rm -f conftest*])
1225 if test $libc_cv_asm_protected_directive = yes; then
1226   AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
1227                  libc_cv_visibility_attribute,
1228                  [cat > conftest.c <<EOF
1229                   int foo __attribute__ ((visibility ("hidden"))) = 1;
1230                   int bar __attribute__ ((visibility ("protected"))) = 1;
1232                   libc_cv_visibility_attribute=no
1233                   if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1234                     if grep '\.hidden.*foo' conftest.s >/dev/null; then
1235                       if grep '\.protected.*bar' conftest.s >/dev/null; then
1236                         libc_cv_visibility_attribute=yes
1237                       fi
1238                     fi
1239                   fi
1240                   rm -f conftest.{c,s}
1241                  ])
1242   if test $libc_cv_visibility_attribute != yes; then
1243     AC_MSG_ERROR(compiler support for visibility attribute is required)
1244   fi
1247 if test $libc_cv_visibility_attribute = yes; then
1248   AC_CACHE_CHECK(for broken __attribute__((visibility())),
1249                  libc_cv_broken_visibility_attribute,
1250                  [cat > conftest.c <<EOF
1251                   int foo (int x);
1252                   int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1253                   int bar (int x) { return x; }
1255                   libc_cv_broken_visibility_attribute=yes
1256                   if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1257 changequote(,)dnl
1258                     if grep '\.hidden[  _]foo' conftest.s >/dev/null; then
1259 changequote([,])dnl
1260                       libc_cv_broken_visibility_attribute=no
1261                     fi
1262                   fi
1263                   rm -f conftest.c conftest.s
1264                  ])
1265   if test $libc_cv_broken_visibility_attribute = yes; then
1266     AC_MSG_ERROR(working compiler support for visibility attribute is required)
1267   fi
1270 AC_CACHE_CHECK(for broken __attribute__((alias())),
1271                libc_cv_broken_alias_attribute,
1272                [cat > conftest.c <<EOF
1273                extern int foo (int x) __asm ("xyzzy");
1274                int bar (int x) { return x; }
1275                extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1276                extern int dfoo;
1277                extern __typeof (dfoo) dfoo __asm ("abccb");
1278                int dfoo = 1;
1280                libc_cv_broken_alias_attribute=yes
1281                if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1282                  if grep 'xyzzy' conftest.s >/dev/null &&
1283                     grep 'abccb' conftest.s >/dev/null; then
1284                    libc_cv_broken_alias_attribute=no
1285                  fi
1286                fi
1287                rm -f conftest.c conftest.s
1288                ])
1289 if test $libc_cv_broken_alias_attribute = yes; then
1290   AC_MSG_ERROR(working alias attribute support required)
1293 if test $libc_cv_visibility_attribute = yes; then
1294   AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1295                  libc_cv_have_sdata_section,
1296                  [echo "int i;" > conftest.c
1297                   libc_cv_have_sdata_section=no
1298                   if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1299                      | grep '\.sdata' >/dev/null; then
1300                     libc_cv_have_sdata_section=yes
1301                   fi
1302                   rm -f conftest.c conftest.so
1303                  ])
1304   if test $libc_cv_have_sdata_section = yes; then
1305     AC_DEFINE(HAVE_SDATA_SECTION)
1306   fi
1309 AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1310                libc_cv_initfini_array, [dnl
1311 LIBC_TRY_LINK_STATIC([
1312 int foo (void) { return 1; }
1313 int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
1315   [if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
1316     libc_cv_initfini_array=yes
1317   else
1318     libc_cv_initfini_array=no
1319   fi],
1320   [libc_cv_initfini_array=no])
1322 if test $libc_cv_initfini_array != yes; then
1323   AC_MSG_ERROR([Need linker with .init_array/.fini_array support.])
1326 AC_CACHE_CHECK(whether to use .ctors/.dtors header and trailer,
1327                libc_cv_ctors_header, [dnl
1328   libc_cv_ctors_header=yes
1329   LIBC_TRY_LINK_STATIC([
1330 __attribute__ ((constructor)) void ctor (void) { asm (""); }
1331 __attribute__ ((destructor))  void dtor (void) { asm (""); }
1333               [dnl
1334       AS_IF([$READELF -WS conftest$ac_exeext | $AWK '
1335         { gsub(/\@<:@ */, "@<:@") }
1336         $2 == ".ctors" || $2 == ".dtors" {
1337           size = strtonum("0x" $6)
1338           align = strtonum("0x" $NF)
1339           seen@<:@$2@:>@ = 1
1340           stub@<:@$2@:>@ = size == align * 2
1341         }
1342         END {
1343           ctors_ok = !seen@<:@".ctors"@:>@ || stub@<:@".ctors"@:>@
1344           dtors_ok = !seen@<:@".dtors"@:>@ || stub@<:@".dtors"@:>@
1345           exit ((ctors_ok && dtors_ok) ? 0 : 1)
1346         }
1347       '], [libc_cv_ctors_header=no])
1348     ], [dnl
1349       AC_MSG_ERROR([missing __attribute__ ((constructor)) support??])
1350     ])
1352 if test $libc_cv_ctors_header = no; then
1353   AC_DEFINE(NO_CTORS_DTORS_SECTIONS)
1356 AC_CACHE_CHECK(for libunwind-support in compiler,
1357                libc_cv_cc_with_libunwind, [
1358   cat > conftest.c <<EOF
1359 int main (void) { return 0; }
1361   if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
1362      conftest.c -v 2>&1 >/dev/null | grep -q " -lunwind "; then
1363     libc_cv_cc_with_libunwind=yes
1364   else
1365     libc_cv_cc_with_libunwind=no
1366   fi
1367   rm -f conftest*])
1368 AC_SUBST(libc_cv_cc_with_libunwind)
1369 if test $libc_cv_cc_with_libunwind = yes; then
1370   AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
1373 AC_CACHE_CHECK(for -z nodelete option,
1374                libc_cv_z_nodelete, [dnl
1375 cat > conftest.c <<EOF
1376 int _start (void) { return 42; }
1378 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1379                    -fPIC -shared -o conftest.so conftest.c
1380                    -nostartfiles -nostdlib
1381                    -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
1382 then
1383   libc_cv_z_nodelete=yes
1384 else
1385   AC_MSG_ERROR(linker with -z nodelete support required)
1387 rm -f conftest*])
1389 AC_CACHE_CHECK(for -z nodlopen option,
1390                libc_cv_z_nodlopen, [dnl
1391 cat > conftest.c <<EOF
1392 int _start (void) { return 42; }
1394 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1395                         -fPIC -shared -o conftest.so conftest.c
1396                         -nostartfiles -nostdlib
1397                         -Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
1398 then
1399   libc_cv_z_nodlopen=yes
1400 else
1401   AC_MSG_ERROR(linker with -z nodlopen support required)
1403 rm -f conftest*])
1405 AC_CACHE_CHECK(for -z initfirst option,
1406                libc_cv_z_initfirst, [dnl
1407 cat > conftest.c <<EOF
1408 int _start (void) { return 42; }
1410 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1411                         -fPIC -shared -o conftest.so conftest.c
1412                         -nostartfiles -nostdlib
1413                         -Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
1414 then
1415   libc_cv_z_initfirst=yes
1416 else
1417   AC_MSG_ERROR(linker with -z initfirst support required)
1419 rm -f conftest*])
1421 # Add-on fragments can set these for other machines.
1422 libc_commonpagesize=${libc_commonpagesize:-no}
1423 libc_relro_required=${libc_relro_required:-no}
1424 case "$base_machine" in
1425   i[[34567]]86 | x86_64 | powerpc* | s390*)
1426     libc_commonpagesize=0x1000
1427     libc_relro_required=yes
1428     ;;
1429   sparc*)
1430     libc_commonpagesize=0x2000
1431     libc_relro_required=yes
1432     ;;
1433 esac
1435 if test $libc_commonpagesize != no; then
1436   AC_CACHE_CHECK(for -z relro option,
1437                  libc_cv_z_relro, [dnl
1438   libc_cv_z_relro=no
1439   AC_LANG_CONFTEST([AC_LANG_SOURCE([[
1440 int _start (void) { return 42; }
1441 extern void _exit (int);
1442 /* Since these pointers are const, they should go in rodata.
1443    Since they refer to functions that have to be resolved by
1444    dynamic linking, they should instead go in RELRO data.  */
1445 const void *const relro[] = { &_start, &_exit, 0 };
1446 /* GNU ld fails to produce RELRO data when it's very small and there is no
1447    normal writable data following it, or if only uninitialized (.bss) data
1448    follows it, or only very small writable data.  */
1449 int data[0x10000] = { 1, };
1450 ]])])
1451   cat > conftest.awk <<\EOF
1452 BEGIN {
1453   result = "no"
1454   commonpagesize = strtonum(commonpagesize)
1456 { print "LINE:", $0 > "/dev/stderr" }
1457 $1 == "GNU_RELRO" {
1458   vaddr = strtonum($3)
1459   memsz = strtonum($6)
1460   end = vaddr + memsz
1461   printf "vaddr %#x memsz %#x end %#x commonpagesize %#x\n", \
1462     vaddr, memsz, end, commonpagesize > "/dev/stderr"
1463   result = (end % commonpagesize == 0) ? "yes" : "broken"
1465 END { print result }
1467   AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1468                     -fPIC -shared -o conftest.so conftest.c
1469                     -nostartfiles -nostdlib
1470                     -Wl,-z,relro 1>&AS_MESSAGE_LOG_FD]) &&
1471   AC_TRY_COMMAND([$READELF -Wl conftest.so > conftest.ph]) &&
1472   AC_TRY_COMMAND([
1473       $AWK -v commonpagesize=$libc_commonpagesize -f conftest.awk
1474            conftest.ph > conftest.cps
1475     ]) &&
1476   libc_cv_z_relro=`cat conftest.cps 2>&AS_MESSAGE_LOG_FD`
1477   rm -f conftest*])
1478   if { test "x$libc_relro_required" = xyes &&
1479        test "x$libc_cv_z_relro" != xyes
1480      }
1481   then
1482     AC_MSG_ERROR(linker with -z relro support required)
1483   fi
1484 else
1485   AC_MSG_WARN([missing architecture parameter to check for working -z relro])
1488 AC_CACHE_CHECK(for -Bgroup option,
1489                libc_cv_Bgroup, [dnl
1490 cat > conftest.c <<EOF
1491 int _start (void) { return 42; }
1493 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1494                             -fPIC -shared -o conftest.so conftest.c
1495                             -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1496 then
1497   libc_cv_Bgroup=yes
1498 else
1499   libc_cv_Bgroup=no
1501 rm -f conftest*])
1502 AC_SUBST(libc_cv_Bgroup)
1504 ASFLAGS_config=
1505 AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1506                libc_cv_as_noexecstack, [dnl
1507 cat > conftest.c <<EOF
1508 void foo (void) { }
1510 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1511                    -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
1512    && grep -q .note.GNU-stack conftest.s \
1513    && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
1514                       -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1515 then
1516   libc_cv_as_noexecstack=yes
1517 else
1518   libc_cv_as_noexecstack=no
1520 rm -f conftest*])
1521 if test $libc_cv_as_noexecstack = yes; then
1522   ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1524 AC_SUBST(ASFLAGS_config)
1526 AC_CACHE_CHECK(for -z combreloc,
1527                libc_cv_z_combreloc, [dnl
1528 cat > conftest.c <<EOF
1529 extern int bar (int);
1530 extern int mumble;
1531 int foo (void) { return bar (mumble); }
1533 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1534                         -fPIC -shared -o conftest.so conftest.c
1535                         -nostdlib -nostartfiles
1536                         -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
1537 then
1538 dnl The following test is a bit weak.  We must use a tool which can test
1539 dnl cross-platform since the gcc used can be a cross compiler.  Without
1540 dnl introducing new options this is not easily doable.  Instead use a tool
1541 dnl which always is cross-platform: readelf.  To detect whether -z combreloc
1542 dnl look for a section named .rel.dyn.
1543   if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1544     libc_cv_z_combreloc=yes
1545   else
1546     libc_cv_z_combreloc=no
1547   fi
1548 else
1549   libc_cv_z_combreloc=no
1551 rm -f conftest*])
1552 if test "$libc_cv_z_combreloc" = yes; then
1553   AC_DEFINE(HAVE_Z_COMBRELOC)
1555 AC_SUBST(libc_cv_z_combreloc)
1557 AC_CACHE_CHECK(for -z execstack,
1558                libc_cv_z_execstack, [dnl
1559 cat > conftest.c <<EOF
1560 int _start (void) { return 42; }
1562 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1563                             -fPIC -shared -o conftest.so conftest.c
1564                             -Wl,-z,execstack -nostdlib
1565                             1>&AS_MESSAGE_LOG_FD])
1566 then
1567   libc_cv_z_execstack=yes
1568 else
1569   libc_cv_z_execstack=no
1571 rm -f conftest*])
1572 AC_SUBST(libc_cv_z_execstack)
1574 AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
1575 cat > conftest.c <<EOF
1576 int foo;
1577 main () { return 0;}
1579 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fpie
1580                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1581 then
1582   libc_cv_fpie=yes
1583 else
1584   libc_cv_fpie=no
1586 rm -f conftest*])
1588 AC_SUBST(libc_cv_fpie)
1590 AC_CACHE_CHECK(for --hash-style option,
1591                libc_cv_hashstyle, [dnl
1592 cat > conftest.c <<EOF
1593 int _start (void) { return 42; }
1595 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1596                             -fPIC -shared -o conftest.so conftest.c
1597                             -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
1598 then
1599   libc_cv_hashstyle=yes
1600 else
1601   libc_cv_hashstyle=no
1603 rm -f conftest*])
1604 AC_SUBST(libc_cv_hashstyle)
1606 # The linker's default -shared behavior is good enough if it
1607 # does these things that our custom linker scripts ensure that
1608 # all allocated NOTE sections come first.
1609 if test "$use_default_link" = default; then
1610   AC_CACHE_CHECK([for sufficient default -shared layout],
1611                   libc_cv_use_default_link, [dnl
1612   libc_cv_use_default_link=no
1613   cat > conftest.s <<\EOF
1614           .section .note.a,"a",%note
1615           .balign 4
1616           .long 4,4,9
1617           .string "GNU"
1618           .string "foo"
1619           .section .note.b,"a",%note
1620           .balign 4
1621           .long 4,4,9
1622           .string "GNU"
1623           .string "bar"
1625   if AC_TRY_COMMAND([dnl
1626   ${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD]) &&
1627        ac_try=`$READELF -S conftest.so | sed -n \
1628          ['${x;p;}
1629           s/^ *\[ *[1-9][0-9]*\]  *\([^ ][^ ]*\)  *\([^ ][^ ]*\) .*$/\2 \1/
1630           t a
1631           b
1632           : a
1633           H']`
1634   then
1635     libc_seen_a=no libc_seen_b=no
1636     set -- $ac_try
1637     while test $# -ge 2 -a "$1" = NOTE; do
1638       case "$2" in
1639       .note.a) libc_seen_a=yes ;;
1640       .note.b) libc_seen_b=yes ;;
1641       esac
1642       shift 2
1643     done
1644     case "$libc_seen_a$libc_seen_b" in
1645     yesyes)
1646       libc_cv_use_default_link=yes
1647       ;;
1648     *)
1649       echo >&AS_MESSAGE_LOG_FD "\
1650 $libc_seen_a$libc_seen_b from:
1651 $ac_try"
1652       ;;
1653     esac
1654   fi
1655   rm -f conftest*])
1656   use_default_link=$libc_cv_use_default_link
1659 AC_CACHE_CHECK(linker output format, libc_cv_output_format, [dnl
1660 if libc_cv_output_format=`
1661 ${CC-cc} -nostartfiles -nostdlib -Wl,--print-output-format 2>&AS_MESSAGE_LOG_FD`
1662 then
1663   :
1664 else
1665   libc_cv_output_format=
1667 test -n "$libc_cv_output_format" || libc_cv_output_format=unknown])
1668 AC_SUBST(libc_cv_output_format)
1670 AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl
1671 cat > conftest.c <<EOF
1672 int foo;
1674 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-anchors
1675                             conftest.c 1>&AS_MESSAGE_LOG_FD])
1676 then
1677   libc_cv_fno_toplevel_reorder=yes
1678 else
1679   libc_cv_fno_toplevel_reorder=no
1681 rm -f conftest*])
1682 if test $libc_cv_fno_toplevel_reorder = yes; then
1683   fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
1684 else
1685   fno_unit_at_a_time=-fno-unit-at-a-time
1687 AC_SUBST(fno_unit_at_a_time)
1689 AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
1690 LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector],
1691                    [libc_cv_ssp=yes],
1692                    [libc_cv_ssp=no])
1694 AC_SUBST(libc_cv_ssp)
1696 AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl
1697 cat > conftest.c <<EOF
1698 int foo;
1699 #ifdef __GNUC_GNU_INLINE__
1700 main () { return 0;}
1701 #else
1702 #error
1703 #endif
1705 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -std=gnu99 -fgnu89-inline
1706                             -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD])
1707 then
1708   libc_cv_gnu89_inline=yes
1709 else
1710   libc_cv_gnu89_inline=no
1712 rm -f conftest*])
1713 if test $libc_cv_gnu89_inline = yes; then
1714   gnu89_inline=-fgnu89-inline
1715 else
1716   gnu89_inline=
1718 AC_SUBST(gnu89_inline)
1720 AC_CACHE_CHECK(whether cc puts quotes around section names,
1721                libc_cv_have_section_quotes,
1722                [cat > conftest.c <<EOF
1723                 static const int foo
1724                 __attribute__ ((section ("bar"))) = 1;
1726                 if ${CC-cc} -S conftest.c -o conftest.s; then
1727                   if grep '\.section.*"bar"' conftest.s >/dev/null; then
1728                     libc_cv_have_section_quotes=yes
1729                   else
1730                     libc_cv_have_section_quotes=no
1731                   fi
1732                 else
1733                   libc_cv_have_section_quotes=unknown
1734                 fi
1735                 rm -f conftest.{c,s}
1736                 ])
1737 if test $libc_cv_have_section_quotes = yes; then
1738   AC_DEFINE(HAVE_SECTION_QUOTES)
1741 AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1742                [dnl
1743 cat > conftest.s <<EOF
1744 ${libc_cv_dot_text}
1745 ${libc_cv_asm_global_directive} foo
1746 foo:
1747 .weak foo
1748 .weak bar; bar = foo
1750 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1751   libc_cv_asm_weak_directive=yes
1752 else
1753   libc_cv_asm_weak_directive=no
1755 rm -f conftest*])
1757 if test $libc_cv_asm_weak_directive = no; then
1758   AC_CACHE_CHECK(for assembler .weakext directive,
1759                  libc_cv_asm_weakext_directive,
1760                  [dnl
1761 cat > conftest.s <<EOF
1762 ${libc_cv_dot_text}
1763 ${libc_cv_asm_global_directive} foo
1764 foo:
1765 .weakext bar foo
1766 .weakext baz
1767 ${libc_cv_asm_global_directive} baz
1768 baz:
1770   if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1771     libc_cv_asm_weakext_directive=yes
1772   else
1773     libc_cv_asm_weakext_directive=no
1774   fi
1775   rm -f conftest*])
1777 fi # no .weak
1779 if test $libc_cv_asm_weak_directive = yes; then
1780   AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1781 elif test $libc_cv_asm_weakext_directive = yes; then
1782   AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1785 AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
1786 case $machine in
1787   sparc/sparc64*) cfi_offset=2047;;
1788   *) cfi_offset=0;;
1789 esac
1790 cat > conftest.s <<EOF
1791         .text
1792         .type   func,%function
1793 func:
1794         .cfi_startproc
1795         .cfi_remember_state
1796         .cfi_rel_offset 1, $cfi_offset
1797         .cfi_endproc
1799 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1800   libc_cv_asm_cfi_directives=yes
1801 else
1802   libc_cv_asm_cfi_directives=no
1804 rm -f conftest*])
1805 if test $libc_cv_asm_cfi_directives = yes; then
1806   AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
1809 AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1810 cat > conftest.c <<\EOF
1811 _start () {}
1812 int __eh_pc;
1813 __throw () {}
1815 dnl No \ in command here because it ends up inside ''.
1816 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1817                             -nostdlib -nostartfiles -Wl,--no-whole-archive
1818                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1819   libc_cv_ld_no_whole_archive=yes
1820 else
1821   libc_cv_ld_no_whole_archive=no
1823 rm -f conftest*])
1824 if test $libc_cv_ld_no_whole_archive = no; then
1825   AC_MSG_ERROR([support for --no-whole-archive is needed])
1828 AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1829 cat > conftest.c <<\EOF
1830 _start () {}
1831 int __eh_pc;
1832 __throw () {}
1834 dnl No \ in command here because it ends up inside ''.
1835 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1836                             -nostdlib -nostartfiles -fexceptions
1837                             -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1838   libc_cv_gcc_exceptions=yes
1839 else
1840   libc_cv_gcc_exceptions=no
1842 rm -f conftest*])
1843 if test $libc_cv_gcc_exceptions = yes; then
1844   exceptions=-fexceptions
1846 AC_SUBST(exceptions)dnl
1848 if test "$host_cpu" = powerpc ; then
1849 # Check for a bug present in at least versions 2.8.x of GCC
1850 # and versions 1.0.x of EGCS.
1851 AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1852 AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1853                libc_cv_c_asmcr0_bug='no',
1854                libc_cv_c_asmcr0_bug='yes')])
1855 if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1856   AC_DEFINE(BROKEN_PPC_ASM_CR0)
1860 AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1861 cat > conftest.c <<\EOF
1862 void zero (void *x)
1864   __builtin_memset (x, 0, 1000);
1868 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1869 then
1870   libc_cv_gcc_builtin_memset=no
1871 else
1872   libc_cv_gcc_builtin_memset=yes
1874 rm -f conftest* ])
1875 if test "$libc_cv_gcc_builtin_memset" = yes ; then
1876   AC_DEFINE(HAVE_BUILTIN_MEMSET)
1879 AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1880 cat > conftest.c <<\EOF
1881 extern char *strstr (const char *, const char *) __asm ("my_strstr");
1882 char *foo (const char *a, const char *b)
1884   return __builtin_strstr (a, b);
1888 if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
1889 then
1890   libc_cv_gcc_builtin_redirection=yes
1891 else
1892   libc_cv_gcc_builtin_redirection=no
1894 rm -f conftest* ])
1895 if test "$libc_cv_gcc_builtin_redirection" = no; then
1896   AC_MSG_ERROR([support for the symbol redirection needed])
1899 dnl Check whether the compiler supports the __thread keyword.
1900 AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1901 [cat > conftest.c <<\EOF
1902 __thread int a = 42;
1904 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
1905   libc_cv_gcc___thread=yes
1906 else
1907   libc_cv_gcc___thread=no
1909 rm -f conftest*])
1910 if test "$libc_cv_gcc___thread" = no; then
1911   AC_MSG_ERROR([support for the __thread keyword is required])
1914 dnl Check whether the compiler supports the tls_model attribute.
1915 AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1916 cat > conftest.c <<\EOF
1917 extern __thread int a __attribute__((tls_model ("initial-exec")));
1919 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
1920   libc_cv_gcc_tls_model_attr=yes
1921 else
1922   libc_cv_gcc_tls_model_attr=no
1924 rm -f conftest*])
1925 if test "$libc_cv_gcc_tls_model_attr" = no; then
1926   AC_MSG_ERROR([support for the tls_model attribute is required])
1929 dnl Determine how to disable generation of FMA instructions.
1930 AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
1931                libc_cv_cc_nofma, [dnl
1932 libc_cv_cc_nofma=
1933 for opt in -ffp-contract=off -mno-fused-madd; do
1934   LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
1935 done])
1937 if test -n "$submachine"; then
1938   AC_CACHE_CHECK([for compiler option for CPU variant],
1939                  libc_cv_cc_submachine, [dnl
1940   libc_cv_cc_submachine=no
1941   for opt in "-march=$submachine" "-mcpu=$submachine"; do
1942     LIBC_TRY_CC_OPTION([$opt], [
1943       libc_cv_cc_submachine="$opt"
1944       break], [])
1945   done])
1946   if test "x$libc_cv_cc_submachine" = xno; then
1947     AC_MSG_ERROR([${CC-cc} does not support $submachine])
1948   fi
1950 AC_SUBST(libc_cv_cc_submachine)
1952 dnl Check whether we have the gd library available.
1953 AC_MSG_CHECKING(for libgd)
1954 if test "$with_gd" != "no"; then
1955   old_CFLAGS="$CFLAGS"
1956   CFLAGS="$CFLAGS $libgd_include"
1957   old_LDFLAGS="$LDFLAGS"
1958   LDFLAGS="$LDFLAGS $libgd_ldflags"
1959   old_LIBS="$LIBS"
1960   LIBS="$LIBS -lgd -lpng -lz -lm"
1961   AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1962   CFLAGS="$old_CFLAGS"
1963   LDFLAGS="$old_LDFLAGS"
1964   LIBS="$old_LIBS"
1965 else
1966   LIBGD=no
1968 AC_MSG_RESULT($LIBGD)
1969 AC_SUBST(LIBGD)
1971 # SELinux detection
1972 if test x$with_selinux = xno ; then
1973   have_selinux=no;
1974 else
1975   # See if we have the SELinux library
1976   AC_CHECK_LIB(selinux, is_selinux_enabled,
1977                have_selinux=yes, have_selinux=no)
1978   # See if we have the SELinux header with the NSCD permissions in it.
1979   if test x$have_selinux = xyes ; then
1980     AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h])
1981     AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
1982                     [#ifdef NSCD__SHMEMHOST
1983                      return 0;
1984                      #else
1985                      #error NSCD__SHMEMHOST not defined
1986                      #endif],
1987                     have_selinux=yes, have_selinux=no)
1988     AC_MSG_RESULT($have_selinux)
1989   fi
1991   if test x$with_selinux = xyes ; then
1992     if test x$have_selinux = xno ; then
1993       AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found])
1994     fi
1995   fi
1997 # Check if we're building with SELinux support.
1998 if test "x$have_selinux" = xyes; then
1999   AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
2001   # See if we have the libaudit library
2002   AC_CHECK_LIB(audit, audit_log_user_avc_message,
2003                have_libaudit=yes, have_libaudit=no)
2004   if test "x$have_libaudit" = xyes; then
2005     AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
2006   fi
2007   AC_SUBST(have_libaudit)
2009   # See if we have the libcap library
2010   AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
2011   if test "x$have_libcap" = xyes; then
2012     AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
2013   fi
2014   AC_SUBST(have_libcap)
2016 AC_SUBST(have_selinux)
2018 dnl check for the size of 'long double'.
2019 AC_CHECK_SIZEOF(long double, 0)
2020 sizeof_long_double=$ac_cv_sizeof_long_double
2021 AC_SUBST(sizeof_long_double)
2023 ### End of automated tests.
2024 ### Now run sysdeps configure fragments.
2026 # They also can set these variables.
2027 use_ldconfig=no
2028 ldd_rewrite_script=no
2029 libc_cv_sysconfdir=$sysconfdir
2030 libc_cv_gcc_unwind_find_fde=no
2031 libc_cv_idn=no
2033 # Iterate over all the sysdep directories we will use, running their
2034 # configure fragments.
2035 for dir in $sysnames; do
2036   case $dir in
2037     /*) dest=$dir ;;
2038     *)  dest=$srcdir/$dir ;;
2039   esac
2040   if test -r $dest/configure; then
2041     AC_MSG_RESULT(running configure fragment for $dir)
2042     . $dest/configure
2043   fi
2044 done
2046 if test x$libc_cv_gcc_unwind_find_fde = xyes; then
2047   AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
2049 AC_SUBST(libc_cv_gcc_unwind_find_fde)
2051 # Test for old glibc 2.0.x headers so that they can be removed properly
2052 # Search only in includedir.
2053 AC_MSG_CHECKING(for old glibc 2.0.x headers)
2054 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
2055 then
2056   old_glibc_headers=yes
2057 else
2058   old_glibc_headers=no
2060 AC_MSG_RESULT($old_glibc_headers)
2061 if test ${old_glibc_headers} = yes; then
2062   AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
2063   AC_MSG_WARN(*** be removed.)
2065 AC_SUBST(old_glibc_headers)
2067 AC_SUBST(libc_cv_slibdir)
2068 AC_SUBST(libc_cv_localedir)
2069 AC_SUBST(libc_cv_sysconfdir)
2070 AC_SUBST(libc_cv_rootsbindir)
2071 AC_SUBST(libc_cv_forced_unwind)
2073 dnl sysdeps/CPU/configure.in checks set this via arch-specific asm tests
2074 AC_SUBST(libc_cv_cpp_asm_debuginfo)
2075 AC_SUBST(libc_cv_cc_sse4)
2076 AC_SUBST(libc_cv_cc_avx)
2077 AC_SUBST(libc_cv_cc_sse2avx)
2078 AC_SUBST(libc_cv_cc_novzeroupper)
2079 AC_SUBST(libc_cv_cc_fma4)
2080 AC_SUBST(libc_cv_cc_nofma)
2081 AC_SUBST(libc_cv_as_i686)
2082 AC_SUBST(libc_cv_sparc_as_vis3)
2084 AC_SUBST(use_ldconfig)
2085 AC_SUBST(ldd_rewrite_script)
2087 AC_SUBST(static)
2088 AC_SUBST(shared)
2090 AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
2091 [libc_cv_pic_default=yes
2092 cat > conftest.c <<EOF
2093 #if defined __PIC__ || defined __pic__ || defined PIC || defined pic
2094 # error PIC is default.
2095 #endif
2097 if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
2098   libc_cv_pic_default=no
2100 rm -f conftest.*])
2101 AC_SUBST(libc_cv_pic_default)
2103 AC_SUBST(profile)
2104 AC_SUBST(static_nss)
2106 AC_SUBST(DEFINES)
2108 dnl See sysdeps/mach/configure.in for this variable.
2109 AC_SUBST(mach_interface_list)
2111 if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
2112   config_makefile=
2113 else
2114   config_makefile=Makefile
2117 VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
2118 RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
2119 AC_SUBST(VERSION)
2120 AC_SUBST(RELEASE)
2122 AC_CONFIG_FILES([config.make ${config_makefile}])
2123 AC_CONFIG_COMMANDS([default],[[
2124 case $CONFIG_FILES in *config.make*)
2125 echo "$config_vars" >> config.make;;
2126 esac
2127 test -d bits || mkdir bits]],[[config_vars='$config_vars']])
2128 AC_OUTPUT