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