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