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