]> git.ipfire.org Git - thirdparty/glibc.git/blame - configure.ac
Remove --with-default-link configure option
[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.
02d35f06
PE
3AC_INIT([GNU C Library], [(see version.h)], [https://sourceware.org/bugzilla/],
4 [glibc], [https://www.gnu.org/software/glibc/])
5d77b1da 5AC_CONFIG_SRCDIR([include/features.h])
6b7f6183
RM
6AC_CONFIG_HEADERS([config.h])
7AC_CONFIG_AUX_DIR([scripts])
28f540f4 8
8b748aed 9ACX_PKGVERSION([GNU libc])
5a82c748 10ACX_BUGURL([https://www.gnu.org/software/libc/bugs.html])
8b748aed
JM
11AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"],
12 [Package description])
13AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"],
14 [Bug reporting address])
15
918b5606
L
16# Glibc should not depend on any header files
17AC_DEFUN([_AC_INCLUDES_DEFAULT_REQUIREMENTS],
18 [m4_divert_text([DEFAULTS],
19 [ac_includes_default='/* none */'])])
20
bb931195
TS
21# We require GCC, and by default use its preprocessor. Override AC_PROG_CPP
22# here to work around the Autoconf issue discussed in
a306c790 23# <https://sourceware.org/ml/libc-alpha/2013-01/msg00721.html>.
bb931195
TS
24AC_DEFUN([AC_PROG_CPP],
25[AC_REQUIRE([AC_PROG_CC])dnl
26AC_ARG_VAR([CPP], [C preprocessor])dnl
27_AC_ARG_VAR_CPPFLAGS()dnl
28# On Suns, sometimes $CPP names a directory.
29if test -n "$CPP" && test -d "$CPP"; then
30 CPP=
31fi
32if test -z "$CPP"; then
33 CPP="$CC -E"
34fi
35AC_SUBST(CPP)dnl
36])# AC_PROG_CPP
37
b5a5da23
TS
38# We require GCC. Override _AC_PROG_CC_C89 here to work around the Autoconf
39# issue discussed in
a306c790 40# <https://sourceware.org/ml/libc-alpha/2013-01/msg00757.html>.
b5a5da23
TS
41AC_DEFUN([_AC_PROG_CC_C89], [[$1]])
42
7967983f
RM
43dnl This is here so we can set $subdirs directly based on configure fragments.
44AC_CONFIG_SUBDIRS()
45
c16a054d
AS
46AC_CANONICAL_HOST
47
c0bac8b0
UD
48AC_PROG_CC
49if test $host != $build; then
50 AC_CHECK_PROGS(BUILD_CC, gcc cc)
51fi
52AC_SUBST(cross_compiling)
53AC_PROG_CPP
e4693aa7 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],
83103074 92 AS_HELP_STRING([--with-gd=DIR],
77e8bddf 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],
83103074 102 AS_HELP_STRING([--with-gd-include=DIR],
77e8bddf
AS
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],
83103074 111 AS_HELP_STRING([--with-gd-lib=DIR],
77e8bddf
AS
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([binutils],
83103074 131 AS_HELP_STRING([--with-binutils=PATH],
77e8bddf 132 [specify location of binutils (as and ld)]),
6b7f6183
RM
133 [path_binutils=$withval],
134 [path_binutils=''])
2fff3d93 135AC_ARG_WITH([selinux],
83103074 136 AS_HELP_STRING([--with-selinux],
77e8bddf 137 [if building with SELinux support]),
2fff3d93
UD
138 [with_selinux=$withval],
139 [with_selinux=auto])
28f540f4 140
6b7f6183 141AC_ARG_WITH([headers],
83103074 142 AS_HELP_STRING([--with-headers=PATH],
77e8bddf 143 [location of system headers to use
6b7f6183
RM
144 (for example /usr/src/linux/include)
145 @<:@default=compiler default@:>@]),
146 [sysheaders=$withval],
147 [sysheaders=''])
c91c505f 148AC_SUBST(sysheaders)
dbe7a0f5 149
6413fcde
FW
150dnl Additional build flags injection.
151AC_ARG_WITH([nonshared-cflags],
83103074 152 AS_HELP_STRING([--with-nonshared-cflags=CFLAGS],
6413fcde
FW
153 [build nonshared libraries with additional CFLAGS]),
154 [extra_nonshared_cflags=$withval],
155 [extra_nonshared_cflags=])
156AC_SUBST(extra_nonshared_cflags)
9ba202c7
FW
157AC_ARG_WITH([rtld-early-cflags],
158 AS_HELP_STRING([--with-rtld-early-cflags=CFLAGS],
159 [build early initialization with additional CFLAGS]),
160 [rtld_early_cflags=$withval],
161 [rtld_early_cflags=])
162AC_SUBST(rtld_early_cflags)
6413fcde 163
bada2e31
L
164AC_ARG_WITH([timeoutfactor],
165 AS_HELP_STRING([--with-timeoutfactor=NUM],
166 [specify an integer to scale the timeout]),
167 [timeoutfactor=$withval],
168 [timeoutfactor=1])
169AC_DEFINE_UNQUOTED(TIMEOUTFACTOR, $timeoutfactor)
170
6b7f6183 171AC_ARG_ENABLE([sanity-checks],
83103074 172 AS_HELP_STRING([--disable-sanity-checks],
77e8bddf 173 [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
6b7f6183
RM
174 [enable_sanity=$enableval],
175 [enable_sanity=yes])
a18f587d 176
6b7f6183 177AC_ARG_ENABLE([shared],
83103074 178 AS_HELP_STRING([--enable-shared],
a0da5fe1 179 [build shared library @<:@default=yes if GNU ld@:>@]),
6b7f6183 180 [shared=$enableval],
a0da5fe1 181 [shared=yes])
6b7f6183 182AC_ARG_ENABLE([profile],
83103074 183 AS_HELP_STRING([--enable-profile],
77e8bddf 184 [build profiled library @<:@default=no@:>@]),
6b7f6183 185 [profile=$enableval],
11bf311e 186 [profile=no])
23645707
SP
187AC_ARG_ENABLE([default-pie],
188 AS_HELP_STRING([--disable-default-pie],
189 [Do not build glibc programs and the testsuite as PIE @<:@default=no@:>@]),
190 [default_pie=$enableval],
191 [default_pie=yes])
1cba4036 192AC_ARG_ENABLE([timezone-tools],
83103074 193 AS_HELP_STRING([--disable-timezone-tools],
44f826e3 194 [do not install timezone tools @<:@default=install@:>@]),
1cba4036
MF
195 [enable_timezone_tools=$enableval],
196 [enable_timezone_tools=yes])
197AC_SUBST(enable_timezone_tools)
6b7f6183 198
740b3dbe 199AC_ARG_ENABLE([hardcoded-path-in-tests],
83103074 200 AS_HELP_STRING([--enable-hardcoded-path-in-tests],
740b3dbe
L
201 [hardcode newly built glibc path in tests @<:@default=no@:>@]),
202 [hardcoded_path_in_tests=$enableval],
203 [hardcoded_path_in_tests=no])
204AC_SUBST(hardcoded_path_in_tests)
205
6b7f6183 206AC_ARG_ENABLE([hidden-plt],
83103074 207 AS_HELP_STRING([--disable-hidden-plt],
77e8bddf 208 [do not hide internal function calls to avoid PLT]),
6b7f6183
RM
209 [hidden=$enableval],
210 [hidden=yes])
749a9a4f
RM
211if test "x$hidden" = xno; then
212 AC_DEFINE(NO_HIDDEN)
213fi
214
4df8c11d 215AC_ARG_ENABLE([bind-now],
83103074 216 AS_HELP_STRING([--enable-bind-now],
4df8c11d
UD
217 [disable lazy relocations in DSOs]),
218 [bindnow=$enableval],
219 [bindnow=no])
220AC_SUBST(bindnow)
6901def6
L
221if test "x$bindnow" = xyes; then
222 AC_DEFINE(BIND_NOW)
223fi
4df8c11d 224
03baef1c
NA
225dnl Build glibc with -fstack-protector, -fstack-protector-all, or
226dnl -fstack-protector-strong.
227AC_ARG_ENABLE([stack-protector],
83103074 228 AS_HELP_STRING([--enable-stack-protector=@<:@yes|no|all|strong@:>@],
03baef1c
NA
229 [Use -fstack-protector[-all|-strong] to detect glibc buffer overflows]),
230 [enable_stack_protector=$enableval],
231 [enable_stack_protector=no])
232case "$enable_stack_protector" in
233all|yes|no|strong) ;;
234*) AC_MSG_ERROR([Not a valid argument for --enable-stack-protector: \"$enable_stack_protector\"]);;
235esac
236
5107cf1d
UD
237dnl On some platforms we cannot use dynamic loading. We must provide
238dnl static NSS modules.
6b7f6183 239AC_ARG_ENABLE([static-nss],
83103074 240 AS_HELP_STRING([--enable-static-nss],
77e8bddf 241 [build static NSS modules @<:@default=no@:>@]),
6b7f6183
RM
242 [static_nss=$enableval],
243 [static_nss=no])
834cef7c
UD
244dnl Enable static NSS also if we build no shared objects.
245if test x"$static_nss" = xyes || test x"$shared" = xno; then
3172f58f 246 static_nss=yes
5107cf1d
UD
247 AC_DEFINE(DO_STATIC_NSS)
248fi
249
6b7f6183 250AC_ARG_ENABLE([force-install],
83103074 251 AS_HELP_STRING([--disable-force-install],
77e8bddf 252 [don't force installation of files from this package, even if they are older than the installed files]),
6b7f6183
RM
253 [force_install=$enableval],
254 [force_install=yes])
73237de3
UD
255AC_SUBST(force_install)
256
8894bad3 257AC_ARG_ENABLE([maintainer-mode],
83103074 258 AS_HELP_STRING([--enable-maintainer-mode],
8894bad3
AM
259 [enable make rules and dependencies not useful (and sometimes confusing) to the casual installer]),
260 [maintainer=$enableval],
261 [maintainer=no])
262
958f238f
UD
263dnl On some platforms we allow dropping compatibility with all kernel
264dnl versions.
6b7f6183 265AC_ARG_ENABLE([kernel],
83103074 266 AS_HELP_STRING([--enable-kernel=VERSION],
77e8bddf 267 [compile for compatibility with kernel not older than VERSION]),
6b7f6183
RM
268 [minimum_kernel=$enableval],
269 [])
86cfe82d
UD
270dnl Prevent unreasonable values.
271if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
272 # Better nothing than this.
273 minimum_kernel=""
269e369f
UD
274else
275 if test "$minimum_kernel" = current; then
276 minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
277 fi
86cfe82d 278fi
958f238f 279
6cc7d725
UD
280dnl For the development we sometimes want gcc to issue even more warnings.
281dnl This is not the default since many of the extra warnings are not
282dnl appropriate.
6b7f6183 283AC_ARG_ENABLE([all-warnings],
83103074 284 AS_HELP_STRING([--enable-all-warnings],
77e8bddf 285 [enable all useful warnings gcc can issue]),
6b7f6183
RM
286 [all_warnings=$enableval],
287 [])
6cc7d725
UD
288AC_SUBST(all_warnings)
289
a4ecc9eb 290AC_ARG_ENABLE([werror],
83103074 291 AS_HELP_STRING([--disable-werror],
a4ecc9eb
JM
292 [do not build with -Werror]),
293 [enable_werror=$enableval],
294 [enable_werror=yes])
295AC_SUBST(enable_werror)
296
425ce2ed 297AC_ARG_ENABLE([multi-arch],
83103074 298 AS_HELP_STRING([--enable-multi-arch],
425ce2ed
UD
299 [enable single DSO with optimizations for multiple architectures]),
300 [multi_arch=$enableval],
6f89d2f3 301 [multi_arch=default])
425ce2ed 302
d5c3fafc 303AC_ARG_ENABLE([experimental-malloc],
83103074 304 AS_HELP_STRING([--disable-experimental-malloc],
d5c3fafc
DD
305 [disable experimental malloc features]),
306 [experimental_malloc=$enableval],
307 [experimental_malloc=yes])
308AC_SUBST(experimental_malloc)
309
33784089 310AC_ARG_ENABLE([memory-tagging],
83103074 311 AS_HELP_STRING([--enable-memory-tagging],
33784089
RE
312 [enable memory tagging if supported by the architecture @<:@default=no@:>@]),
313 [memory_tagging=$enableval],
314 [memory_tagging=no])
315if test "$memory_tagging" = yes; then
316 # Only enable this on architectures that support it.
317 case $host_cpu in
318 aarch64)
319 AC_DEFINE(USE_MTAG)
320 ;;
321 esac
322fi
323AC_SUBST(memory_tagging)
324
e69d994a 325AC_ARG_ENABLE([crypt],
83103074 326 AS_HELP_STRING([--disable-crypt],
e69d994a
ZW
327 [do not build nor install the passphrase hashing library, libcrypt]),
328 [build_crypt=$enableval],
329 [build_crypt=yes])
330AC_SUBST(build_crypt)
331
ff886b82 332AC_ARG_ENABLE([nss-crypt],
83103074 333 AS_HELP_STRING([--enable-nss-crypt],
ff886b82
UD
334 [enable libcrypt to use nss]),
335 [nss_crypt=$enableval],
336 [nss_crypt=no])
e69d994a
ZW
337if test x$build_libcrypt = xno && test x$nss_crypt = xyes; then
338 AC_MSG_WARN([--enable-nss-crypt has no effect when libcrypt is disabled])
339 nss_crypt=no
340fi
ff886b82
UD
341if test x$nss_crypt = xyes; then
342 nss_includes=-I$(nss-config --includedir 2>/dev/null)
343 if test $? -ne 0; then
344 AC_MSG_ERROR([cannot find include directory with nss-config])
345 fi
57b4af19
GT
346 nspr_includes=-I$(nspr-config --includedir 2>/dev/null)
347 if test $? -ne 0; then
348 AC_MSG_ERROR([cannot find include directory with nspr-config])
349 fi
ff886b82 350 old_CFLAGS="$CFLAGS"
57b4af19 351 CFLAGS="$CFLAGS $nss_includes $nspr_includes"
b68e08db 352 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
ff886b82
UD
353#include <hasht.h>
354#include <nsslowhash.h>
b68e08db 355void f (void) { NSSLOW_Init (); }])],
ff886b82
UD
356 libc_cv_nss_crypt=yes,
357 AC_MSG_ERROR([
358cannot find NSS headers with lowlevel hash function interfaces]))
359 old_LIBS="$LIBS"
84aa7516 360 old_LDFLAGS="$LDFLAGS"
ff886b82
UD
361 LIBS="$LIBS -lfreebl3"
362 AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
363#include <hasht.h>
364#include <nsslowhash.h>],
365 [NSSLOW_Init();])],
366 libc_cv_nss_crypt=yes,
367 AC_MSG_ERROR([
368cannot link program using lowlevel NSS hash functions]))
84aa7516
CD
369 # Check to see if there is a static NSS cryptographic library.
370 # If there isn't then we can't link anything with libcrypt.a,
371 # and that might mean disabling some static tests.
372 LDFLAGS="$LDFLAGS -static"
373 AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
374#include <hasht.h>
375#include <nsslowhash.h>],
376 [NSSLOW_Init();])],
377 libc_cv_static_nss_crypt=yes,
378 libc_cv_static_nss_crypt=no)
379 LDFLAGS="$old_LDFLAGS"
ff886b82
UD
380 CFLAGS="$old_CFLAGS"
381 LIBS="$old_LIBS"
382else
383 libc_cv_nss_crypt=no
84aa7516 384 libc_cv_static_nss_crypt=no
ff886b82
UD
385fi
386AC_SUBST(libc_cv_nss_crypt)
84aa7516 387AC_SUBST(libc_cv_static_nss_crypt)
ff886b82 388
3a097cc7 389
3a097cc7
RM
390AC_ARG_ENABLE([systemtap],
391 [AS_HELP_STRING([--enable-systemtap],
392 [enable systemtap static probe points @<:@default=no@:>@])],
393 [systemtap=$enableval],
394 [systemtap=no])
395if test "x$systemtap" != xno; then
396 AC_CACHE_CHECK([for systemtap static probe support], libc_cv_sdt, [dnl
397 old_CFLAGS="$CFLAGS"
783dd2d3 398 CFLAGS="-std=gnu11 $CFLAGS"
0e3933b9 399 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <sys/sdt.h>
3a097cc7
RM
400void foo (int i, void *p)
401{
402 asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) ""
403 :: STAP_PROBE_ASM_OPERANDS (2, i, p));
0e3933b9 404}]])], [libc_cv_sdt=yes], [libc_cv_sdt=no])
3a097cc7
RM
405 CFLAGS="$old_CFLAGS"])
406 if test $libc_cv_sdt = yes; then
407 AC_DEFINE([USE_STAP_PROBE])
408 elif test "x$systemtap" != xauto; then
409 AC_MSG_FAILURE([systemtap support needs sys/sdt.h with asm support])
410 fi
411fi
412
c53d909c
RM
413AC_ARG_ENABLE([build-nscd],
414 [AS_HELP_STRING([--disable-build-nscd],
415 [disable building and installing the nscd daemon])],
416 [build_nscd=$enableval],
417 [build_nscd=default])
418AC_SUBST(build_nscd)
419
3cc3ef96
RM
420# Note the use of $use_nscd is near the bottom of the file.
421AC_ARG_ENABLE([nscd],
422 [AS_HELP_STRING([--disable-nscd],
423 [library functions will not contact the nscd daemon])],
424 [use_nscd=$enableval],
425 [use_nscd=yes])
426
e4608715
CD
427AC_ARG_ENABLE([pt_chown],
428 [AS_HELP_STRING([--enable-pt_chown],
429 [Enable building and installing pt_chown])],
430 [build_pt_chown=$enableval],
431 [build_pt_chown=no])
432AC_SUBST(build_pt_chown)
8c12f01d 433if test "$build_pt_chown" = yes; then
e4608715
CD
434 AC_DEFINE(HAVE_PT_CHOWN)
435fi
436
67e58f39
SP
437AC_ARG_ENABLE([tunables],
438 [AS_HELP_STRING([--enable-tunables],
6765d5d3 439 [Enable tunables support. Known values are 'yes', 'no' and 'valstring'])],
67e58f39 440 [have_tunables=$enableval],
2c0b90ab 441 [have_tunables=yes])
67e58f39
SP
442AC_SUBST(have_tunables)
443if test "$have_tunables" = yes; then
444 AC_DEFINE(HAVE_TUNABLES)
445fi
446
ebf27d12
ST
447# The abi-tags file uses a fairly simplistic model for name recognition that
448# can't distinguish i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a
449# $host_os of `gnu*' here to be `gnu-gnu*' just so that it can tell.
450# This doesn't get used much beyond that, so it's fairly safe.
451case "$host_os" in
452linux*)
453 ;;
454gnu*)
455 host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
456 ;;
457esac
458
5695d46f
AS
459AC_ARG_ENABLE([mathvec],
460 [AS_HELP_STRING([--enable-mathvec],
461 [Enable building and installing mathvec @<:@default depends on architecture@:>@])],
462 [build_mathvec=$enableval],
463 [build_mathvec=notset])
464
b190bccc 465AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[]], [[
9fb81390
FW
466#ifndef __CET__
467# error no CET compiler support
b190bccc 468#endif]])],
9fb81390
FW
469 [libc_cv_compiler_default_cet=yes],
470 [libc_cv_compiler_default_cet=no])
471
f753fa7d 472AC_ARG_ENABLE([cet],
83103074 473 AS_HELP_STRING([--enable-cet],
f753fa7d
L
474 [enable Intel Control-flow Enforcement Technology (CET), x86 only]),
475 [enable_cet=$enableval],
9fb81390 476 [enable_cet=$libc_cv_compiler_default_cet])
f753fa7d 477
ebae2f5a
MC
478AC_ARG_ENABLE([scv],
479 AC_HELP_STRING([--disable-scv],
480 [syscalls will not use scv instruction, even if the kernel supports it, powerpc only]),
481 [use_scv=$enableval],
482 [use_scv=yes])
483
484AS_IF([[test "$use_scv" != "no"]],[AC_DEFINE(USE_PPC_SCV)])
485
28f540f4
RM
486# We keep the original values in `$config_*' and never modify them, so we
487# can write them unchanged into config.make. Everything else uses
488# $machine, $vendor, and $os, and changes them whenever convenient.
489config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
490
2f64b655
UD
491# Don't allow vendor == "unknown"
492test "$config_vendor" = unknown && config_vendor=
493config_os="`echo $config_os | sed 's/^unknown-//'`"
494
a2fe9c76 495# Some configurations imply other options.
0269750c 496elf=yes
a2fe9c76 497
644d3857 498# The configure fragment of a port can modify these to supplement
8f73811b
RM
499# or override the table in the case statement below. No fragment should
500# ever change the config_* variables, however.
28f540f4
RM
501machine=$config_machine
502vendor=$config_vendor
503os=$config_os
b22d21b3 504base_os=''
28f540f4 505
2ceaa76a
RM
506submachine=
507AC_ARG_WITH([cpu],
508 AS_HELP_STRING([--with-cpu=CPU], [select code for CPU variant]),
509 [dnl
510 case "$withval" in
511 yes|'') AC_MSG_ERROR([--with-cpu requires an argument]) ;;
512 no) ;;
513 *) submachine="$withval" ;;
514 esac
515])
516
05439291
RM
517# An preconfigure script can set this when it wants to disable the sanity
518# check below.
519libc_config_ok=no
520
8df5d347
JM
521# A preconfigure script for a system that may or may not use fpu
522# sysdeps directories sets this to a preprocessor conditional for
523# whether to use such directories.
524with_fp_cond=1
525
644d3857 526dnl Let sysdeps/*/preconfigure act here.
10a803e0
RM
527LIBC_PRECONFIGURE([$srcdir], [for sysdeps])
528
8f73811b 529
bdc8eb03
UD
530###
531### By using the undocumented --enable-hacker-mode option for configure
532### one can skip this test to make the configuration not fail for unsupported
533### platforms.
534###
8f73811b 535if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
bdc8eb03 536 case "$machine-$host_os" in
2ce4f015 537 *-linux* | *-gnu*)
bdc8eb03
UD
538 ;;
539 *)
4e58b648
MF
540 AC_MSG_ERROR([
541*** The GNU C library is currently unavailable for this platform.
542*** If you are interested in seeing glibc on this platform visit
543*** the "How to submit a new port" in the wiki:
544*** https://sourceware.org/glibc/wiki/#Development
545*** and join the community!])
bdc8eb03
UD
546 ;;
547 esac
548fi
549
3e239be6
JM
550# Set base_machine if not set by a preconfigure fragment.
551test -n "$base_machine" || base_machine=$machine
f0523145 552AC_SUBST(base_machine)
28f540f4 553
43ecc41d
AZ
554### Locate tools.
555
556AC_PROG_INSTALL
557if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
558 # The makefiles need to use a different form to find it in $srcdir.
559 INSTALL='\$(..)./scripts/install-sh -c'
560fi
561AC_PROG_LN_S
562
563LIBC_PROG_BINUTILS
564
565# Accept binutils 2.25 or newer.
43ecc41d
AZ
566libc_cv_with_lld=no
567case $($LD --version) in
568 "GNU gold"*)
569 # Accept gold 1.14 or higher
570 AC_CHECK_PROG_VER(LD, $LD, --version,
571 [GNU gold.* \([0-9][0-9]*\.[0-9.]*\)],
572 [1.1[4-9]*|1.[2-9][0-9]*|1.1[0-9][0-9]*|[2-9].*|[1-9][0-9]*],
573 LD=: critic_missing="$critic_missing GNU gold")
574 ;;
575 "LLD"*)
576 # Accept LLD 13.0.0 or higher
577 AC_CHECK_PROG_VER(LD, $LD, --version,
578 [LLD.* \([0-9][0-9]*\.[0-9.]*\)],
579 [1[3-9].*|[2-9][0-9].*],
580 LD=: critic_missing="$critic_missing LLD")
581 libc_cv_with_lld=yes
582 ;;
583 *)
584 AC_CHECK_PROG_VER(LD, $LD, --version,
585 [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
586 [2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*],
587 LD=: critic_missing="$critic_missing GNU ld")
588 ;;
589esac
590LIBC_CONFIG_VAR([with-lld], [$libc_cv_with_lld])
591
592# These programs are version sensitive.
593AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
594 [GNU Make[^0-9]*\([0-9][0-9.]*\)],
595 [[4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make")
596
597AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
598 [GNU gettext.* \([0-9]*\.[0-9.]*\)],
599 [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
600 MSGFMT=: aux_missing="$aux_missing msgfmt")
601AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
602 [GNU texinfo.* \([0-9][0-9.]*\)],
603 [4.[7-9]*|4.[1-9][0-9]*|[5-9].*],
604 MAKEINFO=: aux_missing="$aux_missing makeinfo")
605AC_CHECK_PROG_VER(SED, sed, --version,
606 [GNU sed[^0-9]* \([0-9]*\.[0-9.]*\)],
607 [3.0[2-9]*|3.[1-9]*|[4-9]*],
608 SED=: aux_missing="$aux_missing sed")
609AC_CHECK_PROG_VER(AWK, gawk, --version,
610 [GNU Awk[^0-9]*\([0-9][0-9.]*\)],
611 [3.1.[2-9]*|3.[2-9]*|[4-9]*], critic_missing="$critic_missing gawk")
612AC_CHECK_PROG_VER(BISON, bison, --version,
613 [bison (GNU Bison) \([0-9]*\.[0-9.]*\)],
614 [2.7*|[3-9].*|[1-9][0-9]*], critic_missing="$critic_missing bison")
615
616AC_CACHE_CHECK([if $CC is sufficient to build libc], libc_cv_compiler_ok, [
617AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[]], [[
618#if !defined __GNUC__ || __GNUC__ < 6 || (__GNUC__ == 6 && __GNUC_MINOR__ < 2)
619#error insufficient compiler
620#endif]])],
621 [libc_cv_compiler_ok=yes],
622 [libc_cv_compiler_ok=no])])
623AS_IF([test $libc_cv_compiler_ok != yes],
624 [critic_missing="$critic_missing compiler"])
625
43ecc41d
AZ
626if test "x$maintainer" = "xyes"; then
627 AC_CHECK_PROGS(AUTOCONF, autoconf, no)
628 case "x$AUTOCONF" in
629 xno|x|x:) AUTOCONF=no ;;
630 *)
631 AC_CACHE_CHECK(dnl
632 whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
633 if (cd $srcdir; $AUTOCONF $ACFLAGS configure.ac > /dev/null 2>&1); then
634 libc_cv_autoconf_works=yes
635 else
636 libc_cv_autoconf_works=no
637 fi])
638 test $libc_cv_autoconf_works = yes || AUTOCONF=no
639 ;;
640 esac
641 if test "x$AUTOCONF" = xno; then
642 aux_missing="$aux_missing autoconf"
643 fi
644else
645 AUTOCONF=no
646fi
647
648# Check for python3 if available, or else python.
649AC_CHECK_PROG_VER(PYTHON_PROG, python3 python, --version,
650 [Python \([0-9][0-9.]*\)],
651 [3.[4-9]*|3.[1-9][0-9]*|[4-9].*|[1-9][0-9]*],
652 critic_missing="$critic_missing python")
653PYTHON="$PYTHON_PROG -B"
654AC_SUBST(PYTHON)
655
656test -n "$critic_missing" && AC_MSG_ERROR([
657*** These critical programs are missing or too old:$critic_missing
658*** Check the INSTALL file for required versions.])
659
660test -n "$aux_missing" && AC_MSG_WARN([
661*** These auxiliary programs are missing or incompatible versions:$aux_missing
662*** some features or tests will be disabled.
663*** Check the INSTALL file for required versions.])
664
665
8df5d347
JM
666# Determine whether to use fpu or nofpu sysdeps directories.
667AC_CACHE_CHECK([for use of fpu sysdeps directories],
668 libc_cv_with_fp, [dnl
669cat > conftest.c <<EOF
670#if $with_fp_cond
671int dummy;
672#else
673# error "no hardware floating point"
674#endif
675EOF
676libc_cv_with_fp=no
677if ${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c -o conftest.s \
678 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
679 libc_cv_with_fp=yes
680fi
681rm -f conftest*])
682AC_SUBST(libc_cv_with_fp)
683
03baef1c
NA
684AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
685LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector],
686 [libc_cv_ssp=yes],
687 [libc_cv_ssp=no])
688])
689
690AC_CACHE_CHECK(for -fstack-protector-strong, libc_cv_ssp_strong, [dnl
691LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector-strong],
692 [libc_cv_ssp_strong=yes],
693 [libc_cv_ssp_strong=no])
694])
695
696AC_CACHE_CHECK(for -fstack-protector-all, libc_cv_ssp_all, [dnl
697LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector-all],
698 [libc_cv_ssp_all=yes],
699 [libc_cv_ssp_all=no])
700])
701
702stack_protector=
703no_stack_protector=
704if test "$libc_cv_ssp" = yes; then
705 no_stack_protector="-fno-stack-protector -DSTACK_PROTECTOR_LEVEL=0"
de659123 706 AC_DEFINE(HAVE_CC_NO_STACK_PROTECTOR)
03baef1c
NA
707fi
708
709if test "$enable_stack_protector" = yes && test "$libc_cv_ssp" = yes; then
710 stack_protector="-fstack-protector"
711 AC_DEFINE(STACK_PROTECTOR_LEVEL, 1)
712elif test "$enable_stack_protector" = all && test "$libc_cv_ssp_all" = yes; then
713 stack_protector="-fstack-protector-all"
714 AC_DEFINE(STACK_PROTECTOR_LEVEL, 2)
715elif test "$enable_stack_protector" = strong && test "$libc_cv_ssp_strong" = yes; then
716 stack_protector="-fstack-protector-strong"
717 AC_DEFINE(STACK_PROTECTOR_LEVEL, 3)
66a704c4
NA
718else
719 stack_protector="-fno-stack-protector"
720 AC_DEFINE(STACK_PROTECTOR_LEVEL, 0)
03baef1c
NA
721fi
722AC_SUBST(libc_cv_ssp)
723AC_SUBST(stack_protector)
724AC_SUBST(no_stack_protector)
725
66a704c4
NA
726if test -n "$stack_protector"; then
727 dnl Don't run configure tests with stack-protection on, to avoid problems with
728 dnl bootstrapping.
729 no_ssp=-fno-stack-protector
730else
731 no_ssp=
732
733 if test "$enable_stack_protector" != no; then
734 AC_MSG_ERROR([--enable-stack-protector=$enable_stack_protector specified, but specified level of stack protection is not supported by the compiler.])
735 fi
736fi
737
0cae3f4b
MF
738# For the multi-arch option we need support in the assembler & linker.
739AC_CACHE_CHECK([for assembler and linker STT_GNU_IFUNC support],
740 libc_cv_ld_gnu_indirect_function, [dnl
786b0b67 741cat > conftest.S <<EOF
84b9230c 742.type foo,%gnu_indirect_function
0cae3f4b
MF
743foo:
744.globl _start
745_start:
746.globl __start
747__start:
748.data
786b0b67
AS
749#ifdef _LP64
750.quad foo
751#else
0cae3f4b 752.long foo
786b0b67 753#endif
84b9230c 754EOF
0cae3f4b
MF
755libc_cv_ld_gnu_indirect_function=no
756if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
66a704c4 757 -nostartfiles -nostdlib $no_ssp \
786b0b67 758 -o conftest conftest.S 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
0cae3f4b
MF
759 # Do a link to see if the backend supports IFUNC relocs.
760 $READELF -r conftest 1>&AS_MESSAGE_LOG_FD
87a698a2 761 LC_ALL=C $READELF -Wr conftest | grep -q 'IRELATIVE\|R_SPARC_JMP_IREL' && {
0cae3f4b
MF
762 libc_cv_ld_gnu_indirect_function=yes
763 }
84b9230c
MF
764fi
765rm -f conftest*])
766
022dfdce
SL
767# Check if gcc supports attribute ifunc as it is used in libc_ifunc macro.
768AC_CACHE_CHECK([for gcc attribute ifunc support],
769 libc_cv_gcc_indirect_function, [dnl
770cat > conftest.c <<EOF
771extern int func (int);
772int used_func (int a)
773{
774 return a;
775}
776static void *resolver ()
777{
778 return &used_func;
779}
780extern __typeof (func) func __attribute__ ((ifunc ("resolver")));
781EOF
782libc_cv_gcc_indirect_function=no
783if ${CC-cc} -c conftest.c -o conftest.o 1>&AS_MESSAGE_LOG_FD \
784 2>&AS_MESSAGE_LOG_FD ; then
785 if $READELF -s conftest.o | grep IFUNC >/dev/null 2>&AS_MESSAGE_LOG_FD; then
786 libc_cv_gcc_indirect_function=yes
787 fi
788fi
789rm -f conftest*])
790
b5c45e83
AZ
791# Check if linker supports textrel relocation with ifunc (used on elf/tests).
792# Note that it relies on libc_cv_ld_gnu_indirect_function test above.
793AC_CACHE_CHECK([whether the linker supports textrels along with ifunc],
794 libc_cv_textrel_ifunc, [dnl
795cat > conftest.S <<EOF
796.type foo,%gnu_indirect_function
797foo:
798.globl _start
799_start:
800.globl __start
801__start:
802.data
803#ifdef _LP64
804.quad foo
805#else
806.long foo
807#endif
808.text
809.globl address
810address:
811#ifdef _LP64
812.quad address
813#else
814.long address
815#endif
816EOF
817libc_cv_textrel_ifunc=no
818if test $libc_cv_ld_gnu_indirect_function = yes; then
819 if AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostartfiles -nostdlib $no_ssp -pie -o conftest conftest.S); then
820 libc_cv_textrel_ifunc=yes
821 fi
822fi
823rm -f conftest*])
824AC_SUBST(libc_cv_textrel_ifunc)
825
cd6ae7ea
FS
826# Check if CC supports attribute retain as it is used in attribute_used_retain macro.
827AC_CACHE_CHECK([for GNU attribute retain support],
828 libc_cv_gnu_retain, [dnl
829cat > conftest.c <<EOF
830static int var __attribute__ ((used, retain, section ("__libc_atexit")));
831EOF
832libc_cv_gnu_retain=no
833if ${CC-cc} -Werror -c conftest.c -o /dev/null 1>&AS_MESSAGE_LOG_FD \
834 2>&AS_MESSAGE_LOG_FD ; then
835 libc_cv_gnu_retain=yes
836fi
837rm -f conftest*])
838if test $libc_cv_gnu_retain = yes; then
839 AC_DEFINE(HAVE_GNU_RETAIN)
840fi
841LIBC_CONFIG_VAR([have-gnu-retain], [$libc_cv_gnu_retain])
842
8f6f5362
AZ
843# Check if gcc warns about alias for function with incompatible types.
844AC_CACHE_CHECK([if compiler warns about alias for function with incompatible types],
845 libc_cv_gcc_incompatible_alias, [dnl
846cat > conftest.c <<EOF
847int __redirect_foo (const void *s, int c);
848
849__typeof (__redirect_foo) *foo_impl (void) __asm__ ("foo");
850__typeof (__redirect_foo) *foo_impl (void)
851{
852 return 0;
853}
854
855extern __typeof (__redirect_foo) foo_alias __attribute__ ((alias ("foo")));
856EOF
857libc_cv_gcc_incompatible_alias=yes
858if ${CC-cc} -Werror -c conftest.c -o conftest.o 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then
859 libc_cv_gcc_incompatible_alias=no
860fi
861rm -f conftest*])
862
0cae3f4b 863if test x"$libc_cv_ld_gnu_indirect_function" != xyes; then
84b9230c
MF
864 if test x"$multi_arch" = xyes; then
865 AC_MSG_ERROR([--enable-multi-arch support requires assembler and linker support])
866 else
867 multi_arch=no
868 fi
869fi
8f6f5362
AZ
870if test x"$libc_cv_gcc_indirect_function" != xyes; then
871 # GCC 8+ emits a warning for alias with incompatible types and it might
872 # fail to build ifunc resolvers aliases to either weak or internal
873 # symbols. Disables multiarch build in this case.
cb7b1c90 874 if test x"$libc_cv_gcc_incompatible_alias" = xyes; then
8f6f5362
AZ
875 AC_MSG_WARN([gcc emits a warning for alias between functions of incompatible types])
876 if test x"$multi_arch" = xyes; then
877 AC_MSG_ERROR([--enable-multi-arch support requires a gcc with gnu-indirect-function support])
878 fi
879 AC_MSG_WARN([Multi-arch is disabled.])
880 multi_arch=no
881 elif test x"$multi_arch" = xyes; then
882 AC_MSG_WARN([--enable-multi-arch support recommends a gcc with gnu-indirect-function support.
022dfdce 883Please use a gcc which supports it by default or configure gcc with --enable-gnu-indirect-function])
8f6f5362 884 fi
022dfdce 885fi
6270516e 886multi_arch_d=
84b9230c
MF
887if test x"$multi_arch" != xno; then
888 multi_arch_d=/multiarch
889fi
890
f0523145 891# Compute the list of sysdep directories for this configuration.
f332db02 892# This can take a while to compute.
f0523145 893sysdep_dir=$srcdir/sysdeps
f332db02 894AC_MSG_CHECKING(sysdep dirs)
f0523145
RM
895dnl We need to use [ and ] for other purposes for a while now.
896changequote(,)dnl
28f540f4
RM
897# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
898os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
899
b22d21b3 900test "x$base_os" != x || case "$os" in
28f540f4
RM
901gnu*)
902 base_os=mach/hurd ;;
2ce4f015 903linux*)
28f540f4 904 base_os=unix/sysv ;;
28f540f4
RM
905esac
906
907# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
908tail=$os
909ostry=$os
910while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
911 ostry="$ostry /$o"
912 tail=$o
75914335 913done
28f540f4
RM
914o=`echo $tail | sed 's/[0-9]*$//'`
915if test $o != $tail; then
916 ostry="$ostry /$o"
917fi
ec4b0518
UD
918# For linux-gnu, try linux-gnu, then linux.
919o=`echo $tail | sed 's/-.*$//'`
920if test $o != $tail; then
921 ostry="$ostry /$o"
922fi
28f540f4
RM
923
924# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
925base=
926tail=$base_os
927while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
928 set $b
929 base="$base /$1"
930 tail="$2"
931done
932
ae6b8730 933# For sparc/sparc32, try sparc/sparc32 and then sparc.
28f540f4 934mach=
2ceaa76a 935tail=$machine${submachine:+/$submachine}
28f540f4
RM
936while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
937 set $m
a63189c0
AZ
938 # Prepend the machine's FPU directory unless the architecture specific
939 # preconfigure disables it.
8df5d347 940 if test "$libc_cv_with_fp" = yes; then
6270516e 941 maybe_fpu=/fpu
f4b07664 942 else
6270516e 943 maybe_fpu=/nofpu
82d00cab 944 fi
6270516e
RM
945 # For each machine term, try it with and then without /multiarch.
946 for try_fpu in $maybe_fpu ''; do
947 for try_multi in $multi_arch_d ''; do
948 mach="$mach /$1$try_fpu$try_multi"
949 done
950 done
28f540f4
RM
951 tail="$2"
952done
953
954dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
955changequote([,])dnl
956
957# Find what sysdep directories exist.
958sysnames=
4b69abad
RM
959for b in $base ''; do
960 for m0 in $mach ''; do
961 for v in /$vendor ''; do
962 test "$v" = / && continue
963 for o in /$ostry ''; do
964 test "$o" = / && continue
6270516e 965 for m in $mach ''; do
644d3857
JM
966 try_suffix="$m0$b$v$o$m"
967 if test -n "$try_suffix"; then
968 try_srcdir="${srcdir}/"
969 try="sysdeps$try_suffix"
970 test -n "$enable_debug_configure" &&
971 echo "$0 [DEBUG]: try $try" >&2
972 if test -d "$try_srcdir$try"; then
973 sysnames="$sysnames $try"
974 { test -n "$o" || test -n "$b"; } && os_used=t
975 { test -n "$m" || test -n "$m0"; } && machine_used=t
976 case x${m0:-$m} in
977 x*/$submachine) submachine_used=t ;;
978 esac
979 fi
980 fi
28f540f4
RM
981 done
982 done
983 done
984 done
4b69abad 985done
28f540f4 986
6f89d2f3
L
987# If the assembler supports gnu_indirect_function symbol type and the
988# architecture supports multi-arch, we enable multi-arch by default.
644d3857 989case $sysnames in
84b9230c
MF
990*"$multi_arch_d"*)
991 ;;
992*)
77e8bddf 993 test x"$multi_arch" = xdefault && multi_arch=no
84b9230c
MF
994 ;;
995esac
996if test x"$multi_arch" != xno; then
6f89d2f3
L
997 AC_DEFINE(USE_MULTIARCH)
998fi
999AC_SUBST(multi_arch)
1000
28f540f4
RM
1001if test -z "$os_used" && test "$os" != none; then
1002 AC_MSG_ERROR(Operating system $os is not supported.)
1003fi
1004if test -z "$machine_used" && test "$machine" != none; then
1005 AC_MSG_ERROR(The $machine is not supported.)
1006fi
2ceaa76a
RM
1007if test -z "$submachine_used" && test -n "$submachine"; then
1008 AC_MSG_ERROR(The $submachine subspecies of $host_cpu is not supported.)
1009fi
1010AC_SUBST(submachine)
28f540f4
RM
1011
1012# We have now validated the configuration.
1013
28f540f4
RM
1014# Expand the list of system names into a full list of directories
1015# from each element's parent name and Implies file (if present).
1016set $sysnames
e50ec9f9 1017names=
28f540f4
RM
1018while test $# -gt 0; do
1019 name=$1
1020 shift
1021
e50ec9f9 1022 case " $names " in *" $name "*)
f332db02
RM
1023 # Already in the list.
1024 continue
e50ec9f9 1025 esac
f332db02
RM
1026
1027 # Report each name as we discover it, so there is no long pause in output.
0b4ee387 1028 echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
f332db02 1029
57ba7bb4
UD
1030 name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
1031
1032 case $name in
1033 /*) xsrcdir= ;;
1034 *) xsrcdir=$srcdir/ ;;
1035 esac
1036 test -n "$enable_debug_configure" &&
1037 echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
1038
ba75122d
RM
1039 for implies_file in Implies Implies-before Implies-after; do
1040 implies_type=`echo $implies_file | sed s/-/_/`
1041 eval ${implies_type}=
1042 if test -f $xsrcdir$name/$implies_file; then
1043 # Collect more names from the `Implies' file (removing comments).
1044 implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/$implies_file`"
1045 for x in $implied_candidate; do
1046 found=no
1047 if test -d $xsrcdir$name_base/$x; then
1048 eval "${implies_type}=\"\$${implies_type} \$name_base/\$x\""
636ccfc8 1049 found=yes
ba75122d 1050 fi
644d3857
JM
1051 try="sysdeps/$x"
1052 try_srcdir=$srcdir/
1053 test -n "$enable_debug_configure" &&
1054 echo "[DEBUG]: $name $implies_file $x try() {$try_srcdir}$try" >&2
1055 if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
1056 then
1057 eval "${implies_type}=\"\$${implies_type} \$try\""
1058 found=yes
1059 fi
ba75122d
RM
1060 if test $found = no; then
1061 AC_MSG_WARN($name/$implies_file specifies nonexistent $x)
636ccfc8
UD
1062 fi
1063 done
ba75122d
RM
1064 fi
1065 done
28f540f4
RM
1066
1067 # Add NAME to the list of names.
1068 names="$names $name"
1069
1070 # Find the parent of NAME, using the empty string if it has none.
1071changequote(,)dnl
57ba7bb4 1072 parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
28f540f4
RM
1073changequote([,])dnl
1074
ba75122d
RM
1075 test -n "$enable_debug_configure" &&
1076 echo "[DEBUG]: $name Implies='$Implies' rest='$*' parent='$parent' \
57633811 1077Implies_before='$Implies_before' Implies_after='$Implies_after'" >&2
ba75122d 1078
28f540f4
RM
1079 # Add the names implied by NAME, and NAME's parent (if it has one), to
1080 # the list of names to be processed (the argument list). We prepend the
1081 # implied names to the list and append the parent. We want implied
1082 # directories to come before further directories inferred from the
1083 # configuration components; this ensures that for sysv4, unix/common
1084 # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
1085 # after sysv4).
ba75122d 1086 sysnames="`echo $Implies $* $Implies_before $parent $Implies_after`"
28f540f4
RM
1087 test -n "$sysnames" && set $sysnames
1088done
1089
1090# Add the default directories.
83ef87ba 1091default_sysnames="sysdeps/generic"
ecdc196c 1092sysnames="$names $default_sysnames"
f332db02
RM
1093AC_SUBST(sysnames)
1094# The other names were emitted during the scan.
ecdc196c 1095AC_MSG_RESULT($default_sysnames)
28f540f4 1096
dbe7a0f5
UD
1097# if using special system headers, find out the compiler's sekrit
1098# header directory and add that to the list. NOTE: Only does the right
1099# thing on a system that doesn't need fixincludes. (Not presently a problem.)
1100if test -n "$sysheaders"; then
67fbfa5c
RM
1101 SYSINCLUDES=-nostdinc
1102 for d in include include-fixed; do
1103 i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
1104 SYSINCLUDES="$SYSINCLUDES -isystem $i"
1105 done
1106 SYSINCLUDES="$SYSINCLUDES \
3d6ce23a 1107-isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
ef226fec 1108 if test -n "$CXX"; then
7872cfb0 1109 CXX_SYSINCLUDES=
67060746
AC
1110 for cxxheaders in `$CXX -v -S -x c++ /dev/null -o /dev/null 2>&1 \
1111 | sed -n -e '1,/#include/d' -e 's/^ \(\/.*\/[cg]++\)/\1/p'`; do
1112 test "x$cxxheaders" != x &&
1113 CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders"
1114 done
ef226fec 1115 fi
dbe7a0f5
UD
1116fi
1117AC_SUBST(SYSINCLUDES)
ef226fec 1118AC_SUBST(CXX_SYSINCLUDES)
dbe7a0f5 1119
fc3e1337
FW
1120# Obtain some C++ header file paths. This is used to make a local
1121# copy of those headers in Makerules.
1122if test -n "$CXX"; then
1123 find_cxx_header () {
596183a1
AZ
1124 echo "#include <$1>" | $CXX -H -fsyntax-only -x c++ - 2>&1 \
1125 | $AWK '$1 == "."{print $2}'
fc3e1337
FW
1126 }
1127 CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
1128 CXX_CMATH_HEADER="$(find_cxx_header cmath)"
a65ea28d 1129 CXX_BITS_STD_ABS_H="$(find_cxx_header bits/std_abs.h)"
fc3e1337
FW
1130fi
1131AC_SUBST(CXX_CSTDLIB_HEADER)
1132AC_SUBST(CXX_CMATH_HEADER)
a65ea28d 1133AC_SUBST(CXX_BITS_STD_ABS_H)
fc3e1337 1134
3911660e
UD
1135# Test if LD_LIBRARY_PATH contains the notation for the current directory
1136# since this would lead to problems installing/building glibc.
1137# LD_LIBRARY_PATH contains the current directory if one of the following
1138# is true:
1139# - one of the terminals (":" and ";") is the first or last sign
1140# - two terminals occur directly after each other
1141# - the path contains an element with a dot in it
1142AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
1143changequote(,)dnl
1144case ${LD_LIBRARY_PATH} in
1145 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
b3a86ae1 1146 ld_library_path_setting="contains current directory"
3911660e
UD
1147 ;;
1148 *)
1149 ld_library_path_setting="ok"
1150 ;;
1151esac
1152changequote([,])dnl
1153AC_MSG_RESULT($ld_library_path_setting)
1154if test "$ld_library_path_setting" != "ok"; then
63bda0c1
UD
1155AC_MSG_ERROR([
1156*** LD_LIBRARY_PATH shouldn't contain the current directory when
1157*** building glibc. Please change the environment variable
1158*** and run configure again.])
3911660e 1159fi
8e31cf7e 1160
26f56c1c 1161AC_PATH_PROG(BASH_SHELL, bash, no)
84384f5b 1162
c0016081 1163AC_PATH_PROG(PERL, perl, no)
2fd5d029
RM
1164if test "$PERL" != no &&
1165 (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
1166 PERL=no
ecb06196 1167fi
2f512715
AS
1168AC_PATH_PROG(INSTALL_INFO, install-info, no,
1169 $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
2de00372 1170
b8dc6a10 1171AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
9a70fcab 1172cat > conftest.s <<EOF
8c0c01db 1173.text
ae1025be 1174foo:
df2a0c93 1175.set glibc_conftest_frobozz,foo
7b8e0d49 1176.globl glibc_conftest_frobozz
e215c478 1177EOF
df2a0c93
RM
1178# The alpha-dec-osf1 assembler gives only a warning for `.set'
1179# (but it doesn't work), so we must do a linking check to be sure.
1180cat > conftest1.c <<\EOF
1181extern int glibc_conftest_frobozz;
640f0119 1182void _start() { glibc_conftest_frobozz = 1; }
df2a0c93
RM
1183EOF
1184if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
66a704c4 1185 -nostartfiles -nostdlib $no_ssp \
0b4ee387 1186 -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
e215c478
RM
1187 libc_cv_asm_set_directive=yes
1188else
1189 libc_cv_asm_set_directive=no
1190fi
65b3cbcb 1191rm -f conftest*])
e215c478
RM
1192if test $libc_cv_asm_set_directive = yes; then
1193 AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
1194fi
1195
2a723ff6
JM
1196AC_CACHE_CHECK(linker support for protected data symbol,
1197 libc_cv_protected_data,
1198 [cat > conftest.c <<EOF
1199 int bar __attribute__ ((visibility ("protected"))) = 1;
83569fb8 1200EOF
2a723ff6 1201 libc_cv_protected_data=no
66a704c4 1202 if AC_TRY_COMMAND(${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -o conftest.so); then
2a723ff6
JM
1203 cat > conftest.c <<EOF
1204 extern int bar;
1205 int main (void) { return bar; }
83569fb8 1206EOF
66a704c4 1207 if AC_TRY_COMMAND(${CC-cc} -nostdlib -nostartfiles $no_ssp conftest.c -o conftest conftest.so); then
2a723ff6 1208 libc_cv_protected_data=yes
83569fb8 1209 fi
2a723ff6
JM
1210 fi
1211 rm -f conftest.*
1212 ])
83569fb8
L
1213AC_SUBST(libc_cv_protected_data)
1214
19f1a11e
L
1215AC_CACHE_CHECK(linker support for INSERT in linker script,
1216 libc_cv_insert,
1217 [cat > conftest.c <<EOF
5f07d47e 1218 int __attribute__ ((section(".bar"))) bar = 0x12345678;
19f1a11e
L
1219 int test (void) { return bar; }
1220EOF
1221 cat > conftest.t <<EOF
1222 SECTIONS
1223 {
1224 .bar : { *(.bar) }
1225 }
1226 INSERT AFTER .rela.dyn;
1227EOF
1228 libc_cv_insert=no
1229 if AC_TRY_COMMAND([${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -Wl,-T,conftest.t -o conftest.so]); then
1230 libc_cv_insert=yes
1231 fi
1232 rm -f conftest.*
1233 ])
1234AC_SUBST(libc_cv_insert)
1235
a0da5fe1
UD
1236AC_CACHE_CHECK(for broken __attribute__((alias())),
1237 libc_cv_broken_alias_attribute,
1238 [cat > conftest.c <<EOF
1239 extern int foo (int x) __asm ("xyzzy");
1240 int bar (int x) { return x; }
1241 extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1242 extern int dfoo;
1243 extern __typeof (dfoo) dfoo __asm ("abccb");
1244 int dfoo = 1;
37ba7d66 1245EOF
a0da5fe1
UD
1246 libc_cv_broken_alias_attribute=yes
1247 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1248 if grep 'xyzzy' conftest.s >/dev/null &&
1249 grep 'abccb' conftest.s >/dev/null; then
1250 libc_cv_broken_alias_attribute=no
1251 fi
1252 fi
1253 rm -f conftest.c conftest.s
1254 ])
1255if test $libc_cv_broken_alias_attribute = yes; then
1256 AC_MSG_ERROR(working alias attribute support required)
1257fi
1258
2a723ff6
JM
1259AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1260 libc_cv_have_sdata_section,
1261 [echo "int i;" > conftest.c
1262 libc_cv_have_sdata_section=no
1263 if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1264 | grep '\.sdata' >/dev/null; then
1265 libc_cv_have_sdata_section=yes
1266 fi
1267 rm -f conftest.c conftest.so
1268 ])
1269if test $libc_cv_have_sdata_section = yes; then
1270 AC_DEFINE(HAVE_SDATA_SECTION)
a0da5fe1 1271fi
0d01dace 1272
a0da5fe1
UD
1273AC_CACHE_CHECK(for libunwind-support in compiler,
1274 libc_cv_cc_with_libunwind, [
1275 cat > conftest.c <<EOF
cbdb12de
UD
1276int main (void) { return 0; }
1277EOF
a0da5fe1 1278 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
8175a253 1279 conftest.c -v 2>&1 >/dev/null | grep ' -lunwind ' >/dev/null; then
a0da5fe1
UD
1280 libc_cv_cc_with_libunwind=yes
1281 else
1282 libc_cv_cc_with_libunwind=no
c776b3d7 1283 fi
a0da5fe1
UD
1284 rm -f conftest*])
1285AC_SUBST(libc_cv_cc_with_libunwind)
1286if test $libc_cv_cc_with_libunwind = yes; then
1287 AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
1288fi
c776b3d7 1289
a0da5fe1
UD
1290ASFLAGS_config=
1291AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1292 libc_cv_as_noexecstack, [dnl
1293cat > conftest.c <<EOF
35915ec8
UD
1294void foo (void) { }
1295EOF
a0da5fe1
UD
1296if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1297 -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
8175a253 1298 && grep .note.GNU-stack conftest.s >/dev/null \
a0da5fe1
UD
1299 && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
1300 -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1301then
1302 libc_cv_as_noexecstack=yes
1303else
1304 libc_cv_as_noexecstack=no
1305fi
1306rm -f conftest*])
1307if test $libc_cv_as_noexecstack = yes; then
1308 ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1309fi
1310AC_SUBST(ASFLAGS_config)
2abf9ff1 1311
6bfea974
L
1312LIBC_LINKER_FEATURE([-z execstack], [-Wl,-z,execstack],
1313 [libc_cv_z_execstack=yes], [libc_cv_z_execstack=no])
a0da5fe1 1314AC_SUBST(libc_cv_z_execstack)
c9c60884 1315
cd6ae7ea
FS
1316LIBC_LINKER_FEATURE([-z start-stop-gc], [-Wl,-z,start-stop-gc],
1317 [libc_cv_z_start_stop_gc=yes], [libc_cv_z_start_stop_gc=no])
1318LIBC_CONFIG_VAR([have-z-start-stop-gc], [$libc_cv_z_start_stop_gc])
1319
9926f6e2
FS
1320LIBC_LINKER_FEATURE([--depaudit], [-Wl,--depaudit,x],
1321 [libc_cv_depaudit=yes], [libc_cv_depaudit=no])
1322LIBC_CONFIG_VAR([have-depaudit], [$libc_cv_depaudit])
1323
e895cff5
FS
1324LIBC_LINKER_FEATURE([-z pack-relative-relocs],
1325 [-Wl,-z,pack-relative-relocs],
1326 [libc_cv_dt_relr=yes], [libc_cv_dt_relr=no])
1327LIBC_CONFIG_VAR([have-dt-relr], [$libc_cv_dt_relr])
1328
9d7a3741
L
1329LIBC_LINKER_FEATURE([--no-dynamic-linker],
1330 [-Wl,--no-dynamic-linker],
1331 [libc_cv_no_dynamic_linker=yes],
1332 [libc_cv_no_dynamic_linker=no])
1333LIBC_CONFIG_VAR([have-no-dynamic-linker], [$libc_cv_no_dynamic_linker])
1334
1335AC_CACHE_CHECK(for -static-pie, libc_cv_static_pie, [dnl
1336LIBC_TRY_CC_OPTION([-static-pie],
1337 [libc_cv_static_pie=yes],
1338 [libc_cv_static_pie=no])
1339])
1340LIBC_CONFIG_VAR([have-static-pie], [$libc_cv_static_pie])
1341
a0da5fe1 1342AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
4da0431d
JM
1343LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no])
1344])
c9c60884 1345
a0da5fe1 1346AC_SUBST(libc_cv_fpie)
871b9158 1347
89569c8b
L
1348AC_CACHE_CHECK(for GLOB_DAT reloc,
1349 libc_cv_has_glob_dat, [dnl
1350cat > conftest.c <<EOF
1351extern int mumble;
1352int foo (void) { return mumble; }
1353EOF
1354if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1355 -fPIC -shared -o conftest.so conftest.c
66a704c4 1356 -nostdlib -nostartfiles $no_ssp
89569c8b
L
1357 1>&AS_MESSAGE_LOG_FD])
1358then
1359dnl look for GLOB_DAT relocation.
1360 if $READELF -rW conftest.so | grep '_GLOB_DAT' > /dev/null; then
1361 libc_cv_has_glob_dat=yes
1362 else
1363 libc_cv_has_glob_dat=no
1364 fi
1365else
1366 libc_cv_has_glob_dat=no
1367fi
1368rm -f conftest*])
1369AC_SUBST(libc_cv_has_glob_dat)
1370
61655555
L
1371AC_CACHE_CHECK([for -mtls-dialect=gnu2], libc_cv_mtls_dialect_gnu2,
1372[dnl
1373cat > conftest.c <<EOF
1374__thread int i;
1375void foo (void)
1376{
1377 i = 10;
1378}
1379EOF
04e8169f
AZ
1380if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -fPIC -mtls-dialect=gnu2 -nostdlib -nostartfiles
1381 conftest.c -o conftest 1>&AS_MESSAGE_LOG_FD])
61655555
L
1382then
1383 libc_cv_mtls_dialect_gnu2=yes
1384else
1385 libc_cv_mtls_dialect_gnu2=no
1386fi
1387rm -f conftest*])
1388AC_SUBST(libc_cv_mtls_dialect_gnu2)
1389LIBC_CONFIG_VAR([have-mtls-dialect-gnu2], [$libc_cv_mtls_dialect_gnu2])
1390
8d98c7c0
AZ
1391dnl clang emits an warning for a double alias redirection, to warn the
1392dnl original symbol is sed even when weak definition overriddes it.
1393dnl It is a usual pattern for weak_alias, where multiple alias point to
1394dnl same symbol.
1395AC_CACHE_CHECK([if -Wno-ignored-attributes is required for aliases],
1396 libc_cv_wno_ignored_attributes, [dnl
1397cat > conftest.c <<EOF
1398void __foo (void)
1399{
1400}
1401extern __typeof (__foo) foo __attribute__ ((weak, alias ("__foo")));
1402extern __typeof (__foo) bar __attribute__ ((weak, alias ("foo")));
1403EOF
1404libc_cv_wno_ignored_attributes=""
1405if ! AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -Werror -c conftest.c])
1406then
1407 libc_cv_wno_ignored_attributes="-Wno-ignored-attributes"
1408fi
1409rm -f conftest*])
1410LIBC_CONFIG_VAR([config-cflags-wno-ignored-attributes],
1411 [$libc_cv_wno_ignored_attributes])
1412
a0da5fe1
UD
1413AC_CACHE_CHECK(whether cc puts quotes around section names,
1414 libc_cv_have_section_quotes,
1415 [cat > conftest.c <<EOF
1416 static const int foo
1417 __attribute__ ((section ("bar"))) = 1;
e26dd47f 1418EOF
a0da5fe1
UD
1419 if ${CC-cc} -S conftest.c -o conftest.s; then
1420 if grep '\.section.*"bar"' conftest.s >/dev/null; then
1421 libc_cv_have_section_quotes=yes
e26dd47f 1422 else
a0da5fe1 1423 libc_cv_have_section_quotes=no
e26dd47f 1424 fi
a0da5fe1
UD
1425 else
1426 libc_cv_have_section_quotes=unknown
1427 fi
1428 rm -f conftest.{c,s}
1429 ])
1430if test $libc_cv_have_section_quotes = yes; then
1431 AC_DEFINE(HAVE_SECTION_QUOTES)
9a97d1f7
UD
1432fi
1433
d555194c
UD
1434AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1435cat > conftest.c <<\EOF
1436void zero (void *x)
1437{
a52d1562 1438 __builtin_memset (x, 0, 1000);
d555194c
UD
1439}
1440EOF
1441dnl
e37fc4aa 1442if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | grep -F "memset" > /dev/null]);
d555194c
UD
1443then
1444 libc_cv_gcc_builtin_memset=no
1445else
1446 libc_cv_gcc_builtin_memset=yes
1447fi
1448rm -f conftest* ])
1449if test "$libc_cv_gcc_builtin_memset" = yes ; then
1450 AC_DEFINE(HAVE_BUILTIN_MEMSET)
1451fi
1452
85dd1003
UD
1453AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1454cat > conftest.c <<\EOF
1455extern char *strstr (const char *, const char *) __asm ("my_strstr");
1456char *foo (const char *a, const char *b)
1457{
1458 return __builtin_strstr (a, b);
1459}
1460EOF
1461dnl
e37fc4aa 1462if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | grep -F "my_strstr" > /dev/null]);
85dd1003
UD
1463then
1464 libc_cv_gcc_builtin_redirection=yes
1465else
1466 libc_cv_gcc_builtin_redirection=no
1467fi
1468rm -f conftest* ])
3ce1f295
UD
1469if test "$libc_cv_gcc_builtin_redirection" = no; then
1470 AC_MSG_ERROR([support for the symbol redirection needed])
85dd1003
UD
1471fi
1472
7998fa78
AS
1473dnl Determine how to disable generation of FMA instructions.
1474AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
1475 libc_cv_cc_nofma, [dnl
1476libc_cv_cc_nofma=
1477for opt in -ffp-contract=off -mno-fused-madd; do
1478 LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
1479done])
bef0b507 1480AC_SUBST(libc_cv_cc_nofma)
7998fa78 1481
2cf9ad57
RM
1482if test -n "$submachine"; then
1483 AC_CACHE_CHECK([for compiler option for CPU variant],
f7d82dc9 1484 libc_cv_cc_submachine, [dnl
2cf9ad57
RM
1485 libc_cv_cc_submachine=no
1486 for opt in "-march=$submachine" "-mcpu=$submachine"; do
40b601fb 1487 LIBC_TRY_CC_OPTION([$opt], [
2cf9ad57 1488 libc_cv_cc_submachine="$opt"
40b601fb 1489 break], [])
2cf9ad57
RM
1490 done])
1491 if test "x$libc_cv_cc_submachine" = xno; then
1492 AC_MSG_ERROR([${CC-cc} does not support $submachine])
1493 fi
1494fi
1495AC_SUBST(libc_cv_cc_submachine)
1496
5c5a8b99
AZ
1497dnl Determine if compiler supports -fsignaling-nans
1498AC_CACHE_CHECK([for compiler option that -fsignaling-nans],
1499 libc_cv_cc_signaling_nans, [dnl
1500LIBC_TRY_CC_OPTION([-Werror -fsignaling-nans],
1501 [libc_cv_cc_signaling_nans=-fsignaling-nans],
1502 [libc_cv_cc_signaling_nans=])
1503])
1504LIBC_CONFIG_VAR([config-cflags-signaling-nans],
1505 [$libc_cv_cc_signaling_nans])
1506
85c2e611
AZ
1507AC_CACHE_CHECK(if $CC accepts -fno-tree-loop-distribute-patterns with \
1508__attribute__ ((__optimize__)), libc_cv_cc_loop_to_function, [dnl
1509cat > conftest.c <<EOF
1510void
1511__attribute__ ((__optimize__ ("-fno-tree-loop-distribute-patterns")))
1512foo (void) {}
1513EOF
1514libc_cv_cc_loop_to_function=no
1515if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c])
1516then
1517 libc_cv_cc_loop_to_function=yes
1518fi
1519rm -f conftest*])
1520if test $libc_cv_cc_loop_to_function = yes; then
1521 AC_DEFINE(HAVE_CC_INHIBIT_LOOP_TO_LIBCALL)
1522fi
1523AC_SUBST(libc_cv_cc_loop_to_function)
1524
c8f3e6db
UD
1525dnl Check whether we have the gd library available.
1526AC_MSG_CHECKING(for libgd)
6dab8688
UD
1527if test "$with_gd" != "no"; then
1528 old_CFLAGS="$CFLAGS"
1529 CFLAGS="$CFLAGS $libgd_include"
1530 old_LDFLAGS="$LDFLAGS"
1531 LDFLAGS="$LDFLAGS $libgd_ldflags"
1532 old_LIBS="$LIBS"
1533 LIBS="$LIBS -lgd -lpng -lz -lm"
e9e7f245
NT
1534 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <gd.h>]], [[gdImagePng (0, 0)]])],
1535 [LIBGD=yes], [LIBGD=no])
6dab8688
UD
1536 CFLAGS="$old_CFLAGS"
1537 LDFLAGS="$old_LDFLAGS"
1538 LIBS="$old_LIBS"
1539else
1540 LIBGD=no
1541fi
c8f3e6db
UD
1542AC_MSG_RESULT($LIBGD)
1543AC_SUBST(LIBGD)
3d558f4e 1544
2fff3d93
UD
1545# SELinux detection
1546if test x$with_selinux = xno ; then
1547 have_selinux=no;
1548else
1549 # See if we have the SELinux library
1550 AC_CHECK_LIB(selinux, is_selinux_enabled,
1551 have_selinux=yes, have_selinux=no)
49155d51 1552 if test x$with_selinux = xyes ; then
2fff3d93 1553 if test x$have_selinux = xno ; then
0699f766 1554 AC_MSG_ERROR([SELinux explicitly required, but SELinux library not found])
2fff3d93
UD
1555 fi
1556 fi
1557fi
1558# Check if we're building with SELinux support.
1559if test "x$have_selinux" = xyes; then
943db9eb 1560 AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
ec23b9be
UD
1561
1562 # See if we have the libaudit library
943db9eb 1563 AC_CHECK_LIB(audit, audit_log_user_avc_message,
77e8bddf 1564 have_libaudit=yes, have_libaudit=no)
ec23b9be 1565 if test "x$have_libaudit" = xyes; then
943db9eb 1566 AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
ec23b9be
UD
1567 fi
1568 AC_SUBST(have_libaudit)
1f063dca
UD
1569
1570 # See if we have the libcap library
1571 AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
1572 if test "x$have_libcap" = xyes; then
1573 AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
1574 fi
1575 AC_SUBST(have_libcap)
2fff3d93
UD
1576fi
1577AC_SUBST(have_selinux)
1578
61653dfb
RM
1579CPPUNDEFS=
1580dnl Check for silly hacked compilers predefining _FORTIFY_SOURCE.
1581dnl Since we are building the implementations of the fortified functions here,
1582dnl having the macro defined interacts very badly.
b190bccc
NT
1583dnl _FORTIFY_SOURCE requires compiler optimization level 1 (gcc -O1)
1584dnl and above (see "man FEATURE_TEST_MACROS").
1585dnl So do NOT replace AC_COMPILE_IFELSE with AC_PREPROC_IFELSE.
61653dfb 1586AC_CACHE_CHECK([for _FORTIFY_SOURCE predefine], libc_cv_predef_fortify_source,
b190bccc 1587[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
61653dfb
RM
1588#ifdef _FORTIFY_SOURCE
1589# error bogon
b190bccc 1590#endif]])],
61653dfb
RM
1591 [libc_cv_predef_fortify_source=no],
1592 [libc_cv_predef_fortify_source=yes])])
1593if test $libc_cv_predef_fortify_source = yes; then
1594 CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE"
1595fi
1596AC_SUBST(CPPUNDEFS)
1597
0923f74a
FW
1598dnl Starting with binutils 2.35, GAS can attach multiple symbol versions
1599dnl to one symbol (PR 23840).
1600AC_CACHE_CHECK(whether the assembler requires one version per symbol,
1601 libc_cv_symver_needs_alias, [dnl
1602 cat > conftest.s <<EOF
1603 .text
1604testfunc:
1605 .globl testfunc
1606 .symver testfunc, testfunc1@VERSION1
1607 .symver testfunc, testfunc1@VERSION2
1608EOF
1609 libc_cv_symver_needs_alias=no
1610 if ${CC-cc} $ASFLAGS -c conftest.s 2>&AS_MESSAGE_LOG_FD; then
1611 libc_cv_symver_needs_alias=no
1612 else
1613 libc_cv_symver_needs_alias=yes
1614 fi
1615 rm conftest.*
1616])
1617if test "$libc_cv_symver_needs_alias" = yes; then
1618 AC_DEFINE(SYMVER_NEEDS_ALIAS)
1619fi
1620
9fe7e787
RM
1621AC_CACHE_CHECK(for __builtin_trap with no external dependencies,
1622 libc_cv_builtin_trap, [dnl
1623libc_cv_builtin_trap=no
b190bccc 1624AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[__builtin_trap ()]])],[
9fe7e787
RM
1625libc_undefs=`$NM -u conftest.o |
1626 LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \
1627 2>&AS_MESSAGE_LOG_FD` || {
1628 AC_MSG_ERROR([confusing output from $NM -u])
1629}
1630echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'"
1631if test -z "$libc_undefs"; then
1632 libc_cv_builtin_trap=yes
b190bccc 1633fi],[])])
9fe7e787
RM
1634if test $libc_cv_builtin_trap = yes; then
1635 AC_DEFINE([HAVE_BUILTIN_TRAP])
44c4e5d5
RM
1636fi
1637
99e1dc0a
FW
1638dnl C++ feature tests.
1639AC_LANG_PUSH([C++])
1640
1641AC_CACHE_CHECK([whether the C++ compiler supports thread_local],
1642 libc_cv_cxx_thread_local, [
1643old_CXXFLAGS="$CXXFLAGS"
1644CXXFLAGS="$CXXFLAGS -std=gnu++11"
1645AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1646#include <thread>
1647
1648// Compiler support.
1649struct S
1650{
1651 S ();
1652 ~S ();
1653};
1654thread_local S s;
1655S * get () { return &s; }
1656
1657// libstdc++ support.
1658#ifndef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL
1659#error __cxa_thread_atexit_impl not supported
1660#endif
1661])],
1662 [libc_cv_cxx_thread_local=yes],
1663 [libc_cv_cxx_thread_local=no])
1664CXXFLAGS="$old_CXXFLAGS"
1665])
1666AC_SUBST(libc_cv_cxx_thread_local)
1667
1668AC_LANG_POP([C++])
1669dnl End of C++ feature tests.
1670
c224a18a
RM
1671### End of automated tests.
1672### Now run sysdeps configure fragments.
1673
cb343854 1674# They also can set these variables.
591e1ffb 1675use_ldconfig=no
cb343854 1676ldd_rewrite_script=no
77259608 1677libc_cv_sysconfdir=$sysconfdir
4248b1b1 1678libc_cv_localstatedir=$localstatedir
74bd2300 1679libc_cv_gcc_unwind_find_fde=no
e2fd3cbe 1680libc_cv_idn=no
ad201afe 1681pthread_in_libc=yes
cb343854 1682
28f540f4 1683# Iterate over all the sysdep directories we will use, running their
09055553 1684# configure fragments.
28f540f4 1685for dir in $sysnames; do
57ba7bb4
UD
1686 case $dir in
1687 /*) dest=$dir ;;
1688 *) dest=$srcdir/$dir ;;
1689 esac
1690 if test -r $dest/configure; then
d1149385 1691 AC_MSG_RESULT(running configure fragment for $dir)
57ba7bb4 1692 . $dest/configure
28f540f4 1693 fi
28f540f4
RM
1694done
1695
5695d46f
AS
1696if test x"$build_mathvec" = xnotset; then
1697 build_mathvec=no
1698fi
1699LIBC_CONFIG_VAR([build-mathvec], [$build_mathvec])
1700
7ffa9423
AZ
1701AC_SUBST(libc_extra_cflags)
1702AC_SUBST(libc_extra_cppflags)
1703
74bd2300
UD
1704if test x$libc_cv_gcc_unwind_find_fde = xyes; then
1705 AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
1706fi
1707AC_SUBST(libc_cv_gcc_unwind_find_fde)
1708
6e6249d0
RM
1709# A sysdeps configure fragment can reset this if IFUNC is not actually
1710# usable even though the assembler knows how to generate the symbol type.
1711if test x"$libc_cv_ld_gnu_indirect_function" = xyes; then
1712 AC_DEFINE(HAVE_IFUNC)
1713fi
92ad88fe 1714LIBC_CONFIG_VAR([have-ifunc], [$libc_cv_ld_gnu_indirect_function])
6e6249d0 1715
022dfdce
SL
1716if test x"$libc_cv_gcc_indirect_function" = xyes; then
1717 AC_DEFINE(HAVE_GCC_IFUNC)
1718fi
16b59780 1719LIBC_CONFIG_VAR([have-gcc-ifunc], [$libc_cv_gcc_indirect_function])
022dfdce 1720
3cc3ef96
RM
1721# This is far from the AC_ARG_ENABLE that sets it so that a sysdeps
1722# configure fragment can override the value to prevent this AC_DEFINE.
1723AC_SUBST(use_nscd)
1724if test "x$use_nscd" != xno; then
1725 AC_DEFINE([USE_NSCD])
1726fi
c53d909c
RM
1727if test "x$build_nscd" = xdefault; then
1728 build_nscd=$use_nscd
1729fi
3cc3ef96 1730
84384f5b 1731AC_SUBST(libc_cv_slibdir)
aaa8cb4b 1732AC_SUBST(libc_cv_rtlddir)
90fe682d 1733AC_SUBST(libc_cv_complocaledir)
77259608 1734AC_SUBST(libc_cv_sysconfdir)
4248b1b1 1735AC_SUBST(libc_cv_localstatedir)
1ef32c3d
UD
1736AC_SUBST(libc_cv_rootsbindir)
1737
f57f8055
RM
1738if test x$use_ldconfig = xyes; then
1739 AC_DEFINE(USE_LDCONFIG)
1740fi
591e1ffb 1741AC_SUBST(use_ldconfig)
cb343854 1742AC_SUBST(ldd_rewrite_script)
84384f5b 1743
650425ce 1744AC_SUBST(static)
ff3d7ed3 1745AC_SUBST(shared)
a334319f 1746
ff886b82
UD
1747AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
1748[libc_cv_pic_default=yes
cc3fa755 1749cat > conftest.c <<EOF
9756dfe1 1750#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
cc3fa755
UD
1751# error PIC is default.
1752#endif
1753EOF
0b4ee387 1754if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
ff886b82 1755 libc_cv_pic_default=no
cc3fa755
UD
1756fi
1757rm -f conftest.*])
23645707 1758LIBC_CONFIG_VAR([build-pic-default], [$libc_cv_pic_default])
cc3fa755 1759
00c714df
L
1760AC_CACHE_CHECK([whether -fPIE is default], libc_cv_cc_pie_default,
1761[libc_cv_cc_pie_default=yes
cc08749b
L
1762cat > conftest.c <<EOF
1763#if defined __PIE__ || defined __pie__ || defined PIE || defined pie
1764# error PIE is default.
1765#endif
1766EOF
1767if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
00c714df 1768 libc_cv_cc_pie_default=no
cc08749b
L
1769fi
1770rm -f conftest.*])
23645707
SP
1771LIBC_CONFIG_VAR([cc-pie-default], [$libc_cv_cc_pie_default])
1772
1773AC_MSG_CHECKING(if we can build programs as PIE)
ded3aeb2 1774AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#ifdef PIE_UNSUPPORTED
23645707 1775# error PIE is not supported
ded3aeb2
L
1776#endif]])], [libc_cv_pie_supported=yes], [libc_cv_pie_supported=no])
1777AC_MSG_RESULT($libc_cv_pie_supported)
1778# Disable build-pie-default if target does not support it or glibc is
1779# configured with --disable-default-pie.
1780if test "x$default_pie" = xno; then
1781 build_pie_default=no
1782else
1783 build_pie_default=$libc_cv_pie_supported
23645707 1784fi
ded3aeb2 1785LIBC_CONFIG_VAR([build-pie-default], [$build_pie_default])
23645707
SP
1786
1787AC_MSG_CHECKING(if we can build static PIE programs)
ded3aeb2
L
1788libc_cv_static_pie_supported=$libc_cv_pie_supported
1789if test "x$libc_cv_pie_supported" != xno \
23645707 1790 -a "$libc_cv_no_dynamic_linker" = yes; then
23645707
SP
1791 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#ifndef SUPPORT_STATIC_PIE
1792# error static PIE is not supported
ded3aeb2
L
1793#endif]])], [libc_cv_static_pie_supported=yes],
1794 [libc_cv_static_pie_supported=no])
1795fi
1796AC_MSG_RESULT($libc_cv_static_pie_supported)
1797
1798# Enable static-pie only if it is available and glibc isn't configured
1799# with --disable-default-pie.
1800if test "x$default_pie" = xno; then
1801 libc_cv_static_pie=no
1802else
1803 libc_cv_static_pie=$libc_cv_static_pie_supported
1804fi
1805if test "$libc_cv_static_pie" = "yes"; then
1806 AC_DEFINE(ENABLE_STATIC_PIE)
23645707 1807fi
23645707 1808LIBC_CONFIG_VAR([enable-static-pie], [$libc_cv_static_pie])
cc08749b 1809
abcb584d
L
1810# Set the `multidir' variable by grabbing the variable from the compiler.
1811# We do it once and save the result in a generated makefile.
1812libc_cv_multidir=`${CC-cc} $CFLAGS $CPPFLAGS -print-multi-directory`
1813AC_SUBST(libc_cv_multidir)
1814
ff3d7ed3 1815AC_SUBST(profile)
5107cf1d 1816AC_SUBST(static_nss)
ff3d7ed3 1817
edf5b2d7
UD
1818AC_SUBST(DEFINES)
1819
cb8a6dbd 1820dnl See sysdeps/mach/configure.ac for this variable.
61c83c3f
RM
1821AC_SUBST(mach_interface_list)
1822
ee74a442
UD
1823VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
1824RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
df4ef2ab 1825AC_SUBST(VERSION)
ee74a442 1826AC_SUBST(RELEASE)
df4ef2ab 1827
ad201afe
FW
1828if test "$pthread_in_libc" = yes; then
1829 AC_DEFINE(PTHREAD_IN_LIBC)
1830fi
1831AC_SUBST(pthread_in_libc)
1832
728e272a 1833AC_CONFIG_FILES([config.make Makefile])
c118d634 1834AC_CONFIG_COMMANDS([default],[[
737547be
UD
1835case $CONFIG_FILES in *config.make*)
1836echo "$config_vars" >> config.make;;
1837esac
c118d634
RM
1838test -d bits || mkdir bits]],[[config_vars='$config_vars']])
1839AC_OUTPUT