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