]> git.ipfire.org Git - thirdparty/glibc.git/blame - configure.in
Optimize sparc 32-bit V9 GMP multiply routines.
[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=
67060746
AC
998 for cxxheaders in `$CXX -v -S -x c++ /dev/null -o /dev/null 2>&1 \
999 | sed -n -e '1,/#include/d' -e 's/^ \(\/.*\/[cg]++\)/\1/p'`; do
1000 test "x$cxxheaders" != x &&
1001 CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders"
1002 done
ef226fec 1003 fi
dbe7a0f5
UD
1004fi
1005AC_SUBST(SYSINCLUDES)
ef226fec 1006AC_SUBST(CXX_SYSINCLUDES)
dbe7a0f5 1007
3911660e
UD
1008# Test if LD_LIBRARY_PATH contains the notation for the current directory
1009# since this would lead to problems installing/building glibc.
1010# LD_LIBRARY_PATH contains the current directory if one of the following
1011# is true:
1012# - one of the terminals (":" and ";") is the first or last sign
1013# - two terminals occur directly after each other
1014# - the path contains an element with a dot in it
1015AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
1016changequote(,)dnl
1017case ${LD_LIBRARY_PATH} in
1018 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
b3a86ae1 1019 ld_library_path_setting="contains current directory"
3911660e
UD
1020 ;;
1021 *)
1022 ld_library_path_setting="ok"
1023 ;;
1024esac
1025changequote([,])dnl
1026AC_MSG_RESULT($ld_library_path_setting)
1027if test "$ld_library_path_setting" != "ok"; then
63bda0c1
UD
1028AC_MSG_ERROR([
1029*** LD_LIBRARY_PATH shouldn't contain the current directory when
1030*** building glibc. Please change the environment variable
1031*** and run configure again.])
3911660e 1032fi
8e31cf7e 1033
74bd2300 1034AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
8175a253 1035if $CC -v -static-libgcc 2>&1 | grep 'unrecognized option.*static-libgcc' >/dev/null; then
74bd2300
UD
1036 libc_cv_gcc_static_libgcc=
1037else
1038 libc_cv_gcc_static_libgcc=-static-libgcc
1039fi])
1040AC_SUBST(libc_cv_gcc_static_libgcc)
1041
26f56c1c
UD
1042AC_PATH_PROG(BASH_SHELL, bash, no)
1043if test "$BASH_SHELL" != no &&
1044 $BASH_SHELL -c 'test "$BASH_VERSINFO" \
6973fc01 1045 && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
84384f5b
UD
1046 libc_cv_have_bash2=yes
1047else
1048 libc_cv_have_bash2=no
1049fi
1050AC_SUBST(libc_cv_have_bash2)
1051
5290baf0 1052dnl We need a ksh compatible shell for tzselect.
26f56c1c 1053if test "$BASH_SHELL" = no; then
5290baf0
UD
1054 AC_PATH_PROG(KSH, ksh, no)
1055 if test "$KSH" = no; then
1056 libc_cv_have_ksh=no
1057 else
1058 libc_cv_have_ksh=yes
1059 fi
1060else
26f56c1c 1061 KSH="$BASH_SHELL"
5290baf0
UD
1062 AC_SUBST(KSH)
1063 libc_cv_have_ksh=yes
1064fi
1065AC_SUBST(libc_cv_have_ksh)
1066
c0016081 1067AC_PATH_PROG(PERL, perl, no)
2fd5d029
RM
1068if test "$PERL" != no &&
1069 (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
1070 PERL=no
ecb06196 1071fi
2f512715
AS
1072AC_PATH_PROG(INSTALL_INFO, install-info, no,
1073 $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
2de00372
UD
1074AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
1075
b8dc6a10 1076AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
28f540f4
RM
1077AC_TRY_COMPILE(dnl
1078[#define __need_size_t
1079#define __need_wchar_t
1080#include <stddef.h>
1081#define __need_NULL
1082#include <stddef.h>], [size_t size; wchar_t wchar;
1083#ifdef offsetof
1084#error stddef.h ignored __need_*
1085#endif
1086if (&size == NULL || &wchar == NULL) abort ();],
77e8bddf
AS
1087 libc_cv_friendly_stddef=yes,
1088 libc_cv_friendly_stddef=no)])
28f540f4
RM
1089if test $libc_cv_friendly_stddef = yes; then
1090 config_vars="$config_vars
1091override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
1092fi
1093
b8dc6a10
RM
1094AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
1095 libc_cv_need_minus_P, [dnl
28f540f4
RM
1096cat > conftest.S <<EOF
1097#include "confdefs.h"
1098/* Nothing whatsoever. */
1099EOF
3217788f 1100if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
28f540f4
RM
1101 libc_cv_need_minus_P=no
1102else
1103 libc_cv_need_minus_P=yes
1104fi
1105rm -f conftest*])
28f540f4
RM
1106if test $libc_cv_need_minus_P = yes; then
1107 config_vars="$config_vars
1108asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
1109fi
1110
b8dc6a10 1111AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
9a70fcab 1112cat > conftest.s <<EOF
2293395f 1113${libc_cv_dot_text}
ae1025be 1114foo:
df2a0c93 1115.set glibc_conftest_frobozz,foo
7b8e0d49 1116.globl glibc_conftest_frobozz
e215c478 1117EOF
df2a0c93
RM
1118# The alpha-dec-osf1 assembler gives only a warning for `.set'
1119# (but it doesn't work), so we must do a linking check to be sure.
1120cat > conftest1.c <<\EOF
1121extern int glibc_conftest_frobozz;
640f0119 1122void _start() { glibc_conftest_frobozz = 1; }
df2a0c93
RM
1123EOF
1124if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
640f0119 1125 -nostartfiles -nostdlib \
0b4ee387 1126 -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
e215c478
RM
1127 libc_cv_asm_set_directive=yes
1128else
1129 libc_cv_asm_set_directive=no
1130fi
65b3cbcb 1131rm -f conftest*])
e215c478
RM
1132if test $libc_cv_asm_set_directive = yes; then
1133 AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
1134fi
1135
415ac3df
UD
1136AC_CACHE_CHECK(for assembler gnu_unique_object symbol type,
1137 libc_cv_asm_unique_object, [dnl
1138cat > conftest.s <<EOF
1139${libc_cv_dot_text}
1140_sym:
b67e9372 1141.type _sym, %gnu_unique_object
415ac3df
UD
1142EOF
1143if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1144 libc_cv_asm_unique_object=yes
1145else
1146 libc_cv_asm_unique_object=no
1147fi
1148rm -f conftest*])
1149if test $libc_cv_asm_unique_object = yes; then
1150 AC_DEFINE(HAVE_ASM_UNIQUE_OBJECT)
1151fi
1152
377a515b
UD
1153AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
1154[cat > conftest.s <<EOF
2293395f 1155${libc_cv_dot_text}
4cca6b86 1156_sym:
377a515b
UD
1157.symver _sym,sym@VERS
1158EOF
3217788f 1159if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
377a515b
UD
1160 libc_cv_asm_symver_directive=yes
1161else
1162 libc_cv_asm_symver_directive=no
1163fi
1164rm -f conftest*])
1165AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
1166if test $libc_cv_asm_symver_directive = yes; then
1167 cat > conftest.s <<EOF
2293395f 1168${libc_cv_dot_text}
4cca6b86 1169_sym:
377a515b
UD
1170.symver _sym,sym@VERS
1171EOF
1172 cat > conftest.map <<EOF
f43ce637 1173VERS_1 {
377a515b
UD
1174 global: sym;
1175};
f43ce637
UD
1176
1177VERS_2 {
77e8bddf 1178 global: sym;
f43ce637 1179} VERS_1;
377a515b 1180EOF
3217788f
RM
1181 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1182 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
1183 -o conftest.so conftest.o
1184 -nostartfiles -nostdlib
1185 -Wl,--version-script,conftest.map
c2f55635 1186 1>&AS_MESSAGE_LOG_FD]);
377a515b
UD
1187 then
1188 libc_cv_ld_version_script_option=yes
1189 else
1190 libc_cv_ld_version_script_option=no
1191 fi
1192 else
1193 libc_cv_ld_version_script_option=no
1194 fi
1195else
1196 libc_cv_ld_version_script_option=no
1197fi
1198rm -f conftest*])
7499a22a
RM
1199if test $shared != no &&
1200 test $libc_cv_asm_symver_directive = yes &&
650425ce
UD
1201 test $libc_cv_ld_version_script_option = yes &&
1202 test $enable_versioning = yes; then
377a515b
UD
1203 VERSIONING=yes
1204 AC_DEFINE(DO_VERSIONING)
1205else
1206 VERSIONING=no
1207fi
1208AC_SUBST(VERSIONING)
1209
a0da5fe1 1210if test $shared != no && test $VERSIONING = no; then
f43ce637 1211 echo "\
f4017d20 1212*** WARNING: You should not compile GNU libc without versioning. Not using
f43ce637
UD
1213*** versioning will introduce incompatibilities so that old binaries
1214*** will not run anymore.
50304ef0 1215*** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
f43ce637 1216fi
a0da5fe1
UD
1217AC_CACHE_CHECK(for .previous assembler directive,
1218 libc_cv_asm_previous_directive, [dnl
1219cat > conftest.s <<EOF
fd26970f
UD
1220.section foo_section
1221.previous
a0da5fe1
UD
1222EOF
1223if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1224 libc_cv_asm_previous_directive=yes
1225else
1226 libc_cv_asm_previous_directive=no
1227fi
1228rm -f conftest*])
1229if test $libc_cv_asm_previous_directive = yes; then
1230 AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
1231else
1232 AC_CACHE_CHECK(for .popsection assembler directive,
1233 libc_cv_asm_popsection_directive, [dnl
1234 cat > conftest.s <<EOF
1235.pushsection foo_section
1236.popsection
fd26970f 1237EOF
3217788f 1238 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
a0da5fe1 1239 libc_cv_asm_popsection_directive=yes
fd26970f 1240 else
a0da5fe1 1241 libc_cv_asm_popsection_directive=no
fd26970f
UD
1242 fi
1243 rm -f conftest*])
a0da5fe1
UD
1244 if test $libc_cv_asm_popsection_directive = yes; then
1245 AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
fd26970f 1246 fi
a0da5fe1
UD
1247fi
1248AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1249 libc_cv_asm_protected_directive, [dnl
1250cat > conftest.s <<EOF
2d499f55
UD
1251.protected foo
1252foo:
1253.hidden bar
1254bar:
1255EOF
a0da5fe1
UD
1256if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1257 libc_cv_asm_protected_directive=yes
1258else
1259 AC_MSG_ERROR(assembler support for symbol visibility is required)
1260fi
1261rm -f conftest*])
0fb7851f 1262
a0da5fe1
UD
1263if test $libc_cv_asm_protected_directive = yes; then
1264 AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
0d01dace
UD
1265 libc_cv_visibility_attribute,
1266 [cat > conftest.c <<EOF
1267 int foo __attribute__ ((visibility ("hidden"))) = 1;
1268 int bar __attribute__ ((visibility ("protected"))) = 1;
1269EOF
1270 libc_cv_visibility_attribute=no
61cea1c3 1271 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
0d01dace
UD
1272 if grep '\.hidden.*foo' conftest.s >/dev/null; then
1273 if grep '\.protected.*bar' conftest.s >/dev/null; then
1274 libc_cv_visibility_attribute=yes
1275 fi
1276 fi
1277 fi
f7d82dc9 1278 rm -f conftest.{c,s}
0d01dace 1279 ])
a0da5fe1
UD
1280 if test $libc_cv_visibility_attribute != yes; then
1281 AC_MSG_ERROR(compiler support for visibility attribute is required)
0d01dace 1282 fi
a0da5fe1 1283fi
0d01dace 1284
a0da5fe1
UD
1285if test $libc_cv_visibility_attribute = yes; then
1286 AC_CACHE_CHECK(for broken __attribute__((visibility())),
37ba7d66
UD
1287 libc_cv_broken_visibility_attribute,
1288 [cat > conftest.c <<EOF
1289 int foo (int x);
1290 int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1291 int bar (int x) { return x; }
1292EOF
1293 libc_cv_broken_visibility_attribute=yes
f7d82dc9 1294 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
37ba7d66
UD
1295changequote(,)dnl
1296 if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
1297changequote([,])dnl
1298 libc_cv_broken_visibility_attribute=no
1299 fi
1300 fi
1301 rm -f conftest.c conftest.s
1302 ])
a0da5fe1
UD
1303 if test $libc_cv_broken_visibility_attribute = yes; then
1304 AC_MSG_ERROR(working compiler support for visibility attribute is required)
37ba7d66 1305 fi
a0da5fe1 1306fi
37ba7d66 1307
a0da5fe1
UD
1308AC_CACHE_CHECK(for broken __attribute__((alias())),
1309 libc_cv_broken_alias_attribute,
1310 [cat > conftest.c <<EOF
1311 extern int foo (int x) __asm ("xyzzy");
1312 int bar (int x) { return x; }
1313 extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1314 extern int dfoo;
1315 extern __typeof (dfoo) dfoo __asm ("abccb");
1316 int dfoo = 1;
37ba7d66 1317EOF
a0da5fe1
UD
1318 libc_cv_broken_alias_attribute=yes
1319 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1320 if grep 'xyzzy' conftest.s >/dev/null &&
1321 grep 'abccb' conftest.s >/dev/null; then
1322 libc_cv_broken_alias_attribute=no
1323 fi
1324 fi
1325 rm -f conftest.c conftest.s
1326 ])
1327if test $libc_cv_broken_alias_attribute = yes; then
1328 AC_MSG_ERROR(working alias attribute support required)
1329fi
1330
1331if test $libc_cv_visibility_attribute = yes; then
1332 AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
0d01dace
UD
1333 libc_cv_have_sdata_section,
1334 [echo "int i;" > conftest.c
1335 libc_cv_have_sdata_section=no
dbc92dc6 1336 if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
0d01dace
UD
1337 | grep '\.sdata' >/dev/null; then
1338 libc_cv_have_sdata_section=yes
1339 fi
1340 rm -f conftest.c conftest.so
1341 ])
a0da5fe1
UD
1342 if test $libc_cv_have_sdata_section = yes; then
1343 AC_DEFINE(HAVE_SDATA_SECTION)
0d01dace 1344 fi
a0da5fe1 1345fi
0d01dace 1346
a0da5fe1
UD
1347AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1348 libc_cv_initfini_array, [dnl
07037eeb 1349LIBC_TRY_LINK_STATIC([
5241882c 1350int foo (void) { return 1; }
2c617417 1351int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
07037eeb
JM
1352],
1353 [if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
a0da5fe1 1354 libc_cv_initfini_array=yes
5241882c 1355 else
ce33ee7c 1356 libc_cv_initfini_array=no
07037eeb
JM
1357 fi],
1358 [libc_cv_initfini_array=no])
1359])
a0da5fe1
UD
1360if test $libc_cv_initfini_array != yes; then
1361 AC_MSG_ERROR([Need linker with .init_array/.fini_array support.])
1362fi
62bede13 1363
a0da5fe1
UD
1364AC_CACHE_CHECK(whether to use .ctors/.dtors header and trailer,
1365 libc_cv_ctors_header, [dnl
1366 libc_cv_ctors_header=yes
07037eeb
JM
1367 LIBC_TRY_LINK_STATIC([
1368__attribute__ ((constructor)) void ctor (void) { asm (""); }
1369__attribute__ ((destructor)) void dtor (void) { asm (""); }
113ddea4 1370],
a0da5fe1 1371 [dnl
113ddea4 1372 AS_IF([$READELF -WS conftest$ac_exeext | $AWK '
92963737 1373 { gsub(/\@<:@ */, "@<:@") }
113ddea4
RM
1374 $2 == ".ctors" || $2 == ".dtors" {
1375 size = strtonum("0x" $6)
1376 align = strtonum("0x" $NF)
1377 seen@<:@$2@:>@ = 1
1378 stub@<:@$2@:>@ = size == align * 2
92963737 1379 }
113ddea4
RM
1380 END {
1381 ctors_ok = !seen@<:@".ctors"@:>@ || stub@<:@".ctors"@:>@
1382 dtors_ok = !seen@<:@".dtors"@:>@ || stub@<:@".dtors"@:>@
1383 exit ((ctors_ok && dtors_ok) ? 0 : 1)
1384 }
1385 '], [libc_cv_ctors_header=no])
1386 ], [dnl
1387 AC_MSG_ERROR([missing __attribute__ ((constructor)) support??])
1388 ])
a0da5fe1
UD
1389])
1390if test $libc_cv_ctors_header = no; then
1391 AC_DEFINE(NO_CTORS_DTORS_SECTIONS)
1392fi
5241882c 1393
a0da5fe1
UD
1394AC_CACHE_CHECK(for libunwind-support in compiler,
1395 libc_cv_cc_with_libunwind, [
1396 cat > conftest.c <<EOF
cbdb12de
UD
1397int main (void) { return 0; }
1398EOF
a0da5fe1 1399 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
8175a253 1400 conftest.c -v 2>&1 >/dev/null | grep ' -lunwind ' >/dev/null; then
a0da5fe1
UD
1401 libc_cv_cc_with_libunwind=yes
1402 else
1403 libc_cv_cc_with_libunwind=no
c776b3d7 1404 fi
a0da5fe1
UD
1405 rm -f conftest*])
1406AC_SUBST(libc_cv_cc_with_libunwind)
1407if test $libc_cv_cc_with_libunwind = yes; then
1408 AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
1409fi
c776b3d7 1410
6bfea974
L
1411LIBC_LINKER_FEATURE([-z nodelete], [-Wl,--enable-new-dtags,-z,nodelete],
1412 [libc_cv_z_nodelete=yes],
1413 [AC_MSG_ERROR(linker with -z nodelete support required)])
2f54c82d 1414
6bfea974
L
1415LIBC_LINKER_FEATURE([-z nodlopen], [-Wl,--enable-new-dtags,-z,nodlopen],
1416 [libc_cv_z_nodlopen=yes],
1417 [AC_MSG_ERROR(linker with -z nodlopen support required)])
5d916713 1418
6bfea974
L
1419LIBC_LINKER_FEATURE([-z initfirst], [-Wl,--enable-new-dtags,-z,initfirst],
1420 [libc_cv_z_initfirst=yes],
1421 [AC_MSG_ERROR(linker with -z initfirst support required)])
639c3248 1422
a0da5fe1
UD
1423# Add-on fragments can set these for other machines.
1424libc_commonpagesize=${libc_commonpagesize:-no}
1425libc_relro_required=${libc_relro_required:-no}
1426case "$base_machine" in
1427 i[[34567]]86 | x86_64 | powerpc* | s390*)
1428 libc_commonpagesize=0x1000
1429 libc_relro_required=yes
1430 ;;
1431 sparc*)
1432 libc_commonpagesize=0x2000
1433 libc_relro_required=yes
1434 ;;
a0da5fe1 1435esac
574920b4 1436
a0da5fe1
UD
1437if test $libc_commonpagesize != no; then
1438 AC_CACHE_CHECK(for -z relro option,
1439 libc_cv_z_relro, [dnl
1440 libc_cv_z_relro=no
1441 AC_LANG_CONFTEST([AC_LANG_SOURCE([[
574920b4
RM
1442int _start (void) { return 42; }
1443extern void _exit (int);
9fa2c032
RM
1444/* Since these pointers are const, they should go in rodata.
1445 Since they refer to functions that have to be resolved by
1446 dynamic linking, they should instead go in RELRO data. */
defe9061 1447const void *const relro[] = { &_start, &_exit, 0 };
9fa2c032
RM
1448/* GNU ld fails to produce RELRO data when it's very small and there is no
1449 normal writable data following it, or if only uninitialized (.bss) data
1450 follows it, or only very small writable data. */
1451int data[0x10000] = { 1, };
574920b4 1452]])])
a0da5fe1 1453 cat > conftest.awk <<\EOF
574920b4
RM
1454BEGIN {
1455 result = "no"
1456 commonpagesize = strtonum(commonpagesize)
1457}
1458{ print "LINE:", $0 > "/dev/stderr" }
1459$1 == "GNU_RELRO" {
1460 vaddr = strtonum($3)
1461 memsz = strtonum($6)
1462 end = vaddr + memsz
1463 printf "vaddr %#x memsz %#x end %#x commonpagesize %#x\n", \
1464 vaddr, memsz, end, commonpagesize > "/dev/stderr"
1465 result = (end % commonpagesize == 0) ? "yes" : "broken"
1466}
1467END { print result }
1468EOF
a0da5fe1 1469 AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
574920b4
RM
1470 -fPIC -shared -o conftest.so conftest.c
1471 -nostartfiles -nostdlib
1472 -Wl,-z,relro 1>&AS_MESSAGE_LOG_FD]) &&
a0da5fe1
UD
1473 AC_TRY_COMMAND([$READELF -Wl conftest.so > conftest.ph]) &&
1474 AC_TRY_COMMAND([
574920b4
RM
1475 $AWK -v commonpagesize=$libc_commonpagesize -f conftest.awk
1476 conftest.ph > conftest.cps
1477 ]) &&
a0da5fe1
UD
1478 libc_cv_z_relro=`cat conftest.cps 2>&AS_MESSAGE_LOG_FD`
1479 rm -f conftest*])
1480 if { test "x$libc_relro_required" = xyes &&
1481 test "x$libc_cv_z_relro" != xyes
1482 }
1483 then
1484 AC_MSG_ERROR(linker with -z relro support required)
574920b4 1485 fi
a0da5fe1
UD
1486else
1487 AC_MSG_WARN([missing architecture parameter to check for working -z relro])
1488fi
ed20b3d9 1489
a0da5fe1
UD
1490AC_CACHE_CHECK(for -Bgroup option,
1491 libc_cv_Bgroup, [dnl
1492cat > conftest.c <<EOF
639c3248
UD
1493int _start (void) { return 42; }
1494EOF
a0da5fe1
UD
1495if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1496 -fPIC -shared -o conftest.so conftest.c
1497 -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1498then
1499 libc_cv_Bgroup=yes
1500else
1501 libc_cv_Bgroup=no
1502fi
1503rm -f conftest*])
1504AC_SUBST(libc_cv_Bgroup)
a711b01d 1505
a0da5fe1
UD
1506ASFLAGS_config=
1507AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1508 libc_cv_as_noexecstack, [dnl
1509cat > conftest.c <<EOF
35915ec8
UD
1510void foo (void) { }
1511EOF
a0da5fe1
UD
1512if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1513 -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
8175a253 1514 && grep .note.GNU-stack conftest.s >/dev/null \
a0da5fe1
UD
1515 && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
1516 -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1517then
1518 libc_cv_as_noexecstack=yes
1519else
1520 libc_cv_as_noexecstack=no
1521fi
1522rm -f conftest*])
1523if test $libc_cv_as_noexecstack = yes; then
1524 ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1525fi
1526AC_SUBST(ASFLAGS_config)
2abf9ff1 1527
a0da5fe1
UD
1528AC_CACHE_CHECK(for -z combreloc,
1529 libc_cv_z_combreloc, [dnl
1530cat > conftest.c <<EOF
d555194c
UD
1531extern int bar (int);
1532extern int mumble;
1533int foo (void) { return bar (mumble); }
a711b01d 1534EOF
a0da5fe1 1535if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
dbc92dc6 1536 -fPIC -shared -o conftest.so conftest.c
35cd3c97 1537 -nostdlib -nostartfiles
c2f55635 1538 -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
a0da5fe1 1539then
a711b01d
UD
1540dnl The following test is a bit weak. We must use a tool which can test
1541dnl cross-platform since the gcc used can be a cross compiler. Without
1542dnl introducing new options this is not easily doable. Instead use a tool
1543dnl which always is cross-platform: readelf. To detect whether -z combreloc
1544dnl look for a section named .rel.dyn.
a0da5fe1
UD
1545 if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1546 libc_cv_z_combreloc=yes
fdde8349
UD
1547 else
1548 libc_cv_z_combreloc=no
a711b01d 1549 fi
a0da5fe1
UD
1550else
1551 libc_cv_z_combreloc=no
1552fi
1553rm -f conftest*])
1554if test "$libc_cv_z_combreloc" = yes; then
1555 AC_DEFINE(HAVE_Z_COMBRELOC)
1556fi
1557AC_SUBST(libc_cv_z_combreloc)
2abf9ff1 1558
6bfea974
L
1559LIBC_LINKER_FEATURE([-z execstack], [-Wl,-z,execstack],
1560 [libc_cv_z_execstack=yes], [libc_cv_z_execstack=no])
a0da5fe1 1561AC_SUBST(libc_cv_z_execstack)
c9c60884 1562
a0da5fe1 1563AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
4da0431d
JM
1564LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no])
1565])
c9c60884 1566
a0da5fe1 1567AC_SUBST(libc_cv_fpie)
871b9158 1568
a0da5fe1
UD
1569AC_CACHE_CHECK(for --hash-style option,
1570 libc_cv_hashstyle, [dnl
1571cat > conftest.c <<EOF
871b9158
UD
1572int _start (void) { return 42; }
1573EOF
a0da5fe1
UD
1574if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1575 -fPIC -shared -o conftest.so conftest.c
1576 -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
1577then
1578 libc_cv_hashstyle=yes
1579else
1580 libc_cv_hashstyle=no
1581fi
1582rm -f conftest*])
1583AC_SUBST(libc_cv_hashstyle)
1584
1585# The linker's default -shared behavior is good enough if it
1586# does these things that our custom linker scripts ensure that
1587# all allocated NOTE sections come first.
1588if test "$use_default_link" = default; then
1589 AC_CACHE_CHECK([for sufficient default -shared layout],
1590 libc_cv_use_default_link, [dnl
1591 libc_cv_use_default_link=no
1592 cat > conftest.s <<\EOF
fd5e21c7
RM
1593 .section .note.a,"a",%note
1594 .balign 4
1595 .long 4,4,9
1596 .string "GNU"
1597 .string "foo"
1598 .section .note.b,"a",%note
1599 .balign 4
1600 .long 4,4,9
1601 .string "GNU"
1602 .string "bar"
1603EOF
a0da5fe1 1604 if AC_TRY_COMMAND([dnl
fd5e21c7
RM
1605 ${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD]) &&
1606 ac_try=`$READELF -S conftest.so | sed -n \
1607 ['${x;p;}
1608 s/^ *\[ *[1-9][0-9]*\] *\([^ ][^ ]*\) *\([^ ][^ ]*\) .*$/\2 \1/
1609 t a
1610 b
1611 : a
1612 H']`
a0da5fe1
UD
1613 then
1614 libc_seen_a=no libc_seen_b=no
1615 set -- $ac_try
1616 while test $# -ge 2 -a "$1" = NOTE; do
1617 case "$2" in
1618 .note.a) libc_seen_a=yes ;;
1619 .note.b) libc_seen_b=yes ;;
1620 esac
1621 shift 2
1622 done
1623 case "$libc_seen_a$libc_seen_b" in
1624 yesyes)
1625 libc_cv_use_default_link=yes
1626 ;;
1627 *)
1628 echo >&AS_MESSAGE_LOG_FD "\
fd5e21c7
RM
1629$libc_seen_a$libc_seen_b from:
1630$ac_try"
a0da5fe1
UD
1631 ;;
1632 esac
fd5e21c7 1633 fi
a0da5fe1
UD
1634 rm -f conftest*])
1635 use_default_link=$libc_cv_use_default_link
fd26970f 1636fi
49803108 1637
5c550700
RM
1638AC_CACHE_CHECK(linker output format, libc_cv_output_format, [dnl
1639if libc_cv_output_format=`
1640${CC-cc} -nostartfiles -nostdlib -Wl,--print-output-format 2>&AS_MESSAGE_LOG_FD`
1641then
1642 :
1643else
1644 libc_cv_output_format=
1645fi
1646test -n "$libc_cv_output_format" || libc_cv_output_format=unknown])
1647AC_SUBST(libc_cv_output_format)
1648
22dca1ea 1649AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl
49803108
AJ
1650cat > conftest.c <<EOF
1651int foo;
1652EOF
22dca1ea 1653if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-anchors
49803108
AJ
1654 conftest.c 1>&AS_MESSAGE_LOG_FD])
1655then
18e2ac6d 1656 libc_cv_fno_toplevel_reorder=yes
49803108 1657else
18e2ac6d 1658 libc_cv_fno_toplevel_reorder=no
49803108
AJ
1659fi
1660rm -f conftest*])
18e2ac6d 1661if test $libc_cv_fno_toplevel_reorder = yes; then
22dca1ea 1662 fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
18e2ac6d 1663else
49803108
AJ
1664 fno_unit_at_a_time=-fno-unit-at-a-time
1665fi
1666AC_SUBST(fno_unit_at_a_time)
fd26970f 1667
401a9ec9 1668AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
17228132
TS
1669LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector],
1670 [libc_cv_ssp=yes],
1671 [libc_cv_ssp=no])
1672])
401a9ec9
UD
1673AC_SUBST(libc_cv_ssp)
1674
b037a293
UD
1675AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl
1676cat > conftest.c <<EOF
1677int foo;
1678#ifdef __GNUC_GNU_INLINE__
1679main () { return 0;}
1680#else
1681#error
1682#endif
1683EOF
371f84a4
JJ
1684if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -std=gnu99 -fgnu89-inline
1685 -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD])
b037a293
UD
1686then
1687 libc_cv_gnu89_inline=yes
1688else
1689 libc_cv_gnu89_inline=no
1690fi
1691rm -f conftest*])
1692if test $libc_cv_gnu89_inline = yes; then
1c7570ff 1693 gnu89_inline=-fgnu89-inline
b037a293 1694else
1c7570ff 1695 gnu89_inline=
b037a293 1696fi
1c7570ff 1697AC_SUBST(gnu89_inline)
b037a293 1698
a0da5fe1
UD
1699AC_CACHE_CHECK(whether cc puts quotes around section names,
1700 libc_cv_have_section_quotes,
1701 [cat > conftest.c <<EOF
1702 static const int foo
1703 __attribute__ ((section ("bar"))) = 1;
e26dd47f 1704EOF
a0da5fe1
UD
1705 if ${CC-cc} -S conftest.c -o conftest.s; then
1706 if grep '\.section.*"bar"' conftest.s >/dev/null; then
1707 libc_cv_have_section_quotes=yes
e26dd47f 1708 else
a0da5fe1 1709 libc_cv_have_section_quotes=no
e26dd47f 1710 fi
a0da5fe1
UD
1711 else
1712 libc_cv_have_section_quotes=unknown
1713 fi
1714 rm -f conftest.{c,s}
1715 ])
1716if test $libc_cv_have_section_quotes = yes; then
1717 AC_DEFINE(HAVE_SECTION_QUOTES)
9a97d1f7
UD
1718fi
1719
1720AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
75d86c1f 1721 [dnl
c224a18a 1722cat > conftest.s <<EOF
2293395f 1723${libc_cv_dot_text}
7b8e0d49 1724.globl foo
ae1025be 1725foo:
c224a18a
RM
1726.weak foo
1727.weak bar; bar = foo
1728EOF
3217788f 1729if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
9a97d1f7
UD
1730 libc_cv_asm_weak_directive=yes
1731else
1732 libc_cv_asm_weak_directive=no
1733fi
1734rm -f conftest*])
c224a18a 1735
c8cf0b14 1736if test $libc_cv_asm_weak_directive = no; then
c224a18a
RM
1737 AC_CACHE_CHECK(for assembler .weakext directive,
1738 libc_cv_asm_weakext_directive,
1739 [dnl
1740cat > conftest.s <<EOF
2293395f 1741${libc_cv_dot_text}
7b8e0d49 1742.globl foo
ae1025be 1743foo:
f802accb
UD
1744.weakext bar foo
1745.weakext baz
7b8e0d49 1746.globl baz
9a97d1f7 1747baz:
c224a18a 1748EOF
3217788f 1749 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
c224a18a
RM
1750 libc_cv_asm_weakext_directive=yes
1751 else
1752 libc_cv_asm_weakext_directive=no
1753 fi
1754 rm -f conftest*])
1755
9a97d1f7 1756fi # no .weak
c224a18a 1757
ffcf9634 1758if test $libc_cv_asm_weak_directive = yes; then
c224a18a 1759 AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
ffcf9634 1760elif test $libc_cv_asm_weakext_directive = yes; then
c224a18a
RM
1761 AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1762fi
1763
50189569 1764AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
ced368f7
UD
1765case $machine in
1766 sparc/sparc64*) cfi_offset=2047;;
1767 *) cfi_offset=0;;
1768esac
50189569 1769cat > conftest.s <<EOF
77e8bddf
AS
1770 .text
1771 .type func,%function
50189569 1772func:
77e8bddf 1773 .cfi_startproc
f212e8dc 1774 .cfi_remember_state
ced368f7 1775 .cfi_rel_offset 1, $cfi_offset
77e8bddf 1776 .cfi_endproc
50189569
AJ
1777EOF
1778if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1779 libc_cv_asm_cfi_directives=yes
1780else
1781 libc_cv_asm_cfi_directives=no
1782fi
1783rm -f conftest*])
1784if test $libc_cv_asm_cfi_directives = yes; then
1785 AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
bcd5f356 1786fi
50189569 1787
a641835a
RM
1788AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1789cat > conftest.c <<\EOF
5f0e6fc7 1790_start () {}
dcf0671d
UD
1791int __eh_pc;
1792__throw () {}
a641835a 1793EOF
dcea62dd 1794dnl No \ in command here because it ends up inside ''.
3217788f 1795if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
dcea62dd 1796 -nostdlib -nostartfiles -Wl,--no-whole-archive
c2f55635 1797 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
a641835a
RM
1798 libc_cv_ld_no_whole_archive=yes
1799else
1800 libc_cv_ld_no_whole_archive=no
1801fi
1802rm -f conftest*])
3ce1f295
UD
1803if test $libc_cv_ld_no_whole_archive = no; then
1804 AC_MSG_ERROR([support for --no-whole-archive is needed])
b17277cf 1805fi
a641835a 1806
dff14448 1807AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
b236e99d
UD
1808cat > conftest.c <<\EOF
1809_start () {}
1810int __eh_pc;
1811__throw () {}
1812EOF
1813dnl No \ in command here because it ends up inside ''.
3217788f 1814if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
dff14448 1815 -nostdlib -nostartfiles -fexceptions
c2f55635 1816 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
dff14448 1817 libc_cv_gcc_exceptions=yes
b236e99d 1818else
dff14448 1819 libc_cv_gcc_exceptions=no
b236e99d
UD
1820fi
1821rm -f conftest*])
dff14448
UD
1822if test $libc_cv_gcc_exceptions = yes; then
1823 exceptions=-fexceptions
b17277cf 1824fi
dff14448 1825AC_SUBST(exceptions)dnl
b236e99d 1826
66000494
UD
1827if test "$host_cpu" = powerpc ; then
1828# Check for a bug present in at least versions 2.8.x of GCC
1829# and versions 1.0.x of EGCS.
1830AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1831AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1832 libc_cv_c_asmcr0_bug='no',
1833 libc_cv_c_asmcr0_bug='yes')])
1834if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1835 AC_DEFINE(BROKEN_PPC_ASM_CR0)
1836fi
1837fi
1838
d555194c
UD
1839AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1840cat > conftest.c <<\EOF
1841void zero (void *x)
1842{
a52d1562 1843 __builtin_memset (x, 0, 1000);
d555194c
UD
1844}
1845EOF
1846dnl
1847if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1848then
1849 libc_cv_gcc_builtin_memset=no
1850else
1851 libc_cv_gcc_builtin_memset=yes
1852fi
1853rm -f conftest* ])
1854if test "$libc_cv_gcc_builtin_memset" = yes ; then
1855 AC_DEFINE(HAVE_BUILTIN_MEMSET)
1856fi
1857
85dd1003
UD
1858AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1859cat > conftest.c <<\EOF
1860extern char *strstr (const char *, const char *) __asm ("my_strstr");
1861char *foo (const char *a, const char *b)
1862{
1863 return __builtin_strstr (a, b);
1864}
1865EOF
1866dnl
1867if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
1868then
1869 libc_cv_gcc_builtin_redirection=yes
1870else
1871 libc_cv_gcc_builtin_redirection=no
1872fi
1873rm -f conftest* ])
3ce1f295
UD
1874if test "$libc_cv_gcc_builtin_redirection" = no; then
1875 AC_MSG_ERROR([support for the symbol redirection needed])
85dd1003
UD
1876fi
1877
739d440d 1878dnl Check whether the compiler supports the __thread keyword.
3ce1f295
UD
1879AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1880[cat > conftest.c <<\EOF
fbb18522
RM
1881__thread int a = 42;
1882EOF
3ce1f295
UD
1883if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
1884 libc_cv_gcc___thread=yes
739d440d
UD
1885else
1886 libc_cv_gcc___thread=no
1887fi
3ce1f295
UD
1888rm -f conftest*])
1889if test "$libc_cv_gcc___thread" = no; then
1890 AC_MSG_ERROR([support for the __thread keyword is required])
1891fi
739d440d 1892
3ce1f295
UD
1893dnl Check whether the compiler supports the tls_model attribute.
1894AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1895cat > conftest.c <<\EOF
9b21e6bc
RM
1896extern __thread int a __attribute__((tls_model ("initial-exec")));
1897EOF
3ce1f295
UD
1898if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
1899 libc_cv_gcc_tls_model_attr=yes
1900else
1901 libc_cv_gcc_tls_model_attr=no
1902fi
1903rm -f conftest*])
1904if test "$libc_cv_gcc_tls_model_attr" = no; then
1905 AC_MSG_ERROR([support for the tls_model attribute is required])
9b21e6bc 1906fi
739d440d 1907
7998fa78
AS
1908dnl Determine how to disable generation of FMA instructions.
1909AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
1910 libc_cv_cc_nofma, [dnl
1911libc_cv_cc_nofma=
1912for opt in -ffp-contract=off -mno-fused-madd; do
1913 LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
1914done])
1915
2cf9ad57
RM
1916if test -n "$submachine"; then
1917 AC_CACHE_CHECK([for compiler option for CPU variant],
f7d82dc9 1918 libc_cv_cc_submachine, [dnl
2cf9ad57
RM
1919 libc_cv_cc_submachine=no
1920 for opt in "-march=$submachine" "-mcpu=$submachine"; do
40b601fb 1921 LIBC_TRY_CC_OPTION([$opt], [
2cf9ad57 1922 libc_cv_cc_submachine="$opt"
40b601fb 1923 break], [])
2cf9ad57
RM
1924 done])
1925 if test "x$libc_cv_cc_submachine" = xno; then
1926 AC_MSG_ERROR([${CC-cc} does not support $submachine])
1927 fi
1928fi
1929AC_SUBST(libc_cv_cc_submachine)
1930
c8f3e6db
UD
1931dnl Check whether we have the gd library available.
1932AC_MSG_CHECKING(for libgd)
6dab8688
UD
1933if test "$with_gd" != "no"; then
1934 old_CFLAGS="$CFLAGS"
1935 CFLAGS="$CFLAGS $libgd_include"
1936 old_LDFLAGS="$LDFLAGS"
1937 LDFLAGS="$LDFLAGS $libgd_ldflags"
1938 old_LIBS="$LIBS"
1939 LIBS="$LIBS -lgd -lpng -lz -lm"
1940 AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1941 CFLAGS="$old_CFLAGS"
1942 LDFLAGS="$old_LDFLAGS"
1943 LIBS="$old_LIBS"
1944else
1945 LIBGD=no
1946fi
c8f3e6db
UD
1947AC_MSG_RESULT($LIBGD)
1948AC_SUBST(LIBGD)
3d558f4e 1949
2fff3d93
UD
1950# SELinux detection
1951if test x$with_selinux = xno ; then
1952 have_selinux=no;
1953else
1954 # See if we have the SELinux library
1955 AC_CHECK_LIB(selinux, is_selinux_enabled,
1956 have_selinux=yes, have_selinux=no)
1957 # See if we have the SELinux header with the NSCD permissions in it.
1958 if test x$have_selinux = xyes ; then
1959 AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h])
1960 AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
1961 [#ifdef NSCD__SHMEMHOST
1962 return 0;
1963 #else
1964 #error NSCD__SHMEMHOST not defined
1965 #endif],
1966 have_selinux=yes, have_selinux=no)
1967 AC_MSG_RESULT($have_selinux)
1968 fi
1969
49155d51 1970 if test x$with_selinux = xyes ; then
2fff3d93 1971 if test x$have_selinux = xno ; then
49155d51 1972 AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found])
2fff3d93
UD
1973 fi
1974 fi
1975fi
1976# Check if we're building with SELinux support.
1977if test "x$have_selinux" = xyes; then
943db9eb 1978 AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
ec23b9be
UD
1979
1980 # See if we have the libaudit library
943db9eb 1981 AC_CHECK_LIB(audit, audit_log_user_avc_message,
77e8bddf 1982 have_libaudit=yes, have_libaudit=no)
ec23b9be 1983 if test "x$have_libaudit" = xyes; then
943db9eb 1984 AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
ec23b9be
UD
1985 fi
1986 AC_SUBST(have_libaudit)
1f063dca
UD
1987
1988 # See if we have the libcap library
1989 AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
1990 if test "x$have_libcap" = xyes; then
1991 AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
1992 fi
1993 AC_SUBST(have_libcap)
2fff3d93
UD
1994fi
1995AC_SUBST(have_selinux)
1996
8ed1e7d5
GK
1997dnl check for the size of 'long double'.
1998AC_CHECK_SIZEOF(long double, 0)
1999sizeof_long_double=$ac_cv_sizeof_long_double
2000AC_SUBST(sizeof_long_double)
2001
61653dfb
RM
2002CPPUNDEFS=
2003dnl Check for silly hacked compilers predefining _FORTIFY_SOURCE.
2004dnl Since we are building the implementations of the fortified functions here,
2005dnl having the macro defined interacts very badly.
2006AC_CACHE_CHECK([for _FORTIFY_SOURCE predefine], libc_cv_predef_fortify_source,
2007[AC_TRY_COMPILE([], [
2008#ifdef _FORTIFY_SOURCE
2009# error bogon
2010#endif],
2011 [libc_cv_predef_fortify_source=no],
2012 [libc_cv_predef_fortify_source=yes])])
2013if test $libc_cv_predef_fortify_source = yes; then
2014 CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE"
2015fi
2016AC_SUBST(CPPUNDEFS)
2017
30b99d79
RM
2018dnl Check for silly hacked compilers inserting -fstack-protector.
2019dnl This breaks badly for the early startup code we compile, since
2020dnl the compiled code can refer to a magic machine-dependent location
2021dnl for the canary value before we have sufficient setup for that to
2022dnl work. It's also questionable to build all of libc with this flag
2023dnl even when you're doing that for most applications you build, since
2024dnl libc's code is so heavily-used and performance-sensitive. If we
2025dnl ever really want to make that work, it should be enabled explicitly
2026dnl in the libc build, not inherited from implicit compiler settings.
2027AC_CACHE_CHECK([whether $CC implicitly enables -fstack-protector],
2028 libc_cv_predef_stack_protector, [
2029AC_TRY_COMPILE([extern void foobar (char *);],
2030 [char large_array[2048]; foobar (large_array);], [
2031libc_undefs=`$NM -u conftest.o |
2032 LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \
2033 2>&AS_MESSAGE_LOG_FD` || {
2034 AC_MSG_ERROR([confusing output from $NM -u])
2035}
2036echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'"
59f0c22e
JM
2037# On some architectures, there are architecture-specific undefined
2038# symbols (resolved by the linker), so filter out unknown symbols.
2039# This will fail to produce the correct result if the compiler
2040# defaults to -fstack-protector but this produces an undefined symbol
2041# other than __stack_chk_fail. However, compilers like that have not
2042# been encountered in practice.
2043libc_undefs=`echo "$libc_undefs" | egrep '^(foobar|__stack_chk_fail)$'`
30b99d79
RM
2044case "$libc_undefs" in
2045foobar) libc_cv_predef_stack_protector=no ;;
2046'__stack_chk_fail
2047foobar') libc_cv_predef_stack_protector=yes ;;
2048*) AC_MSG_ERROR([unexpected symbols in test: $libc_undefs]) ;;
2049esac],
2050 [AC_MSG_ERROR([test compilation failed])])
2051])
2052libc_extra_cflags=
2053if test $libc_cv_predef_stack_protector = yes; then
2054 libc_extra_cflags=-fno-stack-protector
2055fi
2056AC_SUBST(libc_extra_cflags)
2057
c224a18a
RM
2058### End of automated tests.
2059### Now run sysdeps configure fragments.
2060
cb343854 2061# They also can set these variables.
591e1ffb 2062use_ldconfig=no
cb343854 2063ldd_rewrite_script=no
77259608 2064libc_cv_sysconfdir=$sysconfdir
4248b1b1 2065libc_cv_localstatedir=$localstatedir
74bd2300 2066libc_cv_gcc_unwind_find_fde=no
e2fd3cbe 2067libc_cv_idn=no
cb343854 2068
28f540f4 2069# Iterate over all the sysdep directories we will use, running their
09055553 2070# configure fragments.
28f540f4 2071for dir in $sysnames; do
57ba7bb4
UD
2072 case $dir in
2073 /*) dest=$dir ;;
2074 *) dest=$srcdir/$dir ;;
2075 esac
2076 if test -r $dest/configure; then
d1149385 2077 AC_MSG_RESULT(running configure fragment for $dir)
57ba7bb4 2078 . $dest/configure
28f540f4 2079 fi
28f540f4
RM
2080done
2081
74bd2300
UD
2082if test x$libc_cv_gcc_unwind_find_fde = xyes; then
2083 AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
2084fi
2085AC_SUBST(libc_cv_gcc_unwind_find_fde)
2086
6e6249d0
RM
2087# A sysdeps configure fragment can reset this if IFUNC is not actually
2088# usable even though the assembler knows how to generate the symbol type.
2089if test x"$libc_cv_ld_gnu_indirect_function" = xyes; then
2090 AC_DEFINE(HAVE_IFUNC)
2091fi
2092
3cc3ef96
RM
2093# This is far from the AC_ARG_ENABLE that sets it so that a sysdeps
2094# configure fragment can override the value to prevent this AC_DEFINE.
2095AC_SUBST(use_nscd)
2096if test "x$use_nscd" != xno; then
2097 AC_DEFINE([USE_NSCD])
2098fi
c53d909c
RM
2099if test "x$build_nscd" = xdefault; then
2100 build_nscd=$use_nscd
2101fi
3cc3ef96 2102
a53bad16
UD
2103# Test for old glibc 2.0.x headers so that they can be removed properly
2104# Search only in includedir.
2105AC_MSG_CHECKING(for old glibc 2.0.x headers)
350eb336 2106if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
a53bad16
UD
2107then
2108 old_glibc_headers=yes
2109else
2110 old_glibc_headers=no
2111fi
2112AC_MSG_RESULT($old_glibc_headers)
2113if test ${old_glibc_headers} = yes; then
2114 AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
2115 AC_MSG_WARN(*** be removed.)
2116fi
b195f6bc 2117AC_SUBST(old_glibc_headers)
26b4d766 2118
84384f5b 2119AC_SUBST(libc_cv_slibdir)
a1d84548 2120AC_SUBST(libc_cv_localedir)
77259608 2121AC_SUBST(libc_cv_sysconfdir)
4248b1b1 2122AC_SUBST(libc_cv_localstatedir)
1ef32c3d 2123AC_SUBST(libc_cv_rootsbindir)
bcd5f356 2124AC_SUBST(libc_cv_forced_unwind)
1ef32c3d 2125
58a4b51a 2126dnl sysdeps/CPU/configure.in checks set this via arch-specific asm tests
06e51c8f 2127AC_SUBST(libc_cv_cc_sse4)
b0ecde3a 2128AC_SUBST(libc_cv_cc_avx)
3b100462 2129AC_SUBST(libc_cv_cc_sse2avx)
091023f5 2130AC_SUBST(libc_cv_cc_novzeroupper)
af968f62 2131AC_SUBST(libc_cv_cc_fma4)
7998fa78 2132AC_SUBST(libc_cv_cc_nofma)
01f1f5ee 2133AC_SUBST(libc_cv_as_i686)
eae47a36 2134AC_SUBST(libc_cv_sparc_as_vis3)
58a4b51a 2135
f57f8055
RM
2136if test x$use_ldconfig = xyes; then
2137 AC_DEFINE(USE_LDCONFIG)
2138fi
591e1ffb 2139AC_SUBST(use_ldconfig)
cb343854 2140AC_SUBST(ldd_rewrite_script)
84384f5b 2141
650425ce 2142AC_SUBST(static)
ff3d7ed3 2143AC_SUBST(shared)
a334319f 2144
ff886b82
UD
2145AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
2146[libc_cv_pic_default=yes
cc3fa755 2147cat > conftest.c <<EOF
9756dfe1 2148#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
cc3fa755
UD
2149# error PIC is default.
2150#endif
2151EOF
0b4ee387 2152if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
ff886b82 2153 libc_cv_pic_default=no
cc3fa755
UD
2154fi
2155rm -f conftest.*])
ff886b82 2156AC_SUBST(libc_cv_pic_default)
cc3fa755 2157
ff3d7ed3 2158AC_SUBST(profile)
5107cf1d 2159AC_SUBST(static_nss)
ff3d7ed3 2160
edf5b2d7
UD
2161AC_SUBST(DEFINES)
2162
61c83c3f
RM
2163dnl See sysdeps/mach/configure.in for this variable.
2164AC_SUBST(mach_interface_list)
2165
ee74a442
UD
2166VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
2167RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
df4ef2ab 2168AC_SUBST(VERSION)
ee74a442 2169AC_SUBST(RELEASE)
df4ef2ab 2170
728e272a 2171AC_CONFIG_FILES([config.make Makefile])
c118d634 2172AC_CONFIG_COMMANDS([default],[[
737547be
UD
2173case $CONFIG_FILES in *config.make*)
2174echo "$config_vars" >> config.make;;
2175esac
c118d634
RM
2176test -d bits || mkdir bits]],[[config_vars='$config_vars']])
2177AC_OUTPUT