1
dnl Process this file with autoconf to produce a configure script.
2
AC_PREREQ(2.53)dnl dnl Minimum Autoconf version required.
3
AC_INIT([GNU C Library], [(see version.h)], [http://sourceware.org/bugzilla/], [glibc])
4
AC_CONFIG_SRCDIR([include/features.h])
5
AC_CONFIG_HEADERS([config.h])
6
AC_CONFIG_AUX_DIR([scripts])
8
# Glibc should not depend on any header files
9
AC_DEFUN([_AC_INCLUDES_DEFAULT_REQUIREMENTS],
10
[m4_divert_text([DEFAULTS],
11
[ac_includes_default='/* none */'])])
13
dnl This is here so we can set $subdirs directly based on configure fragments.
19
if test $host != $build; then
20
AC_CHECK_PROGS(BUILD_CC, gcc cc)
22
AC_SUBST(cross_compiling)
24
# We need the C++ compiler only for testing.
27
if test "`cd $srcdir; /bin/pwd`" = "`/bin/pwd`"; then
28
AC_MSG_ERROR([you must configure in a separate build directory])
31
# This will get text that should go into config.make.
34
# Check for a --with-gd argument and set libgd-LDFLAGS in config.make.
36
AC_HELP_STRING([--with-gd=DIR],
37
[find libgd include dir and library with prefix DIR]),
41
*) libgd_include="-I$withval/include"
42
libgd_ldflags="-L$withval/lib" ;;
45
AC_ARG_WITH([gd-include],
46
AC_HELP_STRING([--with-gd-include=DIR],
47
[find libgd include files in DIR]),
49
case "$with_gd_include" in
51
*) libgd_include="-I$withval" ;;
55
AC_HELP_STRING([--with-gd-lib=DIR],
56
[find libgd library files in DIR]),
58
case "$with_gd_lib" in
60
*) libgd_ldflags="-L$withval" ;;
64
if test -n "$libgd_include"; then
65
config_vars="$config_vars
66
CFLAGS-memusagestat.c = $libgd_include"
68
if test -n "$libgd_ldflags"; then
69
config_vars="$config_vars
70
libgd-LDFLAGS = $libgd_ldflags"
73
dnl Arguments to specify presence of other packages/features.
75
AC_HELP_STRING([--with-fp],
76
[if using floating-point hardware @<:@default=yes@:>@]),
80
AC_ARG_WITH([binutils],
81
AC_HELP_STRING([--with-binutils=PATH],
82
[specify location of binutils (as and ld)]),
83
[path_binutils=$withval],
85
AC_ARG_WITH([selinux],
86
AC_HELP_STRING([--with-selinux],
87
[if building with SELinux support]),
88
[with_selinux=$withval],
91
AC_ARG_WITH([headers],
92
AC_HELP_STRING([--with-headers=PATH],
93
[location of system headers to use
94
(for example /usr/src/linux/include)
95
@<:@default=compiler default@:>@]),
96
[sysheaders=$withval],
99
AC_SUBST(use_default_link)
100
AC_ARG_WITH([default-link],
101
AC_HELP_STRING([--with-default-link],
102
[do not use explicit linker scripts]),
103
[use_default_link=$withval],
104
[use_default_link=default])
106
AC_ARG_ENABLE([sanity-checks],
107
AC_HELP_STRING([--disable-sanity-checks],
108
[really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
109
[enable_sanity=$enableval],
112
AC_ARG_ENABLE([shared],
113
AC_HELP_STRING([--enable-shared],
114
[build shared library @<:@default=yes if GNU ld@:>@]),
117
AC_ARG_ENABLE([profile],
118
AC_HELP_STRING([--enable-profile],
119
[build profiled library @<:@default=no@:>@]),
120
[profile=$enableval],
122
AC_ARG_ENABLE([versioning],
123
AC_HELP_STRING([--disable-versioning],
124
[do not include versioning information in the library objects @<:@default=yes if supported@:>@]),
125
[enable_versioning=$enableval],
126
[enable_versioning=yes])
128
AC_ARG_ENABLE([oldest-abi],
129
AC_HELP_STRING([--enable-oldest-abi=ABI],
130
[configure the oldest ABI supported @<:@e.g. 2.2@:>@ @<:@default=glibc default@:>@]),
131
[oldest_abi=$enableval],
133
if test "$oldest_abi" = yes || test "$oldest_abi" = no; then
136
AC_DEFINE_UNQUOTED(GLIBC_OLDEST_ABI, "$oldest_abi")
140
AC_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])
145
if test "$enable_stackguard_randomize" = yes; then
146
AC_DEFINE(ENABLE_STACKGUARD_RANDOMIZE)
149
dnl Generic infrastructure for drop-in additions to libc.
150
AC_ARG_ENABLE([add-ons],
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]),
154
, [enable_add_ons=yes])
156
AC_ARG_ENABLE([hidden-plt],
157
AC_HELP_STRING([--disable-hidden-plt],
158
[do not hide internal function calls to avoid PLT]),
161
if test "x$hidden" = xno; then
165
AC_ARG_ENABLE([bind-now],
166
AC_HELP_STRING([--enable-bind-now],
167
[disable lazy relocations in DSOs]),
168
[bindnow=$enableval],
172
dnl On some platforms we cannot use dynamic loading. We must provide
173
dnl static NSS modules.
174
AC_ARG_ENABLE([static-nss],
175
AC_HELP_STRING([--enable-static-nss],
176
[build static NSS modules @<:@default=no@:>@]),
177
[static_nss=$enableval],
179
dnl Enable static NSS also if we build no shared objects.
180
if test x"$static_nss" = xyes || test x"$shared" = xno; then
182
AC_DEFINE(DO_STATIC_NSS)
185
AC_ARG_ENABLE([force-install],
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]),
188
[force_install=$enableval],
190
AC_SUBST(force_install)
192
dnl On some platforms we allow dropping compatibility with all kernel
194
AC_ARG_ENABLE([kernel],
195
AC_HELP_STRING([--enable-kernel=VERSION],
196
[compile for compatibility with kernel not older than VERSION]),
197
[minimum_kernel=$enableval],
199
dnl Prevent unreasonable values.
200
if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then
201
# Better nothing than this.
204
if test "$minimum_kernel" = current; then
205
minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel=
209
dnl For the development we sometimes want gcc to issue even more warnings.
210
dnl This is not the default since many of the extra warnings are not
212
AC_ARG_ENABLE([all-warnings],
213
AC_HELP_STRING([--enable-all-warnings],
214
[enable all useful warnings gcc can issue]),
215
[all_warnings=$enableval],
217
AC_SUBST(all_warnings)
219
ACX_PKGVERSION([EGLIBC])
220
ACX_BUGURL([http://www.eglibc.org/issues/])
221
AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], [Additional package description])
222
AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], [Bug reporting address])
224
AC_ARG_ENABLE([multi-arch],
225
AC_HELP_STRING([--enable-multi-arch],
226
[enable single DSO with optimizations for multiple architectures]),
227
[multi_arch=$enableval],
228
[multi_arch=default])
230
AC_ARG_ENABLE([nss-crypt],
231
AC_HELP_STRING([--enable-nss-crypt],
232
[enable libcrypt to use nss]),
233
[nss_crypt=$enableval],
235
if test x$nss_crypt = xyes; then
236
nss_includes=-I$(nss-config --includedir 2>/dev/null)
237
if test $? -ne 0; then
238
AC_MSG_ERROR([cannot find include directory with nss-config])
241
CFLAGS="$CFLAGS $nss_includes"
242
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
244
#include <nsslowhash.h>
245
void f (void) { NSSLOW_Init (); }])],
246
libc_cv_nss_crypt=yes,
248
cannot find NSS headers with lowlevel hash function interfaces]))
250
LIBS="$LIBS -lfreebl3"
251
AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool;
253
#include <nsslowhash.h>],
255
libc_cv_nss_crypt=yes,
257
cannot link program using lowlevel NSS hash functions]))
263
AC_SUBST(libc_cv_nss_crypt)
266
AC_ARG_ENABLE([obsolete-rpc],
267
AC_HELP_STRING([--enable-obsolete-rpc],
268
[build and install the obsolete RPC code for link-time usage]),
269
[link_obsolete_rpc=$enableval],
270
[link_obsolete_rpc=no])
271
AC_SUBST(link_obsolete_rpc)
273
if test "$link_obsolete_rpc" = yes; then
274
AC_DEFINE(LINK_OBSOLETE_RPC)
277
AC_ARG_ENABLE([systemtap],
278
[AS_HELP_STRING([--enable-systemtap],
279
[enable systemtap static probe points @<:@default=no@:>@])],
280
[systemtap=$enableval],
282
if test "x$systemtap" != xno; then
283
AC_CACHE_CHECK([for systemtap static probe support], libc_cv_sdt, [dnl
285
CFLAGS="-std=gnu99 $CFLAGS"
286
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <sys/sdt.h>
287
void foo (int i, void *p)
289
asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) ""
290
:: STAP_PROBE_ASM_OPERANDS (2, i, p));
291
}]])], [libc_cv_sdt=yes], [libc_cv_sdt=no])
292
CFLAGS="$old_CFLAGS"])
293
if test $libc_cv_sdt = yes; then
294
AC_DEFINE([USE_STAP_PROBE])
295
elif test "x$systemtap" != xauto; then
296
AC_MSG_FAILURE([systemtap support needs sys/sdt.h with asm support])
300
# The way shlib-versions is used to generate soversions.mk uses a
301
# fairly simplistic model for name recognition that can't distinguish
302
# i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os
303
# of `gnu*' here to be `gnu-gnu*' just so that shlib-versions can
304
# tell. This doesn't get used much beyond that, so it's fairly safe.
309
host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'`
313
# We keep the original values in `$config_*' and never modify them, so we
314
# can write them unchanged into config.make. Everything else uses
315
# $machine, $vendor, and $os, and changes them whenever convenient.
316
config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os
318
# Don't allow vendor == "unknown"
319
test "$config_vendor" = unknown && config_vendor=
320
config_os="`echo $config_os | sed 's/^unknown-//'`"
322
# Some configurations imply other options.
325
# The configure fragment of an add-on port can modify these to supplement
326
# or override the table in the case statement below. No fragment should
327
# ever change the config_* variables, however.
328
machine=$config_machine
329
vendor=$config_vendor
333
# config.guess on some IBM machines says `rs6000' instead of `powerpc'.
335
if test "$machine" = rs6000; then
340
if test "$machine" = sparc; then
344
# Braindead PowerPC box with absolutely no FPU.
345
case "$machine-$host_os" in
353
AS_HELP_STRING([--with-cpu=CPU], [select code for CPU variant]),
356
yes|'') AC_MSG_ERROR([--with-cpu requires an argument]) ;;
358
*) submachine="$withval" ;;
362
dnl Let sysdeps/*/preconfigure act here, like they can in add-ons.
363
LIBC_PRECONFIGURE([$srcdir], [for sysdeps])
365
# An add-on can set this when it wants to disable the sanity check below.
368
dnl Having this here, though empty, makes sure that if add-ons' fragments
369
dnl do AC_CONFIG_SUBDIRS([some-dir]), which just sets $subdirs, then
370
dnl our AC_OUTPUT will actually use it.
373
case "$enable_add_ons" in
376
add_ons=`cd $srcdir && ls -d 2> /dev/null */configure */sysdeps |
377
sed 's@/[[^/]]*$@@' | sort | uniq`
378
add_ons_automatic=yes
380
*) add_ons=`echo "$enable_add_ons" | sed 's/,/ /g'`
381
add_ons_automatic=no ;;
387
if test x"$add_ons" != x; then
388
for f in $add_ons; do
393
*** It seems that you're using an old \`crypt' add-on. crypt is now
394
*** part of glibc and using the old add-on will not work with this
395
*** release. Start again with fresh sources and without the old
396
*** \`crypt' add-on.])
400
*** It seems that you're using an old \`localedata' add-on. localedata
401
*** is now part of glibc and using the old add-on will not work with
402
*** this release. Start again with fresh sources and without the old
403
*** \`localedata' add-on.])
408
# Now source each add-on's configure fragment.
409
# The fragments can use $srcdir/$libc_add_on to find themselves,
410
# and test $add_ons_automatic to see if they were explicitly requested.
411
# A fragment can clear (or even change) $libc_add_on to affect
412
# whether it goes into the list to be actually used in the build.
414
for libc_add_on in $add_ons; do
415
# Test whether such a directory really exists.
416
# It can be absolute, or relative to $srcdir, or relative to the build dir.
417
case "$libc_add_on" in
419
libc_add_on_srcdir=$libc_add_on
422
test -d "$srcdir/$libc_add_on" || {
423
if test -d "$libc_add_on"; then
424
libc_add_on="`pwd`/$libc_add_on"
426
AC_MSG_ERROR(add-on directory \"$libc_add_on\" does not exist)
429
libc_add_on_srcdir=$srcdir/$libc_add_on
433
libc_add_on_frag=$libc_add_on_srcdir/configure
434
libc_add_on_canonical=
435
libc_add_on_config_subdirs=
436
if test -r "$libc_add_on_frag"; then
437
AC_MSG_NOTICE(running configure fragment for add-on $libc_add_on)
438
libc_add_on_canonical=unknown
440
. "$libc_add_on_frag"
441
test -z "$libc_add_on" || {
442
configured_add_ons="$configured_add_ons $libc_add_on"
443
if test "x$libc_add_on_canonical" = xunknown; then
444
AC_MSG_ERROR(fragment must set \$libc_add_on_canonical)
446
for d in $libc_add_on_subdirs; do
447
case "$libc_add_on" in
448
/*) subdir_srcdir="$libc_add_on" ;;
449
*) subdir_srcdir="\$(..)$libc_add_on" ;;
453
d="${libc_add_on_canonical:-$libc_add_on}"
459
subdir_srcdir="$subdir_srcdir/$d"
462
d=`echo "$d" | sed 's@/*$@@;s@^.*/@@'`
463
add_on_subdirs="$add_on_subdirs $d"
464
test "$subdir_srcdir" = "\$(..)$d" || config_vars="$config_vars
465
$d-srcdir = $subdir_srcdir"
467
for d in $libc_add_on_config_subdirs; do
470
fragment uses absolute path in \$libc_add_on_config_subdirs) ;;
472
if test ! -d "$libc_add_on_srcdir/$d"; then
473
AC_MSG_ERROR(fragment wants to configure missing directory $d)
475
case "$libc_add_on" in
477
relative path required for add-on using \$libc_add_on_config_subdirs) ;;
479
subdirs="$subdirs $libc_add_on/$d"
483
if test -n "$libc_add_on"; then
484
LIBC_PRECONFIGURE([$libc_add_on_srcdir], [add-on $libc_add_on for])
485
use_add_ons="$use_add_ons $libc_add_on"
486
add_ons_pfx="$add_ons_pfx $libc_add_on/"
487
test -z "$libc_add_on_canonical" ||
488
add_ons_sfx="$add_ons_sfx /$libc_add_on_canonical"
491
# Use echo to strip excess whitespace.
492
add_ons="`echo $use_add_ons`"
495
AC_SUBST(add_on_subdirs)
499
### I put this here to prevent those annoying emails from people who cannot
500
### read and try to compile glibc on unsupported platforms. --drepper
502
### By using the undocumented --enable-hacker-mode option for configure
503
### one can skip this test to make the configuration not fail for unsupported
506
if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then
507
case "$machine-$host_os" in
508
*-linux* | *-gnu* | *-kfreebsd*)
511
echo "*** The GNU C library is currently not available for this platform."
512
echo "*** So far nobody cared to port it and if there is no volunteer it"
513
echo "*** might never happen. So, if you have interest to see glibc on"
514
echo "*** this platform visit"
515
echo "*** http://www.gnu.org/software/libc/porting.html"
516
echo "*** and join the group of porters"
522
dnl We need to use [ and ] for other purposes for a while now.
524
# Expand the configuration machine name into a subdirectory by architecture
525
# type and particular chip. If an add-on configure fragment already set
526
# base_machine, we don't change it.
527
test -n "$base_machine" || case "$machine" in
528
i[34567]86) base_machine=i386 machine=i386/$machine ;;
529
powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;;
530
powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;;
531
s390) base_machine=s390 machine=s390/s390-32 ;;
532
s390x) base_machine=s390 machine=s390/s390-64 ;;
533
sh3*) base_machine=sh machine=sh/sh3 ;;
534
sh4*) base_machine=sh machine=sh/sh4 ;;
536
base_machine=sparc machine=sparc/sparc32 ;;
537
sparcv8 | supersparc | hypersparc)
538
base_machine=sparc machine=sparc/sparc32/sparcv8 ;;
539
sparcv8plus | sparcv8plusa | sparcv9)
540
base_machine=sparc machine=sparc/sparc32/sparcv9 ;;
541
sparcv8plusb | sparcv9b)
542
base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9b ;;
544
base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v ;;
546
base_machine=sparc machine=sparc/sparc32/sparcv9/sparcv9v2 ;;
548
base_machine=sparc machine=sparc/sparc64 ;;
550
base_machine=sparc machine=sparc/sparc64/sparcv9b ;;
552
base_machine=sparc machine=sparc/sparc64/sparcv9v ;;
554
base_machine=sparc machine=sparc/sparc64/sparcv9v2 ;;
555
*) base_machine=$machine ;;
558
AC_SUBST(base_machine)
560
if test "$base_machine" = "i386"; then
561
AC_DEFINE(USE_REGPARMS)
564
# For the multi-arch option we need support in the assembler.
565
AC_CACHE_CHECK([for assembler gnu_indirect_function symbol type support],
566
libc_cv_asm_gnu_indirect_function, [dnl
567
cat > conftest.s <<EOF
568
.type foo,%gnu_indirect_function
570
if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD;
572
libc_cv_asm_gnu_indirect_function=yes
574
libc_cv_asm_gnu_indirect_function=no
578
AC_MSG_CHECKING(whether .text pseudo-op must be used)
579
AC_CACHE_VAL(libc_cv_dot_text, [dnl
580
cat > conftest.s <<EOF
584
if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
585
libc_cv_dot_text=.text
588
if test -z "$libc_cv_dot_text"; then
594
AC_CACHE_CHECK(for assembler global-symbol directive,
595
libc_cv_asm_global_directive, [dnl
596
libc_cv_asm_global_directive=UNKNOWN
597
for ac_globl in .globl .global .EXPORT; do
598
cat > conftest.s <<EOF
603
if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
604
libc_cv_asm_global_directive=${ac_globl}
607
test $libc_cv_asm_global_directive != UNKNOWN && break
609
if test $libc_cv_asm_global_directive = UNKNOWN; then
610
AC_MSG_ERROR(cannot determine asm global directive)
612
AC_DEFINE_UNQUOTED(ASM_GLOBAL_DIRECTIVE, ${libc_cv_asm_global_directive})
615
AC_CACHE_CHECK(for assembler .type directive prefix,
616
libc_cv_asm_type_prefix, [dnl
617
libc_cv_asm_type_prefix=no
618
for ac_try_prefix in '@' '%' '#'; do
619
cat > conftest.s <<EOF
621
${libc_cv_asm_global_directive} foo
622
.type foo, ${ac_try_prefix}object
627
if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
628
libc_cv_asm_type_prefix=${ac_try_prefix}
631
test "x$libc_cv_asm_type_prefix" != xno && break
633
if test "x$libc_cv_asm_type_prefix" != xno; then
634
AC_DEFINE_UNQUOTED(ASM_TYPE_DIRECTIVE_PREFIX, ${libc_cv_asm_type_prefix})
637
if test x"$libc_cv_asm_gnu_indirect_function" != xyes -o x"$libc_cv_asm_type_prefix" = xno; then
638
if test x"$multi_arch" = xyes; then
639
AC_MSG_ERROR([--enable-multi-arch support requires assembler and linker support])
644
if test x"$multi_arch" != xno; then
645
multi_arch_d=/multiarch
648
# Compute the list of sysdep directories for this configuration.
649
# This can take a while to compute.
650
sysdep_dir=$srcdir/sysdeps
651
AC_MSG_CHECKING(sysdep dirs)
652
dnl We need to use [ and ] for other purposes for a while now.
654
# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
655
os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
657
test "x$base_os" != x || case "$os" in
663
base_os=unix/bsd/bsd4.4 ;;
666
# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos.
669
while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do
673
o=`echo $tail | sed 's/[0-9]*$//'`
674
if test $o != $tail; then
677
# For linux-gnu, try linux-gnu, then linux.
678
o=`echo $tail | sed 's/-.*$//'`
679
if test $o != $tail; then
683
# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix.
686
while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do
692
# For sparc/sparc32, try sparc/sparc32 and then sparc.
694
tail=$machine${submachine:+/$submachine}
695
while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do
697
# Prepend the machine's FPU directory unless --without-fp.
698
if test "$with_fp" = yes; then
701
mach="$mach /$1/nofpu"
707
dnl We are done with glob and regexp uses of [ and ]; return to autoconf.
710
# Find what sysdep directories exist.
713
for b in $base ''; do
714
for m0 in $mach ''; do
715
for v in /$vendor ''; do
716
test "$v" = / && continue
717
for o in /$ostry ''; do
718
test "$o" = / && continue
719
for m in $multi_arch_d $mach ''; do
720
for d in $add_ons_pfx ''; do
721
for a in $add_ons_sfx ''; do
722
if test -n "$m0$m0sub$b$v$o$m$msub"; then
723
try_srcdir="${srcdir}/"
727
try="${d}sysdeps$m0$m0sub$b$v$o$m$msub$a"
728
test -n "$enable_debug_configure" &&
729
echo "$0 [DEBUG]: try $try" >&2
730
if test -d "$try_srcdir$try"; then
731
sysnames="$sysnames $try"
732
{ test -n "$o" || test -n "$b"; } && os_used=t
733
{ test -n "$m" || test -n "$m0"; } && machine_used=t
735
x*/$submachine) submachine_used=t ;;
737
if test -n "$d"; then
738
case "$sysnames_add_ons" in
740
*|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
753
# If the assembler supports gnu_indirect_function symbol type and the
754
# architecture supports multi-arch, we enable multi-arch by default.
755
case $sysnames_add_ons$sysnames in
759
test x"$multi_arch" = xdefault && multi_arch=no
762
if test x"$multi_arch" != xno; then
763
AC_DEFINE(USE_MULTIARCH)
767
if test -z "$os_used" && test "$os" != none; then
768
AC_MSG_ERROR(Operating system $os is not supported.)
770
if test -z "$machine_used" && test "$machine" != none; then
771
AC_MSG_ERROR(The $machine is not supported.)
773
if test -z "$submachine_used" && test -n "$submachine"; then
774
AC_MSG_ERROR(The $submachine subspecies of $host_cpu is not supported.)
778
# We have now validated the configuration.
780
# Peek into option-groups.config to check if sysdeps/ieee754/[l]dbl-wrap needs
781
# to be included into $sysnames.
782
grep "OPTION_EGLIBC_LIBM_BIG = n" option-groups.config > /dev/null 2>&1
785
# Expand the list of system names into a full list of directories
786
# from each element's parent name and Implies file (if present).
789
while test $# -gt 0; do
793
case " $names " in *" $name "*)
794
# Already in the list.
798
# Report each name as we discover it, so there is no long pause in output.
799
echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD
801
name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'`
805
*) xsrcdir=$srcdir/ ;;
807
test -n "$enable_debug_configure" &&
808
echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2
810
for implies_file in Implies Implies-before Implies-after; do
811
implies_type=`echo $implies_file | sed s/-/_/`
812
eval ${implies_type}=
813
if test -f $xsrcdir$name/$implies_file; then
814
# Collect more names from the `Implies' file (removing comments).
815
implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/$implies_file`"
816
for x in $implied_candidate; do
818
if test -d $xsrcdir$name_base/$x; then
819
# If !OPTION_EGLIBC_LIBM_BIG, add ieee754/dbl-wrap just before
821
if test "$use_dbl_wrap" = "0"; then
823
ieee754/dbl-64) eval "${implies_type}=\"\$${implies_type} \$name_base/ieee754/dbl-wrap\"" ;;
824
ieee754/ldbl-*) eval "${implies_type}=\"\$${implies_type} \$name_base/ieee754/ldbl-wrap\"" ;;
827
eval "${implies_type}=\"\$${implies_type} \$name_base/\$x\""
830
for d in $add_ons_pfx ''; do
834
*) try_srcdir=$srcdir/ ;;
836
test -n "$enable_debug_configure" &&
837
echo "[DEBUG]: $name $implies_file $x try($d) {$try_srcdir}$try" >&2
838
if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try;
840
# If !OPTION_EGLIBC_LIBM_BIG, add ieee754/dbl-wrap just before
842
if test "$use_dbl_wrap" = "0"; then
844
sysdeps/ieee754/dbl-64)
845
eval "${implies_type}=\"\$${implies_type} sysdeps/ieee754/dbl-wrap\"" ;;
846
sysdeps/ieee754/ldbl-*)
847
eval "${implies_type}=\"\$${implies_type} sysdeps/ieee754/ldbl-wrap\"" ;;
850
eval "${implies_type}=\"\$${implies_type} \$try\""
852
case "$sysnames_add_ons" in
854
*|'') sysnames_add_ons="$sysnames_add_ons $d" ;;
858
if test $found = no; then
859
AC_MSG_WARN($name/$implies_file specifies nonexistent $x)
865
# Add NAME to the list of names.
868
# Find the parent of NAME, using the empty string if it has none.
870
parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`"
873
test -n "$enable_debug_configure" &&
874
echo "[DEBUG]: $name Implies='$Implies' rest='$*' parent='$parent' \
875
Implies_before='$Implies_after' Implies_after='$Implies_after'" >&2
877
# Add the names implied by NAME, and NAME's parent (if it has one), to
878
# the list of names to be processed (the argument list). We prepend the
879
# implied names to the list and append the parent. We want implied
880
# directories to come before further directories inferred from the
881
# configuration components; this ensures that for sysv4, unix/common
882
# (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*)
884
sysnames="`echo $Implies $* $Implies_before $parent $Implies_after`"
885
test -n "$sysnames" && set $sysnames
888
# Add the default directories.
889
default_sysnames="sysdeps/generic"
890
sysnames="$names $default_sysnames"
892
# The other names were emitted during the scan.
893
AC_MSG_RESULT($default_sysnames)
895
# Collect the list of add-ons that supply partial sysdeps trees.
897
for add_on in $add_ons; do
900
*) xsrcdir="$srcdir/" ;;
903
test -d "$xsrcdir$add_on/sysdeps" || {
904
case "$configured_add_ons " in
907
AC_MSG_ERROR(add-on $add_on has no configure fragment or sysdeps tree)
913
sysdeps_add_ons="$sysdeps_add_ons $add_on"
914
case "$sysnames_add_ons" in
917
AC_MSG_WARN(add-on $add_on contributed no sysdeps directories)
922
for d in $sysnames; do
924
$add_on/sysdeps/*) ;;
927
(cd "$xsrcdir$d" && for f in *[[!~]]; do
931
test -d "$ff" || { test -e "$ff" && exit 88; }
935
test -d "$f" || { test -e "$f" && exit 88; }
939
if test $? -eq 88; then
944
if test $found = no; then
945
AC_MSG_WARN(add-on $add_on contributed no useful sysdeps directories)
948
AC_SUBST(sysdeps_add_ons)
954
if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then
955
# The makefiles need to use a different form to find it in $srcdir.
956
INSTALL='\$(..)./scripts/install-sh -c'
961
AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
963
# Accept binutils 2.20 or newer.
964
AC_CHECK_PROG_VER(AS, $AS, --version,
965
[GNU assembler.* \([0-9]*\.[0-9.]*\)],
966
[2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], AS=: critic_missing="$critic_missing as")
967
AC_CHECK_PROG_VER(LD, $LD, --version,
968
[GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
969
[2.1[0-9][0-9]*|2.[2-9][0-9]*|[3-9].*|[1-9][0-9]*], LD=: critic_missing="$critic_missing ld")
971
# These programs are version sensitive.
973
AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
974
[version \([egcygnustpi-]*[0-9.]*\)], [4.[3-9].* | 4.[1-9][0-9].* | [5-9].* ],
975
critic_missing="$critic_missing gcc")
976
AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
977
[GNU Make[^0-9]*\([0-9][0-9.]*\)],
978
[3.79* | 3.[89]*], critic_missing="$critic_missing make")
980
AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
981
[GNU gettext.* \([0-9]*\.[0-9.]*\)],
982
[0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*],
983
MSGFMT=: aux_missing="$aux_missing msgfmt")
984
AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
985
[GNU texinfo.* \([0-9][0-9.]*\)],
986
[4.[5-9]*|4.[1-9][0-9]*|[5-9].*],
987
MAKEINFO=: aux_missing="$aux_missing makeinfo")
988
AC_CHECK_PROG_VER(SED, sed, --version,
989
[GNU sed version \([0-9]*\.[0-9.]*\)],
990
[3.0[2-9]*|3.[1-9]*|[4-9]*],
991
SED=: aux_missing="$aux_missing sed")
993
AC_CHECK_TOOL(READELF, readelf, false)
994
AC_CHECK_TOOL(NM, nm, false)
996
AC_CHECK_PROGS(AUTOCONF, autoconf, no)
998
xno|x|x:) AUTOCONF=no ;;
1001
whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl
1002
if (cd $srcdir; $AUTOCONF $ACFLAGS configure.in > /dev/null 2>&1); then
1003
libc_cv_autoconf_works=yes
1005
libc_cv_autoconf_works=no
1007
test $libc_cv_autoconf_works = yes || AUTOCONF=no
1010
if test "x$AUTOCONF" = xno; then
1011
aux_missing="$aux_missing autoconf"
1014
test -n "$critic_missing" && AC_MSG_ERROR([
1015
*** These critical programs are missing or too old:$critic_missing
1016
*** Check the INSTALL file for required versions.])
1018
test -n "$aux_missing" && AC_MSG_WARN([
1019
*** These auxiliary programs are missing or incompatible versions:$aux_missing
1020
*** some features will be disabled.
1021
*** Check the INSTALL file for required versions.])
1023
# if using special system headers, find out the compiler's sekrit
1024
# header directory and add that to the list. NOTE: Only does the right
1025
# thing on a system that doesn't need fixincludes. (Not presently a problem.)
1026
if test -n "$sysheaders"; then
1027
SYSINCLUDES=-nostdinc
1028
for d in include include-fixed; do
1029
i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" &&
1030
SYSINCLUDES="$SYSINCLUDES -isystem $i"
1032
SYSINCLUDES="$SYSINCLUDES \
1033
-isystem `echo $sysheaders | sed 's/:/ -isystem /g'`"
1034
if test -n "$CXX"; then
1036
cxxversion=`$CXX -dumpversion 2>&AS_MESSAGE_LOG_FD` &&
1037
cxxmachine=`$CXX -dumpmachine 2>&AS_MESSAGE_LOG_FD` &&
1038
cxxplus=`$CXX -print-prog-name=cc1plus`
1039
cxxheaders=`$cxxplus -v /dev/null 2>&1 | sed -n '/ \//{p;q;}' | sed 's/ //'`
1040
test "x$cxxheaders" != x && test "x$i" != "x$cxxheaders" &&
1041
CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders \
1042
-isystem $cxxheaders/$cxxmachine -isystem $cxxheaders/backward"
1045
AC_SUBST(SYSINCLUDES)
1046
AC_SUBST(CXX_SYSINCLUDES)
1048
# Test if LD_LIBRARY_PATH contains the notation for the current directory
1049
# since this would lead to problems installing/building glibc.
1050
# LD_LIBRARY_PATH contains the current directory if one of the following
1052
# - one of the terminals (":" and ";") is the first or last sign
1053
# - two terminals occur directly after each other
1054
# - the path contains an element with a dot in it
1055
AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
1057
case ${LD_LIBRARY_PATH} in
1058
[:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
1059
ld_library_path_setting="contains current directory"
1062
ld_library_path_setting="ok"
1066
AC_MSG_RESULT($ld_library_path_setting)
1067
if test "$ld_library_path_setting" != "ok"; then
1069
*** LD_LIBRARY_PATH shouldn't contain the current directory when
1070
*** building glibc. Please change the environment variable
1071
*** and run configure again.])
1074
AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
1075
if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
1076
libc_cv_gcc_static_libgcc=
1078
libc_cv_gcc_static_libgcc=-static-libgcc
1080
AC_SUBST(libc_cv_gcc_static_libgcc)
1082
AC_PATH_PROG(BASH_SHELL, bash, no)
1083
if test "$BASH_SHELL" != no &&
1084
$BASH_SHELL -c 'test "$BASH_VERSINFO" \
1085
&& test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
1086
libc_cv_have_bash2=yes
1088
libc_cv_have_bash2=no
1090
AC_SUBST(libc_cv_have_bash2)
1092
dnl We need a ksh compatible shell for tzselect.
1093
if test "$BASH_SHELL" = no; then
1094
AC_PATH_PROG(KSH, ksh, no)
1095
if test "$KSH" = no; then
1098
libc_cv_have_ksh=yes
1103
libc_cv_have_ksh=yes
1105
AC_SUBST(libc_cv_have_ksh)
1108
dnl We need gawk for at least gen-sorted.awk and option-groups.awk.
1109
if test "x$AWK" != "xgawk"; then
1110
AC_MSG_ERROR([GLIBC requires GNU awk.])
1113
AC_PATH_PROG(PERL, perl, no)
1114
if test "$PERL" != no &&
1115
(eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
1118
AC_PATH_PROG(INSTALL_INFO, install-info, no,
1119
$PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
1120
AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
1122
AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
1124
[#define __need_size_t
1125
#define __need_wchar_t
1128
#include <stddef.h>], [size_t size; wchar_t wchar;
1130
#error stddef.h ignored __need_*
1132
if (&size == NULL || &wchar == NULL) abort ();],
1133
libc_cv_friendly_stddef=yes,
1134
libc_cv_friendly_stddef=no)])
1135
if test $libc_cv_friendly_stddef = yes; then
1136
config_vars="$config_vars
1137
override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
1140
AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
1141
libc_cv_need_minus_P, [dnl
1142
cat > conftest.S <<EOF
1143
#include "confdefs.h"
1144
/* Nothing whatsoever. */
1146
if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
1147
libc_cv_need_minus_P=no
1149
libc_cv_need_minus_P=yes
1152
if test $libc_cv_need_minus_P = yes; then
1153
config_vars="$config_vars
1154
asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
1157
AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
1158
cat > conftest.s <<EOF
1161
.set glibc_conftest_frobozz,foo
1162
$libc_cv_asm_global_directive glibc_conftest_frobozz
1164
# The alpha-dec-osf1 assembler gives only a warning for `.set'
1165
# (but it doesn't work), so we must do a linking check to be sure.
1166
cat > conftest1.c <<\EOF
1167
extern int glibc_conftest_frobozz;
1168
void _start() { glibc_conftest_frobozz = 1; }
1170
if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1171
-nostartfiles -nostdlib \
1172
-o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1173
libc_cv_asm_set_directive=yes
1175
libc_cv_asm_set_directive=no
1178
if test $libc_cv_asm_set_directive = yes; then
1179
AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
1182
AC_CACHE_CHECK(for assembler gnu_unique_object symbol type,
1183
libc_cv_asm_unique_object, [dnl
1184
cat > conftest.s <<EOF
1187
.type _sym, ${libc_cv_asm_type_prefix}gnu_unique_object
1189
if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1190
libc_cv_asm_unique_object=yes
1192
libc_cv_asm_unique_object=no
1195
if test $libc_cv_asm_unique_object = yes; then
1196
AC_DEFINE(HAVE_ASM_UNIQUE_OBJECT)
1199
AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
1200
[cat > conftest.s <<EOF
1203
.symver _sym,sym@VERS
1205
if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1206
libc_cv_asm_symver_directive=yes
1208
libc_cv_asm_symver_directive=no
1211
AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
1212
if test $libc_cv_asm_symver_directive = yes; then
1213
cat > conftest.s <<EOF
1216
.symver _sym,sym@VERS
1218
cat > conftest.map <<EOF
1227
if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1228
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
1229
-o conftest.so conftest.o
1230
-nostartfiles -nostdlib
1231
-Wl,--version-script,conftest.map
1232
1>&AS_MESSAGE_LOG_FD]);
1234
libc_cv_ld_version_script_option=yes
1236
libc_cv_ld_version_script_option=no
1239
libc_cv_ld_version_script_option=no
1242
libc_cv_ld_version_script_option=no
1245
if test $shared != no &&
1246
test $libc_cv_asm_symver_directive = yes &&
1247
test $libc_cv_ld_version_script_option = yes &&
1248
test $enable_versioning = yes; then
1250
AC_DEFINE(DO_VERSIONING)
1254
AC_SUBST(VERSIONING)
1256
if test $shared != no && test $VERSIONING = no; then
1258
*** WARNING: You should not compile GNU libc without versioning. Not using
1259
*** versioning will introduce incompatibilities so that old binaries
1260
*** will not run anymore.
1261
*** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
1263
AC_CACHE_CHECK(for .previous assembler directive,
1264
libc_cv_asm_previous_directive, [dnl
1265
cat > conftest.s <<EOF
1266
.section foo_section
1269
if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1270
libc_cv_asm_previous_directive=yes
1272
libc_cv_asm_previous_directive=no
1275
if test $libc_cv_asm_previous_directive = yes; then
1276
AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
1278
AC_CACHE_CHECK(for .popsection assembler directive,
1279
libc_cv_asm_popsection_directive, [dnl
1280
cat > conftest.s <<EOF
1281
.pushsection foo_section
1284
if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1285
libc_cv_asm_popsection_directive=yes
1287
libc_cv_asm_popsection_directive=no
1290
if test $libc_cv_asm_popsection_directive = yes; then
1291
AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
1294
AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1295
libc_cv_asm_protected_directive, [dnl
1296
cat > conftest.s <<EOF
1302
if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1303
libc_cv_asm_protected_directive=yes
1305
AC_MSG_ERROR(assembler support for symbol visibility is required)
1309
if test $libc_cv_asm_protected_directive = yes; then
1310
AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
1311
libc_cv_visibility_attribute,
1312
[cat > conftest.c <<EOF
1313
int foo __attribute__ ((visibility ("hidden"))) = 1;
1314
int bar __attribute__ ((visibility ("protected"))) = 1;
1316
libc_cv_visibility_attribute=no
1317
if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1318
if grep '\.hidden.*foo' conftest.s >/dev/null; then
1319
if grep '\.protected.*bar' conftest.s >/dev/null; then
1320
libc_cv_visibility_attribute=yes
1324
rm -f conftest.{c,s}
1326
if test $libc_cv_visibility_attribute != yes; then
1327
AC_MSG_ERROR(compiler support for visibility attribute is required)
1331
if test $libc_cv_visibility_attribute = yes; then
1332
AC_CACHE_CHECK(for broken __attribute__((visibility())),
1333
libc_cv_broken_visibility_attribute,
1334
[cat > conftest.c <<EOF
1336
int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1337
int bar (int x) { return x; }
1339
libc_cv_broken_visibility_attribute=yes
1340
if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1342
if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
1344
libc_cv_broken_visibility_attribute=no
1347
rm -f conftest.c conftest.s
1349
if test $libc_cv_broken_visibility_attribute = yes; then
1350
AC_MSG_ERROR(working compiler support for visibility attribute is required)
1354
AC_CACHE_CHECK(for broken __attribute__((alias())),
1355
libc_cv_broken_alias_attribute,
1356
[cat > conftest.c <<EOF
1357
extern int foo (int x) __asm ("xyzzy");
1358
int bar (int x) { return x; }
1359
extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1361
extern __typeof (dfoo) dfoo __asm ("abccb");
1364
libc_cv_broken_alias_attribute=yes
1365
if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1366
if grep 'xyzzy' conftest.s >/dev/null &&
1367
grep 'abccb' conftest.s >/dev/null; then
1368
libc_cv_broken_alias_attribute=no
1371
rm -f conftest.c conftest.s
1373
if test $libc_cv_broken_alias_attribute = yes; then
1374
AC_MSG_ERROR(working alias attribute support required)
1377
if test $libc_cv_visibility_attribute = yes; then
1378
AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1379
libc_cv_have_sdata_section,
1380
[echo "int i;" > conftest.c
1381
libc_cv_have_sdata_section=no
1382
if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1383
| grep '\.sdata' >/dev/null; then
1384
libc_cv_have_sdata_section=yes
1386
rm -f conftest.c conftest.so
1388
if test $libc_cv_have_sdata_section = yes; then
1389
AC_DEFINE(HAVE_SDATA_SECTION)
1393
AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1394
libc_cv_initfini_array, [dnl
1395
LIBC_TRY_LINK_STATIC([
1396
int foo (void) { return 1; }
1397
int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
1399
[if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
1400
libc_cv_initfini_array=yes
1402
libc_cv_initfini_array=no
1404
[libc_cv_initfini_array=no])
1406
if test $libc_cv_initfini_array != yes; then
1407
AC_MSG_ERROR([Need linker with .init_array/.fini_array support.])
1410
AC_CACHE_CHECK(whether to use .ctors/.dtors header and trailer,
1411
libc_cv_ctors_header, [dnl
1412
libc_cv_ctors_header=yes
1413
LIBC_TRY_LINK_STATIC([
1414
__attribute__ ((constructor)) void ctor (void) { asm (""); }
1415
__attribute__ ((destructor)) void dtor (void) { asm (""); }
1418
AS_IF([$READELF -WS conftest$ac_exeext | $AWK '
1419
{ gsub(/\@<:@ */, "@<:@") }
1420
$2 == ".ctors" || $2 == ".dtors" {
1421
size = strtonum("0x" $6)
1422
align = strtonum("0x" $NF)
1424
stub@<:@$2@:>@ = size == align * 2
1427
ctors_ok = !seen@<:@".ctors"@:>@ || stub@<:@".ctors"@:>@
1428
dtors_ok = !seen@<:@".dtors"@:>@ || stub@<:@".dtors"@:>@
1429
exit ((ctors_ok && dtors_ok) ? 0 : 1)
1431
'], [libc_cv_ctors_header=no])
1433
AC_MSG_ERROR([missing __attribute__ ((constructor)) support??])
1436
if test $libc_cv_ctors_header = no; then
1437
AC_DEFINE(NO_CTORS_DTORS_SECTIONS)
1440
AC_CACHE_CHECK(for libunwind-support in compiler,
1441
libc_cv_cc_with_libunwind, [
1442
cat > conftest.c <<EOF
1443
int main (void) { return 0; }
1445
if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
1446
conftest.c -v 2>&1 >/dev/null | grep -q " -lunwind "; then
1447
libc_cv_cc_with_libunwind=yes
1449
libc_cv_cc_with_libunwind=no
1452
AC_SUBST(libc_cv_cc_with_libunwind)
1453
if test $libc_cv_cc_with_libunwind = yes; then
1454
AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
1457
AC_CACHE_CHECK(for -z nodelete option,
1458
libc_cv_z_nodelete, [dnl
1459
cat > conftest.c <<EOF
1460
int _start (void) { return 42; }
1462
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1463
-fPIC -shared -o conftest.so conftest.c
1464
-nostartfiles -nostdlib
1465
-Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
1467
libc_cv_z_nodelete=yes
1469
AC_MSG_ERROR(linker with -z nodelete support required)
1473
AC_CACHE_CHECK(for -z nodlopen option,
1474
libc_cv_z_nodlopen, [dnl
1475
cat > conftest.c <<EOF
1476
int _start (void) { return 42; }
1478
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1479
-fPIC -shared -o conftest.so conftest.c
1480
-nostartfiles -nostdlib
1481
-Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
1483
libc_cv_z_nodlopen=yes
1485
AC_MSG_ERROR(linker with -z nodlopen support required)
1489
AC_CACHE_CHECK(for -z initfirst option,
1490
libc_cv_z_initfirst, [dnl
1491
cat > conftest.c <<EOF
1492
int _start (void) { return 42; }
1494
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1495
-fPIC -shared -o conftest.so conftest.c
1496
-nostartfiles -nostdlib
1497
-Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
1499
libc_cv_z_initfirst=yes
1501
AC_MSG_ERROR(linker with -z initfirst support required)
1505
# Add-on fragments can set these for other machines.
1506
libc_commonpagesize=${libc_commonpagesize:-no}
1507
libc_relro_required=${libc_relro_required:-no}
1508
case "$base_machine" in
1509
i[[34567]]86 | x86_64 | powerpc* | s390*)
1510
libc_commonpagesize=0x1000
1511
libc_relro_required=yes
1514
libc_commonpagesize=0x2000
1515
libc_relro_required=yes
1519
if test $libc_commonpagesize != no; then
1520
AC_CACHE_CHECK(for -z relro option,
1521
libc_cv_z_relro, [dnl
1523
AC_LANG_CONFTEST([AC_LANG_SOURCE([[
1524
int _start (void) { return 42; }
1525
extern void _exit (int);
1526
/* Since these pointers are const, they should go in rodata.
1527
Since they refer to functions that have to be resolved by
1528
dynamic linking, they should instead go in RELRO data. */
1529
const void *const relro[] = { &_start, &_exit, 0 };
1530
/* GNU ld fails to produce RELRO data when it's very small and there is no
1531
normal writable data following it, or if only uninitialized (.bss) data
1532
follows it, or only very small writable data. */
1533
int data[0x10000] = { 1, };
1535
cat > conftest.awk <<\EOF
1538
commonpagesize = strtonum(commonpagesize)
1540
{ print "LINE:", $0 > "/dev/stderr" }
1542
vaddr = strtonum($3)
1543
memsz = strtonum($6)
1545
printf "vaddr %#x memsz %#x end %#x commonpagesize %#x\n", \
1546
vaddr, memsz, end, commonpagesize > "/dev/stderr"
1547
result = (end % commonpagesize == 0) ? "yes" : "broken"
1549
END { print result }
1551
AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1552
-fPIC -shared -o conftest.so conftest.c
1553
-nostartfiles -nostdlib
1554
-Wl,-z,relro 1>&AS_MESSAGE_LOG_FD]) &&
1555
AC_TRY_COMMAND([$READELF -Wl conftest.so > conftest.ph]) &&
1557
$AWK -v commonpagesize=$libc_commonpagesize -f conftest.awk
1558
conftest.ph > conftest.cps
1560
libc_cv_z_relro=`cat conftest.cps 2>&AS_MESSAGE_LOG_FD`
1562
if { test "x$libc_relro_required" = xyes &&
1563
test "x$libc_cv_z_relro" != xyes
1566
AC_MSG_ERROR(linker with -z relro support required)
1569
AC_MSG_WARN([missing architecture parameter to check for working -z relro])
1572
AC_CACHE_CHECK(for -Bgroup option,
1573
libc_cv_Bgroup, [dnl
1574
cat > conftest.c <<EOF
1575
int _start (void) { return 42; }
1577
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1578
-fPIC -shared -o conftest.so conftest.c
1579
-Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1586
AC_SUBST(libc_cv_Bgroup)
1589
AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1590
libc_cv_as_noexecstack, [dnl
1591
cat > conftest.c <<EOF
1594
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1595
-S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
1596
&& grep -q .note.GNU-stack conftest.s \
1597
&& AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
1598
-c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1600
libc_cv_as_noexecstack=yes
1602
libc_cv_as_noexecstack=no
1605
if test $libc_cv_as_noexecstack = yes; then
1606
ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1608
AC_SUBST(ASFLAGS_config)
1610
AC_CACHE_CHECK(for -z combreloc,
1611
libc_cv_z_combreloc, [dnl
1612
cat > conftest.c <<EOF
1613
extern int bar (int);
1615
int foo (void) { return bar (mumble); }
1617
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1618
-fPIC -shared -o conftest.so conftest.c
1619
-nostdlib -nostartfiles
1620
-Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
1622
dnl The following test is a bit weak. We must use a tool which can test
1623
dnl cross-platform since the gcc used can be a cross compiler. Without
1624
dnl introducing new options this is not easily doable. Instead use a tool
1625
dnl which always is cross-platform: readelf. To detect whether -z combreloc
1626
dnl look for a section named .rel.dyn.
1627
if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1628
libc_cv_z_combreloc=yes
1630
libc_cv_z_combreloc=no
1633
libc_cv_z_combreloc=no
1636
if test "$libc_cv_z_combreloc" = yes; then
1637
AC_DEFINE(HAVE_Z_COMBRELOC)
1639
AC_SUBST(libc_cv_z_combreloc)
1641
AC_CACHE_CHECK(for -z execstack,
1642
libc_cv_z_execstack, [dnl
1643
cat > conftest.c <<EOF
1644
int _start (void) { return 42; }
1646
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1647
-fPIC -shared -o conftest.so conftest.c
1648
-Wl,-z,execstack -nostdlib
1649
1>&AS_MESSAGE_LOG_FD])
1651
libc_cv_z_execstack=yes
1653
libc_cv_z_execstack=no
1656
AC_SUBST(libc_cv_z_execstack)
1658
AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
1659
LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no])
1662
AC_SUBST(libc_cv_fpie)
1664
AC_CACHE_CHECK(for --hash-style option,
1665
libc_cv_hashstyle, [dnl
1666
cat > conftest.c <<EOF
1667
int _start (void) { return 42; }
1669
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1670
-fPIC -shared -o conftest.so conftest.c
1671
-Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
1673
libc_cv_hashstyle=yes
1675
libc_cv_hashstyle=no
1678
AC_SUBST(libc_cv_hashstyle)
1680
# The linker's default -shared behavior is good enough if it
1681
# does these things that our custom linker scripts ensure that
1682
# all allocated NOTE sections come first.
1683
if test "$use_default_link" = default; then
1684
AC_CACHE_CHECK([for sufficient default -shared layout],
1685
libc_cv_use_default_link, [dnl
1686
libc_cv_use_default_link=no
1687
cat > conftest.s <<\EOF
1688
.section .note.a,"a",%note
1693
.section .note.b,"a",%note
1699
if AC_TRY_COMMAND([dnl
1700
${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD]) &&
1701
ac_try=`$READELF -S conftest.so | sed -n \
1703
s/^ *\[ *[1-9][0-9]*\] *\([^ ][^ ]*\) *\([^ ][^ ]*\) .*$/\2 \1/
1709
libc_seen_a=no libc_seen_b=no
1711
while test $# -ge 2 -a "$1" = NOTE; do
1713
.note.a) libc_seen_a=yes ;;
1714
.note.b) libc_seen_b=yes ;;
1718
case "$libc_seen_a$libc_seen_b" in
1720
libc_cv_use_default_link=yes
1723
echo >&AS_MESSAGE_LOG_FD "\
1724
$libc_seen_a$libc_seen_b from:
1730
use_default_link=$libc_cv_use_default_link
1733
AC_CACHE_CHECK(linker output format, libc_cv_output_format, [dnl
1734
if libc_cv_output_format=`
1735
${CC-cc} -nostartfiles -nostdlib -Wl,--print-output-format 2>&AS_MESSAGE_LOG_FD`
1739
libc_cv_output_format=
1741
test -n "$libc_cv_output_format" || libc_cv_output_format=unknown])
1742
AC_SUBST(libc_cv_output_format)
1744
AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl
1745
cat > conftest.c <<EOF
1748
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-anchors
1749
conftest.c 1>&AS_MESSAGE_LOG_FD])
1751
libc_cv_fno_toplevel_reorder=yes
1753
libc_cv_fno_toplevel_reorder=no
1756
if test $libc_cv_fno_toplevel_reorder = yes; then
1757
fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
1759
fno_unit_at_a_time=-fno-unit-at-a-time
1761
AC_SUBST(fno_unit_at_a_time)
1763
AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
1764
LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector],
1768
AC_SUBST(libc_cv_ssp)
1770
AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl
1771
cat > conftest.c <<EOF
1773
#ifdef __GNUC_GNU_INLINE__
1774
main () { return 0;}
1779
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -std=gnu99 -fgnu89-inline
1780
-o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD])
1782
libc_cv_gnu89_inline=yes
1784
libc_cv_gnu89_inline=no
1787
if test $libc_cv_gnu89_inline = yes; then
1788
gnu89_inline=-fgnu89-inline
1792
AC_SUBST(gnu89_inline)
1794
AC_CACHE_CHECK(whether cc puts quotes around section names,
1795
libc_cv_have_section_quotes,
1796
[cat > conftest.c <<EOF
1797
static const int foo
1798
__attribute__ ((section ("bar"))) = 1;
1800
if ${CC-cc} -S conftest.c -o conftest.s; then
1801
if grep '\.section.*"bar"' conftest.s >/dev/null; then
1802
libc_cv_have_section_quotes=yes
1804
libc_cv_have_section_quotes=no
1807
libc_cv_have_section_quotes=unknown
1809
rm -f conftest.{c,s}
1811
if test $libc_cv_have_section_quotes = yes; then
1812
AC_DEFINE(HAVE_SECTION_QUOTES)
1815
AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1817
cat > conftest.s <<EOF
1819
${libc_cv_asm_global_directive} foo
1822
.weak bar; bar = foo
1824
if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1825
libc_cv_asm_weak_directive=yes
1827
libc_cv_asm_weak_directive=no
1831
if test $libc_cv_asm_weak_directive = no; then
1832
AC_CACHE_CHECK(for assembler .weakext directive,
1833
libc_cv_asm_weakext_directive,
1835
cat > conftest.s <<EOF
1837
${libc_cv_asm_global_directive} foo
1841
${libc_cv_asm_global_directive} baz
1844
if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1845
libc_cv_asm_weakext_directive=yes
1847
libc_cv_asm_weakext_directive=no
1853
if test $libc_cv_asm_weak_directive = yes; then
1854
AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1855
elif test $libc_cv_asm_weakext_directive = yes; then
1856
AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1859
AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
1861
sparc/sparc64*) cfi_offset=2047;;
1864
cat > conftest.s <<EOF
1866
.type func,%function
1870
.cfi_rel_offset 1, $cfi_offset
1873
if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1874
libc_cv_asm_cfi_directives=yes
1876
libc_cv_asm_cfi_directives=no
1879
if test $libc_cv_asm_cfi_directives = yes; then
1880
AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
1883
AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1884
cat > conftest.c <<\EOF
1889
dnl No \ in command here because it ends up inside ''.
1890
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1891
-nostdlib -nostartfiles -Wl,--no-whole-archive
1892
-o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1893
libc_cv_ld_no_whole_archive=yes
1895
libc_cv_ld_no_whole_archive=no
1898
if test $libc_cv_ld_no_whole_archive = no; then
1899
AC_MSG_ERROR([support for --no-whole-archive is needed])
1902
AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1903
cat > conftest.c <<\EOF
1908
dnl No \ in command here because it ends up inside ''.
1909
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1910
-nostdlib -nostartfiles -fexceptions
1911
-o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1912
libc_cv_gcc_exceptions=yes
1914
libc_cv_gcc_exceptions=no
1917
if test $libc_cv_gcc_exceptions = yes; then
1918
exceptions=-fexceptions
1920
AC_SUBST(exceptions)dnl
1922
if test "$host_cpu" = powerpc ; then
1923
# Check for a bug present in at least versions 2.8.x of GCC
1924
# and versions 1.0.x of EGCS.
1925
AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1926
AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1927
libc_cv_c_asmcr0_bug='no',
1928
libc_cv_c_asmcr0_bug='yes')])
1929
if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1930
AC_DEFINE(BROKEN_PPC_ASM_CR0)
1934
AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1935
cat > conftest.c <<\EOF
1938
__builtin_memset (x, 0, 1000);
1942
if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1944
libc_cv_gcc_builtin_memset=no
1946
libc_cv_gcc_builtin_memset=yes
1949
if test "$libc_cv_gcc_builtin_memset" = yes ; then
1950
AC_DEFINE(HAVE_BUILTIN_MEMSET)
1953
AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1954
cat > conftest.c <<\EOF
1955
extern char *strstr (const char *, const char *) __asm ("my_strstr");
1956
char *foo (const char *a, const char *b)
1958
return __builtin_strstr (a, b);
1962
if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
1964
libc_cv_gcc_builtin_redirection=yes
1966
libc_cv_gcc_builtin_redirection=no
1969
if test "$libc_cv_gcc_builtin_redirection" = no; then
1970
AC_MSG_ERROR([support for the symbol redirection needed])
1973
dnl Check whether the compiler supports the __thread keyword.
1974
AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1975
[cat > conftest.c <<\EOF
1976
__thread int a = 42;
1978
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
1979
libc_cv_gcc___thread=yes
1981
libc_cv_gcc___thread=no
1984
if test "$libc_cv_gcc___thread" = no; then
1985
AC_MSG_ERROR([support for the __thread keyword is required])
1988
dnl Check whether the compiler supports the tls_model attribute.
1989
AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1990
cat > conftest.c <<\EOF
1991
extern __thread int a __attribute__((tls_model ("initial-exec")));
1993
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
1994
libc_cv_gcc_tls_model_attr=yes
1996
libc_cv_gcc_tls_model_attr=no
1999
if test "$libc_cv_gcc_tls_model_attr" = no; then
2000
AC_MSG_ERROR([support for the tls_model attribute is required])
2003
dnl Determine how to disable generation of FMA instructions.
2004
AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
2005
libc_cv_cc_nofma, [dnl
2007
for opt in -ffp-contract=off -mno-fused-madd; do
2008
LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
2011
if test -n "$submachine"; then
2012
AC_CACHE_CHECK([for compiler option for CPU variant],
2013
libc_cv_cc_submachine, [dnl
2014
libc_cv_cc_submachine=no
2015
for opt in "-march=$submachine" "-mcpu=$submachine"; do
2016
LIBC_TRY_CC_OPTION([$opt], [
2017
libc_cv_cc_submachine="$opt"
2020
if test "x$libc_cv_cc_submachine" = xno; then
2021
AC_MSG_ERROR([${CC-cc} does not support $submachine])
2024
AC_SUBST(libc_cv_cc_submachine)
2026
dnl Check whether we have the gd library available.
2027
AC_MSG_CHECKING(for libgd)
2028
if test "$with_gd" != "no"; then
2029
old_CFLAGS="$CFLAGS"
2030
CFLAGS="$CFLAGS $libgd_include"
2031
old_LDFLAGS="$LDFLAGS"
2032
LDFLAGS="$LDFLAGS $libgd_ldflags"
2034
LIBS="$LIBS -lgd -lpng -lz -lm"
2035
AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
2036
CFLAGS="$old_CFLAGS"
2037
LDFLAGS="$old_LDFLAGS"
2042
AC_MSG_RESULT($LIBGD)
2046
if test x$with_selinux = xno ; then
2049
# See if we have the SELinux library
2050
AC_CHECK_LIB(selinux, is_selinux_enabled,
2051
have_selinux=yes, have_selinux=no)
2052
# See if we have the SELinux header with the NSCD permissions in it.
2053
if test x$have_selinux = xyes ; then
2054
AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h])
2055
AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
2056
[#ifdef NSCD__SHMEMHOST
2059
#error NSCD__SHMEMHOST not defined
2061
have_selinux=yes, have_selinux=no)
2062
AC_MSG_RESULT($have_selinux)
2065
if test x$with_selinux = xyes ; then
2066
if test x$have_selinux = xno ; then
2067
AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found])
2071
# Check if we're building with SELinux support.
2072
if test "x$have_selinux" = xyes; then
2073
AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
2075
# See if we have the libaudit library
2076
AC_CHECK_LIB(audit, audit_log_user_avc_message,
2077
have_libaudit=yes, have_libaudit=no)
2078
if test "x$have_libaudit" = xyes; then
2079
AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
2081
AC_SUBST(have_libaudit)
2083
# See if we have the libcap library
2084
AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
2085
if test "x$have_libcap" = xyes; then
2086
AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
2088
AC_SUBST(have_libcap)
2090
AC_SUBST(have_selinux)
2092
dnl check for the size of 'long double'.
2093
AC_CHECK_SIZEOF(long double, 0)
2094
sizeof_long_double=$ac_cv_sizeof_long_double
2095
AC_SUBST(sizeof_long_double)
2098
dnl Check for silly hacked compilers predefining _FORTIFY_SOURCE.
2099
dnl Since we are building the implementations of the fortified functions here,
2100
dnl having the macro defined interacts very badly.
2101
AC_CACHE_CHECK([for _FORTIFY_SOURCE predefine], libc_cv_predef_fortify_source,
2102
[AC_TRY_COMPILE([], [
2103
#ifdef _FORTIFY_SOURCE
2106
[libc_cv_predef_fortify_source=no],
2107
[libc_cv_predef_fortify_source=yes])])
2108
if test $libc_cv_predef_fortify_source = yes; then
2109
CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE"
2113
dnl Check for silly hacked compilers inserting -fstack-protector.
2114
dnl This breaks badly for the early startup code we compile, since
2115
dnl the compiled code can refer to a magic machine-dependent location
2116
dnl for the canary value before we have sufficient setup for that to
2117
dnl work. It's also questionable to build all of libc with this flag
2118
dnl even when you're doing that for most applications you build, since
2119
dnl libc's code is so heavily-used and performance-sensitive. If we
2120
dnl ever really want to make that work, it should be enabled explicitly
2121
dnl in the libc build, not inherited from implicit compiler settings.
2122
AC_CACHE_CHECK([whether $CC implicitly enables -fstack-protector],
2123
libc_cv_predef_stack_protector, [
2124
AC_TRY_COMPILE([extern void foobar (char *);],
2125
[char large_array[2048]; foobar (large_array);], [
2126
libc_undefs=`$NM -u conftest.o |
2127
LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \
2128
2>&AS_MESSAGE_LOG_FD` || {
2129
AC_MSG_ERROR([confusing output from $NM -u])
2131
echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'"
2132
# On some architectures, there are architecture-specific undefined
2133
# symbols (resolved by the linker), so filter out unknown symbols.
2134
# This will fail to produce the correct result if the compiler
2135
# defaults to -fstack-protector but this produces an undefined symbol
2136
# other than __stack_chk_fail. However, compilers like that have not
2137
# been encountered in practice.
2138
libc_undefs=`echo "$libc_undefs" | egrep '^(foobar|__stack_chk_fail)$'`
2139
case "$libc_undefs" in
2140
foobar) libc_cv_predef_stack_protector=no ;;
2142
foobar') libc_cv_predef_stack_protector=yes ;;
2143
*) AC_MSG_ERROR([unexpected symbols in test: $libc_undefs]) ;;
2145
[AC_MSG_ERROR([test compilation failed])])
2148
if test $libc_cv_predef_stack_protector = yes; then
2149
libc_extra_cflags=-fno-stack-protector
2151
AC_SUBST(libc_extra_cflags)
2153
### End of automated tests.
2154
### Now run sysdeps configure fragments.
2156
# They also can set these variables.
2158
ldd_rewrite_script=no
2159
libc_cv_sysconfdir=$sysconfdir
2160
libc_cv_localstatedir=$localstatedir
2161
libc_cv_gcc_unwind_find_fde=no
2164
# Iterate over all the sysdep directories we will use, running their
2165
# configure fragments.
2166
for dir in $sysnames; do
2169
*) dest=$srcdir/$dir ;;
2171
if test -r $dest/configure; then
2172
AC_MSG_RESULT(running configure fragment for $dir)
2177
if test x$libc_cv_gcc_unwind_find_fde = xyes; then
2178
AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
2180
AC_SUBST(libc_cv_gcc_unwind_find_fde)
2182
# Test for old glibc 2.0.x headers so that they can be removed properly
2183
# Search only in includedir.
2184
AC_MSG_CHECKING(for old glibc 2.0.x headers)
2185
if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
2187
old_glibc_headers=yes
2189
old_glibc_headers=no
2191
AC_MSG_RESULT($old_glibc_headers)
2192
if test ${old_glibc_headers} = yes; then
2193
AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
2194
AC_MSG_WARN(*** be removed.)
2196
AC_SUBST(old_glibc_headers)
2198
AC_SUBST(libc_cv_slibdir)
2199
AC_SUBST(libc_cv_localedir)
2200
AC_SUBST(libc_cv_sysconfdir)
2201
AC_SUBST(libc_cv_localstatedir)
2202
AC_SUBST(libc_cv_rootsbindir)
2203
AC_SUBST(libc_cv_forced_unwind)
2205
dnl sysdeps/CPU/configure.in checks set this via arch-specific asm tests
2206
AC_SUBST(libc_cv_cpp_asm_debuginfo)
2207
AC_SUBST(libc_cv_cc_sse4)
2208
AC_SUBST(libc_cv_cc_avx)
2209
AC_SUBST(libc_cv_cc_sse2avx)
2210
AC_SUBST(libc_cv_cc_novzeroupper)
2211
AC_SUBST(libc_cv_cc_fma4)
2212
AC_SUBST(libc_cv_cc_nofma)
2213
AC_SUBST(libc_cv_as_i686)
2214
AC_SUBST(libc_cv_sparc_as_vis3)
2216
AC_SUBST(use_ldconfig)
2217
AC_SUBST(ldd_rewrite_script)
2222
AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
2223
[libc_cv_pic_default=yes
2224
cat > conftest.c <<EOF
2225
#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
2226
# error PIC is default.
2229
if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
2230
libc_cv_pic_default=no
2233
AC_SUBST(libc_cv_pic_default)
2236
AC_SUBST(static_nss)
2240
dnl See sysdeps/mach/configure.in for this variable.
2241
AC_SUBST(mach_interface_list)
2243
if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
2246
config_makefile=Makefile
2249
VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
2250
RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
2254
AC_CONFIG_FILES([config.make ${config_makefile}])
2255
AC_CONFIG_COMMANDS([default],[[
2256
case $CONFIG_FILES in *config.make*)
2257
echo "$config_vars" >> config.make;;
2259
test -d bits || mkdir bits]],[[config_vars='$config_vars']])