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