]> git.ipfire.org Git - thirdparty/glibc.git/blame - configure.ac
Move USE_REGPARMS define to sysdeps/i386/configure.ac.
[thirdparty/glibc.git] / configure.ac
CommitLineData
f4017d20 1dnl Process this file with autoconf to produce a configure script.
f7934be8 2dnl Note we do not use AC_PREREQ here! See aclocal.m4 for what we use instead.
f318beb8 3AC_INIT([GNU C Library], [(see version.h)], [http://sourceware.org/bugzilla/], [glibc])
5d77b1da 4AC_CONFIG_SRCDIR([include/features.h])
6b7f6183
RM
5AC_CONFIG_HEADERS([config.h])
6AC_CONFIG_AUX_DIR([scripts])
28f540f4 7
8b748aed
JM
8ACX_PKGVERSION([GNU libc])
9ACX_BUGURL([http://www.gnu.org/software/libc/bugs.html])
10AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"],
11 [Package description])
12AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"],
13 [Bug reporting address])
14
918b5606
L
15# Glibc should not depend on any header files
16AC_DEFUN([_AC_INCLUDES_DEFAULT_REQUIREMENTS],
17 [m4_divert_text([DEFAULTS],
18 [ac_includes_default='/* none */'])])
19
bb931195
TS
20# We require GCC, and by default use its preprocessor. Override AC_PROG_CPP
21# here to work around the Autoconf issue discussed in
22# <http://sourceware.org/ml/libc-alpha/2013-01/msg00721.html>.
23AC_DEFUN([AC_PROG_CPP],
24[AC_REQUIRE([AC_PROG_CC])dnl
25AC_ARG_VAR([CPP], [C preprocessor])dnl
26_AC_ARG_VAR_CPPFLAGS()dnl
27# On Suns, sometimes $CPP names a directory.
28if test -n "$CPP" && test -d "$CPP"; then
29 CPP=
30fi
31if test -z "$CPP"; then
32 CPP="$CC -E"
33fi
34AC_SUBST(CPP)dnl
35])# AC_PROG_CPP
36
b5a5da23
TS
37# We require GCC. Override _AC_PROG_CC_C89 here to work around the Autoconf
38# issue discussed in
39# <http://sourceware.org/ml/libc-alpha/2013-01/msg00757.html>.
40AC_DEFUN([_AC_PROG_CC_C89], [[$1]])
41
7967983f
RM
42dnl This is here so we can set $subdirs directly based on configure fragments.
43AC_CONFIG_SUBDIRS()
44
c16a054d
AS
45AC_CANONICAL_HOST
46
c0bac8b0
UD
47AC_PROG_CC
48if test $host != $build; then
49 AC_CHECK_PROGS(BUILD_CC, gcc cc)
50fi
51AC_SUBST(cross_compiling)
52AC_PROG_CPP
53# We need the C++ compiler only for testing.
54AC_PROG_CXX
0cae3f4b 55AC_CHECK_TOOL(READELF, readelf, false)
c0bac8b0 56
c72637d4
RM
57if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then
58 AC_MSG_ERROR([you must configure in a separate build directory])
59fi
60
28f540f4
RM
61# This will get text that should go into config.make.
62config_vars=
63
c8f3e6db 64# Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
6b7f6183 65AC_ARG_WITH([gd],
77e8bddf
AS
66 AC_HELP_STRING([--with-gd=DIR],
67 [find libgd include dir and library with prefix DIR]),
c8f3e6db
UD
68 [dnl
69case "$with_gd" in
f5f7239f
UD
70yes|''|no) ;;
71*) libgd_include="-I$withval/include"
c8f3e6db
UD
72 libgd_ldflags="-L$withval/lib" ;;
73esac
74])
6b7f6183 75AC_ARG_WITH([gd-include],
77e8bddf
AS
76 AC_HELP_STRING([--with-gd-include=DIR],
77 [find libgd include files in DIR]),
78 [dnl
f5f7239f
UD
79case "$with_gd_include" in
80''|no) ;;
81*) libgd_include="-I$withval" ;;
82esac
83])
6b7f6183 84AC_ARG_WITH([gd-lib],
77e8bddf
AS
85 AC_HELP_STRING([--with-gd-lib=DIR],
86 [find libgd library files in DIR]),
87 [dnl
f5f7239f
UD
88case "$with_gd_lib" in
89''|no) ;;
90*) libgd_ldflags="-L$withval" ;;
91esac
92])
93
94if test -n "$libgd_include"; then
95 config_vars="$config_vars
cf90163d 96CFLAGS-memusagestat.c = $libgd_include"
f5f7239f
UD
97fi
98if test -n "$libgd_ldflags"; then
99 config_vars="$config_vars
100libgd-LDFLAGS = $libgd_ldflags"
101fi
28f540f4 102
ff3d7ed3 103dnl Arguments to specify presence of other packages/features.
6b7f6183 104AC_ARG_WITH([fp],
77e8bddf
AS
105 AC_HELP_STRING([--with-fp],
106 [if using floating-point hardware @<:@default=yes@:>@]),
6b7f6183
RM
107 [with_fp=$withval],
108 [with_fp=yes])
675322a5 109AC_SUBST(with_fp)
6b7f6183 110AC_ARG_WITH([binutils],
77e8bddf
AS
111 AC_HELP_STRING([--with-binutils=PATH],
112 [specify location of binutils (as and ld)]),
6b7f6183
RM
113 [path_binutils=$withval],
114 [path_binutils=''])
2fff3d93 115AC_ARG_WITH([selinux],
77e8bddf
AS
116 AC_HELP_STRING([--with-selinux],
117 [if building with SELinux support]),
2fff3d93
UD
118 [with_selinux=$withval],
119 [with_selinux=auto])
28f540f4 120
6b7f6183 121AC_ARG_WITH([headers],
77e8bddf
AS
122 AC_HELP_STRING([--with-headers=PATH],
123 [location of system headers to use
6b7f6183
RM
124 (for example /usr/src/linux/include)
125 @<:@default=compiler default@:>@]),
126 [sysheaders=$withval],
127 [sysheaders=''])
c91c505f 128AC_SUBST(sysheaders)
dbe7a0f5 129
f781ef40
RM
130AC_SUBST(use_default_link)
131AC_ARG_WITH([default-link],
132 AC_HELP_STRING([--with-default-link],
fd5e21c7 133 [do not use explicit linker scripts]),
f781ef40 134 [use_default_link=$withval],
fd5e21c7 135 [use_default_link=default])
f781ef40 136
6b7f6183 137AC_ARG_ENABLE([sanity-checks],
77e8bddf
AS
138 AC_HELP_STRING([--disable-sanity-checks],
139 [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
6b7f6183
RM
140 [enable_sanity=$enableval],
141 [enable_sanity=yes])
a18f587d 142
6b7f6183 143AC_ARG_ENABLE([shared],
77e8bddf 144 AC_HELP_STRING([--enable-shared],
a0da5fe1 145 [build shared library @<:@default=yes if GNU ld@:>@]),
6b7f6183 146 [shared=$enableval],
a0da5fe1 147 [shared=yes])
6b7f6183 148AC_ARG_ENABLE([profile],
77e8bddf
AS
149 AC_HELP_STRING([--enable-profile],
150 [build profiled library @<:@default=no@:>@]),
6b7f6183 151 [profile=$enableval],
11bf311e 152 [profile=no])
6b7f6183
RM
153
154AC_ARG_ENABLE([oldest-abi],
77e8bddf
AS
155 AC_HELP_STRING([--enable-oldest-abi=ABI],
156 [configure the oldest ABI supported @<:@e.g. 2.2@:>@ @<:@default=glibc default@:>@]),
6b7f6183
RM
157 [oldest_abi=$enableval],
158 [oldest_abi=no])
62ab42d6
UD
159if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
160 oldest_abi=default
161else
162 AC_DEFINE_UNQUOTED(GLIBC_OLDEST_ABI, "$oldest_abi")
163fi
164AC_SUBST(oldest_abi)
165
740b3dbe
L
166AC_ARG_ENABLE([hardcoded-path-in-tests],
167 AC_HELP_STRING([--enable-hardcoded-path-in-tests],
168 [hardcode newly built glibc path in tests @<:@default=no@:>@]),
169 [hardcoded_path_in_tests=$enableval],
170 [hardcoded_path_in_tests=no])
171AC_SUBST(hardcoded_path_in_tests)
172
35f1e827
UD
173AC_ARG_ENABLE([stackguard-randomization],
174 AC_HELP_STRING([--enable-stackguard-randomization],
175 [initialize __stack_chk_guard canary with a random number at program start]),
176 [enable_stackguard_randomize=$enableval],
177 [enable_stackguard_randomize=no])
178if test "$enable_stackguard_randomize" = yes; then
179 AC_DEFINE(ENABLE_STACKGUARD_RANDOMIZE)
180fi
181
1717da59
AK
182AC_ARG_ENABLE([lock-elision],
183 AC_HELP_STRING([--enable-lock-elision[=yes/no]],
52dfbe13 184 [Enable lock elision for pthread mutexes by default]),
1717da59
AK
185 [enable_lock_elision=$enableval],
186 [enable_lock_elision=no])
5a414ff7 187AC_SUBST(enable_lock_elision)
1717da59
AK
188if test "$enable_lock_elision" = yes ; then
189 AC_DEFINE(ENABLE_LOCK_ELISION)
190fi
191
6b3a2224 192dnl Generic infrastructure for drop-in additions to libc.
6b7f6183 193AC_ARG_ENABLE([add-ons],
77e8bddf
AS
194 AC_HELP_STRING([--enable-add-ons@<:@=DIRS...@:>@],
195 [configure and build add-ons in DIR1,DIR2,...
196 search for add-ons if no parameter given]),
e0a3ed4f 197 , [enable_add_ons=yes])
61952351 198
6b7f6183 199AC_ARG_ENABLE([hidden-plt],
77e8bddf
AS
200 AC_HELP_STRING([--disable-hidden-plt],
201 [do not hide internal function calls to avoid PLT]),
6b7f6183
RM
202 [hidden=$enableval],
203 [hidden=yes])
749a9a4f
RM
204if test "x$hidden" = xno; then
205 AC_DEFINE(NO_HIDDEN)
206fi
207
4df8c11d
UD
208AC_ARG_ENABLE([bind-now],
209 AC_HELP_STRING([--enable-bind-now],
210 [disable lazy relocations in DSOs]),
211 [bindnow=$enableval],
212 [bindnow=no])
213AC_SUBST(bindnow)
214
5107cf1d
UD
215dnl On some platforms we cannot use dynamic loading. We must provide
216dnl static NSS modules.
6b7f6183 217AC_ARG_ENABLE([static-nss],
77e8bddf
AS
218 AC_HELP_STRING([--enable-static-nss],
219 [build static NSS modules @<:@default=no@:>@]),
6b7f6183
RM
220 [static_nss=$enableval],
221 [static_nss=no])
834cef7c
UD
222dnl Enable static NSS also if we build no shared objects.
223if test x"$static_nss" = xyes || test x"$shared" = xno; then
3172f58f 224 static_nss=yes
5107cf1d
UD
225 AC_DEFINE(DO_STATIC_NSS)
226fi
227
6b7f6183 228AC_ARG_ENABLE([force-install],
77e8bddf
AS
229 AC_HELP_STRING([--disable-force-install],
230 [don't force installation of files from this package, even if they are older than the installed files]),
6b7f6183
RM
231 [force_install=$enableval],
232 [force_install=yes])
73237de3
UD
233AC_SUBST(force_install)
234
8894bad3
AM
235AC_ARG_ENABLE([maintainer-mode],
236 AC_HELP_STRING([--enable-maintainer-mode],
237 [enable make rules and dependencies not useful (and sometimes confusing) to the casual installer]),
238 [maintainer=$enableval],
239 [maintainer=no])
240
958f238f
UD
241dnl On some platforms we allow dropping compatibility with all kernel
242dnl versions.
6b7f6183 243AC_ARG_ENABLE([kernel],
77e8bddf
AS
244 AC_HELP_STRING([--enable-kernel=VERSION],
245 [compile for compatibility with kernel not older than VERSION]),
6b7f6183
RM
246 [minimum_kernel=$enableval],
247 [])
86cfe82d
UD
248dnl Prevent unreasonable values.
249if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
250 # Better nothing than this.
251 minimum_kernel=""
269e369f
UD
252else
253 if test "$minimum_kernel" = current; then
254 minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
255 fi
86cfe82d 256fi
958f238f 257
6cc7d725
UD
258dnl For the development we sometimes want gcc to issue even more warnings.
259dnl This is not the default since many of the extra warnings are not
260dnl appropriate.
6b7f6183
RM
261AC_ARG_ENABLE([all-warnings],
262 AC_HELP_STRING([--enable-all-warnings],
77e8bddf 263 [enable all useful warnings gcc can issue]),
6b7f6183
RM
264 [all_warnings=$enableval],
265 [])
6cc7d725
UD
266AC_SUBST(all_warnings)
267
425ce2ed
UD
268AC_ARG_ENABLE([multi-arch],
269 AC_HELP_STRING([--enable-multi-arch],
270 [enable single DSO with optimizations for multiple architectures]),
271 [multi_arch=$enableval],
6f89d2f3 272 [multi_arch=default])
425ce2ed 273
ff886b82
UD
274AC_ARG_ENABLE([nss-crypt],
275 AC_HELP_STRING([--enable-nss-crypt],
276 [enable libcrypt to use nss]),
277 [nss_crypt=$enableval],
278 [nss_crypt=no])
279if test x$nss_crypt = xyes; then
280 nss_includes=-I$(nss-config --includedir 2>/dev/null)
281 if test $? -ne 0; then
282 AC_MSG_ERROR([cannot find include directory with nss-config])
283 fi
284 old_CFLAGS="$CFLAGS"
285 CFLAGS="$CFLAGS $nss_includes"
b68e08db 286 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
ff886b82
UD
287#include <hasht.h>
288#include <nsslowhash.h>
b68e08db 289void f (void) { NSSLOW_Init (); }])],
ff886b82
UD
290 libc_cv_nss_crypt=yes,
291 AC_MSG_ERROR([
292cannot find NSS headers with lowlevel hash function interfaces]))
293 old_LIBS="$LIBS"
294 LIBS="$LIBS -lfreebl3"
295 AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
296#include <hasht.h>
297#include <nsslowhash.h>],
298 [NSSLOW_Init();])],
299 libc_cv_nss_crypt=yes,
300 AC_MSG_ERROR([
301cannot link program using lowlevel NSS hash functions]))
302 CFLAGS="$old_CFLAGS"
303 LIBS="$old_LIBS"
304else
305 libc_cv_nss_crypt=no
306fi
307AC_SUBST(libc_cv_nss_crypt)
308
3a097cc7 309
021db4be
AJ
310AC_ARG_ENABLE([obsolete-rpc],
311 AC_HELP_STRING([--enable-obsolete-rpc],
312 [build and install the obsolete RPC code for link-time usage]),
313 [link_obsolete_rpc=$enableval],
314 [link_obsolete_rpc=no])
315AC_SUBST(link_obsolete_rpc)
316
317if test "$link_obsolete_rpc" = yes; then
318 AC_DEFINE(LINK_OBSOLETE_RPC)
319fi
320
3a097cc7
RM
321AC_ARG_ENABLE([systemtap],
322 [AS_HELP_STRING([--enable-systemtap],
323 [enable systemtap static probe points @<:@default=no@:>@])],
324 [systemtap=$enableval],
325 [systemtap=no])
326if test "x$systemtap" != xno; then
327 AC_CACHE_CHECK([for systemtap static probe support], libc_cv_sdt, [dnl
328 old_CFLAGS="$CFLAGS"
329 CFLAGS="-std=gnu99 $CFLAGS"
0e3933b9 330 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <sys/sdt.h>
3a097cc7
RM
331void foo (int i, void *p)
332{
333 asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) ""
334 :: STAP_PROBE_ASM_OPERANDS (2, i, p));
0e3933b9 335}]])], [libc_cv_sdt=yes], [libc_cv_sdt=no])
3a097cc7
RM
336 CFLAGS="$old_CFLAGS"])
337 if test $libc_cv_sdt = yes; then
338 AC_DEFINE([USE_STAP_PROBE])
339 elif test "x$systemtap" != xauto; then
340 AC_MSG_FAILURE([systemtap support needs sys/sdt.h with asm support])
341 fi
342fi
343
c53d909c
RM
344AC_ARG_ENABLE([build-nscd],
345 [AS_HELP_STRING([--disable-build-nscd],
346 [disable building and installing the nscd daemon])],
347 [build_nscd=$enableval],
348 [build_nscd=default])
349AC_SUBST(build_nscd)
350
3cc3ef96
RM
351# Note the use of $use_nscd is near the bottom of the file.
352AC_ARG_ENABLE([nscd],
353 [AS_HELP_STRING([--disable-nscd],
354 [library functions will not contact the nscd daemon])],
355 [use_nscd=$enableval],
356 [use_nscd=yes])
357
e4608715
CD
358AC_ARG_ENABLE([pt_chown],
359 [AS_HELP_STRING([--enable-pt_chown],
360 [Enable building and installing pt_chown])],
361 [build_pt_chown=$enableval],
362 [build_pt_chown=no])
363AC_SUBST(build_pt_chown)
8c12f01d 364if test "$build_pt_chown" = yes; then
e4608715
CD
365 AC_DEFINE(HAVE_PT_CHOWN)
366fi
367
8a523922
UD
368# The way shlib-versions is used to generate soversions.mk uses a
369# fairly simplistic model for name recognition that can't distinguish
370# i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os
371# of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
372# tell. This doesn't get used much beyond that, so it's fairly safe.
373case "$host_os" in
374linux*)
375 ;;
376gnu*)
377 host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
378 ;;
379esac
380
28f540f4
RM
381# We keep the original values in `$config_*' and never modify them, so we
382# can write them unchanged into config.make. Everything else uses
383# $machine, $vendor, and $os, and changes them whenever convenient.
384config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
385
2f64b655
UD
386# Don't allow vendor == "unknown"
387test "$config_vendor" = unknown && config_vendor=
388config_os="`echo $config_os | sed 's/^unknown-//'`"
389
a2fe9c76 390# Some configurations imply other options.
0269750c 391elf=yes
a2fe9c76 392
8f73811b
RM
393# The configure fragment of an add-on port can modify these to supplement
394# or override the table in the case statement below. No fragment should
395# ever change the config_* variables, however.
28f540f4
RM
396machine=$config_machine
397vendor=$config_vendor
398os=$config_os
b22d21b3 399base_os=''
28f540f4 400
a808d541
UD
401# config.guess on some IBM machines says `rs6000' instead of `powerpc'.
402# Unify this here.
403if test "$machine" = rs6000; then
404 machine="powerpc"
405fi
406
f4b07664
RM
407# Braindead PowerPC box with absolutely no FPU.
408case "$machine-$host_os" in
409 powerpc*-*soft)
410 with_fp=no
411 ;;
412esac
413
2ceaa76a
RM
414submachine=
415AC_ARG_WITH([cpu],
416 AS_HELP_STRING([--with-cpu=CPU], [select code for CPU variant]),
417 [dnl
418 case "$withval" in
419 yes|'') AC_MSG_ERROR([--with-cpu requires an argument]) ;;
420 no) ;;
421 *) submachine="$withval" ;;
422 esac
423])
424
10a803e0
RM
425dnl Let sysdeps/*/preconfigure act here, like they can in add-ons.
426LIBC_PRECONFIGURE([$srcdir], [for sysdeps])
427
e0a3ed4f 428# An add-on can set this when it wants to disable the sanity check below.
8f73811b
RM
429libc_config_ok=no
430
431dnl Having this here, though empty, makes sure that if add-ons' fragments
432dnl do AC_CONFIG_SUBDIRS([some-dir]), which just sets $subdirs, then
433dnl our AC_OUTPUT will actually use it.
434AC_CONFIG_SUBDIRS()
435
e0a3ed4f
RM
436case "$enable_add_ons" in
437''|no) add_ons= ;;
438yes|'*')
439 add_ons=`cd $srcdir && ls -d 2> /dev/null */configure */sysdeps |
440 sed 's@/[[^/]]*$@@' | sort | uniq`
441 add_ons_automatic=yes
442 ;;
443*) add_ons=`echo "$enable_add_ons" | sed 's/,/ /g'`
444 add_ons_automatic=no ;;
445esac
446
447configured_add_ons=
8f73811b
RM
448add_ons_sfx=
449add_ons_pfx=
450if test x"$add_ons" != x; then
451 for f in $add_ons; do
452 # Some sanity checks
453 case "$f" in
454 crypt)
455 AC_MSG_ERROR([
456*** It seems that you're using an old \`crypt' add-on. crypt is now
457*** part of glibc and using the old add-on will not work with this
458*** release. Start again with fresh sources and without the old
459*** \`crypt' add-on.])
460 ;;
461 localedata)
462 AC_MSG_ERROR([
463*** It seems that you're using an old \`localedata' add-on. localedata
464*** is now part of glibc and using the old add-on will not work with
465*** this release. Start again with fresh sources and without the old
466*** \`localedata' add-on.])
467 ;;
468 esac
8f73811b
RM
469 done
470
9382fcee 471 # Now source each add-on's configure fragment.
c80e931a
RM
472 # The fragments can use $srcdir/$libc_add_on to find themselves,
473 # and test $add_ons_automatic to see if they were explicitly requested.
474 # A fragment can clear (or even change) $libc_add_on to affect
475 # whether it goes into the list to be actually used in the build.
476 use_add_ons=
9382fcee 477 for libc_add_on in $add_ons; do
e0a3ed4f
RM
478 # Test whether such a directory really exists.
479 # It can be absolute, or relative to $srcdir, or relative to the build dir.
480 case "$libc_add_on" in
481 /*)
482 libc_add_on_srcdir=$libc_add_on
483 ;;
484 *)
485 test -d "$srcdir/$libc_add_on" || {
77e8bddf 486 if test -d "$libc_add_on"; then
e0a3ed4f
RM
487 libc_add_on="`pwd`/$libc_add_on"
488 else
489 AC_MSG_ERROR(add-on directory \"$libc_add_on\" does not exist)
490 fi
491 }
492 libc_add_on_srcdir=$srcdir/$libc_add_on
493 ;;
494 esac
495
496 libc_add_on_frag=$libc_add_on_srcdir/configure
497 libc_add_on_canonical=
7967983f 498 libc_add_on_config_subdirs=
e0a3ed4f
RM
499 if test -r "$libc_add_on_frag"; then
500 AC_MSG_NOTICE(running configure fragment for add-on $libc_add_on)
501 libc_add_on_canonical=unknown
502 libc_add_on_subdirs=
503 . "$libc_add_on_frag"
504 test -z "$libc_add_on" || {
77e8bddf 505 configured_add_ons="$configured_add_ons $libc_add_on"
e0a3ed4f
RM
506 if test "x$libc_add_on_canonical" = xunknown; then
507 AC_MSG_ERROR(fragment must set \$libc_add_on_canonical)
508 fi
509 for d in $libc_add_on_subdirs; do
510 case "$libc_add_on" in
511 /*) subdir_srcdir="$libc_add_on" ;;
512 *) subdir_srcdir="\$(..)$libc_add_on" ;;
513 esac
514 case "$d" in
515 .)
516 d="${libc_add_on_canonical:-$libc_add_on}"
517 ;;
518 /*)
519 subdir_srcdir="$d"
520 ;;
521 *)
522 subdir_srcdir="$subdir_srcdir/$d"
523 ;;
524 esac
525 d=`echo "$d" | sed 's@/*$@@;s@^.*/@@'`
526 add_on_subdirs="$add_on_subdirs $d"
527 test "$subdir_srcdir" = "\$(..)$d" || config_vars="$config_vars
528$d-srcdir = $subdir_srcdir"
529 done
7967983f
RM
530 for d in $libc_add_on_config_subdirs; do
531 case "$d" in
532 /*) AC_MSG_ERROR(dnl
533fragment uses absolute path in \$libc_add_on_config_subdirs) ;;
534 esac
535 if test ! -d "$libc_add_on_srcdir/$d"; then
536 AC_MSG_ERROR(fragment wants to configure missing directory $d)
537 fi
538 case "$libc_add_on" in
539 /*) AC_MSG_ERROR(dnl
540relative path required for add-on using \$libc_add_on_config_subdirs) ;;
541 esac
542 subdirs="$subdirs $libc_add_on/$d"
543 done
e0a3ed4f 544 }
8f73811b 545 fi
619f9448 546 if test -n "$libc_add_on"; then
10a803e0 547 LIBC_PRECONFIGURE([$libc_add_on_srcdir], [add-on $libc_add_on for])
619f9448
RM
548 use_add_ons="$use_add_ons $libc_add_on"
549 add_ons_pfx="$add_ons_pfx $libc_add_on/"
e0a3ed4f
RM
550 test -z "$libc_add_on_canonical" ||
551 add_ons_sfx="$add_ons_sfx /$libc_add_on_canonical"
619f9448 552 fi
8f73811b 553 done
c80e931a
RM
554 # Use echo to strip excess whitespace.
555 add_ons="`echo $use_add_ons`"
8f73811b
RM
556fi
557AC_SUBST(add_ons)
e0a3ed4f 558AC_SUBST(add_on_subdirs)
8f73811b
RM
559
560
bdc8eb03
UD
561###
562### I put this here to prevent those annoying emails from people who cannot
563### read and try to compile glibc on unsupported platforms. --drepper
564###
565### By using the undocumented --enable-hacker-mode option for configure
566### one can skip this test to make the configuration not fail for unsupported
567### platforms.
568###
8f73811b 569if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
bdc8eb03 570 case "$machine-$host_os" in
2ce4f015 571 *-linux* | *-gnu*)
bdc8eb03
UD
572 ;;
573 *)
574 echo "*** The GNU C library is currently not available for this platform."
575 echo "*** So far nobody cared to port it and if there is no volunteer it"
576 echo "*** might never happen. So, if you have interest to see glibc on"
577 echo "*** this platform visit"
578 echo "*** http://www.gnu.org/software/libc/porting.html"
579 echo "*** and join the group of porters"
580 exit 1
581 ;;
582 esac
583fi
584
3e239be6
JM
585# Set base_machine if not set by a preconfigure fragment.
586test -n "$base_machine" || base_machine=$machine
f0523145 587AC_SUBST(base_machine)
28f540f4 588
0cae3f4b
MF
589# For the multi-arch option we need support in the assembler & linker.
590AC_CACHE_CHECK([for assembler and linker STT_GNU_IFUNC support],
591 libc_cv_ld_gnu_indirect_function, [dnl
786b0b67 592cat > conftest.S <<EOF
84b9230c 593.type foo,%gnu_indirect_function
0cae3f4b
MF
594foo:
595.globl _start
596_start:
597.globl __start
598__start:
599.data
786b0b67
AS
600#ifdef _LP64
601.quad foo
602#else
0cae3f4b 603.long foo
786b0b67 604#endif
84b9230c 605EOF
0cae3f4b
MF
606libc_cv_ld_gnu_indirect_function=no
607if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
608 -nostartfiles -nostdlib \
786b0b67 609 -o conftest conftest.S 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
0cae3f4b
MF
610 # Do a link to see if the backend supports IFUNC relocs.
611 $READELF -r conftest 1>&AS_MESSAGE_LOG_FD
612 LC_ALL=C $READELF -r conftest | grep 'no relocations' >/dev/null || {
613 libc_cv_ld_gnu_indirect_function=yes
614 }
84b9230c
MF
615fi
616rm -f conftest*])
617
618AC_MSG_CHECKING(whether .text pseudo-op must be used)
619AC_CACHE_VAL(libc_cv_dot_text, [dnl
620cat > conftest.s <<EOF
621.text
622EOF
623libc_cv_dot_text=
624if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
625 libc_cv_dot_text=.text
626fi
627rm -f conftest*])
628if test -z "$libc_cv_dot_text"; then
629 AC_MSG_RESULT(no)
630else
631 AC_MSG_RESULT(yes)
632fi
633
0cae3f4b 634if test x"$libc_cv_ld_gnu_indirect_function" != xyes; then
84b9230c
MF
635 if test x"$multi_arch" = xyes; then
636 AC_MSG_ERROR([--enable-multi-arch support requires assembler and linker support])
637 else
638 multi_arch=no
639 fi
640fi
6270516e 641multi_arch_d=
84b9230c
MF
642if test x"$multi_arch" != xno; then
643 multi_arch_d=/multiarch
644fi
645
f0523145 646# Compute the list of sysdep directories for this configuration.
f332db02 647# This can take a while to compute.
f0523145 648sysdep_dir=$srcdir/sysdeps
f332db02 649AC_MSG_CHECKING(sysdep dirs)
f0523145
RM
650dnl We need to use [ and ] for other purposes for a while now.
651changequote(,)dnl
28f540f4
RM
652# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
653os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
654
b22d21b3 655test "x$base_os" != x || case "$os" in
28f540f4
RM
656gnu*)
657 base_os=mach/hurd ;;
2ce4f015 658linux*)
28f540f4 659 base_os=unix/sysv ;;
28f540f4
RM
660esac
661
662# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
663tail=$os
664ostry=$os
665while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
666 ostry="$ostry /$o"
667 tail=$o
75914335 668done
28f540f4
RM
669o=`echo $tail | sed 's/[0-9]*$//'`
670if test $o != $tail; then
671 ostry="$ostry /$o"
672fi
ec4b0518
UD
673# For linux-gnu, try linux-gnu, then linux.
674o=`echo $tail | sed 's/-.*$//'`
675if test $o != $tail; then
676 ostry="$ostry /$o"
677fi
28f540f4
RM
678
679# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
680base=
681tail=$base_os
682while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
683 set $b
684 base="$base /$1"
685 tail="$2"
686done
687
ae6b8730 688# For sparc/sparc32, try sparc/sparc32 and then sparc.
28f540f4 689mach=
2ceaa76a 690tail=$machine${submachine:+/$submachine}
28f540f4
RM
691while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
692 set $m
10ceac89
RM
693 # Prepend the machine's FPU directory unless --without-fp.
694 if test "$with_fp" = yes; then
6270516e 695 maybe_fpu=/fpu
f4b07664 696 else
6270516e 697 maybe_fpu=/nofpu
82d00cab 698 fi
6270516e
RM
699 # For each machine term, try it with and then without /multiarch.
700 for try_fpu in $maybe_fpu ''; do
701 for try_multi in $multi_arch_d ''; do
702 mach="$mach /$1$try_fpu$try_multi"
703 done
704 done
28f540f4
RM
705 tail="$2"
706done
707
708dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
709changequote([,])dnl
710
711# Find what sysdep directories exist.
e0a3ed4f 712sysnames_add_ons=
28f540f4 713sysnames=
4b69abad
RM
714for b in $base ''; do
715 for m0 in $mach ''; do
716 for v in /$vendor ''; do
717 test "$v" = / && continue
718 for o in /$ostry ''; do
719 test "$o" = / && continue
6270516e 720 for m in $mach ''; do
4b69abad 721 for d in $add_ons_pfx ''; do
8f73811b 722 for a in $add_ons_sfx ''; do
1c9f1a02
RM
723 try_suffix="$m0$b$v$o$m"
724 if test -n "$try_suffix"; then
77e8bddf
AS
725 try_srcdir="${srcdir}/"
726 case "$d" in
e0a3ed4f
RM
727 /*) try_srcdir= ;;
728 esac
1c9f1a02 729 try="${d}sysdeps$try_suffix$a"
8f73811b
RM
730 test -n "$enable_debug_configure" &&
731 echo "$0 [DEBUG]: try $try" >&2
e0a3ed4f 732 if test -d "$try_srcdir$try"; then
8f73811b
RM
733 sysnames="$sysnames $try"
734 { test -n "$o" || test -n "$b"; } && os_used=t
735 { test -n "$m" || test -n "$m0"; } && machine_used=t
4b69abad
RM
736 case x${m0:-$m} in
737 x*/$submachine) submachine_used=t ;;
738 esac
e0a3ed4f
RM
739 if test -n "$d"; then
740 case "$sysnames_add_ons" in
741 *" $d "*) ;;
742 *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
743 esac
744 fi
8f73811b 745 fi
57ba7bb4 746 fi
8f73811b 747 done
57ba7bb4 748 done
28f540f4
RM
749 done
750 done
751 done
752 done
4b69abad 753done
28f540f4 754
6f89d2f3
L
755# If the assembler supports gnu_indirect_function symbol type and the
756# architecture supports multi-arch, we enable multi-arch by default.
84b9230c
MF
757case $sysnames_add_ons$sysnames in
758*"$multi_arch_d"*)
759 ;;
760*)
77e8bddf 761 test x"$multi_arch" = xdefault && multi_arch=no
84b9230c
MF
762 ;;
763esac
764if test x"$multi_arch" != xno; then
6f89d2f3
L
765 AC_DEFINE(USE_MULTIARCH)
766fi
767AC_SUBST(multi_arch)
768
28f540f4
RM
769if test -z "$os_used" && test "$os" != none; then
770 AC_MSG_ERROR(Operating system $os is not supported.)
771fi
772if test -z "$machine_used" && test "$machine" != none; then
773 AC_MSG_ERROR(The $machine is not supported.)
774fi
2ceaa76a
RM
775if test -z "$submachine_used" && test -n "$submachine"; then
776 AC_MSG_ERROR(The $submachine subspecies of $host_cpu is not supported.)
777fi
778AC_SUBST(submachine)
28f540f4
RM
779
780# We have now validated the configuration.
781
28f540f4
RM
782# Expand the list of system names into a full list of directories
783# from each element's parent name and Implies file (if present).
784set $sysnames
e50ec9f9 785names=
28f540f4
RM
786while test $# -gt 0; do
787 name=$1
788 shift
789
e50ec9f9 790 case " $names " in *" $name "*)
f332db02
RM
791 # Already in the list.
792 continue
e50ec9f9 793 esac
f332db02
RM
794
795 # Report each name as we discover it, so there is no long pause in output.
0b4ee387 796 echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
f332db02 797
57ba7bb4
UD
798 name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
799
800 case $name in
801 /*) xsrcdir= ;;
802 *) xsrcdir=$srcdir/ ;;
803 esac
804 test -n "$enable_debug_configure" &&
805 echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
806
ba75122d
RM
807 for implies_file in Implies Implies-before Implies-after; do
808 implies_type=`echo $implies_file | sed s/-/_/`
809 eval ${implies_type}=
810 if test -f $xsrcdir$name/$implies_file; then
811 # Collect more names from the `Implies' file (removing comments).
812 implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/$implies_file`"
813 for x in $implied_candidate; do
814 found=no
815 if test -d $xsrcdir$name_base/$x; then
816 eval "${implies_type}=\"\$${implies_type} \$name_base/\$x\""
636ccfc8 817 found=yes
ba75122d
RM
818 fi
819 for d in $add_ons_pfx ''; do
820 try="${d}sysdeps/$x"
821 case $d in
822 /*) try_srcdir= ;;
823 *) try_srcdir=$srcdir/ ;;
e0a3ed4f 824 esac
ba75122d
RM
825 test -n "$enable_debug_configure" &&
826 echo "[DEBUG]: $name $implies_file $x try($d) {$try_srcdir}$try" >&2
827 if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
828 then
829 eval "${implies_type}=\"\$${implies_type} \$try\""
830 found=yes
831 case "$sysnames_add_ons" in
832 *" $d "*) ;;
833 *|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
834 esac
835 fi
836 done
837 if test $found = no; then
838 AC_MSG_WARN($name/$implies_file specifies nonexistent $x)
636ccfc8
UD
839 fi
840 done
ba75122d
RM
841 fi
842 done
28f540f4
RM
843
844 # Add NAME to the list of names.
845 names="$names $name"
846
847 # Find the parent of NAME, using the empty string if it has none.
848changequote(,)dnl
57ba7bb4 849 parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
28f540f4
RM
850changequote([,])dnl
851
ba75122d
RM
852 test -n "$enable_debug_configure" &&
853 echo "[DEBUG]: $name Implies='$Implies' rest='$*' parent='$parent' \
57633811 854Implies_before='$Implies_before' Implies_after='$Implies_after'" >&2
ba75122d 855
28f540f4
RM
856 # Add the names implied by NAME, and NAME's parent (if it has one), to
857 # the list of names to be processed (the argument list). We prepend the
858 # implied names to the list and append the parent. We want implied
859 # directories to come before further directories inferred from the
860 # configuration components; this ensures that for sysv4, unix/common
861 # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
862 # after sysv4).
ba75122d 863 sysnames="`echo $Implies $* $Implies_before $parent $Implies_after`"
28f540f4
RM
864 test -n "$sysnames" && set $sysnames
865done
866
867# Add the default directories.
83ef87ba 868default_sysnames="sysdeps/generic"
ecdc196c 869sysnames="$names $default_sysnames"
f332db02
RM
870AC_SUBST(sysnames)
871# The other names were emitted during the scan.
ecdc196c 872AC_MSG_RESULT($default_sysnames)
28f540f4 873
e0a3ed4f
RM
874# Collect the list of add-ons that supply partial sysdeps trees.
875sysdeps_add_ons=
876for add_on in $add_ons; do
877 case "$add_on" in
878 /*) xsrcdir= ;;
879 *) xsrcdir="$srcdir/" ;;
880 esac
881
882 test -d "$xsrcdir$add_on/sysdeps" || {
883 case "$configured_add_ons " in
884 *" $add_on "*) ;;
885 *|'')
886 AC_MSG_ERROR(add-on $add_on has no configure fragment or sysdeps tree)
887 ;;
888 esac
889 continue
890 }
891
892 sysdeps_add_ons="$sysdeps_add_ons $add_on"
893 case "$sysnames_add_ons" in
894 *" $add_on/ "*) ;;
895 *|'')
896 AC_MSG_WARN(add-on $add_on contributed no sysdeps directories)
897 continue ;;
898 esac
899
900 found=no
901 for d in $sysnames; do
902 case "$d" in
903 $add_on/sysdeps/*) ;;
904 *) continue ;;
905 esac
906 (cd "$xsrcdir$d" && for f in *[[!~]]; do
907 case "$f" in
908 sys|bits)
909 for ff in $f/*.h; do
910 test -d "$ff" || { test -e "$ff" && exit 88; }
911 done
912 ;;
913 *)
77e8bddf 914 test -d "$f" || { test -e "$f" && exit 88; }
e0a3ed4f
RM
915 ;;
916 esac
917 done)
918 if test $? -eq 88; then
919 found=yes
920 break
921 fi
922 done
923 if test $found = no; then
924 AC_MSG_WARN(add-on $add_on contributed no useful sysdeps directories)
925 fi
926done
927AC_SUBST(sysdeps_add_ons)
928
f332db02
RM
929
930### Locate tools.
28f540f4 931
28f540f4 932AC_PROG_INSTALL
2b80a372 933if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
28f540f4 934 # The makefiles need to use a different form to find it in $srcdir.
2b80a372 935 INSTALL='\$(..)./scripts/install-sh -c'
28f540f4 936fi
0e3426bb 937AC_PROG_LN_S
ae828bc6 938
4baa087a 939LIBC_PROG_BINUTILS
4baa087a 940
bec039bc 941# Accept binutils 2.20 or newer.
4baa087a
RM
942AC_CHECK_PROG_VER(AS, $AS, --version,
943 [GNU assembler.* \([0-9]*\.[0-9.]*\)],
bec039bc 944 [2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], AS=: critic_missing="$critic_missing as")
4baa087a
RM
945AC_CHECK_PROG_VER(LD, $LD, --version,
946 [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
bec039bc 947 [2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], LD=: critic_missing="$critic_missing ld")
4baa087a 948
63bda0c1 949# These programs are version sensitive.
3a12e572 950AC_CHECK_TOOL_PREFIX
4bca4c17 951AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
cbe7d24b 952 [version \([egcygnustpi-]*[0-9.]*\)], [4.[4-9].* | 4.[1-9][0-9].* | [5-9].* ],
90d1d40b 953 critic_missing="$critic_missing gcc")
22e65f8f 954AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
8fc1e2ca 955 [GNU Make[^0-9]*\([0-9][0-9.]*\)],
28d708c4 956 [3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make")
63bda0c1 957
22e65f8f 958AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
bdd421cc 959 [GNU gettext.* \([0-9]*\.[0-9.]*\)],
aefdff34
RM
960 [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
961 MSGFMT=: aux_missing="$aux_missing msgfmt")
63bda0c1 962AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
8b7fb588 963 [GNU texinfo.* \([0-9][0-9.]*\)],
6a3951a0 964 [4.[5-9]*|4.[1-9][0-9]*|[5-9].*],
aefdff34 965 MAKEINFO=: aux_missing="$aux_missing makeinfo")
d6a97a28 966AC_CHECK_PROG_VER(SED, sed, --version,
07e51550 967 [GNU sed[^0-9]* \([0-9]*\.[0-9.]*\)],
aefdff34
RM
968 [3.0[2-9]*|3.[1-9]*|[4-9]*],
969 SED=: aux_missing="$aux_missing sed")
0786794f
AM
970AC_CHECK_PROG_VER(AWK, gawk, --version,
971 [GNU Awk[^0-9]*\([0-9][0-9.]*\)],
12086fb4 972 [3.1.[2-9]*|3.[2-9]*|[4-9]*], critic_missing="$critic_missing gawk")
63bda0c1 973
30b99d79 974AC_CHECK_TOOL(NM, nm, false)
d30cf5bb 975
8894bad3
AM
976if test "x$maintainer" = "xyes"; then
977 AC_CHECK_PROGS(AUTOCONF, autoconf, no)
978 case "x$AUTOCONF" in
979 xno|x|x:) AUTOCONF=no ;;
980 *)
981 AC_CACHE_CHECK(dnl
982 whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
983 if (cd $srcdir; $AUTOCONF $ACFLAGS configure.ac > /dev/null 2>&1); then
984 libc_cv_autoconf_works=yes
985 else
986 libc_cv_autoconf_works=no
987 fi])
988 test $libc_cv_autoconf_works = yes || AUTOCONF=no
989 ;;
990 esac
991 if test "x$AUTOCONF" = xno; then
992 aux_missing="$aux_missing autoconf"
993 fi
9e8ac24b
AM
994else
995 AUTOCONF=no
14519931 996fi
1400de2e 997
32a448ed
RM
998test -n "$critic_missing" && AC_MSG_ERROR([
999*** These critical programs are missing or too old:$critic_missing
1000*** Check the INSTALL file for required versions.])
1001
4bca4c17 1002test -n "$aux_missing" && AC_MSG_WARN([
9c6fffc0 1003*** These auxiliary programs are missing or incompatible versions:$aux_missing
63bda0c1
UD
1004*** some features will be disabled.
1005*** Check the INSTALL file for required versions.])
28f540f4 1006
dbe7a0f5
UD
1007# if using special system headers, find out the compiler's sekrit
1008# header directory and add that to the list. NOTE: Only does the right
1009# thing on a system that doesn't need fixincludes. (Not presently a problem.)
1010if test -n "$sysheaders"; then
67fbfa5c
RM
1011 SYSINCLUDES=-nostdinc
1012 for d in include include-fixed; do
1013 i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
1014 SYSINCLUDES="$SYSINCLUDES -isystem $i"
1015 done
1016 SYSINCLUDES="$SYSINCLUDES \
3d6ce23a 1017-isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
ef226fec 1018 if test -n "$CXX"; then
7872cfb0 1019 CXX_SYSINCLUDES=
67060746
AC
1020 for cxxheaders in `$CXX -v -S -x c++ /dev/null -o /dev/null 2>&1 \
1021 | sed -n -e '1,/#include/d' -e 's/^ \(\/.*\/[cg]++\)/\1/p'`; do
1022 test "x$cxxheaders" != x &&
1023 CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders"
1024 done
ef226fec 1025 fi
dbe7a0f5
UD
1026fi
1027AC_SUBST(SYSINCLUDES)
ef226fec 1028AC_SUBST(CXX_SYSINCLUDES)
dbe7a0f5 1029
3911660e
UD
1030# Test if LD_LIBRARY_PATH contains the notation for the current directory
1031# since this would lead to problems installing/building glibc.
1032# LD_LIBRARY_PATH contains the current directory if one of the following
1033# is true:
1034# - one of the terminals (":" and ";") is the first or last sign
1035# - two terminals occur directly after each other
1036# - the path contains an element with a dot in it
1037AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
1038changequote(,)dnl
1039case ${LD_LIBRARY_PATH} in
1040 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
b3a86ae1 1041 ld_library_path_setting="contains current directory"
3911660e
UD
1042 ;;
1043 *)
1044 ld_library_path_setting="ok"
1045 ;;
1046esac
1047changequote([,])dnl
1048AC_MSG_RESULT($ld_library_path_setting)
1049if test "$ld_library_path_setting" != "ok"; then
63bda0c1
UD
1050AC_MSG_ERROR([
1051*** LD_LIBRARY_PATH shouldn't contain the current directory when
1052*** building glibc. Please change the environment variable
1053*** and run configure again.])
3911660e 1054fi
8e31cf7e 1055
74bd2300 1056AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
8175a253 1057if $CC -v -static-libgcc 2>&1 | grep 'unrecognized option.*static-libgcc' >/dev/null; then
74bd2300
UD
1058 libc_cv_gcc_static_libgcc=
1059else
1060 libc_cv_gcc_static_libgcc=-static-libgcc
1061fi])
1062AC_SUBST(libc_cv_gcc_static_libgcc)
1063
26f56c1c 1064AC_PATH_PROG(BASH_SHELL, bash, no)
84384f5b 1065
c0016081 1066AC_PATH_PROG(PERL, perl, no)
2fd5d029
RM
1067if test "$PERL" != no &&
1068 (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
1069 PERL=no
ecb06196 1070fi
2f512715
AS
1071AC_PATH_PROG(INSTALL_INFO, install-info, no,
1072 $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
2de00372
UD
1073AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
1074
b8dc6a10 1075AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
28f540f4
RM
1076AC_TRY_COMPILE(dnl
1077[#define __need_size_t
1078#define __need_wchar_t
1079#include <stddef.h>
1080#define __need_NULL
1081#include <stddef.h>], [size_t size; wchar_t wchar;
1082#ifdef offsetof
1083#error stddef.h ignored __need_*
1084#endif
1085if (&size == NULL || &wchar == NULL) abort ();],
77e8bddf
AS
1086 libc_cv_friendly_stddef=yes,
1087 libc_cv_friendly_stddef=no)])
28f540f4
RM
1088if test $libc_cv_friendly_stddef = yes; then
1089 config_vars="$config_vars
1090override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
1091fi
1092
b8dc6a10
RM
1093AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
1094 libc_cv_need_minus_P, [dnl
28f540f4
RM
1095cat > conftest.S <<EOF
1096#include "confdefs.h"
1097/* Nothing whatsoever. */
1098EOF
3217788f 1099if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
28f540f4
RM
1100 libc_cv_need_minus_P=no
1101else
1102 libc_cv_need_minus_P=yes
1103fi
1104rm -f conftest*])
28f540f4
RM
1105if test $libc_cv_need_minus_P = yes; then
1106 config_vars="$config_vars
1107asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
1108fi
1109
b8dc6a10 1110AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
9a70fcab 1111cat > conftest.s <<EOF
2293395f 1112${libc_cv_dot_text}
ae1025be 1113foo:
df2a0c93 1114.set glibc_conftest_frobozz,foo
7b8e0d49 1115.globl glibc_conftest_frobozz
e215c478 1116EOF
df2a0c93
RM
1117# The alpha-dec-osf1 assembler gives only a warning for `.set'
1118# (but it doesn't work), so we must do a linking check to be sure.
1119cat > conftest1.c <<\EOF
1120extern int glibc_conftest_frobozz;
640f0119 1121void _start() { glibc_conftest_frobozz = 1; }
df2a0c93
RM
1122EOF
1123if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
640f0119 1124 -nostartfiles -nostdlib \
0b4ee387 1125 -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
e215c478
RM
1126 libc_cv_asm_set_directive=yes
1127else
1128 libc_cv_asm_set_directive=no
1129fi
65b3cbcb 1130rm -f conftest*])
e215c478
RM
1131if test $libc_cv_asm_set_directive = yes; then
1132 AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
1133fi
1134
415ac3df
UD
1135AC_CACHE_CHECK(for assembler gnu_unique_object symbol type,
1136 libc_cv_asm_unique_object, [dnl
1137cat > conftest.s <<EOF
1138${libc_cv_dot_text}
1139_sym:
b67e9372 1140.type _sym, %gnu_unique_object
415ac3df
UD
1141EOF
1142if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1143 libc_cv_asm_unique_object=yes
1144else
1145 libc_cv_asm_unique_object=no
1146fi
1147rm -f conftest*])
1148if test $libc_cv_asm_unique_object = yes; then
1149 AC_DEFINE(HAVE_ASM_UNIQUE_OBJECT)
1150fi
1151
a0da5fe1
UD
1152AC_CACHE_CHECK(for .previous assembler directive,
1153 libc_cv_asm_previous_directive, [dnl
1154cat > conftest.s <<EOF
fd26970f
UD
1155.section foo_section
1156.previous
a0da5fe1
UD
1157EOF
1158if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1159 libc_cv_asm_previous_directive=yes
1160else
1161 libc_cv_asm_previous_directive=no
1162fi
1163rm -f conftest*])
1164if test $libc_cv_asm_previous_directive = yes; then
1165 AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
1166else
1167 AC_CACHE_CHECK(for .popsection assembler directive,
1168 libc_cv_asm_popsection_directive, [dnl
1169 cat > conftest.s <<EOF
1170.pushsection foo_section
1171.popsection
fd26970f 1172EOF
3217788f 1173 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
a0da5fe1 1174 libc_cv_asm_popsection_directive=yes
fd26970f 1175 else
a0da5fe1 1176 libc_cv_asm_popsection_directive=no
fd26970f
UD
1177 fi
1178 rm -f conftest*])
a0da5fe1
UD
1179 if test $libc_cv_asm_popsection_directive = yes; then
1180 AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
fd26970f 1181 fi
a0da5fe1
UD
1182fi
1183AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1184 libc_cv_asm_protected_directive, [dnl
1185cat > conftest.s <<EOF
2d499f55
UD
1186.protected foo
1187foo:
1188.hidden bar
1189bar:
1190EOF
a0da5fe1
UD
1191if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1192 libc_cv_asm_protected_directive=yes
1193else
1194 AC_MSG_ERROR(assembler support for symbol visibility is required)
1195fi
1196rm -f conftest*])
0fb7851f 1197
a0da5fe1
UD
1198if test $libc_cv_asm_protected_directive = yes; then
1199 AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
0d01dace
UD
1200 libc_cv_visibility_attribute,
1201 [cat > conftest.c <<EOF
1202 int foo __attribute__ ((visibility ("hidden"))) = 1;
1203 int bar __attribute__ ((visibility ("protected"))) = 1;
1204EOF
1205 libc_cv_visibility_attribute=no
61cea1c3 1206 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
0d01dace
UD
1207 if grep '\.hidden.*foo' conftest.s >/dev/null; then
1208 if grep '\.protected.*bar' conftest.s >/dev/null; then
1209 libc_cv_visibility_attribute=yes
1210 fi
1211 fi
1212 fi
f7d82dc9 1213 rm -f conftest.{c,s}
0d01dace 1214 ])
a0da5fe1
UD
1215 if test $libc_cv_visibility_attribute != yes; then
1216 AC_MSG_ERROR(compiler support for visibility attribute is required)
0d01dace 1217 fi
a0da5fe1 1218fi
0d01dace 1219
a0da5fe1
UD
1220if test $libc_cv_visibility_attribute = yes; then
1221 AC_CACHE_CHECK(for broken __attribute__((visibility())),
37ba7d66
UD
1222 libc_cv_broken_visibility_attribute,
1223 [cat > conftest.c <<EOF
1224 int foo (int x);
1225 int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1226 int bar (int x) { return x; }
1227EOF
1228 libc_cv_broken_visibility_attribute=yes
f7d82dc9 1229 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
37ba7d66
UD
1230changequote(,)dnl
1231 if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
1232changequote([,])dnl
1233 libc_cv_broken_visibility_attribute=no
1234 fi
1235 fi
1236 rm -f conftest.c conftest.s
1237 ])
a0da5fe1
UD
1238 if test $libc_cv_broken_visibility_attribute = yes; then
1239 AC_MSG_ERROR(working compiler support for visibility attribute is required)
37ba7d66 1240 fi
a0da5fe1 1241fi
37ba7d66 1242
a0da5fe1
UD
1243AC_CACHE_CHECK(for broken __attribute__((alias())),
1244 libc_cv_broken_alias_attribute,
1245 [cat > conftest.c <<EOF
1246 extern int foo (int x) __asm ("xyzzy");
1247 int bar (int x) { return x; }
1248 extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1249 extern int dfoo;
1250 extern __typeof (dfoo) dfoo __asm ("abccb");
1251 int dfoo = 1;
37ba7d66 1252EOF
a0da5fe1
UD
1253 libc_cv_broken_alias_attribute=yes
1254 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1255 if grep 'xyzzy' conftest.s >/dev/null &&
1256 grep 'abccb' conftest.s >/dev/null; then
1257 libc_cv_broken_alias_attribute=no
1258 fi
1259 fi
1260 rm -f conftest.c conftest.s
1261 ])
1262if test $libc_cv_broken_alias_attribute = yes; then
1263 AC_MSG_ERROR(working alias attribute support required)
1264fi
1265
1266if test $libc_cv_visibility_attribute = yes; then
1267 AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
0d01dace
UD
1268 libc_cv_have_sdata_section,
1269 [echo "int i;" > conftest.c
1270 libc_cv_have_sdata_section=no
dbc92dc6 1271 if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
0d01dace
UD
1272 | grep '\.sdata' >/dev/null; then
1273 libc_cv_have_sdata_section=yes
1274 fi
1275 rm -f conftest.c conftest.so
1276 ])
a0da5fe1
UD
1277 if test $libc_cv_have_sdata_section = yes; then
1278 AC_DEFINE(HAVE_SDATA_SECTION)
0d01dace 1279 fi
a0da5fe1 1280fi
0d01dace 1281
a0da5fe1
UD
1282AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1283 libc_cv_initfini_array, [dnl
07037eeb 1284LIBC_TRY_LINK_STATIC([
5241882c 1285int foo (void) { return 1; }
2c617417 1286int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
07037eeb
JM
1287],
1288 [if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
a0da5fe1 1289 libc_cv_initfini_array=yes
5241882c 1290 else
ce33ee7c 1291 libc_cv_initfini_array=no
07037eeb
JM
1292 fi],
1293 [libc_cv_initfini_array=no])
1294])
a0da5fe1
UD
1295if test $libc_cv_initfini_array != yes; then
1296 AC_MSG_ERROR([Need linker with .init_array/.fini_array support.])
1297fi
62bede13 1298
a0da5fe1
UD
1299AC_CACHE_CHECK(whether to use .ctors/.dtors header and trailer,
1300 libc_cv_ctors_header, [dnl
1301 libc_cv_ctors_header=yes
07037eeb
JM
1302 LIBC_TRY_LINK_STATIC([
1303__attribute__ ((constructor)) void ctor (void) { asm (""); }
1304__attribute__ ((destructor)) void dtor (void) { asm (""); }
113ddea4 1305],
a0da5fe1 1306 [dnl
113ddea4 1307 AS_IF([$READELF -WS conftest$ac_exeext | $AWK '
92963737 1308 { gsub(/\@<:@ */, "@<:@") }
113ddea4
RM
1309 $2 == ".ctors" || $2 == ".dtors" {
1310 size = strtonum("0x" $6)
1311 align = strtonum("0x" $NF)
1312 seen@<:@$2@:>@ = 1
1313 stub@<:@$2@:>@ = size == align * 2
92963737 1314 }
113ddea4
RM
1315 END {
1316 ctors_ok = !seen@<:@".ctors"@:>@ || stub@<:@".ctors"@:>@
1317 dtors_ok = !seen@<:@".dtors"@:>@ || stub@<:@".dtors"@:>@
1318 exit ((ctors_ok && dtors_ok) ? 0 : 1)
1319 }
1320 '], [libc_cv_ctors_header=no])
1321 ], [dnl
1322 AC_MSG_ERROR([missing __attribute__ ((constructor)) support??])
1323 ])
a0da5fe1
UD
1324])
1325if test $libc_cv_ctors_header = no; then
1326 AC_DEFINE(NO_CTORS_DTORS_SECTIONS)
1327fi
5241882c 1328
a0da5fe1
UD
1329AC_CACHE_CHECK(for libunwind-support in compiler,
1330 libc_cv_cc_with_libunwind, [
1331 cat > conftest.c <<EOF
cbdb12de
UD
1332int main (void) { return 0; }
1333EOF
a0da5fe1 1334 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
8175a253 1335 conftest.c -v 2>&1 >/dev/null | grep ' -lunwind ' >/dev/null; then
a0da5fe1
UD
1336 libc_cv_cc_with_libunwind=yes
1337 else
1338 libc_cv_cc_with_libunwind=no
c776b3d7 1339 fi
a0da5fe1
UD
1340 rm -f conftest*])
1341AC_SUBST(libc_cv_cc_with_libunwind)
1342if test $libc_cv_cc_with_libunwind = yes; then
1343 AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
1344fi
c776b3d7 1345
6bfea974
L
1346LIBC_LINKER_FEATURE([-z nodelete], [-Wl,--enable-new-dtags,-z,nodelete],
1347 [libc_cv_z_nodelete=yes],
1348 [AC_MSG_ERROR(linker with -z nodelete support required)])
2f54c82d 1349
6bfea974
L
1350LIBC_LINKER_FEATURE([-z nodlopen], [-Wl,--enable-new-dtags,-z,nodlopen],
1351 [libc_cv_z_nodlopen=yes],
1352 [AC_MSG_ERROR(linker with -z nodlopen support required)])
5d916713 1353
6bfea974
L
1354LIBC_LINKER_FEATURE([-z initfirst], [-Wl,--enable-new-dtags,-z,initfirst],
1355 [libc_cv_z_initfirst=yes],
1356 [AC_MSG_ERROR(linker with -z initfirst support required)])
639c3248 1357
a0da5fe1
UD
1358# Add-on fragments can set these for other machines.
1359libc_commonpagesize=${libc_commonpagesize:-no}
1360libc_relro_required=${libc_relro_required:-no}
1361case "$base_machine" in
1362 i[[34567]]86 | x86_64 | powerpc* | s390*)
1363 libc_commonpagesize=0x1000
1364 libc_relro_required=yes
1365 ;;
1366 sparc*)
1367 libc_commonpagesize=0x2000
1368 libc_relro_required=yes
1369 ;;
a0da5fe1 1370esac
574920b4 1371
a0da5fe1
UD
1372if test $libc_commonpagesize != no; then
1373 AC_CACHE_CHECK(for -z relro option,
1374 libc_cv_z_relro, [dnl
1375 libc_cv_z_relro=no
1376 AC_LANG_CONFTEST([AC_LANG_SOURCE([[
574920b4
RM
1377int _start (void) { return 42; }
1378extern void _exit (int);
9fa2c032
RM
1379/* Since these pointers are const, they should go in rodata.
1380 Since they refer to functions that have to be resolved by
1381 dynamic linking, they should instead go in RELRO data. */
defe9061 1382const void *const relro[] = { &_start, &_exit, 0 };
9fa2c032
RM
1383/* GNU ld fails to produce RELRO data when it's very small and there is no
1384 normal writable data following it, or if only uninitialized (.bss) data
1385 follows it, or only very small writable data. */
1386int data[0x10000] = { 1, };
574920b4 1387]])])
a0da5fe1 1388 cat > conftest.awk <<\EOF
574920b4
RM
1389BEGIN {
1390 result = "no"
1391 commonpagesize = strtonum(commonpagesize)
1392}
1393{ print "LINE:", $0 > "/dev/stderr" }
1394$1 == "GNU_RELRO" {
1395 vaddr = strtonum($3)
1396 memsz = strtonum($6)
1397 end = vaddr + memsz
1398 printf "vaddr %#x memsz %#x end %#x commonpagesize %#x\n", \
1399 vaddr, memsz, end, commonpagesize > "/dev/stderr"
1400 result = (end % commonpagesize == 0) ? "yes" : "broken"
1401}
1402END { print result }
1403EOF
a0da5fe1 1404 AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
574920b4
RM
1405 -fPIC -shared -o conftest.so conftest.c
1406 -nostartfiles -nostdlib
1407 -Wl,-z,relro 1>&AS_MESSAGE_LOG_FD]) &&
a0da5fe1
UD
1408 AC_TRY_COMMAND([$READELF -Wl conftest.so > conftest.ph]) &&
1409 AC_TRY_COMMAND([
574920b4
RM
1410 $AWK -v commonpagesize=$libc_commonpagesize -f conftest.awk
1411 conftest.ph > conftest.cps
1412 ]) &&
a0da5fe1
UD
1413 libc_cv_z_relro=`cat conftest.cps 2>&AS_MESSAGE_LOG_FD`
1414 rm -f conftest*])
1415 if { test "x$libc_relro_required" = xyes &&
1416 test "x$libc_cv_z_relro" != xyes
1417 }
1418 then
1419 AC_MSG_ERROR(linker with -z relro support required)
574920b4 1420 fi
a0da5fe1
UD
1421else
1422 AC_MSG_WARN([missing architecture parameter to check for working -z relro])
1423fi
ed20b3d9 1424
a0da5fe1
UD
1425AC_CACHE_CHECK(for -Bgroup option,
1426 libc_cv_Bgroup, [dnl
1427cat > conftest.c <<EOF
639c3248
UD
1428int _start (void) { return 42; }
1429EOF
a0da5fe1
UD
1430if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1431 -fPIC -shared -o conftest.so conftest.c
1432 -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1433then
1434 libc_cv_Bgroup=yes
1435else
1436 libc_cv_Bgroup=no
1437fi
1438rm -f conftest*])
1439AC_SUBST(libc_cv_Bgroup)
a711b01d 1440
a0da5fe1
UD
1441ASFLAGS_config=
1442AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1443 libc_cv_as_noexecstack, [dnl
1444cat > conftest.c <<EOF
35915ec8
UD
1445void foo (void) { }
1446EOF
a0da5fe1
UD
1447if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1448 -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
8175a253 1449 && grep .note.GNU-stack conftest.s >/dev/null \
a0da5fe1
UD
1450 && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
1451 -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1452then
1453 libc_cv_as_noexecstack=yes
1454else
1455 libc_cv_as_noexecstack=no
1456fi
1457rm -f conftest*])
1458if test $libc_cv_as_noexecstack = yes; then
1459 ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1460fi
1461AC_SUBST(ASFLAGS_config)
2abf9ff1 1462
a0da5fe1
UD
1463AC_CACHE_CHECK(for -z combreloc,
1464 libc_cv_z_combreloc, [dnl
1465cat > conftest.c <<EOF
d555194c
UD
1466extern int bar (int);
1467extern int mumble;
1468int foo (void) { return bar (mumble); }
a711b01d 1469EOF
a0da5fe1 1470if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
dbc92dc6 1471 -fPIC -shared -o conftest.so conftest.c
35cd3c97 1472 -nostdlib -nostartfiles
c2f55635 1473 -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
a0da5fe1 1474then
a711b01d
UD
1475dnl The following test is a bit weak. We must use a tool which can test
1476dnl cross-platform since the gcc used can be a cross compiler. Without
1477dnl introducing new options this is not easily doable. Instead use a tool
1478dnl which always is cross-platform: readelf. To detect whether -z combreloc
1479dnl look for a section named .rel.dyn.
a0da5fe1
UD
1480 if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1481 libc_cv_z_combreloc=yes
fdde8349
UD
1482 else
1483 libc_cv_z_combreloc=no
a711b01d 1484 fi
a0da5fe1
UD
1485else
1486 libc_cv_z_combreloc=no
1487fi
1488rm -f conftest*])
1489if test "$libc_cv_z_combreloc" = yes; then
1490 AC_DEFINE(HAVE_Z_COMBRELOC)
1491fi
1492AC_SUBST(libc_cv_z_combreloc)
2abf9ff1 1493
6bfea974
L
1494LIBC_LINKER_FEATURE([-z execstack], [-Wl,-z,execstack],
1495 [libc_cv_z_execstack=yes], [libc_cv_z_execstack=no])
a0da5fe1 1496AC_SUBST(libc_cv_z_execstack)
c9c60884 1497
a0da5fe1 1498AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
4da0431d
JM
1499LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no])
1500])
c9c60884 1501
a0da5fe1 1502AC_SUBST(libc_cv_fpie)
871b9158 1503
a0da5fe1
UD
1504AC_CACHE_CHECK(for --hash-style option,
1505 libc_cv_hashstyle, [dnl
1506cat > conftest.c <<EOF
871b9158
UD
1507int _start (void) { return 42; }
1508EOF
a0da5fe1
UD
1509if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1510 -fPIC -shared -o conftest.so conftest.c
1511 -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
1512then
1513 libc_cv_hashstyle=yes
1514else
1515 libc_cv_hashstyle=no
1516fi
1517rm -f conftest*])
1518AC_SUBST(libc_cv_hashstyle)
1519
1520# The linker's default -shared behavior is good enough if it
1521# does these things that our custom linker scripts ensure that
1522# all allocated NOTE sections come first.
1523if test "$use_default_link" = default; then
1524 AC_CACHE_CHECK([for sufficient default -shared layout],
1525 libc_cv_use_default_link, [dnl
1526 libc_cv_use_default_link=no
1527 cat > conftest.s <<\EOF
fd5e21c7
RM
1528 .section .note.a,"a",%note
1529 .balign 4
1530 .long 4,4,9
1531 .string "GNU"
1532 .string "foo"
1533 .section .note.b,"a",%note
1534 .balign 4
1535 .long 4,4,9
1536 .string "GNU"
1537 .string "bar"
1538EOF
a0da5fe1 1539 if AC_TRY_COMMAND([dnl
fd5e21c7
RM
1540 ${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD]) &&
1541 ac_try=`$READELF -S conftest.so | sed -n \
1542 ['${x;p;}
1543 s/^ *\[ *[1-9][0-9]*\] *\([^ ][^ ]*\) *\([^ ][^ ]*\) .*$/\2 \1/
1544 t a
1545 b
1546 : a
1547 H']`
a0da5fe1
UD
1548 then
1549 libc_seen_a=no libc_seen_b=no
1550 set -- $ac_try
1551 while test $# -ge 2 -a "$1" = NOTE; do
1552 case "$2" in
1553 .note.a) libc_seen_a=yes ;;
1554 .note.b) libc_seen_b=yes ;;
1555 esac
1556 shift 2
1557 done
1558 case "$libc_seen_a$libc_seen_b" in
1559 yesyes)
1560 libc_cv_use_default_link=yes
1561 ;;
1562 *)
1563 echo >&AS_MESSAGE_LOG_FD "\
fd5e21c7
RM
1564$libc_seen_a$libc_seen_b from:
1565$ac_try"
a0da5fe1
UD
1566 ;;
1567 esac
fd5e21c7 1568 fi
a0da5fe1
UD
1569 rm -f conftest*])
1570 use_default_link=$libc_cv_use_default_link
fd26970f 1571fi
49803108 1572
5c550700
RM
1573AC_CACHE_CHECK(linker output format, libc_cv_output_format, [dnl
1574if libc_cv_output_format=`
1575${CC-cc} -nostartfiles -nostdlib -Wl,--print-output-format 2>&AS_MESSAGE_LOG_FD`
1576then
1577 :
1578else
1579 libc_cv_output_format=
1580fi
1581test -n "$libc_cv_output_format" || libc_cv_output_format=unknown])
1582AC_SUBST(libc_cv_output_format)
1583
22dca1ea 1584AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl
49803108
AJ
1585cat > conftest.c <<EOF
1586int foo;
1587EOF
22dca1ea 1588if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-anchors
49803108
AJ
1589 conftest.c 1>&AS_MESSAGE_LOG_FD])
1590then
18e2ac6d 1591 libc_cv_fno_toplevel_reorder=yes
49803108 1592else
18e2ac6d 1593 libc_cv_fno_toplevel_reorder=no
49803108
AJ
1594fi
1595rm -f conftest*])
18e2ac6d 1596if test $libc_cv_fno_toplevel_reorder = yes; then
22dca1ea 1597 fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
18e2ac6d 1598else
49803108
AJ
1599 fno_unit_at_a_time=-fno-unit-at-a-time
1600fi
1601AC_SUBST(fno_unit_at_a_time)
fd26970f 1602
401a9ec9 1603AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
17228132
TS
1604LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector],
1605 [libc_cv_ssp=yes],
1606 [libc_cv_ssp=no])
1607])
401a9ec9
UD
1608AC_SUBST(libc_cv_ssp)
1609
b037a293
UD
1610AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl
1611cat > conftest.c <<EOF
1612int foo;
1613#ifdef __GNUC_GNU_INLINE__
1614main () { return 0;}
1615#else
1616#error
1617#endif
1618EOF
371f84a4
JJ
1619if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -std=gnu99 -fgnu89-inline
1620 -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD])
b037a293
UD
1621then
1622 libc_cv_gnu89_inline=yes
1623else
1624 libc_cv_gnu89_inline=no
1625fi
1626rm -f conftest*])
1627if test $libc_cv_gnu89_inline = yes; then
1c7570ff 1628 gnu89_inline=-fgnu89-inline
b037a293 1629else
1c7570ff 1630 gnu89_inline=
b037a293 1631fi
1c7570ff 1632AC_SUBST(gnu89_inline)
b037a293 1633
a0da5fe1
UD
1634AC_CACHE_CHECK(whether cc puts quotes around section names,
1635 libc_cv_have_section_quotes,
1636 [cat > conftest.c <<EOF
1637 static const int foo
1638 __attribute__ ((section ("bar"))) = 1;
e26dd47f 1639EOF
a0da5fe1
UD
1640 if ${CC-cc} -S conftest.c -o conftest.s; then
1641 if grep '\.section.*"bar"' conftest.s >/dev/null; then
1642 libc_cv_have_section_quotes=yes
e26dd47f 1643 else
a0da5fe1 1644 libc_cv_have_section_quotes=no
e26dd47f 1645 fi
a0da5fe1
UD
1646 else
1647 libc_cv_have_section_quotes=unknown
1648 fi
1649 rm -f conftest.{c,s}
1650 ])
1651if test $libc_cv_have_section_quotes = yes; then
1652 AC_DEFINE(HAVE_SECTION_QUOTES)
9a97d1f7
UD
1653fi
1654
1655AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
75d86c1f 1656 [dnl
c224a18a 1657cat > conftest.s <<EOF
2293395f 1658${libc_cv_dot_text}
7b8e0d49 1659.globl foo
ae1025be 1660foo:
c224a18a
RM
1661.weak foo
1662.weak bar; bar = foo
1663EOF
3217788f 1664if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
9a97d1f7
UD
1665 libc_cv_asm_weak_directive=yes
1666else
1667 libc_cv_asm_weak_directive=no
1668fi
1669rm -f conftest*])
c224a18a 1670
c8cf0b14 1671if test $libc_cv_asm_weak_directive = no; then
c224a18a
RM
1672 AC_CACHE_CHECK(for assembler .weakext directive,
1673 libc_cv_asm_weakext_directive,
1674 [dnl
1675cat > conftest.s <<EOF
2293395f 1676${libc_cv_dot_text}
7b8e0d49 1677.globl foo
ae1025be 1678foo:
f802accb
UD
1679.weakext bar foo
1680.weakext baz
7b8e0d49 1681.globl baz
9a97d1f7 1682baz:
c224a18a 1683EOF
3217788f 1684 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
c224a18a
RM
1685 libc_cv_asm_weakext_directive=yes
1686 else
1687 libc_cv_asm_weakext_directive=no
1688 fi
1689 rm -f conftest*])
1690
9a97d1f7 1691fi # no .weak
c224a18a 1692
ffcf9634 1693if test $libc_cv_asm_weak_directive = yes; then
c224a18a 1694 AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
ffcf9634 1695elif test $libc_cv_asm_weakext_directive = yes; then
c224a18a
RM
1696 AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1697fi
1698
50189569 1699AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
ced368f7
UD
1700case $machine in
1701 sparc/sparc64*) cfi_offset=2047;;
1702 *) cfi_offset=0;;
1703esac
50189569 1704cat > conftest.s <<EOF
77e8bddf
AS
1705 .text
1706 .type func,%function
50189569 1707func:
77e8bddf 1708 .cfi_startproc
f212e8dc 1709 .cfi_remember_state
ced368f7 1710 .cfi_rel_offset 1, $cfi_offset
77e8bddf 1711 .cfi_endproc
50189569
AJ
1712EOF
1713if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1714 libc_cv_asm_cfi_directives=yes
1715else
1716 libc_cv_asm_cfi_directives=no
1717fi
1718rm -f conftest*])
1719if test $libc_cv_asm_cfi_directives = yes; then
1720 AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
bcd5f356 1721fi
50189569 1722
a641835a
RM
1723AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1724cat > conftest.c <<\EOF
5f0e6fc7 1725_start () {}
dcf0671d
UD
1726int __eh_pc;
1727__throw () {}
a641835a 1728EOF
dcea62dd 1729dnl No \ in command here because it ends up inside ''.
3217788f 1730if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
dcea62dd 1731 -nostdlib -nostartfiles -Wl,--no-whole-archive
c2f55635 1732 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
a641835a
RM
1733 libc_cv_ld_no_whole_archive=yes
1734else
1735 libc_cv_ld_no_whole_archive=no
1736fi
1737rm -f conftest*])
3ce1f295
UD
1738if test $libc_cv_ld_no_whole_archive = no; then
1739 AC_MSG_ERROR([support for --no-whole-archive is needed])
b17277cf 1740fi
a641835a 1741
dff14448 1742AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
b236e99d
UD
1743cat > conftest.c <<\EOF
1744_start () {}
1745int __eh_pc;
1746__throw () {}
1747EOF
1748dnl No \ in command here because it ends up inside ''.
3217788f 1749if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
dff14448 1750 -nostdlib -nostartfiles -fexceptions
c2f55635 1751 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
dff14448 1752 libc_cv_gcc_exceptions=yes
b236e99d 1753else
dff14448 1754 libc_cv_gcc_exceptions=no
b236e99d
UD
1755fi
1756rm -f conftest*])
dff14448
UD
1757if test $libc_cv_gcc_exceptions = yes; then
1758 exceptions=-fexceptions
b17277cf 1759fi
dff14448 1760AC_SUBST(exceptions)dnl
b236e99d 1761
d555194c
UD
1762AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1763cat > conftest.c <<\EOF
1764void zero (void *x)
1765{
a52d1562 1766 __builtin_memset (x, 0, 1000);
d555194c
UD
1767}
1768EOF
1769dnl
1770if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1771then
1772 libc_cv_gcc_builtin_memset=no
1773else
1774 libc_cv_gcc_builtin_memset=yes
1775fi
1776rm -f conftest* ])
1777if test "$libc_cv_gcc_builtin_memset" = yes ; then
1778 AC_DEFINE(HAVE_BUILTIN_MEMSET)
1779fi
1780
85dd1003
UD
1781AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1782cat > conftest.c <<\EOF
1783extern char *strstr (const char *, const char *) __asm ("my_strstr");
1784char *foo (const char *a, const char *b)
1785{
1786 return __builtin_strstr (a, b);
1787}
1788EOF
1789dnl
1790if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
1791then
1792 libc_cv_gcc_builtin_redirection=yes
1793else
1794 libc_cv_gcc_builtin_redirection=no
1795fi
1796rm -f conftest* ])
3ce1f295
UD
1797if test "$libc_cv_gcc_builtin_redirection" = no; then
1798 AC_MSG_ERROR([support for the symbol redirection needed])
85dd1003
UD
1799fi
1800
739d440d 1801dnl Check whether the compiler supports the __thread keyword.
3ce1f295
UD
1802AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1803[cat > conftest.c <<\EOF
fbb18522
RM
1804__thread int a = 42;
1805EOF
3ce1f295
UD
1806if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
1807 libc_cv_gcc___thread=yes
739d440d
UD
1808else
1809 libc_cv_gcc___thread=no
1810fi
3ce1f295
UD
1811rm -f conftest*])
1812if test "$libc_cv_gcc___thread" = no; then
1813 AC_MSG_ERROR([support for the __thread keyword is required])
1814fi
739d440d 1815
3ce1f295
UD
1816dnl Check whether the compiler supports the tls_model attribute.
1817AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1818cat > conftest.c <<\EOF
9b21e6bc
RM
1819extern __thread int a __attribute__((tls_model ("initial-exec")));
1820EOF
3ce1f295
UD
1821if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
1822 libc_cv_gcc_tls_model_attr=yes
1823else
1824 libc_cv_gcc_tls_model_attr=no
1825fi
1826rm -f conftest*])
1827if test "$libc_cv_gcc_tls_model_attr" = no; then
1828 AC_MSG_ERROR([support for the tls_model attribute is required])
9b21e6bc 1829fi
739d440d 1830
7998fa78
AS
1831dnl Determine how to disable generation of FMA instructions.
1832AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
1833 libc_cv_cc_nofma, [dnl
1834libc_cv_cc_nofma=
1835for opt in -ffp-contract=off -mno-fused-madd; do
1836 LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
1837done])
bef0b507 1838AC_SUBST(libc_cv_cc_nofma)
7998fa78 1839
2cf9ad57
RM
1840if test -n "$submachine"; then
1841 AC_CACHE_CHECK([for compiler option for CPU variant],
f7d82dc9 1842 libc_cv_cc_submachine, [dnl
2cf9ad57
RM
1843 libc_cv_cc_submachine=no
1844 for opt in "-march=$submachine" "-mcpu=$submachine"; do
40b601fb 1845 LIBC_TRY_CC_OPTION([$opt], [
2cf9ad57 1846 libc_cv_cc_submachine="$opt"
40b601fb 1847 break], [])
2cf9ad57
RM
1848 done])
1849 if test "x$libc_cv_cc_submachine" = xno; then
1850 AC_MSG_ERROR([${CC-cc} does not support $submachine])
1851 fi
1852fi
1853AC_SUBST(libc_cv_cc_submachine)
1854
85c2e611
AZ
1855AC_CACHE_CHECK(if $CC accepts -fno-tree-loop-distribute-patterns with \
1856__attribute__ ((__optimize__)), libc_cv_cc_loop_to_function, [dnl
1857cat > conftest.c <<EOF
1858void
1859__attribute__ ((__optimize__ ("-fno-tree-loop-distribute-patterns")))
1860foo (void) {}
1861EOF
1862libc_cv_cc_loop_to_function=no
1863if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c])
1864then
1865 libc_cv_cc_loop_to_function=yes
1866fi
1867rm -f conftest*])
1868if test $libc_cv_cc_loop_to_function = yes; then
1869 AC_DEFINE(HAVE_CC_INHIBIT_LOOP_TO_LIBCALL)
1870fi
1871AC_SUBST(libc_cv_cc_loop_to_function)
1872
c8f3e6db
UD
1873dnl Check whether we have the gd library available.
1874AC_MSG_CHECKING(for libgd)
6dab8688
UD
1875if test "$with_gd" != "no"; then
1876 old_CFLAGS="$CFLAGS"
1877 CFLAGS="$CFLAGS $libgd_include"
1878 old_LDFLAGS="$LDFLAGS"
1879 LDFLAGS="$LDFLAGS $libgd_ldflags"
1880 old_LIBS="$LIBS"
1881 LIBS="$LIBS -lgd -lpng -lz -lm"
1882 AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1883 CFLAGS="$old_CFLAGS"
1884 LDFLAGS="$old_LDFLAGS"
1885 LIBS="$old_LIBS"
1886else
1887 LIBGD=no
1888fi
c8f3e6db
UD
1889AC_MSG_RESULT($LIBGD)
1890AC_SUBST(LIBGD)
3d558f4e 1891
2fff3d93
UD
1892# SELinux detection
1893if test x$with_selinux = xno ; then
1894 have_selinux=no;
1895else
1896 # See if we have the SELinux library
1897 AC_CHECK_LIB(selinux, is_selinux_enabled,
1898 have_selinux=yes, have_selinux=no)
49155d51 1899 if test x$with_selinux = xyes ; then
2fff3d93 1900 if test x$have_selinux = xno ; then
0699f766 1901 AC_MSG_ERROR([SELinux explicitly required, but SELinux library not found])
2fff3d93
UD
1902 fi
1903 fi
1904fi
1905# Check if we're building with SELinux support.
1906if test "x$have_selinux" = xyes; then
943db9eb 1907 AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
ec23b9be
UD
1908
1909 # See if we have the libaudit library
943db9eb 1910 AC_CHECK_LIB(audit, audit_log_user_avc_message,
77e8bddf 1911 have_libaudit=yes, have_libaudit=no)
ec23b9be 1912 if test "x$have_libaudit" = xyes; then
943db9eb 1913 AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
ec23b9be
UD
1914 fi
1915 AC_SUBST(have_libaudit)
1f063dca
UD
1916
1917 # See if we have the libcap library
1918 AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
1919 if test "x$have_libcap" = xyes; then
1920 AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
1921 fi
1922 AC_SUBST(have_libcap)
2fff3d93
UD
1923fi
1924AC_SUBST(have_selinux)
1925
8ed1e7d5
GK
1926dnl check for the size of 'long double'.
1927AC_CHECK_SIZEOF(long double, 0)
1928sizeof_long_double=$ac_cv_sizeof_long_double
1929AC_SUBST(sizeof_long_double)
1930
61653dfb
RM
1931CPPUNDEFS=
1932dnl Check for silly hacked compilers predefining _FORTIFY_SOURCE.
1933dnl Since we are building the implementations of the fortified functions here,
1934dnl having the macro defined interacts very badly.
1935AC_CACHE_CHECK([for _FORTIFY_SOURCE predefine], libc_cv_predef_fortify_source,
1936[AC_TRY_COMPILE([], [
1937#ifdef _FORTIFY_SOURCE
1938# error bogon
1939#endif],
1940 [libc_cv_predef_fortify_source=no],
1941 [libc_cv_predef_fortify_source=yes])])
1942if test $libc_cv_predef_fortify_source = yes; then
1943 CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE"
1944fi
1945AC_SUBST(CPPUNDEFS)
1946
30b99d79
RM
1947dnl Check for silly hacked compilers inserting -fstack-protector.
1948dnl This breaks badly for the early startup code we compile, since
1949dnl the compiled code can refer to a magic machine-dependent location
1950dnl for the canary value before we have sufficient setup for that to
1951dnl work. It's also questionable to build all of libc with this flag
1952dnl even when you're doing that for most applications you build, since
1953dnl libc's code is so heavily-used and performance-sensitive. If we
1954dnl ever really want to make that work, it should be enabled explicitly
1955dnl in the libc build, not inherited from implicit compiler settings.
1956AC_CACHE_CHECK([whether $CC implicitly enables -fstack-protector],
1957 libc_cv_predef_stack_protector, [
1958AC_TRY_COMPILE([extern void foobar (char *);],
1959 [char large_array[2048]; foobar (large_array);], [
1960libc_undefs=`$NM -u conftest.o |
1961 LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \
1962 2>&AS_MESSAGE_LOG_FD` || {
1963 AC_MSG_ERROR([confusing output from $NM -u])
1964}
1965echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'"
59f0c22e
JM
1966# On some architectures, there are architecture-specific undefined
1967# symbols (resolved by the linker), so filter out unknown symbols.
1968# This will fail to produce the correct result if the compiler
1969# defaults to -fstack-protector but this produces an undefined symbol
1970# other than __stack_chk_fail. However, compilers like that have not
1971# been encountered in practice.
1972libc_undefs=`echo "$libc_undefs" | egrep '^(foobar|__stack_chk_fail)$'`
30b99d79
RM
1973case "$libc_undefs" in
1974foobar) libc_cv_predef_stack_protector=no ;;
1975'__stack_chk_fail
1976foobar') libc_cv_predef_stack_protector=yes ;;
1977*) AC_MSG_ERROR([unexpected symbols in test: $libc_undefs]) ;;
1978esac],
1979 [AC_MSG_ERROR([test compilation failed])])
1980])
1981libc_extra_cflags=
1982if test $libc_cv_predef_stack_protector = yes; then
7ffa9423 1983 libc_extra_cflags="$libc_extra_cflags -fno-stack-protector"
30b99d79 1984fi
7ffa9423 1985libc_extra_cppflags=
30b99d79 1986
44c4e5d5
RM
1987AC_CACHE_CHECK([whether the linker provides __ehdr_start],
1988 libc_cv_ehdr_start, [
1989old_CFLAGS="$CFLAGS"
1990old_LDFLAGS="$LDFLAGS"
1991old_LIBS="$LIBS"
1992CFLAGS="$CFLAGS -fPIC"
1993LDFLAGS="$LDFLAGS -nostdlib -nostartfiles -shared"
1994LIBS=
1995AC_LINK_IFELSE([AC_LANG_SOURCE([
1996extern const char __ehdr_start __attribute__ ((visibility ("hidden")));
1997const char *ehdr (void) { return &__ehdr_start; }
1998])],
1999 [libc_cv_ehdr_start=yes], [libc_cv_ehdr_start=no])
2000CFLAGS="$old_CFLAGS"
2001LDFLAGS="$old_LDFLAGS"
2002LIBS="$old_LIBS"
2003])
2004if test $libc_cv_ehdr_start = yes; then
2005 AC_DEFINE([HAVE_EHDR_START])
2006fi
2007
c224a18a
RM
2008### End of automated tests.
2009### Now run sysdeps configure fragments.
2010
cb343854 2011# They also can set these variables.
591e1ffb 2012use_ldconfig=no
cb343854 2013ldd_rewrite_script=no
77259608 2014libc_cv_sysconfdir=$sysconfdir
4248b1b1 2015libc_cv_localstatedir=$localstatedir
74bd2300 2016libc_cv_gcc_unwind_find_fde=no
e2fd3cbe 2017libc_cv_idn=no
cb343854 2018
28f540f4 2019# Iterate over all the sysdep directories we will use, running their
09055553 2020# configure fragments.
28f540f4 2021for dir in $sysnames; do
57ba7bb4
UD
2022 case $dir in
2023 /*) dest=$dir ;;
2024 *) dest=$srcdir/$dir ;;
2025 esac
2026 if test -r $dest/configure; then
d1149385 2027 AC_MSG_RESULT(running configure fragment for $dir)
57ba7bb4 2028 . $dest/configure
28f540f4 2029 fi
28f540f4
RM
2030done
2031
7ffa9423
AZ
2032AC_SUBST(libc_extra_cflags)
2033AC_SUBST(libc_extra_cppflags)
2034
74bd2300
UD
2035if test x$libc_cv_gcc_unwind_find_fde = xyes; then
2036 AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
2037fi
2038AC_SUBST(libc_cv_gcc_unwind_find_fde)
2039
6e6249d0
RM
2040# A sysdeps configure fragment can reset this if IFUNC is not actually
2041# usable even though the assembler knows how to generate the symbol type.
2042if test x"$libc_cv_ld_gnu_indirect_function" = xyes; then
2043 AC_DEFINE(HAVE_IFUNC)
2044fi
2045
3cc3ef96
RM
2046# This is far from the AC_ARG_ENABLE that sets it so that a sysdeps
2047# configure fragment can override the value to prevent this AC_DEFINE.
2048AC_SUBST(use_nscd)
2049if test "x$use_nscd" != xno; then
2050 AC_DEFINE([USE_NSCD])
2051fi
c53d909c
RM
2052if test "x$build_nscd" = xdefault; then
2053 build_nscd=$use_nscd
2054fi
3cc3ef96 2055
a53bad16
UD
2056# Test for old glibc 2.0.x headers so that they can be removed properly
2057# Search only in includedir.
2058AC_MSG_CHECKING(for old glibc 2.0.x headers)
350eb336 2059if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
a53bad16
UD
2060then
2061 old_glibc_headers=yes
2062else
2063 old_glibc_headers=no
2064fi
2065AC_MSG_RESULT($old_glibc_headers)
2066if test ${old_glibc_headers} = yes; then
2067 AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
2068 AC_MSG_WARN(*** be removed.)
2069fi
b195f6bc 2070AC_SUBST(old_glibc_headers)
26b4d766 2071
84384f5b 2072AC_SUBST(libc_cv_slibdir)
aaa8cb4b 2073AC_SUBST(libc_cv_rtlddir)
a1d84548 2074AC_SUBST(libc_cv_localedir)
77259608 2075AC_SUBST(libc_cv_sysconfdir)
4248b1b1 2076AC_SUBST(libc_cv_localstatedir)
1ef32c3d 2077AC_SUBST(libc_cv_rootsbindir)
bcd5f356 2078AC_SUBST(libc_cv_forced_unwind)
1ef32c3d 2079
f57f8055
RM
2080if test x$use_ldconfig = xyes; then
2081 AC_DEFINE(USE_LDCONFIG)
2082fi
591e1ffb 2083AC_SUBST(use_ldconfig)
cb343854 2084AC_SUBST(ldd_rewrite_script)
84384f5b 2085
650425ce 2086AC_SUBST(static)
ff3d7ed3 2087AC_SUBST(shared)
a334319f 2088
ff886b82
UD
2089AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
2090[libc_cv_pic_default=yes
cc3fa755 2091cat > conftest.c <<EOF
9756dfe1 2092#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
cc3fa755
UD
2093# error PIC is default.
2094#endif
2095EOF
0b4ee387 2096if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
ff886b82 2097 libc_cv_pic_default=no
cc3fa755
UD
2098fi
2099rm -f conftest.*])
ff886b82 2100AC_SUBST(libc_cv_pic_default)
cc3fa755 2101
ff3d7ed3 2102AC_SUBST(profile)
5107cf1d 2103AC_SUBST(static_nss)
ff3d7ed3 2104
edf5b2d7
UD
2105AC_SUBST(DEFINES)
2106
cb8a6dbd 2107dnl See sysdeps/mach/configure.ac for this variable.
61c83c3f
RM
2108AC_SUBST(mach_interface_list)
2109
ee74a442
UD
2110VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
2111RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
df4ef2ab 2112AC_SUBST(VERSION)
ee74a442 2113AC_SUBST(RELEASE)
df4ef2ab 2114
728e272a 2115AC_CONFIG_FILES([config.make Makefile])
c118d634 2116AC_CONFIG_COMMANDS([default],[[
737547be
UD
2117case $CONFIG_FILES in *config.make*)
2118echo "$config_vars" >> config.make;;
2119esac
c118d634
RM
2120test -d bits || mkdir bits]],[[config_vars='$config_vars']])
2121AC_OUTPUT