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