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