]> git.ipfire.org Git - thirdparty/glibc.git/blame - configure.in
Update __STDC_ISO_10646__.
[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.]*\)],
aefdff34
RM
922 [4.*],
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
RM
929AC_CHECK_TOOL(READELF, readelf, false)
930
476e7d78
RM
931AC_CHECK_PROGS(AUTOCONF, autoconf, no)
932case "x$AUTOCONF" in
933xno|x|x:) AUTOCONF=no ;;
934*)
935 AC_CACHE_CHECK(dnl
1400de2e 936whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
476e7d78
RM
937 if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
938 libc_cv_autoconf_works=yes
939 else
940 libc_cv_autoconf_works=no
941 fi])
942 test $libc_cv_autoconf_works = yes || AUTOCONF=no
943 ;;
944esac
92963737 945if test "x$AUTOCONF" = xno; then
476e7d78 946 aux_missing="$aux_missing autoconf"
14519931 947fi
1400de2e 948
32a448ed
RM
949test -n "$critic_missing" && AC_MSG_ERROR([
950*** These critical programs are missing or too old:$critic_missing
951*** Check the INSTALL file for required versions.])
952
4bca4c17 953test -n "$aux_missing" && AC_MSG_WARN([
9c6fffc0 954*** These auxiliary programs are missing or incompatible versions:$aux_missing
63bda0c1
UD
955*** some features will be disabled.
956*** Check the INSTALL file for required versions.])
28f540f4 957
dbe7a0f5
UD
958# if using special system headers, find out the compiler's sekrit
959# header directory and add that to the list. NOTE: Only does the right
960# thing on a system that doesn't need fixincludes. (Not presently a problem.)
961if test -n "$sysheaders"; then
67fbfa5c
RM
962 SYSINCLUDES=-nostdinc
963 for d in include include-fixed; do
964 i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
965 SYSINCLUDES="$SYSINCLUDES -isystem $i"
966 done
967 SYSINCLUDES="$SYSINCLUDES \
3d6ce23a 968-isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
ef226fec 969 if test -n "$CXX"; then
7872cfb0 970 CXX_SYSINCLUDES=
ef226fec
RM
971 cxxversion=`$CXX -dumpversion 2>&AS_MESSAGE_LOG_FD` &&
972 cxxmachine=`$CXX -dumpmachine 2>&AS_MESSAGE_LOG_FD` &&
7872cfb0
AS
973 for d in include "$cxxmachine/include"; do
974 i=../../../../$d/c++/$cxxversion
975 cxxheaders=`$CXX -print-file-name="$i"` &&
976 test "x$cxxheaders" != x && test "x$i" != "x$cxxheaders" &&
977 CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders \
ef226fec 978-isystem $cxxheaders/$cxxmachine -isystem $cxxheaders/backward"
7872cfb0 979 done
ef226fec 980 fi
dbe7a0f5
UD
981fi
982AC_SUBST(SYSINCLUDES)
ef226fec 983AC_SUBST(CXX_SYSINCLUDES)
dbe7a0f5 984
3911660e
UD
985# Test if LD_LIBRARY_PATH contains the notation for the current directory
986# since this would lead to problems installing/building glibc.
987# LD_LIBRARY_PATH contains the current directory if one of the following
988# is true:
989# - one of the terminals (":" and ";") is the first or last sign
990# - two terminals occur directly after each other
991# - the path contains an element with a dot in it
992AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
993changequote(,)dnl
994case ${LD_LIBRARY_PATH} in
995 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
b3a86ae1 996 ld_library_path_setting="contains current directory"
3911660e
UD
997 ;;
998 *)
999 ld_library_path_setting="ok"
1000 ;;
1001esac
1002changequote([,])dnl
1003AC_MSG_RESULT($ld_library_path_setting)
1004if test "$ld_library_path_setting" != "ok"; then
63bda0c1
UD
1005AC_MSG_ERROR([
1006*** LD_LIBRARY_PATH shouldn't contain the current directory when
1007*** building glibc. Please change the environment variable
1008*** and run configure again.])
3911660e 1009fi
8e31cf7e 1010
74bd2300
UD
1011AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
1012if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
1013 libc_cv_gcc_static_libgcc=
1014else
1015 libc_cv_gcc_static_libgcc=-static-libgcc
1016fi])
1017AC_SUBST(libc_cv_gcc_static_libgcc)
1018
26f56c1c
UD
1019AC_PATH_PROG(BASH_SHELL, bash, no)
1020if test "$BASH_SHELL" != no &&
1021 $BASH_SHELL -c 'test "$BASH_VERSINFO" \
6973fc01 1022 && test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
84384f5b
UD
1023 libc_cv_have_bash2=yes
1024else
1025 libc_cv_have_bash2=no
1026fi
1027AC_SUBST(libc_cv_have_bash2)
1028
5290baf0 1029dnl We need a ksh compatible shell for tzselect.
26f56c1c 1030if test "$BASH_SHELL" = no; then
5290baf0
UD
1031 AC_PATH_PROG(KSH, ksh, no)
1032 if test "$KSH" = no; then
1033 libc_cv_have_ksh=no
1034 else
1035 libc_cv_have_ksh=yes
1036 fi
1037else
26f56c1c 1038 KSH="$BASH_SHELL"
5290baf0
UD
1039 AC_SUBST(KSH)
1040 libc_cv_have_ksh=yes
1041fi
1042AC_SUBST(libc_cv_have_ksh)
1043
5aa8ff62 1044AC_PROG_AWK
c0016081 1045AC_PATH_PROG(PERL, perl, no)
2fd5d029
RM
1046if test "$PERL" != no &&
1047 (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
1048 PERL=no
ecb06196 1049fi
2f512715
AS
1050AC_PATH_PROG(INSTALL_INFO, install-info, no,
1051 $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
2de00372
UD
1052AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
1053
b8dc6a10 1054AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
28f540f4
RM
1055AC_TRY_COMPILE(dnl
1056[#define __need_size_t
1057#define __need_wchar_t
1058#include <stddef.h>
1059#define __need_NULL
1060#include <stddef.h>], [size_t size; wchar_t wchar;
1061#ifdef offsetof
1062#error stddef.h ignored __need_*
1063#endif
1064if (&size == NULL || &wchar == NULL) abort ();],
77e8bddf
AS
1065 libc_cv_friendly_stddef=yes,
1066 libc_cv_friendly_stddef=no)])
28f540f4
RM
1067if test $libc_cv_friendly_stddef = yes; then
1068 config_vars="$config_vars
1069override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
1070fi
1071
b8dc6a10
RM
1072AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
1073 libc_cv_need_minus_P, [dnl
28f540f4
RM
1074cat > conftest.S <<EOF
1075#include "confdefs.h"
1076/* Nothing whatsoever. */
1077EOF
3217788f 1078if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
28f540f4
RM
1079 libc_cv_need_minus_P=no
1080else
1081 libc_cv_need_minus_P=yes
1082fi
1083rm -f conftest*])
28f540f4
RM
1084if test $libc_cv_need_minus_P = yes; then
1085 config_vars="$config_vars
1086asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
1087fi
1088
b8dc6a10 1089AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
9a70fcab 1090cat > conftest.s <<EOF
2293395f 1091${libc_cv_dot_text}
ae1025be 1092foo:
df2a0c93 1093.set glibc_conftest_frobozz,foo
9a70fcab 1094$libc_cv_asm_global_directive glibc_conftest_frobozz
e215c478 1095EOF
df2a0c93
RM
1096# The alpha-dec-osf1 assembler gives only a warning for `.set'
1097# (but it doesn't work), so we must do a linking check to be sure.
1098cat > conftest1.c <<\EOF
1099extern int glibc_conftest_frobozz;
640f0119 1100void _start() { glibc_conftest_frobozz = 1; }
df2a0c93
RM
1101EOF
1102if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
640f0119 1103 -nostartfiles -nostdlib \
0b4ee387 1104 -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
e215c478
RM
1105 libc_cv_asm_set_directive=yes
1106else
1107 libc_cv_asm_set_directive=no
1108fi
65b3cbcb 1109rm -f conftest*])
e215c478
RM
1110if test $libc_cv_asm_set_directive = yes; then
1111 AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
1112fi
1113
415ac3df
UD
1114AC_CACHE_CHECK(for assembler gnu_unique_object symbol type,
1115 libc_cv_asm_unique_object, [dnl
1116cat > conftest.s <<EOF
1117${libc_cv_dot_text}
1118_sym:
1119.type _sym, ${libc_cv_asm_type_prefix}gnu_unique_object
1120EOF
1121if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1122 libc_cv_asm_unique_object=yes
1123else
1124 libc_cv_asm_unique_object=no
1125fi
1126rm -f conftest*])
1127if test $libc_cv_asm_unique_object = yes; then
1128 AC_DEFINE(HAVE_ASM_UNIQUE_OBJECT)
1129fi
1130
377a515b
UD
1131AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
1132[cat > conftest.s <<EOF
2293395f 1133${libc_cv_dot_text}
4cca6b86 1134_sym:
377a515b
UD
1135.symver _sym,sym@VERS
1136EOF
3217788f 1137if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
377a515b
UD
1138 libc_cv_asm_symver_directive=yes
1139else
1140 libc_cv_asm_symver_directive=no
1141fi
1142rm -f conftest*])
1143AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
1144if test $libc_cv_asm_symver_directive = yes; then
1145 cat > conftest.s <<EOF
2293395f 1146${libc_cv_dot_text}
4cca6b86 1147_sym:
377a515b
UD
1148.symver _sym,sym@VERS
1149EOF
1150 cat > conftest.map <<EOF
f43ce637 1151VERS_1 {
377a515b
UD
1152 global: sym;
1153};
f43ce637
UD
1154
1155VERS_2 {
77e8bddf 1156 global: sym;
f43ce637 1157} VERS_1;
377a515b 1158EOF
3217788f
RM
1159 if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1160 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
1161 -o conftest.so conftest.o
1162 -nostartfiles -nostdlib
1163 -Wl,--version-script,conftest.map
c2f55635 1164 1>&AS_MESSAGE_LOG_FD]);
377a515b
UD
1165 then
1166 libc_cv_ld_version_script_option=yes
1167 else
1168 libc_cv_ld_version_script_option=no
1169 fi
1170 else
1171 libc_cv_ld_version_script_option=no
1172 fi
1173else
1174 libc_cv_ld_version_script_option=no
1175fi
1176rm -f conftest*])
7499a22a
RM
1177if test $shared != no &&
1178 test $libc_cv_asm_symver_directive = yes &&
650425ce
UD
1179 test $libc_cv_ld_version_script_option = yes &&
1180 test $enable_versioning = yes; then
377a515b
UD
1181 VERSIONING=yes
1182 AC_DEFINE(DO_VERSIONING)
1183else
1184 VERSIONING=no
1185fi
1186AC_SUBST(VERSIONING)
1187
a0da5fe1 1188if test $shared != no && test $VERSIONING = no; then
f43ce637 1189 echo "\
f4017d20 1190*** WARNING: You should not compile GNU libc without versioning. Not using
f43ce637
UD
1191*** versioning will introduce incompatibilities so that old binaries
1192*** will not run anymore.
50304ef0 1193*** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
f43ce637 1194fi
a0da5fe1
UD
1195AC_CACHE_CHECK(for .previous assembler directive,
1196 libc_cv_asm_previous_directive, [dnl
1197cat > conftest.s <<EOF
fd26970f
UD
1198.section foo_section
1199.previous
a0da5fe1
UD
1200EOF
1201if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1202 libc_cv_asm_previous_directive=yes
1203else
1204 libc_cv_asm_previous_directive=no
1205fi
1206rm -f conftest*])
1207if test $libc_cv_asm_previous_directive = yes; then
1208 AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
1209else
1210 AC_CACHE_CHECK(for .popsection assembler directive,
1211 libc_cv_asm_popsection_directive, [dnl
1212 cat > conftest.s <<EOF
1213.pushsection foo_section
1214.popsection
fd26970f 1215EOF
3217788f 1216 if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
a0da5fe1 1217 libc_cv_asm_popsection_directive=yes
fd26970f 1218 else
a0da5fe1 1219 libc_cv_asm_popsection_directive=no
fd26970f
UD
1220 fi
1221 rm -f conftest*])
a0da5fe1
UD
1222 if test $libc_cv_asm_popsection_directive = yes; then
1223 AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
fd26970f 1224 fi
a0da5fe1
UD
1225fi
1226AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1227 libc_cv_asm_protected_directive, [dnl
1228cat > conftest.s <<EOF
2d499f55
UD
1229.protected foo
1230foo:
1231.hidden bar
1232bar:
1233EOF
a0da5fe1
UD
1234if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1235 libc_cv_asm_protected_directive=yes
1236else
1237 AC_MSG_ERROR(assembler support for symbol visibility is required)
1238fi
1239rm -f conftest*])
0fb7851f 1240
a0da5fe1
UD
1241if test $libc_cv_asm_protected_directive = yes; then
1242 AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
0d01dace
UD
1243 libc_cv_visibility_attribute,
1244 [cat > conftest.c <<EOF
1245 int foo __attribute__ ((visibility ("hidden"))) = 1;
1246 int bar __attribute__ ((visibility ("protected"))) = 1;
1247EOF
1248 libc_cv_visibility_attribute=no
61cea1c3 1249 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
0d01dace
UD
1250 if grep '\.hidden.*foo' conftest.s >/dev/null; then
1251 if grep '\.protected.*bar' conftest.s >/dev/null; then
1252 libc_cv_visibility_attribute=yes
1253 fi
1254 fi
1255 fi
f7d82dc9 1256 rm -f conftest.{c,s}
0d01dace 1257 ])
a0da5fe1
UD
1258 if test $libc_cv_visibility_attribute != yes; then
1259 AC_MSG_ERROR(compiler support for visibility attribute is required)
0d01dace 1260 fi
a0da5fe1 1261fi
0d01dace 1262
a0da5fe1
UD
1263if test $libc_cv_visibility_attribute = yes; then
1264 AC_CACHE_CHECK(for broken __attribute__((visibility())),
37ba7d66
UD
1265 libc_cv_broken_visibility_attribute,
1266 [cat > conftest.c <<EOF
1267 int foo (int x);
1268 int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1269 int bar (int x) { return x; }
1270EOF
1271 libc_cv_broken_visibility_attribute=yes
f7d82dc9 1272 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
37ba7d66
UD
1273changequote(,)dnl
1274 if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
1275changequote([,])dnl
1276 libc_cv_broken_visibility_attribute=no
1277 fi
1278 fi
1279 rm -f conftest.c conftest.s
1280 ])
a0da5fe1
UD
1281 if test $libc_cv_broken_visibility_attribute = yes; then
1282 AC_MSG_ERROR(working compiler support for visibility attribute is required)
37ba7d66 1283 fi
a0da5fe1 1284fi
37ba7d66 1285
a0da5fe1
UD
1286AC_CACHE_CHECK(for broken __attribute__((alias())),
1287 libc_cv_broken_alias_attribute,
1288 [cat > conftest.c <<EOF
1289 extern int foo (int x) __asm ("xyzzy");
1290 int bar (int x) { return x; }
1291 extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1292 extern int dfoo;
1293 extern __typeof (dfoo) dfoo __asm ("abccb");
1294 int dfoo = 1;
37ba7d66 1295EOF
a0da5fe1
UD
1296 libc_cv_broken_alias_attribute=yes
1297 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1298 if grep 'xyzzy' conftest.s >/dev/null &&
1299 grep 'abccb' conftest.s >/dev/null; then
1300 libc_cv_broken_alias_attribute=no
1301 fi
1302 fi
1303 rm -f conftest.c conftest.s
1304 ])
1305if test $libc_cv_broken_alias_attribute = yes; then
1306 AC_MSG_ERROR(working alias attribute support required)
1307fi
1308
1309if test $libc_cv_visibility_attribute = yes; then
1310 AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
0d01dace
UD
1311 libc_cv_have_sdata_section,
1312 [echo "int i;" > conftest.c
1313 libc_cv_have_sdata_section=no
dbc92dc6 1314 if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
0d01dace
UD
1315 | grep '\.sdata' >/dev/null; then
1316 libc_cv_have_sdata_section=yes
1317 fi
1318 rm -f conftest.c conftest.so
1319 ])
a0da5fe1
UD
1320 if test $libc_cv_have_sdata_section = yes; then
1321 AC_DEFINE(HAVE_SDATA_SECTION)
0d01dace 1322 fi
a0da5fe1 1323fi
0d01dace 1324
a0da5fe1
UD
1325AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1326 libc_cv_initfini_array, [dnl
07037eeb 1327LIBC_TRY_LINK_STATIC([
5241882c 1328int foo (void) { return 1; }
2c617417 1329int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
07037eeb
JM
1330],
1331 [if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
a0da5fe1 1332 libc_cv_initfini_array=yes
5241882c 1333 else
ce33ee7c 1334 libc_cv_initfini_array=no
07037eeb
JM
1335 fi],
1336 [libc_cv_initfini_array=no])
1337])
a0da5fe1
UD
1338if test $libc_cv_initfini_array != yes; then
1339 AC_MSG_ERROR([Need linker with .init_array/.fini_array support.])
1340fi
62bede13 1341
a0da5fe1
UD
1342AC_CACHE_CHECK(whether to use .ctors/.dtors header and trailer,
1343 libc_cv_ctors_header, [dnl
1344 libc_cv_ctors_header=yes
07037eeb
JM
1345 LIBC_TRY_LINK_STATIC([
1346__attribute__ ((constructor)) void ctor (void) { asm (""); }
1347__attribute__ ((destructor)) void dtor (void) { asm (""); }
113ddea4 1348],
a0da5fe1 1349 [dnl
113ddea4 1350 AS_IF([$READELF -WS conftest$ac_exeext | $AWK '
92963737 1351 { gsub(/\@<:@ */, "@<:@") }
113ddea4
RM
1352 $2 == ".ctors" || $2 == ".dtors" {
1353 size = strtonum("0x" $6)
1354 align = strtonum("0x" $NF)
1355 seen@<:@$2@:>@ = 1
1356 stub@<:@$2@:>@ = size == align * 2
92963737 1357 }
113ddea4
RM
1358 END {
1359 ctors_ok = !seen@<:@".ctors"@:>@ || stub@<:@".ctors"@:>@
1360 dtors_ok = !seen@<:@".dtors"@:>@ || stub@<:@".dtors"@:>@
1361 exit ((ctors_ok && dtors_ok) ? 0 : 1)
1362 }
1363 '], [libc_cv_ctors_header=no])
1364 ], [dnl
1365 AC_MSG_ERROR([missing __attribute__ ((constructor)) support??])
1366 ])
a0da5fe1
UD
1367])
1368if test $libc_cv_ctors_header = no; then
1369 AC_DEFINE(NO_CTORS_DTORS_SECTIONS)
1370fi
5241882c 1371
a0da5fe1
UD
1372AC_CACHE_CHECK(for libunwind-support in compiler,
1373 libc_cv_cc_with_libunwind, [
1374 cat > conftest.c <<EOF
cbdb12de
UD
1375int main (void) { return 0; }
1376EOF
a0da5fe1
UD
1377 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
1378 conftest.c -v 2>&1 >/dev/null | grep -q " -lunwind "; then
1379 libc_cv_cc_with_libunwind=yes
1380 else
1381 libc_cv_cc_with_libunwind=no
c776b3d7 1382 fi
a0da5fe1
UD
1383 rm -f conftest*])
1384AC_SUBST(libc_cv_cc_with_libunwind)
1385if test $libc_cv_cc_with_libunwind = yes; then
1386 AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
1387fi
c776b3d7 1388
a0da5fe1
UD
1389AC_CACHE_CHECK(for -z nodelete option,
1390 libc_cv_z_nodelete, [dnl
1391cat > conftest.c <<EOF
0fb7851f
UD
1392int _start (void) { return 42; }
1393EOF
a0da5fe1
UD
1394if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1395 -fPIC -shared -o conftest.so conftest.c
1396 -nostartfiles -nostdlib
1397 -Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
1398then
1399 libc_cv_z_nodelete=yes
1400else
1401 AC_MSG_ERROR(linker with -z nodelete support required)
1402fi
1403rm -f conftest*])
2f54c82d 1404
a0da5fe1
UD
1405AC_CACHE_CHECK(for -z nodlopen option,
1406 libc_cv_z_nodlopen, [dnl
1407cat > conftest.c <<EOF
2f54c82d
UD
1408int _start (void) { return 42; }
1409EOF
a0da5fe1 1410if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
dbc92dc6 1411 -fPIC -shared -o conftest.so conftest.c
35cd3c97 1412 -nostartfiles -nostdlib
c2f55635 1413 -Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
a0da5fe1
UD
1414then
1415 libc_cv_z_nodlopen=yes
1416else
1417 AC_MSG_ERROR(linker with -z nodlopen support required)
1418fi
1419rm -f conftest*])
5d916713 1420
a0da5fe1
UD
1421AC_CACHE_CHECK(for -z initfirst option,
1422 libc_cv_z_initfirst, [dnl
1423cat > conftest.c <<EOF
5d916713
UD
1424int _start (void) { return 42; }
1425EOF
a0da5fe1 1426if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
dbc92dc6 1427 -fPIC -shared -o conftest.so conftest.c
35cd3c97 1428 -nostartfiles -nostdlib
c2f55635 1429 -Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
a0da5fe1
UD
1430then
1431 libc_cv_z_initfirst=yes
1432else
1433 AC_MSG_ERROR(linker with -z initfirst support required)
1434fi
1435rm -f conftest*])
639c3248 1436
a0da5fe1
UD
1437# Add-on fragments can set these for other machines.
1438libc_commonpagesize=${libc_commonpagesize:-no}
1439libc_relro_required=${libc_relro_required:-no}
1440case "$base_machine" in
1441 i[[34567]]86 | x86_64 | powerpc* | s390*)
1442 libc_commonpagesize=0x1000
1443 libc_relro_required=yes
1444 ;;
1445 sparc*)
1446 libc_commonpagesize=0x2000
1447 libc_relro_required=yes
1448 ;;
a0da5fe1 1449esac
574920b4 1450
a0da5fe1
UD
1451if test $libc_commonpagesize != no; then
1452 AC_CACHE_CHECK(for -z relro option,
1453 libc_cv_z_relro, [dnl
1454 libc_cv_z_relro=no
1455 AC_LANG_CONFTEST([AC_LANG_SOURCE([[
574920b4
RM
1456int _start (void) { return 42; }
1457extern void _exit (int);
9fa2c032
RM
1458/* Since these pointers are const, they should go in rodata.
1459 Since they refer to functions that have to be resolved by
1460 dynamic linking, they should instead go in RELRO data. */
defe9061 1461const void *const relro[] = { &_start, &_exit, 0 };
9fa2c032
RM
1462/* GNU ld fails to produce RELRO data when it's very small and there is no
1463 normal writable data following it, or if only uninitialized (.bss) data
1464 follows it, or only very small writable data. */
1465int data[0x10000] = { 1, };
574920b4 1466]])])
a0da5fe1 1467 cat > conftest.awk <<\EOF
574920b4
RM
1468BEGIN {
1469 result = "no"
1470 commonpagesize = strtonum(commonpagesize)
1471}
1472{ print "LINE:", $0 > "/dev/stderr" }
1473$1 == "GNU_RELRO" {
1474 vaddr = strtonum($3)
1475 memsz = strtonum($6)
1476 end = vaddr + memsz
1477 printf "vaddr %#x memsz %#x end %#x commonpagesize %#x\n", \
1478 vaddr, memsz, end, commonpagesize > "/dev/stderr"
1479 result = (end % commonpagesize == 0) ? "yes" : "broken"
1480}
1481END { print result }
1482EOF
a0da5fe1 1483 AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
574920b4
RM
1484 -fPIC -shared -o conftest.so conftest.c
1485 -nostartfiles -nostdlib
1486 -Wl,-z,relro 1>&AS_MESSAGE_LOG_FD]) &&
a0da5fe1
UD
1487 AC_TRY_COMMAND([$READELF -Wl conftest.so > conftest.ph]) &&
1488 AC_TRY_COMMAND([
574920b4
RM
1489 $AWK -v commonpagesize=$libc_commonpagesize -f conftest.awk
1490 conftest.ph > conftest.cps
1491 ]) &&
a0da5fe1
UD
1492 libc_cv_z_relro=`cat conftest.cps 2>&AS_MESSAGE_LOG_FD`
1493 rm -f conftest*])
1494 if { test "x$libc_relro_required" = xyes &&
1495 test "x$libc_cv_z_relro" != xyes
1496 }
1497 then
1498 AC_MSG_ERROR(linker with -z relro support required)
574920b4 1499 fi
a0da5fe1
UD
1500else
1501 AC_MSG_WARN([missing architecture parameter to check for working -z relro])
1502fi
ed20b3d9 1503
a0da5fe1
UD
1504AC_CACHE_CHECK(for -Bgroup option,
1505 libc_cv_Bgroup, [dnl
1506cat > conftest.c <<EOF
639c3248
UD
1507int _start (void) { return 42; }
1508EOF
a0da5fe1
UD
1509if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1510 -fPIC -shared -o conftest.so conftest.c
1511 -Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1512then
1513 libc_cv_Bgroup=yes
1514else
1515 libc_cv_Bgroup=no
1516fi
1517rm -f conftest*])
1518AC_SUBST(libc_cv_Bgroup)
a711b01d 1519
a0da5fe1
UD
1520ASFLAGS_config=
1521AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1522 libc_cv_as_noexecstack, [dnl
1523cat > conftest.c <<EOF
35915ec8
UD
1524void foo (void) { }
1525EOF
a0da5fe1
UD
1526if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1527 -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
1528 && grep -q .note.GNU-stack conftest.s \
1529 && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
1530 -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1531then
1532 libc_cv_as_noexecstack=yes
1533else
1534 libc_cv_as_noexecstack=no
1535fi
1536rm -f conftest*])
1537if test $libc_cv_as_noexecstack = yes; then
1538 ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1539fi
1540AC_SUBST(ASFLAGS_config)
2abf9ff1 1541
a0da5fe1
UD
1542AC_CACHE_CHECK(for -z combreloc,
1543 libc_cv_z_combreloc, [dnl
1544cat > conftest.c <<EOF
d555194c
UD
1545extern int bar (int);
1546extern int mumble;
1547int foo (void) { return bar (mumble); }
a711b01d 1548EOF
a0da5fe1 1549if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
dbc92dc6 1550 -fPIC -shared -o conftest.so conftest.c
35cd3c97 1551 -nostdlib -nostartfiles
c2f55635 1552 -Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
a0da5fe1 1553then
a711b01d
UD
1554dnl The following test is a bit weak. We must use a tool which can test
1555dnl cross-platform since the gcc used can be a cross compiler. Without
1556dnl introducing new options this is not easily doable. Instead use a tool
1557dnl which always is cross-platform: readelf. To detect whether -z combreloc
1558dnl look for a section named .rel.dyn.
a0da5fe1
UD
1559 if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1560 libc_cv_z_combreloc=yes
fdde8349
UD
1561 else
1562 libc_cv_z_combreloc=no
a711b01d 1563 fi
a0da5fe1
UD
1564else
1565 libc_cv_z_combreloc=no
1566fi
1567rm -f conftest*])
1568if test "$libc_cv_z_combreloc" = yes; then
1569 AC_DEFINE(HAVE_Z_COMBRELOC)
1570fi
1571AC_SUBST(libc_cv_z_combreloc)
2abf9ff1 1572
a0da5fe1
UD
1573AC_CACHE_CHECK(for -z execstack,
1574 libc_cv_z_execstack, [dnl
1575cat > conftest.c <<EOF
2abf9ff1
RM
1576int _start (void) { return 42; }
1577EOF
a0da5fe1
UD
1578if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1579 -fPIC -shared -o conftest.so conftest.c
1580 -Wl,-z,execstack -nostdlib
1581 1>&AS_MESSAGE_LOG_FD])
1582then
1583 libc_cv_z_execstack=yes
1584else
1585 libc_cv_z_execstack=no
1586fi
1587rm -f conftest*])
1588AC_SUBST(libc_cv_z_execstack)
c9c60884 1589
a0da5fe1
UD
1590AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
1591cat > conftest.c <<EOF
c9c60884 1592int foo;
49803108 1593main () { return 0;}
c9c60884 1594EOF
a0da5fe1
UD
1595if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fpie
1596 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1597then
1598 libc_cv_fpie=yes
1599else
1600 libc_cv_fpie=no
1601fi
1602rm -f conftest*])
c9c60884 1603
a0da5fe1 1604AC_SUBST(libc_cv_fpie)
871b9158 1605
a0da5fe1
UD
1606AC_CACHE_CHECK(for --hash-style option,
1607 libc_cv_hashstyle, [dnl
1608cat > conftest.c <<EOF
871b9158
UD
1609int _start (void) { return 42; }
1610EOF
a0da5fe1
UD
1611if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1612 -fPIC -shared -o conftest.so conftest.c
1613 -Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
1614then
1615 libc_cv_hashstyle=yes
1616else
1617 libc_cv_hashstyle=no
1618fi
1619rm -f conftest*])
1620AC_SUBST(libc_cv_hashstyle)
1621
1622# The linker's default -shared behavior is good enough if it
1623# does these things that our custom linker scripts ensure that
1624# all allocated NOTE sections come first.
1625if test "$use_default_link" = default; then
1626 AC_CACHE_CHECK([for sufficient default -shared layout],
1627 libc_cv_use_default_link, [dnl
1628 libc_cv_use_default_link=no
1629 cat > conftest.s <<\EOF
fd5e21c7
RM
1630 .section .note.a,"a",%note
1631 .balign 4
1632 .long 4,4,9
1633 .string "GNU"
1634 .string "foo"
1635 .section .note.b,"a",%note
1636 .balign 4
1637 .long 4,4,9
1638 .string "GNU"
1639 .string "bar"
1640EOF
a0da5fe1 1641 if AC_TRY_COMMAND([dnl
fd5e21c7
RM
1642 ${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD]) &&
1643 ac_try=`$READELF -S conftest.so | sed -n \
1644 ['${x;p;}
1645 s/^ *\[ *[1-9][0-9]*\] *\([^ ][^ ]*\) *\([^ ][^ ]*\) .*$/\2 \1/
1646 t a
1647 b
1648 : a
1649 H']`
a0da5fe1
UD
1650 then
1651 libc_seen_a=no libc_seen_b=no
1652 set -- $ac_try
1653 while test $# -ge 2 -a "$1" = NOTE; do
1654 case "$2" in
1655 .note.a) libc_seen_a=yes ;;
1656 .note.b) libc_seen_b=yes ;;
1657 esac
1658 shift 2
1659 done
1660 case "$libc_seen_a$libc_seen_b" in
1661 yesyes)
1662 libc_cv_use_default_link=yes
1663 ;;
1664 *)
1665 echo >&AS_MESSAGE_LOG_FD "\
fd5e21c7
RM
1666$libc_seen_a$libc_seen_b from:
1667$ac_try"
a0da5fe1
UD
1668 ;;
1669 esac
fd5e21c7 1670 fi
a0da5fe1
UD
1671 rm -f conftest*])
1672 use_default_link=$libc_cv_use_default_link
fd26970f 1673fi
49803108 1674
5c550700
RM
1675AC_CACHE_CHECK(linker output format, libc_cv_output_format, [dnl
1676if libc_cv_output_format=`
1677${CC-cc} -nostartfiles -nostdlib -Wl,--print-output-format 2>&AS_MESSAGE_LOG_FD`
1678then
1679 :
1680else
1681 libc_cv_output_format=
1682fi
1683test -n "$libc_cv_output_format" || libc_cv_output_format=unknown])
1684AC_SUBST(libc_cv_output_format)
1685
22dca1ea 1686AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl
49803108
AJ
1687cat > conftest.c <<EOF
1688int foo;
1689EOF
22dca1ea 1690if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-anchors
49803108
AJ
1691 conftest.c 1>&AS_MESSAGE_LOG_FD])
1692then
18e2ac6d 1693 libc_cv_fno_toplevel_reorder=yes
49803108 1694else
18e2ac6d 1695 libc_cv_fno_toplevel_reorder=no
49803108
AJ
1696fi
1697rm -f conftest*])
18e2ac6d 1698if test $libc_cv_fno_toplevel_reorder = yes; then
22dca1ea 1699 fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
18e2ac6d 1700else
49803108
AJ
1701 fno_unit_at_a_time=-fno-unit-at-a-time
1702fi
1703AC_SUBST(fno_unit_at_a_time)
fd26970f 1704
401a9ec9 1705AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
17228132
TS
1706LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector],
1707 [libc_cv_ssp=yes],
1708 [libc_cv_ssp=no])
1709])
401a9ec9
UD
1710AC_SUBST(libc_cv_ssp)
1711
b037a293
UD
1712AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl
1713cat > conftest.c <<EOF
1714int foo;
1715#ifdef __GNUC_GNU_INLINE__
1716main () { return 0;}
1717#else
1718#error
1719#endif
1720EOF
371f84a4
JJ
1721if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -std=gnu99 -fgnu89-inline
1722 -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD])
b037a293
UD
1723then
1724 libc_cv_gnu89_inline=yes
1725else
1726 libc_cv_gnu89_inline=no
1727fi
1728rm -f conftest*])
1729if test $libc_cv_gnu89_inline = yes; then
1c7570ff 1730 gnu89_inline=-fgnu89-inline
b037a293 1731else
1c7570ff 1732 gnu89_inline=
b037a293 1733fi
1c7570ff 1734AC_SUBST(gnu89_inline)
b037a293 1735
a0da5fe1
UD
1736AC_CACHE_CHECK(whether cc puts quotes around section names,
1737 libc_cv_have_section_quotes,
1738 [cat > conftest.c <<EOF
1739 static const int foo
1740 __attribute__ ((section ("bar"))) = 1;
e26dd47f 1741EOF
a0da5fe1
UD
1742 if ${CC-cc} -S conftest.c -o conftest.s; then
1743 if grep '\.section.*"bar"' conftest.s >/dev/null; then
1744 libc_cv_have_section_quotes=yes
e26dd47f 1745 else
a0da5fe1 1746 libc_cv_have_section_quotes=no
e26dd47f 1747 fi
a0da5fe1
UD
1748 else
1749 libc_cv_have_section_quotes=unknown
1750 fi
1751 rm -f conftest.{c,s}
1752 ])
1753if test $libc_cv_have_section_quotes = yes; then
1754 AC_DEFINE(HAVE_SECTION_QUOTES)
9a97d1f7
UD
1755fi
1756
1757AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
75d86c1f 1758 [dnl
c224a18a 1759cat > conftest.s <<EOF
2293395f 1760${libc_cv_dot_text}
c224a18a 1761${libc_cv_asm_global_directive} foo
ae1025be 1762foo:
c224a18a
RM
1763.weak foo
1764.weak bar; bar = foo
1765EOF
3217788f 1766if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
9a97d1f7
UD
1767 libc_cv_asm_weak_directive=yes
1768else
1769 libc_cv_asm_weak_directive=no
1770fi
1771rm -f conftest*])
c224a18a 1772
c8cf0b14 1773if test $libc_cv_asm_weak_directive = no; then
c224a18a
RM
1774 AC_CACHE_CHECK(for assembler .weakext directive,
1775 libc_cv_asm_weakext_directive,
1776 [dnl
1777cat > conftest.s <<EOF
2293395f 1778${libc_cv_dot_text}
c224a18a 1779${libc_cv_asm_global_directive} foo
ae1025be 1780foo:
f802accb
UD
1781.weakext bar foo
1782.weakext baz
1783${libc_cv_asm_global_directive} baz
9a97d1f7 1784baz:
c224a18a 1785EOF
3217788f 1786 if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
c224a18a
RM
1787 libc_cv_asm_weakext_directive=yes
1788 else
1789 libc_cv_asm_weakext_directive=no
1790 fi
1791 rm -f conftest*])
1792
9a97d1f7 1793fi # no .weak
c224a18a 1794
ffcf9634 1795if test $libc_cv_asm_weak_directive = yes; then
c224a18a 1796 AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
ffcf9634 1797elif test $libc_cv_asm_weakext_directive = yes; then
c224a18a
RM
1798 AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1799fi
1800
50189569 1801AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
ced368f7
UD
1802case $machine in
1803 sparc/sparc64*) cfi_offset=2047;;
1804 *) cfi_offset=0;;
1805esac
50189569 1806cat > conftest.s <<EOF
77e8bddf
AS
1807 .text
1808 .type func,%function
50189569 1809func:
77e8bddf 1810 .cfi_startproc
f212e8dc 1811 .cfi_remember_state
ced368f7 1812 .cfi_rel_offset 1, $cfi_offset
77e8bddf 1813 .cfi_endproc
50189569
AJ
1814EOF
1815if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1816 libc_cv_asm_cfi_directives=yes
1817else
1818 libc_cv_asm_cfi_directives=no
1819fi
1820rm -f conftest*])
1821if test $libc_cv_asm_cfi_directives = yes; then
1822 AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
bcd5f356 1823fi
50189569 1824
a641835a
RM
1825AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1826cat > conftest.c <<\EOF
5f0e6fc7 1827_start () {}
dcf0671d
UD
1828int __eh_pc;
1829__throw () {}
a641835a 1830EOF
dcea62dd 1831dnl No \ in command here because it ends up inside ''.
3217788f 1832if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
dcea62dd 1833 -nostdlib -nostartfiles -Wl,--no-whole-archive
c2f55635 1834 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
a641835a
RM
1835 libc_cv_ld_no_whole_archive=yes
1836else
1837 libc_cv_ld_no_whole_archive=no
1838fi
1839rm -f conftest*])
3ce1f295
UD
1840if test $libc_cv_ld_no_whole_archive = no; then
1841 AC_MSG_ERROR([support for --no-whole-archive is needed])
b17277cf 1842fi
a641835a 1843
dff14448 1844AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
b236e99d
UD
1845cat > conftest.c <<\EOF
1846_start () {}
1847int __eh_pc;
1848__throw () {}
1849EOF
1850dnl No \ in command here because it ends up inside ''.
3217788f 1851if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
dff14448 1852 -nostdlib -nostartfiles -fexceptions
c2f55635 1853 -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
dff14448 1854 libc_cv_gcc_exceptions=yes
b236e99d 1855else
dff14448 1856 libc_cv_gcc_exceptions=no
b236e99d
UD
1857fi
1858rm -f conftest*])
dff14448
UD
1859if test $libc_cv_gcc_exceptions = yes; then
1860 exceptions=-fexceptions
b17277cf 1861fi
dff14448 1862AC_SUBST(exceptions)dnl
b236e99d 1863
66000494
UD
1864if test "$host_cpu" = powerpc ; then
1865# Check for a bug present in at least versions 2.8.x of GCC
1866# and versions 1.0.x of EGCS.
1867AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1868AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1869 libc_cv_c_asmcr0_bug='no',
1870 libc_cv_c_asmcr0_bug='yes')])
1871if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1872 AC_DEFINE(BROKEN_PPC_ASM_CR0)
1873fi
1874fi
1875
d555194c
UD
1876AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1877cat > conftest.c <<\EOF
1878void zero (void *x)
1879{
a52d1562 1880 __builtin_memset (x, 0, 1000);
d555194c
UD
1881}
1882EOF
1883dnl
1884if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1885then
1886 libc_cv_gcc_builtin_memset=no
1887else
1888 libc_cv_gcc_builtin_memset=yes
1889fi
1890rm -f conftest* ])
1891if test "$libc_cv_gcc_builtin_memset" = yes ; then
1892 AC_DEFINE(HAVE_BUILTIN_MEMSET)
1893fi
1894
85dd1003
UD
1895AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1896cat > conftest.c <<\EOF
1897extern char *strstr (const char *, const char *) __asm ("my_strstr");
1898char *foo (const char *a, const char *b)
1899{
1900 return __builtin_strstr (a, b);
1901}
1902EOF
1903dnl
1904if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
1905then
1906 libc_cv_gcc_builtin_redirection=yes
1907else
1908 libc_cv_gcc_builtin_redirection=no
1909fi
1910rm -f conftest* ])
3ce1f295
UD
1911if test "$libc_cv_gcc_builtin_redirection" = no; then
1912 AC_MSG_ERROR([support for the symbol redirection needed])
85dd1003
UD
1913fi
1914
739d440d 1915dnl Check whether the compiler supports the __thread keyword.
3ce1f295
UD
1916AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1917[cat > conftest.c <<\EOF
fbb18522
RM
1918__thread int a = 42;
1919EOF
3ce1f295
UD
1920if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
1921 libc_cv_gcc___thread=yes
739d440d
UD
1922else
1923 libc_cv_gcc___thread=no
1924fi
3ce1f295
UD
1925rm -f conftest*])
1926if test "$libc_cv_gcc___thread" = no; then
1927 AC_MSG_ERROR([support for the __thread keyword is required])
1928fi
739d440d 1929
3ce1f295
UD
1930dnl Check whether the compiler supports the tls_model attribute.
1931AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1932cat > conftest.c <<\EOF
9b21e6bc
RM
1933extern __thread int a __attribute__((tls_model ("initial-exec")));
1934EOF
3ce1f295
UD
1935if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
1936 libc_cv_gcc_tls_model_attr=yes
1937else
1938 libc_cv_gcc_tls_model_attr=no
1939fi
1940rm -f conftest*])
1941if test "$libc_cv_gcc_tls_model_attr" = no; then
1942 AC_MSG_ERROR([support for the tls_model attribute is required])
9b21e6bc 1943fi
739d440d 1944
7998fa78
AS
1945dnl Determine how to disable generation of FMA instructions.
1946AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
1947 libc_cv_cc_nofma, [dnl
1948libc_cv_cc_nofma=
1949for opt in -ffp-contract=off -mno-fused-madd; do
1950 LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
1951done])
1952
2cf9ad57
RM
1953if test -n "$submachine"; then
1954 AC_CACHE_CHECK([for compiler option for CPU variant],
f7d82dc9 1955 libc_cv_cc_submachine, [dnl
2cf9ad57
RM
1956 libc_cv_cc_submachine=no
1957 for opt in "-march=$submachine" "-mcpu=$submachine"; do
40b601fb 1958 LIBC_TRY_CC_OPTION([$opt], [
2cf9ad57 1959 libc_cv_cc_submachine="$opt"
40b601fb 1960 break], [])
2cf9ad57
RM
1961 done])
1962 if test "x$libc_cv_cc_submachine" = xno; then
1963 AC_MSG_ERROR([${CC-cc} does not support $submachine])
1964 fi
1965fi
1966AC_SUBST(libc_cv_cc_submachine)
1967
c8f3e6db
UD
1968dnl Check whether we have the gd library available.
1969AC_MSG_CHECKING(for libgd)
6dab8688
UD
1970if test "$with_gd" != "no"; then
1971 old_CFLAGS="$CFLAGS"
1972 CFLAGS="$CFLAGS $libgd_include"
1973 old_LDFLAGS="$LDFLAGS"
1974 LDFLAGS="$LDFLAGS $libgd_ldflags"
1975 old_LIBS="$LIBS"
1976 LIBS="$LIBS -lgd -lpng -lz -lm"
1977 AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
1978 CFLAGS="$old_CFLAGS"
1979 LDFLAGS="$old_LDFLAGS"
1980 LIBS="$old_LIBS"
1981else
1982 LIBGD=no
1983fi
c8f3e6db
UD
1984AC_MSG_RESULT($LIBGD)
1985AC_SUBST(LIBGD)
3d558f4e 1986
2fff3d93
UD
1987# SELinux detection
1988if test x$with_selinux = xno ; then
1989 have_selinux=no;
1990else
1991 # See if we have the SELinux library
1992 AC_CHECK_LIB(selinux, is_selinux_enabled,
1993 have_selinux=yes, have_selinux=no)
1994 # See if we have the SELinux header with the NSCD permissions in it.
1995 if test x$have_selinux = xyes ; then
1996 AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h])
1997 AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
1998 [#ifdef NSCD__SHMEMHOST
1999 return 0;
2000 #else
2001 #error NSCD__SHMEMHOST not defined
2002 #endif],
2003 have_selinux=yes, have_selinux=no)
2004 AC_MSG_RESULT($have_selinux)
2005 fi
2006
49155d51 2007 if test x$with_selinux = xyes ; then
2fff3d93 2008 if test x$have_selinux = xno ; then
49155d51 2009 AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found])
2fff3d93
UD
2010 fi
2011 fi
2012fi
2013# Check if we're building with SELinux support.
2014if test "x$have_selinux" = xyes; then
943db9eb 2015 AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
ec23b9be
UD
2016
2017 # See if we have the libaudit library
943db9eb 2018 AC_CHECK_LIB(audit, audit_log_user_avc_message,
77e8bddf 2019 have_libaudit=yes, have_libaudit=no)
ec23b9be 2020 if test "x$have_libaudit" = xyes; then
943db9eb 2021 AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
ec23b9be
UD
2022 fi
2023 AC_SUBST(have_libaudit)
1f063dca
UD
2024
2025 # See if we have the libcap library
2026 AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
2027 if test "x$have_libcap" = xyes; then
2028 AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
2029 fi
2030 AC_SUBST(have_libcap)
2fff3d93
UD
2031fi
2032AC_SUBST(have_selinux)
2033
8ed1e7d5
GK
2034dnl check for the size of 'long double'.
2035AC_CHECK_SIZEOF(long double, 0)
2036sizeof_long_double=$ac_cv_sizeof_long_double
2037AC_SUBST(sizeof_long_double)
2038
c224a18a
RM
2039### End of automated tests.
2040### Now run sysdeps configure fragments.
2041
cb343854 2042# They also can set these variables.
591e1ffb 2043use_ldconfig=no
cb343854 2044ldd_rewrite_script=no
77259608 2045libc_cv_sysconfdir=$sysconfdir
74bd2300 2046libc_cv_gcc_unwind_find_fde=no
e2fd3cbe 2047libc_cv_idn=no
cb343854 2048
28f540f4 2049# Iterate over all the sysdep directories we will use, running their
09055553 2050# configure fragments.
28f540f4 2051for dir in $sysnames; do
57ba7bb4
UD
2052 case $dir in
2053 /*) dest=$dir ;;
2054 *) dest=$srcdir/$dir ;;
2055 esac
2056 if test -r $dest/configure; then
d1149385 2057 AC_MSG_RESULT(running configure fragment for $dir)
57ba7bb4 2058 . $dest/configure
28f540f4 2059 fi
28f540f4
RM
2060done
2061
74bd2300
UD
2062if test x$libc_cv_gcc_unwind_find_fde = xyes; then
2063 AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
2064fi
2065AC_SUBST(libc_cv_gcc_unwind_find_fde)
2066
a53bad16
UD
2067# Test for old glibc 2.0.x headers so that they can be removed properly
2068# Search only in includedir.
2069AC_MSG_CHECKING(for old glibc 2.0.x headers)
350eb336 2070if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
a53bad16
UD
2071then
2072 old_glibc_headers=yes
2073else
2074 old_glibc_headers=no
2075fi
2076AC_MSG_RESULT($old_glibc_headers)
2077if test ${old_glibc_headers} = yes; then
2078 AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
2079 AC_MSG_WARN(*** be removed.)
2080fi
b195f6bc 2081AC_SUBST(old_glibc_headers)
26b4d766 2082
84384f5b 2083AC_SUBST(libc_cv_slibdir)
a1d84548 2084AC_SUBST(libc_cv_localedir)
77259608 2085AC_SUBST(libc_cv_sysconfdir)
1ef32c3d 2086AC_SUBST(libc_cv_rootsbindir)
bcd5f356 2087AC_SUBST(libc_cv_forced_unwind)
1ef32c3d 2088
58a4b51a
RM
2089dnl sysdeps/CPU/configure.in checks set this via arch-specific asm tests
2090AC_SUBST(libc_cv_cpp_asm_debuginfo)
06e51c8f 2091AC_SUBST(libc_cv_cc_sse4)
b0ecde3a 2092AC_SUBST(libc_cv_cc_avx)
3b100462 2093AC_SUBST(libc_cv_cc_sse2avx)
091023f5 2094AC_SUBST(libc_cv_cc_novzeroupper)
af968f62 2095AC_SUBST(libc_cv_cc_fma4)
7998fa78 2096AC_SUBST(libc_cv_cc_nofma)
01f1f5ee 2097AC_SUBST(libc_cv_as_i686)
eae47a36 2098AC_SUBST(libc_cv_sparc_as_vis3)
58a4b51a 2099
591e1ffb 2100AC_SUBST(use_ldconfig)
cb343854 2101AC_SUBST(ldd_rewrite_script)
84384f5b 2102
650425ce 2103AC_SUBST(static)
ff3d7ed3 2104AC_SUBST(shared)
a334319f 2105
ff886b82
UD
2106AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
2107[libc_cv_pic_default=yes
cc3fa755 2108cat > conftest.c <<EOF
9756dfe1 2109#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
cc3fa755
UD
2110# error PIC is default.
2111#endif
2112EOF
0b4ee387 2113if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
ff886b82 2114 libc_cv_pic_default=no
cc3fa755
UD
2115fi
2116rm -f conftest.*])
ff886b82 2117AC_SUBST(libc_cv_pic_default)
cc3fa755 2118
ff3d7ed3 2119AC_SUBST(profile)
5107cf1d 2120AC_SUBST(static_nss)
ff3d7ed3 2121
edf5b2d7
UD
2122AC_SUBST(DEFINES)
2123
61c83c3f
RM
2124dnl See sysdeps/mach/configure.in for this variable.
2125AC_SUBST(mach_interface_list)
2126
28f540f4
RM
2127if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
2128 config_makefile=
2129else
2130 config_makefile=Makefile
2131fi
2132
ee74a442
UD
2133VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
2134RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
df4ef2ab 2135AC_SUBST(VERSION)
ee74a442 2136AC_SUBST(RELEASE)
df4ef2ab 2137
09055553 2138AC_CONFIG_FILES([config.make ${config_makefile}])
c118d634 2139AC_CONFIG_COMMANDS([default],[[
737547be
UD
2140case $CONFIG_FILES in *config.make*)
2141echo "$config_vars" >> config.make;;
2142esac
c118d634
RM
2143test -d bits || mkdir bits]],[[config_vars='$config_vars']])
2144AC_OUTPUT