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