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