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