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