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