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