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