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