]> git.ipfire.org Git - thirdparty/glibc.git/blame - configure.ac
Add new locale kab_DZ [BZ #18812]
[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
0cae3f4b 637if test x"$libc_cv_ld_gnu_indirect_function" != xyes; then
84b9230c
MF
638 if test x"$multi_arch" = xyes; then
639 AC_MSG_ERROR([--enable-multi-arch support requires assembler and linker support])
640 else
641 multi_arch=no
642 fi
643fi
022dfdce
SL
644if test x"$libc_cv_gcc_indirect_function" != xyes &&
645 test x"$multi_arch" = xyes; then
646 AC_MSG_WARN([--enable-multi-arch support recommends a gcc with gnu-indirect-function support.
647Please use a gcc which supports it by default or configure gcc with --enable-gnu-indirect-function])
648fi
6270516e 649multi_arch_d=
84b9230c
MF
650if test x"$multi_arch" != xno; then
651 multi_arch_d=/multiarch
652fi
653
f0523145 654# Compute the list of sysdep directories for this configuration.
f332db02 655# This can take a while to compute.
f0523145 656sysdep_dir=$srcdir/sysdeps
f332db02 657AC_MSG_CHECKING(sysdep dirs)
f0523145
RM
658dnl We need to use [ and ] for other purposes for a while now.
659changequote(,)dnl
28f540f4
RM
660# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
661os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
662
b22d21b3 663test "x$base_os" != x || case "$os" in
28f540f4
RM
664gnu*)
665 base_os=mach/hurd ;;
2ce4f015 666linux*)
28f540f4 667 base_os=unix/sysv ;;
28f540f4
RM
668esac
669
670# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
671tail=$os
672ostry=$os
673while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
674 ostry="$ostry /$o"
675 tail=$o
75914335 676done
28f540f4
RM
677o=`echo $tail | sed 's/[0-9]*$//'`
678if test $o != $tail; then
679 ostry="$ostry /$o"
680fi
ec4b0518
UD
681# For linux-gnu, try linux-gnu, then linux.
682o=`echo $tail | sed 's/-.*$//'`
683if test $o != $tail; then
684 ostry="$ostry /$o"
685fi
28f540f4
RM
686
687# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
688base=
689tail=$base_os
690while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
691 set $b
692 base="$base /$1"
693 tail="$2"
694done
695
ae6b8730 696# For sparc/sparc32, try sparc/sparc32 and then sparc.
28f540f4 697mach=
2ceaa76a 698tail=$machine${submachine:+/$submachine}
28f540f4
RM
699while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
700 set $m
10ceac89
RM
701 # Prepend the machine's FPU directory unless --without-fp.
702 if test "$with_fp" = yes; then
6270516e 703 maybe_fpu=/fpu
f4b07664 704 else
6270516e 705 maybe_fpu=/nofpu
82d00cab 706 fi
6270516e
RM
707 # For each machine term, try it with and then without /multiarch.
708 for try_fpu in $maybe_fpu ''; do
709 for try_multi in $multi_arch_d ''; do
710 mach="$mach /$1$try_fpu$try_multi"
711 done
712 done
28f540f4
RM
713 tail="$2"
714done
715
716dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
717changequote([,])dnl
718
719# Find what sysdep directories exist.
720sysnames=
4b69abad
RM
721for b in $base ''; do
722 for m0 in $mach ''; do
723 for v in /$vendor ''; do
724 test "$v" = / && continue
725 for o in /$ostry ''; do
726 test "$o" = / && continue
6270516e 727 for m in $mach ''; do
644d3857
JM
728 try_suffix="$m0$b$v$o$m"
729 if test -n "$try_suffix"; then
730 try_srcdir="${srcdir}/"
731 try="sysdeps$try_suffix"
732 test -n "$enable_debug_configure" &&
733 echo "$0 [DEBUG]: try $try" >&2
734 if test -d "$try_srcdir$try"; then
735 sysnames="$sysnames $try"
736 { test -n "$o" || test -n "$b"; } && os_used=t
737 { test -n "$m" || test -n "$m0"; } && machine_used=t
738 case x${m0:-$m} in
739 x*/$submachine) submachine_used=t ;;
740 esac
741 fi
742 fi
28f540f4
RM
743 done
744 done
745 done
746 done
4b69abad 747done
28f540f4 748
6f89d2f3
L
749# If the assembler supports gnu_indirect_function symbol type and the
750# architecture supports multi-arch, we enable multi-arch by default.
644d3857 751case $sysnames in
84b9230c
MF
752*"$multi_arch_d"*)
753 ;;
754*)
77e8bddf 755 test x"$multi_arch" = xdefault && multi_arch=no
84b9230c
MF
756 ;;
757esac
758if test x"$multi_arch" != xno; then
6f89d2f3
L
759 AC_DEFINE(USE_MULTIARCH)
760fi
761AC_SUBST(multi_arch)
762
28f540f4
RM
763if test -z "$os_used" && test "$os" != none; then
764 AC_MSG_ERROR(Operating system $os is not supported.)
765fi
766if test -z "$machine_used" && test "$machine" != none; then
767 AC_MSG_ERROR(The $machine is not supported.)
768fi
2ceaa76a
RM
769if test -z "$submachine_used" && test -n "$submachine"; then
770 AC_MSG_ERROR(The $submachine subspecies of $host_cpu is not supported.)
771fi
772AC_SUBST(submachine)
28f540f4
RM
773
774# We have now validated the configuration.
775
28f540f4
RM
776# Expand the list of system names into a full list of directories
777# from each element's parent name and Implies file (if present).
778set $sysnames
e50ec9f9 779names=
28f540f4
RM
780while test $# -gt 0; do
781 name=$1
782 shift
783
e50ec9f9 784 case " $names " in *" $name "*)
f332db02
RM
785 # Already in the list.
786 continue
e50ec9f9 787 esac
f332db02
RM
788
789 # Report each name as we discover it, so there is no long pause in output.
0b4ee387 790 echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
f332db02 791
57ba7bb4
UD
792 name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
793
794 case $name in
795 /*) xsrcdir= ;;
796 *) xsrcdir=$srcdir/ ;;
797 esac
798 test -n "$enable_debug_configure" &&
799 echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
800
ba75122d
RM
801 for implies_file in Implies Implies-before Implies-after; do
802 implies_type=`echo $implies_file | sed s/-/_/`
803 eval ${implies_type}=
804 if test -f $xsrcdir$name/$implies_file; then
805 # Collect more names from the `Implies' file (removing comments).
806 implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/$implies_file`"
807 for x in $implied_candidate; do
808 found=no
809 if test -d $xsrcdir$name_base/$x; then
810 eval "${implies_type}=\"\$${implies_type} \$name_base/\$x\""
636ccfc8 811 found=yes
ba75122d 812 fi
644d3857
JM
813 try="sysdeps/$x"
814 try_srcdir=$srcdir/
815 test -n "$enable_debug_configure" &&
816 echo "[DEBUG]: $name $implies_file $x try() {$try_srcdir}$try" >&2
817 if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
818 then
819 eval "${implies_type}=\"\$${implies_type} \$try\""
820 found=yes
821 fi
ba75122d
RM
822 if test $found = no; then
823 AC_MSG_WARN($name/$implies_file specifies nonexistent $x)
636ccfc8
UD
824 fi
825 done
ba75122d
RM
826 fi
827 done
28f540f4
RM
828
829 # Add NAME to the list of names.
830 names="$names $name"
831
832 # Find the parent of NAME, using the empty string if it has none.
833changequote(,)dnl
57ba7bb4 834 parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
28f540f4
RM
835changequote([,])dnl
836
ba75122d
RM
837 test -n "$enable_debug_configure" &&
838 echo "[DEBUG]: $name Implies='$Implies' rest='$*' parent='$parent' \
57633811 839Implies_before='$Implies_before' Implies_after='$Implies_after'" >&2
ba75122d 840
28f540f4
RM
841 # Add the names implied by NAME, and NAME's parent (if it has one), to
842 # the list of names to be processed (the argument list). We prepend the
843 # implied names to the list and append the parent. We want implied
844 # directories to come before further directories inferred from the
845 # configuration components; this ensures that for sysv4, unix/common
846 # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
847 # after sysv4).
ba75122d 848 sysnames="`echo $Implies $* $Implies_before $parent $Implies_after`"
28f540f4
RM
849 test -n "$sysnames" && set $sysnames
850done
851
852# Add the default directories.
83ef87ba 853default_sysnames="sysdeps/generic"
ecdc196c 854sysnames="$names $default_sysnames"
f332db02
RM
855AC_SUBST(sysnames)
856# The other names were emitted during the scan.
ecdc196c 857AC_MSG_RESULT($default_sysnames)
28f540f4 858
f332db02
RM
859
860### Locate tools.
28f540f4 861
28f540f4 862AC_PROG_INSTALL
2b80a372 863if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
28f540f4 864 # The makefiles need to use a different form to find it in $srcdir.
2b80a372 865 INSTALL='\$(..)./scripts/install-sh -c'
28f540f4 866fi
0e3426bb 867AC_PROG_LN_S
ae828bc6 868
4baa087a 869LIBC_PROG_BINUTILS
4baa087a 870
b4396163 871# Accept binutils 2.25 or newer.
4baa087a
RM
872AC_CHECK_PROG_VER(AS, $AS, --version,
873 [GNU assembler.* \([0-9]*\.[0-9.]*\)],
b4396163 874 [2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*],
bd805071 875 AS=: critic_missing="$critic_missing as")
f300dc73
L
876
877if test -n "`$LD --version | sed -n 's/^GNU \(gold\).*$/\1/p'`"; then
878 # Accept gold 1.14 or higher
879 AC_CHECK_PROG_VER(LD, $LD, --version,
880 [GNU gold.* \([0-9][0-9]*\.[0-9.]*\)],
881 [1.1[4-9]*|1.[2-9][0-9]*|1.1[0-9][0-9]*|[2-9].*|[1-9][0-9]*],
882 LD=: critic_missing="$critic_missing GNU gold")
883else
884 AC_CHECK_PROG_VER(LD, $LD, --version,
885 [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
073e8fa7 886 [2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*],
f300dc73
L
887 LD=: critic_missing="$critic_missing GNU ld")
888fi
4baa087a 889
63bda0c1 890# These programs are version sensitive.
3a12e572 891AC_CHECK_TOOL_PREFIX
22e65f8f 892AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
8fc1e2ca 893 [GNU Make[^0-9]*\([0-9][0-9.]*\)],
28d708c4 894 [3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make")
63bda0c1 895
22e65f8f 896AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
bdd421cc 897 [GNU gettext.* \([0-9]*\.[0-9.]*\)],
aefdff34
RM
898 [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
899 MSGFMT=: aux_missing="$aux_missing msgfmt")
63bda0c1 900AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
8b7fb588 901 [GNU texinfo.* \([0-9][0-9.]*\)],
3a12c70f 902 [4.[7-9]*|4.[1-9][0-9]*|[5-9].*],
aefdff34 903 MAKEINFO=: aux_missing="$aux_missing makeinfo")
d6a97a28 904AC_CHECK_PROG_VER(SED, sed, --version,
07e51550 905 [GNU sed[^0-9]* \([0-9]*\.[0-9.]*\)],
aefdff34
RM
906 [3.0[2-9]*|3.[1-9]*|[4-9]*],
907 SED=: aux_missing="$aux_missing sed")
0786794f
AM
908AC_CHECK_PROG_VER(AWK, gawk, --version,
909 [GNU Awk[^0-9]*\([0-9][0-9.]*\)],
12086fb4 910 [3.1.[2-9]*|3.[2-9]*|[4-9]*], critic_missing="$critic_missing gawk")
63bda0c1 911
461a7b1e
RM
912AC_CACHE_CHECK([if $CC is sufficient to build libc], libc_cv_compiler_ok, [
913AC_TRY_COMPILE([], [
4add8674 914#if !defined __GNUC__ || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 9)
461a7b1e
RM
915#error insufficient compiler
916#endif],
917 [libc_cv_compiler_ok=yes],
918 [libc_cv_compiler_ok=no])])
919AS_IF([test $libc_cv_compiler_ok != yes],
920 [critic_missing="$critic_missing compiler"])
921
30b99d79 922AC_CHECK_TOOL(NM, nm, false)
d30cf5bb 923
8894bad3
AM
924if test "x$maintainer" = "xyes"; then
925 AC_CHECK_PROGS(AUTOCONF, autoconf, no)
926 case "x$AUTOCONF" in
927 xno|x|x:) AUTOCONF=no ;;
928 *)
929 AC_CACHE_CHECK(dnl
930 whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
931 if (cd $srcdir; $AUTOCONF $ACFLAGS configure.ac > /dev/null 2>&1); then
932 libc_cv_autoconf_works=yes
933 else
934 libc_cv_autoconf_works=no
935 fi])
936 test $libc_cv_autoconf_works = yes || AUTOCONF=no
937 ;;
938 esac
939 if test "x$AUTOCONF" = xno; then
940 aux_missing="$aux_missing autoconf"
941 fi
9e8ac24b
AM
942else
943 AUTOCONF=no
14519931 944fi
1400de2e 945
8ce8299f
SP
946# Check for python3 if available, or else python.
947AC_CHECK_PROGS(PYTHON_PROG, python3 python,no)
948case "x$PYTHON_PROG" in
949xno|x|x:) PYTHON_PROG=no ;;
950*) ;;
951esac
952
953if test "x$PYTHON_PROG" = xno; then
954 aux_missing="$aux_missing python"
955else
956 PYTHON="$PYTHON_PROG -B"
957 AC_SUBST(PYTHON)
958fi
959
32a448ed
RM
960test -n "$critic_missing" && AC_MSG_ERROR([
961*** These critical programs are missing or too old:$critic_missing
962*** Check the INSTALL file for required versions.])
963
4bca4c17 964test -n "$aux_missing" && AC_MSG_WARN([
9c6fffc0 965*** These auxiliary programs are missing or incompatible versions:$aux_missing
8ce8299f 966*** some features or tests will be disabled.
63bda0c1 967*** Check the INSTALL file for required versions.])
28f540f4 968
dbe7a0f5
UD
969# if using special system headers, find out the compiler's sekrit
970# header directory and add that to the list. NOTE: Only does the right
971# thing on a system that doesn't need fixincludes. (Not presently a problem.)
972if test -n "$sysheaders"; then
67fbfa5c
RM
973 SYSINCLUDES=-nostdinc
974 for d in include include-fixed; do
975 i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
976 SYSINCLUDES="$SYSINCLUDES -isystem $i"
977 done
978 SYSINCLUDES="$SYSINCLUDES \
3d6ce23a 979-isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
ef226fec 980 if test -n "$CXX"; then
7872cfb0 981 CXX_SYSINCLUDES=
67060746
AC
982 for cxxheaders in `$CXX -v -S -x c++ /dev/null -o /dev/null 2>&1 \
983 | sed -n -e '1,/#include/d' -e 's/^ \(\/.*\/[cg]++\)/\1/p'`; do
984 test "x$cxxheaders" != x &&
985 CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders"
986 done
ef226fec 987 fi
dbe7a0f5
UD
988fi
989AC_SUBST(SYSINCLUDES)
ef226fec 990AC_SUBST(CXX_SYSINCLUDES)
dbe7a0f5 991
fc3e1337
FW
992# Obtain some C++ header file paths. This is used to make a local
993# copy of those headers in Makerules.
994if test -n "$CXX"; then
995 find_cxx_header () {
c2528fef
FW
996 echo "#include <$1>" | $CXX -M -MP -x c++ - 2>/dev/null \
997 | sed -n "\,$1:,{s/:\$//;p}"
fc3e1337
FW
998 }
999 CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)"
1000 CXX_CMATH_HEADER="$(find_cxx_header cmath)"
a65ea28d 1001 CXX_BITS_STD_ABS_H="$(find_cxx_header bits/std_abs.h)"
fc3e1337
FW
1002fi
1003AC_SUBST(CXX_CSTDLIB_HEADER)
1004AC_SUBST(CXX_CMATH_HEADER)
a65ea28d 1005AC_SUBST(CXX_BITS_STD_ABS_H)
fc3e1337 1006
3911660e
UD
1007# Test if LD_LIBRARY_PATH contains the notation for the current directory
1008# since this would lead to problems installing/building glibc.
1009# LD_LIBRARY_PATH contains the current directory if one of the following
1010# is true:
1011# - one of the terminals (":" and ";") is the first or last sign
1012# - two terminals occur directly after each other
1013# - the path contains an element with a dot in it
1014AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
1015changequote(,)dnl
1016case ${LD_LIBRARY_PATH} in
1017 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
b3a86ae1 1018 ld_library_path_setting="contains current directory"
3911660e
UD
1019 ;;
1020 *)
1021 ld_library_path_setting="ok"
1022 ;;
1023esac
1024changequote([,])dnl
1025AC_MSG_RESULT($ld_library_path_setting)
1026if test "$ld_library_path_setting" != "ok"; then
63bda0c1
UD
1027AC_MSG_ERROR([
1028*** LD_LIBRARY_PATH shouldn't contain the current directory when
1029*** building glibc. Please change the environment variable
1030*** and run configure again.])
3911660e 1031fi
8e31cf7e 1032
26f56c1c 1033AC_PATH_PROG(BASH_SHELL, bash, no)
84384f5b 1034
c0016081 1035AC_PATH_PROG(PERL, perl, no)
2fd5d029
RM
1036if test "$PERL" != no &&
1037 (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
1038 PERL=no
ecb06196 1039fi
2f512715
AS
1040AC_PATH_PROG(INSTALL_INFO, install-info, no,
1041 $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
cc8623f1
WN
1042AC_CHECK_PROG_VER(BISON, bison, --version,
1043 [bison (GNU Bison) \([0-9]*\.[0-9.]*\)],
1044 [2.7*|[3-9].*|[1-9][0-9]*],
1045 BISON=no)
2de00372 1046
b8dc6a10 1047AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
9a70fcab 1048cat > conftest.s <<EOF
8c0c01db 1049.text
ae1025be 1050foo:
df2a0c93 1051.set glibc_conftest_frobozz,foo
7b8e0d49 1052.globl glibc_conftest_frobozz
e215c478 1053EOF
df2a0c93
RM
1054# The alpha-dec-osf1 assembler gives only a warning for `.set'
1055# (but it doesn't work), so we must do a linking check to be sure.
1056cat > conftest1.c <<\EOF
1057extern int glibc_conftest_frobozz;
640f0119 1058void _start() { glibc_conftest_frobozz = 1; }
df2a0c93
RM
1059EOF
1060if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
66a704c4 1061 -nostartfiles -nostdlib $no_ssp \
0b4ee387 1062 -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
e215c478
RM
1063 libc_cv_asm_set_directive=yes
1064else
1065 libc_cv_asm_set_directive=no
1066fi
65b3cbcb 1067rm -f conftest*])
e215c478
RM
1068if test $libc_cv_asm_set_directive = yes; then
1069 AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
1070fi
1071
2a723ff6
JM
1072AC_CACHE_CHECK(linker support for protected data symbol,
1073 libc_cv_protected_data,
1074 [cat > conftest.c <<EOF
1075 int bar __attribute__ ((visibility ("protected"))) = 1;
83569fb8 1076EOF
2a723ff6 1077 libc_cv_protected_data=no
66a704c4 1078 if AC_TRY_COMMAND(${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -o conftest.so); then
2a723ff6
JM
1079 cat > conftest.c <<EOF
1080 extern int bar;
1081 int main (void) { return bar; }
83569fb8 1082EOF
66a704c4 1083 if AC_TRY_COMMAND(${CC-cc} -nostdlib -nostartfiles $no_ssp conftest.c -o conftest conftest.so); then
2a723ff6 1084 libc_cv_protected_data=yes
83569fb8 1085 fi
2a723ff6
JM
1086 fi
1087 rm -f conftest.*
1088 ])
83569fb8
L
1089AC_SUBST(libc_cv_protected_data)
1090
19f1a11e
L
1091AC_CACHE_CHECK(linker support for INSERT in linker script,
1092 libc_cv_insert,
1093 [cat > conftest.c <<EOF
1094 const int __attribute__ ((section(".bar"))) bar = 0x12345678;
1095 int test (void) { return bar; }
1096EOF
1097 cat > conftest.t <<EOF
1098 SECTIONS
1099 {
1100 .bar : { *(.bar) }
1101 }
1102 INSERT AFTER .rela.dyn;
1103EOF
1104 libc_cv_insert=no
1105 if AC_TRY_COMMAND([${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -Wl,-T,conftest.t -o conftest.so]); then
1106 libc_cv_insert=yes
1107 fi
1108 rm -f conftest.*
1109 ])
1110AC_SUBST(libc_cv_insert)
1111
a0da5fe1
UD
1112AC_CACHE_CHECK(for broken __attribute__((alias())),
1113 libc_cv_broken_alias_attribute,
1114 [cat > conftest.c <<EOF
1115 extern int foo (int x) __asm ("xyzzy");
1116 int bar (int x) { return x; }
1117 extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1118 extern int dfoo;
1119 extern __typeof (dfoo) dfoo __asm ("abccb");
1120 int dfoo = 1;
37ba7d66 1121EOF
a0da5fe1
UD
1122 libc_cv_broken_alias_attribute=yes
1123 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1124 if grep 'xyzzy' conftest.s >/dev/null &&
1125 grep 'abccb' conftest.s >/dev/null; then
1126 libc_cv_broken_alias_attribute=no
1127 fi
1128 fi
1129 rm -f conftest.c conftest.s
1130 ])
1131if test $libc_cv_broken_alias_attribute = yes; then
1132 AC_MSG_ERROR(working alias attribute support required)
1133fi
1134
2a723ff6
JM
1135AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1136 libc_cv_have_sdata_section,
1137 [echo "int i;" > conftest.c
1138 libc_cv_have_sdata_section=no
1139 if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1140 | grep '\.sdata' >/dev/null; then
1141 libc_cv_have_sdata_section=yes
1142 fi
1143 rm -f conftest.c conftest.so
1144 ])
1145if test $libc_cv_have_sdata_section = yes; then
1146 AC_DEFINE(HAVE_SDATA_SECTION)
a0da5fe1 1147fi
0d01dace 1148
a0da5fe1
UD
1149AC_CACHE_CHECK(whether to use .ctors/.dtors header and trailer,
1150 libc_cv_ctors_header, [dnl
1151 libc_cv_ctors_header=yes
07037eeb
JM
1152 LIBC_TRY_LINK_STATIC([
1153__attribute__ ((constructor)) void ctor (void) { asm (""); }
1154__attribute__ ((destructor)) void dtor (void) { asm (""); }
113ddea4 1155],
a0da5fe1 1156 [dnl
113ddea4 1157 AS_IF([$READELF -WS conftest$ac_exeext | $AWK '
92963737 1158 { gsub(/\@<:@ */, "@<:@") }
113ddea4
RM
1159 $2 == ".ctors" || $2 == ".dtors" {
1160 size = strtonum("0x" $6)
1161 align = strtonum("0x" $NF)
1162 seen@<:@$2@:>@ = 1
1163 stub@<:@$2@:>@ = size == align * 2
92963737 1164 }
113ddea4
RM
1165 END {
1166 ctors_ok = !seen@<:@".ctors"@:>@ || stub@<:@".ctors"@:>@
1167 dtors_ok = !seen@<:@".dtors"@:>@ || stub@<:@".dtors"@:>@
1168 exit ((ctors_ok && dtors_ok) ? 0 : 1)
1169 }
1170 '], [libc_cv_ctors_header=no])
1171 ], [dnl
1172 AC_MSG_ERROR([missing __attribute__ ((constructor)) support??])
1173 ])
a0da5fe1
UD
1174])
1175if test $libc_cv_ctors_header = no; then
1176 AC_DEFINE(NO_CTORS_DTORS_SECTIONS)
1177fi
5241882c 1178
a0da5fe1
UD
1179AC_CACHE_CHECK(for libunwind-support in compiler,
1180 libc_cv_cc_with_libunwind, [
1181 cat > conftest.c <<EOF
cbdb12de
UD
1182int main (void) { return 0; }
1183EOF
a0da5fe1 1184 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
8175a253 1185 conftest.c -v 2>&1 >/dev/null | grep ' -lunwind ' >/dev/null; then
a0da5fe1
UD
1186 libc_cv_cc_with_libunwind=yes
1187 else
1188 libc_cv_cc_with_libunwind=no
c776b3d7 1189 fi
a0da5fe1
UD
1190 rm -f conftest*])
1191AC_SUBST(libc_cv_cc_with_libunwind)
1192if test $libc_cv_cc_with_libunwind = yes; then
1193 AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
1194fi
c776b3d7 1195
a0da5fe1
UD
1196ASFLAGS_config=
1197AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1198 libc_cv_as_noexecstack, [dnl
1199cat > conftest.c <<EOF
35915ec8
UD
1200void foo (void) { }
1201EOF
a0da5fe1
UD
1202if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1203 -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
8175a253 1204 && grep .note.GNU-stack conftest.s >/dev/null \
a0da5fe1
UD
1205 && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
1206 -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1207then
1208 libc_cv_as_noexecstack=yes
1209else
1210 libc_cv_as_noexecstack=no
1211fi
1212rm -f conftest*])
1213if test $libc_cv_as_noexecstack = yes; then
1214 ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1215fi
1216AC_SUBST(ASFLAGS_config)
2abf9ff1 1217
a0da5fe1
UD
1218AC_CACHE_CHECK(for -z combreloc,
1219 libc_cv_z_combreloc, [dnl
1220cat > conftest.c <<EOF
d555194c
UD
1221extern int bar (int);
1222extern int mumble;
1223int foo (void) { return bar (mumble); }
a711b01d 1224EOF
a0da5fe1 1225if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
66a704c4 1226 -fPIC -shared $no_ssp -o conftest.so conftest.c
35cd3c97 1227 -nostdlib -nostartfiles
c2f55635 1228 -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
a0da5fe1 1229then
a711b01d
UD
1230dnl The following test is a bit weak. We must use a tool which can test
1231dnl cross-platform since the gcc used can be a cross compiler. Without
1232dnl introducing new options this is not easily doable. Instead use a tool
1233dnl which always is cross-platform: readelf. To detect whether -z combreloc
e37fc4aa
AN
1234dnl look for a section named .rel.dyn or .rela.dyn.
1235 if $READELF -S conftest.so | grep -E '.rela?.dyn' > /dev/null; then
a0da5fe1 1236 libc_cv_z_combreloc=yes
fdde8349
UD
1237 else
1238 libc_cv_z_combreloc=no
a711b01d 1239 fi
a0da5fe1
UD
1240else
1241 libc_cv_z_combreloc=no
1242fi
1243rm -f conftest*])
1244if test "$libc_cv_z_combreloc" = yes; then
1245 AC_DEFINE(HAVE_Z_COMBRELOC)
1246fi
1247AC_SUBST(libc_cv_z_combreloc)
2abf9ff1 1248
6bfea974
L
1249LIBC_LINKER_FEATURE([-z execstack], [-Wl,-z,execstack],
1250 [libc_cv_z_execstack=yes], [libc_cv_z_execstack=no])
a0da5fe1 1251AC_SUBST(libc_cv_z_execstack)
c9c60884 1252
a0da5fe1 1253AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
4da0431d
JM
1254LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no])
1255])
c9c60884 1256
a0da5fe1 1257AC_SUBST(libc_cv_fpie)
871b9158 1258
a0da5fe1
UD
1259AC_CACHE_CHECK(for --hash-style option,
1260 libc_cv_hashstyle, [dnl
1261cat > conftest.c <<EOF
871b9158
UD
1262int _start (void) { return 42; }
1263EOF
66a704c4 1264if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
a0da5fe1
UD
1265 -fPIC -shared -o conftest.so conftest.c
1266 -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
1267then
1268 libc_cv_hashstyle=yes
1269else
1270 libc_cv_hashstyle=no
1271fi
1272rm -f conftest*])
1273AC_SUBST(libc_cv_hashstyle)
1274
1275# The linker's default -shared behavior is good enough if it
1276# does these things that our custom linker scripts ensure that
1277# all allocated NOTE sections come first.
1278if test "$use_default_link" = default; then
1279 AC_CACHE_CHECK([for sufficient default -shared layout],
1280 libc_cv_use_default_link, [dnl
1281 libc_cv_use_default_link=no
1282 cat > conftest.s <<\EOF
fd5e21c7
RM
1283 .section .note.a,"a",%note
1284 .balign 4
1285 .long 4,4,9
1286 .string "GNU"
1287 .string "foo"
1288 .section .note.b,"a",%note
1289 .balign 4
1290 .long 4,4,9
1291 .string "GNU"
1292 .string "bar"
1293EOF
a0da5fe1 1294 if AC_TRY_COMMAND([dnl
fd5e21c7
RM
1295 ${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD]) &&
1296 ac_try=`$READELF -S conftest.so | sed -n \
1297 ['${x;p;}
1298 s/^ *\[ *[1-9][0-9]*\] *\([^ ][^ ]*\) *\([^ ][^ ]*\) .*$/\2 \1/
1299 t a
1300 b
1301 : a
1302 H']`
a0da5fe1
UD
1303 then
1304 libc_seen_a=no libc_seen_b=no
1305 set -- $ac_try
1306 while test $# -ge 2 -a "$1" = NOTE; do
1307 case "$2" in
1308 .note.a) libc_seen_a=yes ;;
1309 .note.b) libc_seen_b=yes ;;
1310 esac
1311 shift 2
1312 done
1313 case "$libc_seen_a$libc_seen_b" in
1314 yesyes)
1315 libc_cv_use_default_link=yes
1316 ;;
1317 *)
1318 echo >&AS_MESSAGE_LOG_FD "\
fd5e21c7
RM
1319$libc_seen_a$libc_seen_b from:
1320$ac_try"
a0da5fe1
UD
1321 ;;
1322 esac
fd5e21c7 1323 fi
a0da5fe1
UD
1324 rm -f conftest*])
1325 use_default_link=$libc_cv_use_default_link
fd26970f 1326fi
49803108 1327
89569c8b
L
1328AC_CACHE_CHECK(for GLOB_DAT reloc,
1329 libc_cv_has_glob_dat, [dnl
1330cat > conftest.c <<EOF
1331extern int mumble;
1332int foo (void) { return mumble; }
1333EOF
1334if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1335 -fPIC -shared -o conftest.so conftest.c
66a704c4 1336 -nostdlib -nostartfiles $no_ssp
89569c8b
L
1337 1>&AS_MESSAGE_LOG_FD])
1338then
1339dnl look for GLOB_DAT relocation.
1340 if $READELF -rW conftest.so | grep '_GLOB_DAT' > /dev/null; then
1341 libc_cv_has_glob_dat=yes
1342 else
1343 libc_cv_has_glob_dat=no
1344 fi
1345else
1346 libc_cv_has_glob_dat=no
1347fi
1348rm -f conftest*])
1349AC_SUBST(libc_cv_has_glob_dat)
1350
5c550700
RM
1351AC_CACHE_CHECK(linker output format, libc_cv_output_format, [dnl
1352if libc_cv_output_format=`
66a704c4 1353${CC-cc} -nostartfiles -nostdlib $no_ssp -Wl,--print-output-format 2>&AS_MESSAGE_LOG_FD`
5c550700
RM
1354then
1355 :
1356else
1357 libc_cv_output_format=
1358fi
1359test -n "$libc_cv_output_format" || libc_cv_output_format=unknown])
1360AC_SUBST(libc_cv_output_format)
1361
22dca1ea 1362AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl
49803108
AJ
1363cat > conftest.c <<EOF
1364int foo;
1365EOF
22dca1ea 1366if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-anchors
49803108
AJ
1367 conftest.c 1>&AS_MESSAGE_LOG_FD])
1368then
18e2ac6d 1369 libc_cv_fno_toplevel_reorder=yes
49803108 1370else
18e2ac6d 1371 libc_cv_fno_toplevel_reorder=no
49803108
AJ
1372fi
1373rm -f conftest*])
18e2ac6d 1374if test $libc_cv_fno_toplevel_reorder = yes; then
22dca1ea 1375 fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
18e2ac6d 1376else
49803108
AJ
1377 fno_unit_at_a_time=-fno-unit-at-a-time
1378fi
1379AC_SUBST(fno_unit_at_a_time)
fd26970f 1380
61655555
L
1381AC_CACHE_CHECK([for -mtls-dialect=gnu2], libc_cv_mtls_dialect_gnu2,
1382[dnl
1383cat > conftest.c <<EOF
1384__thread int i;
1385void foo (void)
1386{
1387 i = 10;
1388}
1389EOF
1390if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fPIC -mtls-dialect=gnu2
1391 conftest.c 1>&AS_MESSAGE_LOG_FD])
1392then
1393 libc_cv_mtls_dialect_gnu2=yes
1394else
1395 libc_cv_mtls_dialect_gnu2=no
1396fi
1397rm -f conftest*])
1398AC_SUBST(libc_cv_mtls_dialect_gnu2)
1399LIBC_CONFIG_VAR([have-mtls-dialect-gnu2], [$libc_cv_mtls_dialect_gnu2])
1400
a0da5fe1
UD
1401AC_CACHE_CHECK(whether cc puts quotes around section names,
1402 libc_cv_have_section_quotes,
1403 [cat > conftest.c <<EOF
1404 static const int foo
1405 __attribute__ ((section ("bar"))) = 1;
e26dd47f 1406EOF
a0da5fe1
UD
1407 if ${CC-cc} -S conftest.c -o conftest.s; then
1408 if grep '\.section.*"bar"' conftest.s >/dev/null; then
1409 libc_cv_have_section_quotes=yes
e26dd47f 1410 else
a0da5fe1 1411 libc_cv_have_section_quotes=no
e26dd47f 1412 fi
a0da5fe1
UD
1413 else
1414 libc_cv_have_section_quotes=unknown
1415 fi
1416 rm -f conftest.{c,s}
1417 ])
1418if test $libc_cv_have_section_quotes = yes; then
1419 AC_DEFINE(HAVE_SECTION_QUOTES)
9a97d1f7
UD
1420fi
1421
d555194c
UD
1422AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1423cat > conftest.c <<\EOF
1424void zero (void *x)
1425{
a52d1562 1426 __builtin_memset (x, 0, 1000);
d555194c
UD
1427}
1428EOF
1429dnl
e37fc4aa 1430if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | grep -F "memset" > /dev/null]);
d555194c
UD
1431then
1432 libc_cv_gcc_builtin_memset=no
1433else
1434 libc_cv_gcc_builtin_memset=yes
1435fi
1436rm -f conftest* ])
1437if test "$libc_cv_gcc_builtin_memset" = yes ; then
1438 AC_DEFINE(HAVE_BUILTIN_MEMSET)
1439fi
1440
85dd1003
UD
1441AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1442cat > conftest.c <<\EOF
1443extern char *strstr (const char *, const char *) __asm ("my_strstr");
1444char *foo (const char *a, const char *b)
1445{
1446 return __builtin_strstr (a, b);
1447}
1448EOF
1449dnl
e37fc4aa 1450if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | grep -F "my_strstr" > /dev/null]);
85dd1003
UD
1451then
1452 libc_cv_gcc_builtin_redirection=yes
1453else
1454 libc_cv_gcc_builtin_redirection=no
1455fi
1456rm -f conftest* ])
3ce1f295
UD
1457if test "$libc_cv_gcc_builtin_redirection" = no; then
1458 AC_MSG_ERROR([support for the symbol redirection needed])
85dd1003
UD
1459fi
1460
7998fa78
AS
1461dnl Determine how to disable generation of FMA instructions.
1462AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
1463 libc_cv_cc_nofma, [dnl
1464libc_cv_cc_nofma=
1465for opt in -ffp-contract=off -mno-fused-madd; do
1466 LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
1467done])
bef0b507 1468AC_SUBST(libc_cv_cc_nofma)
7998fa78 1469
2cf9ad57
RM
1470if test -n "$submachine"; then
1471 AC_CACHE_CHECK([for compiler option for CPU variant],
f7d82dc9 1472 libc_cv_cc_submachine, [dnl
2cf9ad57
RM
1473 libc_cv_cc_submachine=no
1474 for opt in "-march=$submachine" "-mcpu=$submachine"; do
40b601fb 1475 LIBC_TRY_CC_OPTION([$opt], [
2cf9ad57 1476 libc_cv_cc_submachine="$opt"
40b601fb 1477 break], [])
2cf9ad57
RM
1478 done])
1479 if test "x$libc_cv_cc_submachine" = xno; then
1480 AC_MSG_ERROR([${CC-cc} does not support $submachine])
1481 fi
1482fi
1483AC_SUBST(libc_cv_cc_submachine)
1484
85c2e611
AZ
1485AC_CACHE_CHECK(if $CC accepts -fno-tree-loop-distribute-patterns with \
1486__attribute__ ((__optimize__)), libc_cv_cc_loop_to_function, [dnl
1487cat > conftest.c <<EOF
1488void
1489__attribute__ ((__optimize__ ("-fno-tree-loop-distribute-patterns")))
1490foo (void) {}
1491EOF
1492libc_cv_cc_loop_to_function=no
1493if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c])
1494then
1495 libc_cv_cc_loop_to_function=yes
1496fi
1497rm -f conftest*])
1498if test $libc_cv_cc_loop_to_function = yes; then
1499 AC_DEFINE(HAVE_CC_INHIBIT_LOOP_TO_LIBCALL)
1500fi
1501AC_SUBST(libc_cv_cc_loop_to_function)
1502
c8f3e6db
UD
1503dnl Check whether we have the gd library available.
1504AC_MSG_CHECKING(for libgd)
6dab8688
UD
1505if test "$with_gd" != "no"; then
1506 old_CFLAGS="$CFLAGS"
1507 CFLAGS="$CFLAGS $libgd_include"
1508 old_LDFLAGS="$LDFLAGS"
1509 LDFLAGS="$LDFLAGS $libgd_ldflags"
1510 old_LIBS="$LIBS"
1511 LIBS="$LIBS -lgd -lpng -lz -lm"
1512 AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1513 CFLAGS="$old_CFLAGS"
1514 LDFLAGS="$old_LDFLAGS"
1515 LIBS="$old_LIBS"
1516else
1517 LIBGD=no
1518fi
c8f3e6db
UD
1519AC_MSG_RESULT($LIBGD)
1520AC_SUBST(LIBGD)
3d558f4e 1521
2fff3d93
UD
1522# SELinux detection
1523if test x$with_selinux = xno ; then
1524 have_selinux=no;
1525else
1526 # See if we have the SELinux library
1527 AC_CHECK_LIB(selinux, is_selinux_enabled,
1528 have_selinux=yes, have_selinux=no)
49155d51 1529 if test x$with_selinux = xyes ; then
2fff3d93 1530 if test x$have_selinux = xno ; then
0699f766 1531 AC_MSG_ERROR([SELinux explicitly required, but SELinux library not found])
2fff3d93
UD
1532 fi
1533 fi
1534fi
1535# Check if we're building with SELinux support.
1536if test "x$have_selinux" = xyes; then
943db9eb 1537 AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
ec23b9be
UD
1538
1539 # See if we have the libaudit library
943db9eb 1540 AC_CHECK_LIB(audit, audit_log_user_avc_message,
77e8bddf 1541 have_libaudit=yes, have_libaudit=no)
ec23b9be 1542 if test "x$have_libaudit" = xyes; then
943db9eb 1543 AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
ec23b9be
UD
1544 fi
1545 AC_SUBST(have_libaudit)
1f063dca
UD
1546
1547 # See if we have the libcap library
1548 AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
1549 if test "x$have_libcap" = xyes; then
1550 AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
1551 fi
1552 AC_SUBST(have_libcap)
2fff3d93
UD
1553fi
1554AC_SUBST(have_selinux)
1555
61653dfb
RM
1556CPPUNDEFS=
1557dnl Check for silly hacked compilers predefining _FORTIFY_SOURCE.
1558dnl Since we are building the implementations of the fortified functions here,
1559dnl having the macro defined interacts very badly.
1560AC_CACHE_CHECK([for _FORTIFY_SOURCE predefine], libc_cv_predef_fortify_source,
1561[AC_TRY_COMPILE([], [
1562#ifdef _FORTIFY_SOURCE
1563# error bogon
1564#endif],
1565 [libc_cv_predef_fortify_source=no],
1566 [libc_cv_predef_fortify_source=yes])])
1567if test $libc_cv_predef_fortify_source = yes; then
1568 CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE"
1569fi
1570AC_SUBST(CPPUNDEFS)
1571
61b1ef6e
MF
1572# Some linkers on some architectures support __ehdr_start but with
1573# bugs. Make sure usage of it does not create relocations in the
1574# output (as the linker should resolve them all for us).
1575AC_CACHE_CHECK([whether the linker provides working __ehdr_start],
44c4e5d5
RM
1576 libc_cv_ehdr_start, [
1577old_CFLAGS="$CFLAGS"
1578old_LDFLAGS="$LDFLAGS"
1579old_LIBS="$LIBS"
1580CFLAGS="$CFLAGS -fPIC"
66a704c4 1581LDFLAGS="$LDFLAGS -nostdlib -nostartfiles -shared $no_ssp"
44c4e5d5
RM
1582LIBS=
1583AC_LINK_IFELSE([AC_LANG_SOURCE([
61b1ef6e
MF
1584typedef struct {
1585 char foo;
1586 long val;
1587} Ehdr;
1588extern const Ehdr __ehdr_start __attribute__ ((visibility ("hidden")));
1589long ehdr (void) { return __ehdr_start.val; }
44c4e5d5 1590])],
e37fc4aa 1591 [if $READELF -r conftest | grep -F __ehdr_start >/dev/null; then
61b1ef6e
MF
1592 libc_cv_ehdr_start=broken
1593 else
1594 libc_cv_ehdr_start=yes
1595 fi], [libc_cv_ehdr_start=no])
44c4e5d5
RM
1596CFLAGS="$old_CFLAGS"
1597LDFLAGS="$old_LDFLAGS"
1598LIBS="$old_LIBS"
1599])
61b1ef6e 1600if test "$libc_cv_ehdr_start" = yes; then
44c4e5d5 1601 AC_DEFINE([HAVE_EHDR_START])
61b1ef6e
MF
1602elif test "$libc_cv_ehdr_start" = broken; then
1603 AC_MSG_WARN([linker is broken -- you should upgrade])
9fe7e787
RM
1604fi
1605
1606AC_CACHE_CHECK(for __builtin_trap with no external dependencies,
1607 libc_cv_builtin_trap, [dnl
1608libc_cv_builtin_trap=no
1609AC_TRY_COMPILE([], [__builtin_trap ()], [
1610libc_undefs=`$NM -u conftest.o |
1611 LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \
1612 2>&AS_MESSAGE_LOG_FD` || {
1613 AC_MSG_ERROR([confusing output from $NM -u])
1614}
1615echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'"
1616if test -z "$libc_undefs"; then
1617 libc_cv_builtin_trap=yes
1618fi])])
1619if test $libc_cv_builtin_trap = yes; then
1620 AC_DEFINE([HAVE_BUILTIN_TRAP])
44c4e5d5
RM
1621fi
1622
99e1dc0a
FW
1623dnl C++ feature tests.
1624AC_LANG_PUSH([C++])
1625
1626AC_CACHE_CHECK([whether the C++ compiler supports thread_local],
1627 libc_cv_cxx_thread_local, [
1628old_CXXFLAGS="$CXXFLAGS"
1629CXXFLAGS="$CXXFLAGS -std=gnu++11"
1630AC_COMPILE_IFELSE([AC_LANG_SOURCE([
1631#include <thread>
1632
1633// Compiler support.
1634struct S
1635{
1636 S ();
1637 ~S ();
1638};
1639thread_local S s;
1640S * get () { return &s; }
1641
1642// libstdc++ support.
1643#ifndef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL
1644#error __cxa_thread_atexit_impl not supported
1645#endif
1646])],
1647 [libc_cv_cxx_thread_local=yes],
1648 [libc_cv_cxx_thread_local=no])
1649CXXFLAGS="$old_CXXFLAGS"
1650])
1651AC_SUBST(libc_cv_cxx_thread_local)
1652
1653AC_LANG_POP([C++])
1654dnl End of C++ feature tests.
1655
c224a18a
RM
1656### End of automated tests.
1657### Now run sysdeps configure fragments.
1658
cb343854 1659# They also can set these variables.
591e1ffb 1660use_ldconfig=no
cb343854 1661ldd_rewrite_script=no
77259608 1662libc_cv_sysconfdir=$sysconfdir
4248b1b1 1663libc_cv_localstatedir=$localstatedir
74bd2300 1664libc_cv_gcc_unwind_find_fde=no
e2fd3cbe 1665libc_cv_idn=no
cb343854 1666
28f540f4 1667# Iterate over all the sysdep directories we will use, running their
09055553 1668# configure fragments.
28f540f4 1669for dir in $sysnames; do
57ba7bb4
UD
1670 case $dir in
1671 /*) dest=$dir ;;
1672 *) dest=$srcdir/$dir ;;
1673 esac
1674 if test -r $dest/configure; then
d1149385 1675 AC_MSG_RESULT(running configure fragment for $dir)
57ba7bb4 1676 . $dest/configure
28f540f4 1677 fi
28f540f4
RM
1678done
1679
5695d46f
AS
1680if test x"$build_mathvec" = xnotset; then
1681 build_mathvec=no
1682fi
1683LIBC_CONFIG_VAR([build-mathvec], [$build_mathvec])
1684
7ffa9423
AZ
1685AC_SUBST(libc_extra_cflags)
1686AC_SUBST(libc_extra_cppflags)
1687
74bd2300
UD
1688if test x$libc_cv_gcc_unwind_find_fde = xyes; then
1689 AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
1690fi
1691AC_SUBST(libc_cv_gcc_unwind_find_fde)
1692
6e6249d0
RM
1693# A sysdeps configure fragment can reset this if IFUNC is not actually
1694# usable even though the assembler knows how to generate the symbol type.
1695if test x"$libc_cv_ld_gnu_indirect_function" = xyes; then
1696 AC_DEFINE(HAVE_IFUNC)
1697fi
1698
022dfdce
SL
1699if test x"$libc_cv_gcc_indirect_function" = xyes; then
1700 AC_DEFINE(HAVE_GCC_IFUNC)
1701fi
1702
3cc3ef96
RM
1703# This is far from the AC_ARG_ENABLE that sets it so that a sysdeps
1704# configure fragment can override the value to prevent this AC_DEFINE.
1705AC_SUBST(use_nscd)
1706if test "x$use_nscd" != xno; then
1707 AC_DEFINE([USE_NSCD])
1708fi
c53d909c
RM
1709if test "x$build_nscd" = xdefault; then
1710 build_nscd=$use_nscd
1711fi
3cc3ef96 1712
84384f5b 1713AC_SUBST(libc_cv_slibdir)
aaa8cb4b 1714AC_SUBST(libc_cv_rtlddir)
90fe682d 1715AC_SUBST(libc_cv_complocaledir)
77259608 1716AC_SUBST(libc_cv_sysconfdir)
4248b1b1 1717AC_SUBST(libc_cv_localstatedir)
1ef32c3d
UD
1718AC_SUBST(libc_cv_rootsbindir)
1719
f57f8055
RM
1720if test x$use_ldconfig = xyes; then
1721 AC_DEFINE(USE_LDCONFIG)
1722fi
591e1ffb 1723AC_SUBST(use_ldconfig)
cb343854 1724AC_SUBST(ldd_rewrite_script)
84384f5b 1725
650425ce 1726AC_SUBST(static)
ff3d7ed3 1727AC_SUBST(shared)
a334319f 1728
ff886b82
UD
1729AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
1730[libc_cv_pic_default=yes
cc3fa755 1731cat > conftest.c <<EOF
9756dfe1 1732#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
cc3fa755
UD
1733# error PIC is default.
1734#endif
1735EOF
0b4ee387 1736if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
ff886b82 1737 libc_cv_pic_default=no
cc3fa755
UD
1738fi
1739rm -f conftest.*])
ff886b82 1740AC_SUBST(libc_cv_pic_default)
cc3fa755 1741
cc08749b
L
1742AC_CACHE_CHECK([whether -fPIE is default], libc_cv_pie_default,
1743[libc_cv_pie_default=yes
1744cat > conftest.c <<EOF
1745#if defined __PIE__ || defined __pie__ || defined PIE || defined pie
1746# error PIE is default.
1747#endif
1748EOF
1749if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
1750 libc_cv_pie_default=no
1751fi
1752rm -f conftest.*])
1753AC_SUBST(libc_cv_pie_default)
1754
ff3d7ed3 1755AC_SUBST(profile)
5107cf1d 1756AC_SUBST(static_nss)
ff3d7ed3 1757
edf5b2d7
UD
1758AC_SUBST(DEFINES)
1759
cb8a6dbd 1760dnl See sysdeps/mach/configure.ac for this variable.
61c83c3f
RM
1761AC_SUBST(mach_interface_list)
1762
ee74a442
UD
1763VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
1764RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
df4ef2ab 1765AC_SUBST(VERSION)
ee74a442 1766AC_SUBST(RELEASE)
df4ef2ab 1767
728e272a 1768AC_CONFIG_FILES([config.make Makefile])
c118d634 1769AC_CONFIG_COMMANDS([default],[[
737547be
UD
1770case $CONFIG_FILES in *config.make*)
1771echo "$config_vars" >> config.make;;
1772esac
c118d634
RM
1773test -d bits || mkdir bits]],[[config_vars='$config_vars']])
1774AC_OUTPUT