]> git.ipfire.org Git - thirdparty/glibc.git/blame - configure.in
Properly check linker -z XXX support
[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
6bfea974
L
1412LIBC_LINKER_FEATURE([-z nodelete], [-Wl,--enable-new-dtags,-z,nodelete],
1413 [libc_cv_z_nodelete=yes],
1414 [AC_MSG_ERROR(linker with -z nodelete support required)])
2f54c82d 1415
6bfea974
L
1416LIBC_LINKER_FEATURE([-z nodlopen], [-Wl,--enable-new-dtags,-z,nodlopen],
1417 [libc_cv_z_nodlopen=yes],
1418 [AC_MSG_ERROR(linker with -z nodlopen support required)])
5d916713 1419
6bfea974
L
1420LIBC_LINKER_FEATURE([-z initfirst], [-Wl,--enable-new-dtags,-z,initfirst],
1421 [libc_cv_z_initfirst=yes],
1422 [AC_MSG_ERROR(linker with -z initfirst support required)])
639c3248 1423
a0da5fe1
UD
1424# Add-on fragments can set these for other machines.
1425libc_commonpagesize=${libc_commonpagesize:-no}
1426libc_relro_required=${libc_relro_required:-no}
1427case "$base_machine" in
1428 i[[34567]]86 | x86_64 | powerpc* | s390*)
1429 libc_commonpagesize=0x1000
1430 libc_relro_required=yes
1431 ;;
1432 sparc*)
1433 libc_commonpagesize=0x2000
1434 libc_relro_required=yes
1435 ;;
a0da5fe1 1436esac
574920b4 1437
a0da5fe1
UD
1438if test $libc_commonpagesize != no; then
1439 AC_CACHE_CHECK(for -z relro option,
1440 libc_cv_z_relro, [dnl
1441 libc_cv_z_relro=no
1442 AC_LANG_CONFTEST([AC_LANG_SOURCE([[
574920b4
RM
1443int _start (void) { return 42; }
1444extern void _exit (int);
9fa2c032
RM
1445/* Since these pointers are const, they should go in rodata.
1446 Since they refer to functions that have to be resolved by
1447 dynamic linking, they should instead go in RELRO data. */
defe9061 1448const void *const relro[] = { &_start, &_exit, 0 };
9fa2c032
RM
1449/* GNU ld fails to produce RELRO data when it's very small and there is no
1450 normal writable data following it, or if only uninitialized (.bss) data
1451 follows it, or only very small writable data. */
1452int data[0x10000] = { 1, };
574920b4 1453]])])
a0da5fe1 1454 cat > conftest.awk <<\EOF
574920b4
RM
1455BEGIN {
1456 result = "no"
1457 commonpagesize = strtonum(commonpagesize)
1458}
1459{ print "LINE:", $0 > "/dev/stderr" }
1460$1 == "GNU_RELRO" {
1461 vaddr = strtonum($3)
1462 memsz = strtonum($6)
1463 end = vaddr + memsz
1464 printf "vaddr %#x memsz %#x end %#x commonpagesize %#x\n", \
1465 vaddr, memsz, end, commonpagesize > "/dev/stderr"
1466 result = (end % commonpagesize == 0) ? "yes" : "broken"
1467}
1468END { print result }
1469EOF
a0da5fe1 1470 AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
574920b4
RM
1471 -fPIC -shared -o conftest.so conftest.c
1472 -nostartfiles -nostdlib
1473 -Wl,-z,relro 1>&AS_MESSAGE_LOG_FD]) &&
a0da5fe1
UD
1474 AC_TRY_COMMAND([$READELF -Wl conftest.so > conftest.ph]) &&
1475 AC_TRY_COMMAND([
574920b4
RM
1476 $AWK -v commonpagesize=$libc_commonpagesize -f conftest.awk
1477 conftest.ph > conftest.cps
1478 ]) &&
a0da5fe1
UD
1479 libc_cv_z_relro=`cat conftest.cps 2>&AS_MESSAGE_LOG_FD`
1480 rm -f conftest*])
1481 if { test "x$libc_relro_required" = xyes &&
1482 test "x$libc_cv_z_relro" != xyes
1483 }
1484 then
1485 AC_MSG_ERROR(linker with -z relro support required)
574920b4 1486 fi
a0da5fe1
UD
1487else
1488 AC_MSG_WARN([missing architecture parameter to check for working -z relro])
1489fi
ed20b3d9 1490
a0da5fe1
UD
1491AC_CACHE_CHECK(for -Bgroup option,
1492 libc_cv_Bgroup, [dnl
1493cat > conftest.c <<EOF
639c3248
UD
1494int _start (void) { return 42; }
1495EOF
a0da5fe1
UD
1496if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1497 -fPIC -shared -o conftest.so conftest.c
1498 -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1499then
1500 libc_cv_Bgroup=yes
1501else
1502 libc_cv_Bgroup=no
1503fi
1504rm -f conftest*])
1505AC_SUBST(libc_cv_Bgroup)
a711b01d 1506
a0da5fe1
UD
1507ASFLAGS_config=
1508AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1509 libc_cv_as_noexecstack, [dnl
1510cat > conftest.c <<EOF
35915ec8
UD
1511void foo (void) { }
1512EOF
a0da5fe1
UD
1513if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1514 -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
8175a253 1515 && grep .note.GNU-stack conftest.s >/dev/null \
a0da5fe1
UD
1516 && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
1517 -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1518then
1519 libc_cv_as_noexecstack=yes
1520else
1521 libc_cv_as_noexecstack=no
1522fi
1523rm -f conftest*])
1524if test $libc_cv_as_noexecstack = yes; then
1525 ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1526fi
1527AC_SUBST(ASFLAGS_config)
2abf9ff1 1528
a0da5fe1
UD
1529AC_CACHE_CHECK(for -z combreloc,
1530 libc_cv_z_combreloc, [dnl
1531cat > conftest.c <<EOF
d555194c
UD
1532extern int bar (int);
1533extern int mumble;
1534int foo (void) { return bar (mumble); }
a711b01d 1535EOF
a0da5fe1 1536if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
dbc92dc6 1537 -fPIC -shared -o conftest.so conftest.c
35cd3c97 1538 -nostdlib -nostartfiles
c2f55635 1539 -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
a0da5fe1 1540then
a711b01d
UD
1541dnl The following test is a bit weak. We must use a tool which can test
1542dnl cross-platform since the gcc used can be a cross compiler. Without
1543dnl introducing new options this is not easily doable. Instead use a tool
1544dnl which always is cross-platform: readelf. To detect whether -z combreloc
1545dnl look for a section named .rel.dyn.
a0da5fe1
UD
1546 if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1547 libc_cv_z_combreloc=yes
fdde8349
UD
1548 else
1549 libc_cv_z_combreloc=no
a711b01d 1550 fi
a0da5fe1
UD
1551else
1552 libc_cv_z_combreloc=no
1553fi
1554rm -f conftest*])
1555if test "$libc_cv_z_combreloc" = yes; then
1556 AC_DEFINE(HAVE_Z_COMBRELOC)
1557fi
1558AC_SUBST(libc_cv_z_combreloc)
2abf9ff1 1559
6bfea974
L
1560LIBC_LINKER_FEATURE([-z execstack], [-Wl,-z,execstack],
1561 [libc_cv_z_execstack=yes], [libc_cv_z_execstack=no])
a0da5fe1 1562AC_SUBST(libc_cv_z_execstack)
c9c60884 1563
a0da5fe1 1564AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
4da0431d
JM
1565LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no])
1566])
c9c60884 1567
a0da5fe1 1568AC_SUBST(libc_cv_fpie)
871b9158 1569
a0da5fe1
UD
1570AC_CACHE_CHECK(for --hash-style option,
1571 libc_cv_hashstyle, [dnl
1572cat > conftest.c <<EOF
871b9158
UD
1573int _start (void) { return 42; }
1574EOF
a0da5fe1
UD
1575if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1576 -fPIC -shared -o conftest.so conftest.c
1577 -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
1578then
1579 libc_cv_hashstyle=yes
1580else
1581 libc_cv_hashstyle=no
1582fi
1583rm -f conftest*])
1584AC_SUBST(libc_cv_hashstyle)
1585
1586# The linker's default -shared behavior is good enough if it
1587# does these things that our custom linker scripts ensure that
1588# all allocated NOTE sections come first.
1589if test "$use_default_link" = default; then
1590 AC_CACHE_CHECK([for sufficient default -shared layout],
1591 libc_cv_use_default_link, [dnl
1592 libc_cv_use_default_link=no
1593 cat > conftest.s <<\EOF
fd5e21c7
RM
1594 .section .note.a,"a",%note
1595 .balign 4
1596 .long 4,4,9
1597 .string "GNU"
1598 .string "foo"
1599 .section .note.b,"a",%note
1600 .balign 4
1601 .long 4,4,9
1602 .string "GNU"
1603 .string "bar"
1604EOF
a0da5fe1 1605 if AC_TRY_COMMAND([dnl
fd5e21c7
RM
1606 ${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD]) &&
1607 ac_try=`$READELF -S conftest.so | sed -n \
1608 ['${x;p;}
1609 s/^ *\[ *[1-9][0-9]*\] *\([^ ][^ ]*\) *\([^ ][^ ]*\) .*$/\2 \1/
1610 t a
1611 b
1612 : a
1613 H']`
a0da5fe1
UD
1614 then
1615 libc_seen_a=no libc_seen_b=no
1616 set -- $ac_try
1617 while test $# -ge 2 -a "$1" = NOTE; do
1618 case "$2" in
1619 .note.a) libc_seen_a=yes ;;
1620 .note.b) libc_seen_b=yes ;;
1621 esac
1622 shift 2
1623 done
1624 case "$libc_seen_a$libc_seen_b" in
1625 yesyes)
1626 libc_cv_use_default_link=yes
1627 ;;
1628 *)
1629 echo >&AS_MESSAGE_LOG_FD "\
fd5e21c7
RM
1630$libc_seen_a$libc_seen_b from:
1631$ac_try"
a0da5fe1
UD
1632 ;;
1633 esac
fd5e21c7 1634 fi
a0da5fe1
UD
1635 rm -f conftest*])
1636 use_default_link=$libc_cv_use_default_link
fd26970f 1637fi
49803108 1638
5c550700
RM
1639AC_CACHE_CHECK(linker output format, libc_cv_output_format, [dnl
1640if libc_cv_output_format=`
1641${CC-cc} -nostartfiles -nostdlib -Wl,--print-output-format 2>&AS_MESSAGE_LOG_FD`
1642then
1643 :
1644else
1645 libc_cv_output_format=
1646fi
1647test -n "$libc_cv_output_format" || libc_cv_output_format=unknown])
1648AC_SUBST(libc_cv_output_format)
1649
22dca1ea 1650AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl
49803108
AJ
1651cat > conftest.c <<EOF
1652int foo;
1653EOF
22dca1ea 1654if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-anchors
49803108
AJ
1655 conftest.c 1>&AS_MESSAGE_LOG_FD])
1656then
18e2ac6d 1657 libc_cv_fno_toplevel_reorder=yes
49803108 1658else
18e2ac6d 1659 libc_cv_fno_toplevel_reorder=no
49803108
AJ
1660fi
1661rm -f conftest*])
18e2ac6d 1662if test $libc_cv_fno_toplevel_reorder = yes; then
22dca1ea 1663 fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
18e2ac6d 1664else
49803108
AJ
1665 fno_unit_at_a_time=-fno-unit-at-a-time
1666fi
1667AC_SUBST(fno_unit_at_a_time)
fd26970f 1668
401a9ec9 1669AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
17228132
TS
1670LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector],
1671 [libc_cv_ssp=yes],
1672 [libc_cv_ssp=no])
1673])
401a9ec9
UD
1674AC_SUBST(libc_cv_ssp)
1675
b037a293
UD
1676AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl
1677cat > conftest.c <<EOF
1678int foo;
1679#ifdef __GNUC_GNU_INLINE__
1680main () { return 0;}
1681#else
1682#error
1683#endif
1684EOF
371f84a4
JJ
1685if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -std=gnu99 -fgnu89-inline
1686 -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD])
b037a293
UD
1687then
1688 libc_cv_gnu89_inline=yes
1689else
1690 libc_cv_gnu89_inline=no
1691fi
1692rm -f conftest*])
1693if test $libc_cv_gnu89_inline = yes; then
1c7570ff 1694 gnu89_inline=-fgnu89-inline
b037a293 1695else
1c7570ff 1696 gnu89_inline=
b037a293 1697fi
1c7570ff 1698AC_SUBST(gnu89_inline)
b037a293 1699
a0da5fe1
UD
1700AC_CACHE_CHECK(whether cc puts quotes around section names,
1701 libc_cv_have_section_quotes,
1702 [cat > conftest.c <<EOF
1703 static const int foo
1704 __attribute__ ((section ("bar"))) = 1;
e26dd47f 1705EOF
a0da5fe1
UD
1706 if ${CC-cc} -S conftest.c -o conftest.s; then
1707 if grep '\.section.*"bar"' conftest.s >/dev/null; then
1708 libc_cv_have_section_quotes=yes
e26dd47f 1709 else
a0da5fe1 1710 libc_cv_have_section_quotes=no
e26dd47f 1711 fi
a0da5fe1
UD
1712 else
1713 libc_cv_have_section_quotes=unknown
1714 fi
1715 rm -f conftest.{c,s}
1716 ])
1717if test $libc_cv_have_section_quotes = yes; then
1718 AC_DEFINE(HAVE_SECTION_QUOTES)
9a97d1f7
UD
1719fi
1720
1721AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
75d86c1f 1722 [dnl
c224a18a 1723cat > conftest.s <<EOF
2293395f 1724${libc_cv_dot_text}
7b8e0d49 1725.globl foo
ae1025be 1726foo:
c224a18a
RM
1727.weak foo
1728.weak bar; bar = foo
1729EOF
3217788f 1730if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
9a97d1f7
UD
1731 libc_cv_asm_weak_directive=yes
1732else
1733 libc_cv_asm_weak_directive=no
1734fi
1735rm -f conftest*])
c224a18a 1736
c8cf0b14 1737if test $libc_cv_asm_weak_directive = no; then
c224a18a
RM
1738 AC_CACHE_CHECK(for assembler .weakext directive,
1739 libc_cv_asm_weakext_directive,
1740 [dnl
1741cat > conftest.s <<EOF
2293395f 1742${libc_cv_dot_text}
7b8e0d49 1743.globl foo
ae1025be 1744foo:
f802accb
UD
1745.weakext bar foo
1746.weakext baz
7b8e0d49 1747.globl baz
9a97d1f7 1748baz:
c224a18a 1749EOF
3217788f 1750 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
c224a18a
RM
1751 libc_cv_asm_weakext_directive=yes
1752 else
1753 libc_cv_asm_weakext_directive=no
1754 fi
1755 rm -f conftest*])
1756
9a97d1f7 1757fi # no .weak
c224a18a 1758
ffcf9634 1759if test $libc_cv_asm_weak_directive = yes; then
c224a18a 1760 AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
ffcf9634 1761elif test $libc_cv_asm_weakext_directive = yes; then
c224a18a
RM
1762 AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1763fi
1764
50189569 1765AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
ced368f7
UD
1766case $machine in
1767 sparc/sparc64*) cfi_offset=2047;;
1768 *) cfi_offset=0;;
1769esac
50189569 1770cat > conftest.s <<EOF
77e8bddf
AS
1771 .text
1772 .type func,%function
50189569 1773func:
77e8bddf 1774 .cfi_startproc
f212e8dc 1775 .cfi_remember_state
ced368f7 1776 .cfi_rel_offset 1, $cfi_offset
77e8bddf 1777 .cfi_endproc
50189569
AJ
1778EOF
1779if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1780 libc_cv_asm_cfi_directives=yes
1781else
1782 libc_cv_asm_cfi_directives=no
1783fi
1784rm -f conftest*])
1785if test $libc_cv_asm_cfi_directives = yes; then
1786 AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
bcd5f356 1787fi
50189569 1788
a641835a
RM
1789AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1790cat > conftest.c <<\EOF
5f0e6fc7 1791_start () {}
dcf0671d
UD
1792int __eh_pc;
1793__throw () {}
a641835a 1794EOF
dcea62dd 1795dnl No \ in command here because it ends up inside ''.
3217788f 1796if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
dcea62dd 1797 -nostdlib -nostartfiles -Wl,--no-whole-archive
c2f55635 1798 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
a641835a
RM
1799 libc_cv_ld_no_whole_archive=yes
1800else
1801 libc_cv_ld_no_whole_archive=no
1802fi
1803rm -f conftest*])
3ce1f295
UD
1804if test $libc_cv_ld_no_whole_archive = no; then
1805 AC_MSG_ERROR([support for --no-whole-archive is needed])
b17277cf 1806fi
a641835a 1807
dff14448 1808AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
b236e99d
UD
1809cat > conftest.c <<\EOF
1810_start () {}
1811int __eh_pc;
1812__throw () {}
1813EOF
1814dnl No \ in command here because it ends up inside ''.
3217788f 1815if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
dff14448 1816 -nostdlib -nostartfiles -fexceptions
c2f55635 1817 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
dff14448 1818 libc_cv_gcc_exceptions=yes
b236e99d 1819else
dff14448 1820 libc_cv_gcc_exceptions=no
b236e99d
UD
1821fi
1822rm -f conftest*])
dff14448
UD
1823if test $libc_cv_gcc_exceptions = yes; then
1824 exceptions=-fexceptions
b17277cf 1825fi
dff14448 1826AC_SUBST(exceptions)dnl
b236e99d 1827
66000494
UD
1828if test "$host_cpu" = powerpc ; then
1829# Check for a bug present in at least versions 2.8.x of GCC
1830# and versions 1.0.x of EGCS.
1831AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1832AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1833 libc_cv_c_asmcr0_bug='no',
1834 libc_cv_c_asmcr0_bug='yes')])
1835if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1836 AC_DEFINE(BROKEN_PPC_ASM_CR0)
1837fi
1838fi
1839
d555194c
UD
1840AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1841cat > conftest.c <<\EOF
1842void zero (void *x)
1843{
a52d1562 1844 __builtin_memset (x, 0, 1000);
d555194c
UD
1845}
1846EOF
1847dnl
1848if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1849then
1850 libc_cv_gcc_builtin_memset=no
1851else
1852 libc_cv_gcc_builtin_memset=yes
1853fi
1854rm -f conftest* ])
1855if test "$libc_cv_gcc_builtin_memset" = yes ; then
1856 AC_DEFINE(HAVE_BUILTIN_MEMSET)
1857fi
1858
85dd1003
UD
1859AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1860cat > conftest.c <<\EOF
1861extern char *strstr (const char *, const char *) __asm ("my_strstr");
1862char *foo (const char *a, const char *b)
1863{
1864 return __builtin_strstr (a, b);
1865}
1866EOF
1867dnl
1868if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
1869then
1870 libc_cv_gcc_builtin_redirection=yes
1871else
1872 libc_cv_gcc_builtin_redirection=no
1873fi
1874rm -f conftest* ])
3ce1f295
UD
1875if test "$libc_cv_gcc_builtin_redirection" = no; then
1876 AC_MSG_ERROR([support for the symbol redirection needed])
85dd1003
UD
1877fi
1878
739d440d 1879dnl Check whether the compiler supports the __thread keyword.
3ce1f295
UD
1880AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1881[cat > conftest.c <<\EOF
fbb18522
RM
1882__thread int a = 42;
1883EOF
3ce1f295
UD
1884if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
1885 libc_cv_gcc___thread=yes
739d440d
UD
1886else
1887 libc_cv_gcc___thread=no
1888fi
3ce1f295
UD
1889rm -f conftest*])
1890if test "$libc_cv_gcc___thread" = no; then
1891 AC_MSG_ERROR([support for the __thread keyword is required])
1892fi
739d440d 1893
3ce1f295
UD
1894dnl Check whether the compiler supports the tls_model attribute.
1895AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1896cat > conftest.c <<\EOF
9b21e6bc
RM
1897extern __thread int a __attribute__((tls_model ("initial-exec")));
1898EOF
3ce1f295
UD
1899if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
1900 libc_cv_gcc_tls_model_attr=yes
1901else
1902 libc_cv_gcc_tls_model_attr=no
1903fi
1904rm -f conftest*])
1905if test "$libc_cv_gcc_tls_model_attr" = no; then
1906 AC_MSG_ERROR([support for the tls_model attribute is required])
9b21e6bc 1907fi
739d440d 1908
7998fa78
AS
1909dnl Determine how to disable generation of FMA instructions.
1910AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
1911 libc_cv_cc_nofma, [dnl
1912libc_cv_cc_nofma=
1913for opt in -ffp-contract=off -mno-fused-madd; do
1914 LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
1915done])
1916
2cf9ad57
RM
1917if test -n "$submachine"; then
1918 AC_CACHE_CHECK([for compiler option for CPU variant],
f7d82dc9 1919 libc_cv_cc_submachine, [dnl
2cf9ad57
RM
1920 libc_cv_cc_submachine=no
1921 for opt in "-march=$submachine" "-mcpu=$submachine"; do
40b601fb 1922 LIBC_TRY_CC_OPTION([$opt], [
2cf9ad57 1923 libc_cv_cc_submachine="$opt"
40b601fb 1924 break], [])
2cf9ad57
RM
1925 done])
1926 if test "x$libc_cv_cc_submachine" = xno; then
1927 AC_MSG_ERROR([${CC-cc} does not support $submachine])
1928 fi
1929fi
1930AC_SUBST(libc_cv_cc_submachine)
1931
c8f3e6db
UD
1932dnl Check whether we have the gd library available.
1933AC_MSG_CHECKING(for libgd)
6dab8688
UD
1934if test "$with_gd" != "no"; then
1935 old_CFLAGS="$CFLAGS"
1936 CFLAGS="$CFLAGS $libgd_include"
1937 old_LDFLAGS="$LDFLAGS"
1938 LDFLAGS="$LDFLAGS $libgd_ldflags"
1939 old_LIBS="$LIBS"
1940 LIBS="$LIBS -lgd -lpng -lz -lm"
1941 AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1942 CFLAGS="$old_CFLAGS"
1943 LDFLAGS="$old_LDFLAGS"
1944 LIBS="$old_LIBS"
1945else
1946 LIBGD=no
1947fi
c8f3e6db
UD
1948AC_MSG_RESULT($LIBGD)
1949AC_SUBST(LIBGD)
3d558f4e 1950
2fff3d93
UD
1951# SELinux detection
1952if test x$with_selinux = xno ; then
1953 have_selinux=no;
1954else
1955 # See if we have the SELinux library
1956 AC_CHECK_LIB(selinux, is_selinux_enabled,
1957 have_selinux=yes, have_selinux=no)
1958 # See if we have the SELinux header with the NSCD permissions in it.
1959 if test x$have_selinux = xyes ; then
1960 AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h])
1961 AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
1962 [#ifdef NSCD__SHMEMHOST
1963 return 0;
1964 #else
1965 #error NSCD__SHMEMHOST not defined
1966 #endif],
1967 have_selinux=yes, have_selinux=no)
1968 AC_MSG_RESULT($have_selinux)
1969 fi
1970
49155d51 1971 if test x$with_selinux = xyes ; then
2fff3d93 1972 if test x$have_selinux = xno ; then
49155d51 1973 AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found])
2fff3d93
UD
1974 fi
1975 fi
1976fi
1977# Check if we're building with SELinux support.
1978if test "x$have_selinux" = xyes; then
943db9eb 1979 AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
ec23b9be
UD
1980
1981 # See if we have the libaudit library
943db9eb 1982 AC_CHECK_LIB(audit, audit_log_user_avc_message,
77e8bddf 1983 have_libaudit=yes, have_libaudit=no)
ec23b9be 1984 if test "x$have_libaudit" = xyes; then
943db9eb 1985 AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
ec23b9be
UD
1986 fi
1987 AC_SUBST(have_libaudit)
1f063dca
UD
1988
1989 # See if we have the libcap library
1990 AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
1991 if test "x$have_libcap" = xyes; then
1992 AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
1993 fi
1994 AC_SUBST(have_libcap)
2fff3d93
UD
1995fi
1996AC_SUBST(have_selinux)
1997
8ed1e7d5
GK
1998dnl check for the size of 'long double'.
1999AC_CHECK_SIZEOF(long double, 0)
2000sizeof_long_double=$ac_cv_sizeof_long_double
2001AC_SUBST(sizeof_long_double)
2002
61653dfb
RM
2003CPPUNDEFS=
2004dnl Check for silly hacked compilers predefining _FORTIFY_SOURCE.
2005dnl Since we are building the implementations of the fortified functions here,
2006dnl having the macro defined interacts very badly.
2007AC_CACHE_CHECK([for _FORTIFY_SOURCE predefine], libc_cv_predef_fortify_source,
2008[AC_TRY_COMPILE([], [
2009#ifdef _FORTIFY_SOURCE
2010# error bogon
2011#endif],
2012 [libc_cv_predef_fortify_source=no],
2013 [libc_cv_predef_fortify_source=yes])])
2014if test $libc_cv_predef_fortify_source = yes; then
2015 CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE"
2016fi
2017AC_SUBST(CPPUNDEFS)
2018
30b99d79
RM
2019dnl Check for silly hacked compilers inserting -fstack-protector.
2020dnl This breaks badly for the early startup code we compile, since
2021dnl the compiled code can refer to a magic machine-dependent location
2022dnl for the canary value before we have sufficient setup for that to
2023dnl work. It's also questionable to build all of libc with this flag
2024dnl even when you're doing that for most applications you build, since
2025dnl libc's code is so heavily-used and performance-sensitive. If we
2026dnl ever really want to make that work, it should be enabled explicitly
2027dnl in the libc build, not inherited from implicit compiler settings.
2028AC_CACHE_CHECK([whether $CC implicitly enables -fstack-protector],
2029 libc_cv_predef_stack_protector, [
2030AC_TRY_COMPILE([extern void foobar (char *);],
2031 [char large_array[2048]; foobar (large_array);], [
2032libc_undefs=`$NM -u conftest.o |
2033 LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \
2034 2>&AS_MESSAGE_LOG_FD` || {
2035 AC_MSG_ERROR([confusing output from $NM -u])
2036}
2037echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'"
59f0c22e
JM
2038# On some architectures, there are architecture-specific undefined
2039# symbols (resolved by the linker), so filter out unknown symbols.
2040# This will fail to produce the correct result if the compiler
2041# defaults to -fstack-protector but this produces an undefined symbol
2042# other than __stack_chk_fail. However, compilers like that have not
2043# been encountered in practice.
2044libc_undefs=`echo "$libc_undefs" | egrep '^(foobar|__stack_chk_fail)$'`
30b99d79
RM
2045case "$libc_undefs" in
2046foobar) libc_cv_predef_stack_protector=no ;;
2047'__stack_chk_fail
2048foobar') libc_cv_predef_stack_protector=yes ;;
2049*) AC_MSG_ERROR([unexpected symbols in test: $libc_undefs]) ;;
2050esac],
2051 [AC_MSG_ERROR([test compilation failed])])
2052])
2053libc_extra_cflags=
2054if test $libc_cv_predef_stack_protector = yes; then
2055 libc_extra_cflags=-fno-stack-protector
2056fi
2057AC_SUBST(libc_extra_cflags)
2058
c224a18a
RM
2059### End of automated tests.
2060### Now run sysdeps configure fragments.
2061
cb343854 2062# They also can set these variables.
591e1ffb 2063use_ldconfig=no
cb343854 2064ldd_rewrite_script=no
77259608 2065libc_cv_sysconfdir=$sysconfdir
4248b1b1 2066libc_cv_localstatedir=$localstatedir
74bd2300 2067libc_cv_gcc_unwind_find_fde=no
e2fd3cbe 2068libc_cv_idn=no
cb343854 2069
28f540f4 2070# Iterate over all the sysdep directories we will use, running their
09055553 2071# configure fragments.
28f540f4 2072for dir in $sysnames; do
57ba7bb4
UD
2073 case $dir in
2074 /*) dest=$dir ;;
2075 *) dest=$srcdir/$dir ;;
2076 esac
2077 if test -r $dest/configure; then
d1149385 2078 AC_MSG_RESULT(running configure fragment for $dir)
57ba7bb4 2079 . $dest/configure
28f540f4 2080 fi
28f540f4
RM
2081done
2082
74bd2300
UD
2083if test x$libc_cv_gcc_unwind_find_fde = xyes; then
2084 AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
2085fi
2086AC_SUBST(libc_cv_gcc_unwind_find_fde)
2087
6e6249d0
RM
2088# A sysdeps configure fragment can reset this if IFUNC is not actually
2089# usable even though the assembler knows how to generate the symbol type.
2090if test x"$libc_cv_ld_gnu_indirect_function" = xyes; then
2091 AC_DEFINE(HAVE_IFUNC)
2092fi
2093
3cc3ef96
RM
2094# This is far from the AC_ARG_ENABLE that sets it so that a sysdeps
2095# configure fragment can override the value to prevent this AC_DEFINE.
2096AC_SUBST(use_nscd)
2097if test "x$use_nscd" != xno; then
2098 AC_DEFINE([USE_NSCD])
2099fi
c53d909c
RM
2100if test "x$build_nscd" = xdefault; then
2101 build_nscd=$use_nscd
2102fi
3cc3ef96 2103
a53bad16
UD
2104# Test for old glibc 2.0.x headers so that they can be removed properly
2105# Search only in includedir.
2106AC_MSG_CHECKING(for old glibc 2.0.x headers)
350eb336 2107if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
a53bad16
UD
2108then
2109 old_glibc_headers=yes
2110else
2111 old_glibc_headers=no
2112fi
2113AC_MSG_RESULT($old_glibc_headers)
2114if test ${old_glibc_headers} = yes; then
2115 AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
2116 AC_MSG_WARN(*** be removed.)
2117fi
b195f6bc 2118AC_SUBST(old_glibc_headers)
26b4d766 2119
84384f5b 2120AC_SUBST(libc_cv_slibdir)
a1d84548 2121AC_SUBST(libc_cv_localedir)
77259608 2122AC_SUBST(libc_cv_sysconfdir)
4248b1b1 2123AC_SUBST(libc_cv_localstatedir)
1ef32c3d 2124AC_SUBST(libc_cv_rootsbindir)
bcd5f356 2125AC_SUBST(libc_cv_forced_unwind)
1ef32c3d 2126
58a4b51a 2127dnl sysdeps/CPU/configure.in checks set this via arch-specific asm tests
06e51c8f 2128AC_SUBST(libc_cv_cc_sse4)
b0ecde3a 2129AC_SUBST(libc_cv_cc_avx)
3b100462 2130AC_SUBST(libc_cv_cc_sse2avx)
091023f5 2131AC_SUBST(libc_cv_cc_novzeroupper)
af968f62 2132AC_SUBST(libc_cv_cc_fma4)
7998fa78 2133AC_SUBST(libc_cv_cc_nofma)
01f1f5ee 2134AC_SUBST(libc_cv_as_i686)
eae47a36 2135AC_SUBST(libc_cv_sparc_as_vis3)
58a4b51a 2136
f57f8055
RM
2137if test x$use_ldconfig = xyes; then
2138 AC_DEFINE(USE_LDCONFIG)
2139fi
591e1ffb 2140AC_SUBST(use_ldconfig)
cb343854 2141AC_SUBST(ldd_rewrite_script)
84384f5b 2142
650425ce 2143AC_SUBST(static)
ff3d7ed3 2144AC_SUBST(shared)
a334319f 2145
ff886b82
UD
2146AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
2147[libc_cv_pic_default=yes
cc3fa755 2148cat > conftest.c <<EOF
9756dfe1 2149#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
cc3fa755
UD
2150# error PIC is default.
2151#endif
2152EOF
0b4ee387 2153if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
ff886b82 2154 libc_cv_pic_default=no
cc3fa755
UD
2155fi
2156rm -f conftest.*])
ff886b82 2157AC_SUBST(libc_cv_pic_default)
cc3fa755 2158
ff3d7ed3 2159AC_SUBST(profile)
5107cf1d 2160AC_SUBST(static_nss)
ff3d7ed3 2161
edf5b2d7
UD
2162AC_SUBST(DEFINES)
2163
61c83c3f
RM
2164dnl See sysdeps/mach/configure.in for this variable.
2165AC_SUBST(mach_interface_list)
2166
ee74a442
UD
2167VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
2168RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
df4ef2ab 2169AC_SUBST(VERSION)
ee74a442 2170AC_SUBST(RELEASE)
df4ef2ab 2171
728e272a 2172AC_CONFIG_FILES([config.make Makefile])
c118d634 2173AC_CONFIG_COMMANDS([default],[[
737547be
UD
2174case $CONFIG_FILES in *config.make*)
2175echo "$config_vars" >> config.make;;
2176esac
c118d634
RM
2177test -d bits || mkdir bits]],[[config_vars='$config_vars']])
2178AC_OUTPUT