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
for d in include "$cxxmachine/include"; do
1039
i=../../../../$d/c++/$cxxversion
1040
cxxheaders=`$CXX -print-file-name="$i"` &&
1041
test "x$cxxheaders" != x && test "x$i" != "x$cxxheaders" &&
1042
CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders \
1043
-isystem $cxxheaders/$cxxmachine -isystem $cxxheaders/backward"
1047
AC_SUBST(SYSINCLUDES)
1048
AC_SUBST(CXX_SYSINCLUDES)
1050
# Test if LD_LIBRARY_PATH contains the notation for the current directory
1051
# since this would lead to problems installing/building glibc.
1052
# LD_LIBRARY_PATH contains the current directory if one of the following
1054
# - one of the terminals (":" and ";") is the first or last sign
1055
# - two terminals occur directly after each other
1056
# - the path contains an element with a dot in it
1057
AC_MSG_CHECKING(LD_LIBRARY_PATH variable)
1059
case ${LD_LIBRARY_PATH} in
1060
[:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
1061
ld_library_path_setting="contains current directory"
1064
ld_library_path_setting="ok"
1068
AC_MSG_RESULT($ld_library_path_setting)
1069
if test "$ld_library_path_setting" != "ok"; then
1071
*** LD_LIBRARY_PATH shouldn't contain the current directory when
1072
*** building glibc. Please change the environment variable
1073
*** and run configure again.])
1076
AC_CACHE_CHECK(whether GCC supports -static-libgcc, libc_cv_gcc_static_libgcc, [dnl
1077
if $CC -v -static-libgcc 2>&1 | grep -q 'unrecognized option.*static-libgcc'; then
1078
libc_cv_gcc_static_libgcc=
1080
libc_cv_gcc_static_libgcc=-static-libgcc
1082
AC_SUBST(libc_cv_gcc_static_libgcc)
1084
AC_PATH_PROG(BASH_SHELL, bash, no)
1085
if test "$BASH_SHELL" != no &&
1086
$BASH_SHELL -c 'test "$BASH_VERSINFO" \
1087
&& test "$BASH_VERSINFO" -ge 2 >&/dev/null'; then
1088
libc_cv_have_bash2=yes
1090
libc_cv_have_bash2=no
1092
AC_SUBST(libc_cv_have_bash2)
1094
dnl We need a ksh compatible shell for tzselect.
1095
if test "$BASH_SHELL" = no; then
1096
AC_PATH_PROG(KSH, ksh, no)
1097
if test "$KSH" = no; then
1100
libc_cv_have_ksh=yes
1105
libc_cv_have_ksh=yes
1107
AC_SUBST(libc_cv_have_ksh)
1110
dnl We need gawk for at least gen-sorted.awk and option-groups.awk.
1111
if test "x$AWK" != "xgawk"; then
1112
AC_MSG_ERROR([GLIBC requires GNU awk.])
1115
AC_PATH_PROG(PERL, perl, no)
1116
if test "$PERL" != no &&
1117
(eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then
1120
AC_PATH_PROG(INSTALL_INFO, install-info, no,
1121
$PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
1122
AC_PATH_PROG(BISON, bison, no, $PATH:/usr/local/bin:/usr/bin:/bin)
1124
AC_CACHE_CHECK(for libc-friendly stddef.h, libc_cv_friendly_stddef, [dnl
1126
[#define __need_size_t
1127
#define __need_wchar_t
1130
#include <stddef.h>], [size_t size; wchar_t wchar;
1132
#error stddef.h ignored __need_*
1134
if (&size == NULL || &wchar == NULL) abort ();],
1135
libc_cv_friendly_stddef=yes,
1136
libc_cv_friendly_stddef=no)])
1137
if test $libc_cv_friendly_stddef = yes; then
1138
config_vars="$config_vars
1139
override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
1142
AC_CACHE_CHECK(whether we need to use -P to assemble .S files,
1143
libc_cv_need_minus_P, [dnl
1144
cat > conftest.S <<EOF
1145
#include "confdefs.h"
1146
/* Nothing whatsoever. */
1148
if AC_TRY_COMMAND(${CC-cc} $CPPFLAGS $ASFLAGS -c conftest.S 1>&AS_MESSAGE_LOG_FD); then
1149
libc_cv_need_minus_P=no
1151
libc_cv_need_minus_P=yes
1154
if test $libc_cv_need_minus_P = yes; then
1155
config_vars="$config_vars
1156
asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
1159
AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl
1160
cat > conftest.s <<EOF
1163
.set glibc_conftest_frobozz,foo
1164
$libc_cv_asm_global_directive glibc_conftest_frobozz
1166
# The alpha-dec-osf1 assembler gives only a warning for `.set'
1167
# (but it doesn't work), so we must do a linking check to be sure.
1168
cat > conftest1.c <<\EOF
1169
extern int glibc_conftest_frobozz;
1170
void _start() { glibc_conftest_frobozz = 1; }
1172
if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \
1173
-nostartfiles -nostdlib \
1174
-o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1175
libc_cv_asm_set_directive=yes
1177
libc_cv_asm_set_directive=no
1180
if test $libc_cv_asm_set_directive = yes; then
1181
AC_DEFINE(HAVE_ASM_SET_DIRECTIVE)
1184
AC_CACHE_CHECK(for assembler gnu_unique_object symbol type,
1185
libc_cv_asm_unique_object, [dnl
1186
cat > conftest.s <<EOF
1189
.type _sym, ${libc_cv_asm_type_prefix}gnu_unique_object
1191
if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1192
libc_cv_asm_unique_object=yes
1194
libc_cv_asm_unique_object=no
1197
if test $libc_cv_asm_unique_object = yes; then
1198
AC_DEFINE(HAVE_ASM_UNIQUE_OBJECT)
1201
AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
1202
[cat > conftest.s <<EOF
1205
.symver _sym,sym@VERS
1207
if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1208
libc_cv_asm_symver_directive=yes
1210
libc_cv_asm_symver_directive=no
1213
AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
1214
if test $libc_cv_asm_symver_directive = yes; then
1215
cat > conftest.s <<EOF
1218
.symver _sym,sym@VERS
1220
cat > conftest.map <<EOF
1229
if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
1230
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
1231
-o conftest.so conftest.o
1232
-nostartfiles -nostdlib
1233
-Wl,--version-script,conftest.map
1234
1>&AS_MESSAGE_LOG_FD]);
1236
libc_cv_ld_version_script_option=yes
1238
libc_cv_ld_version_script_option=no
1241
libc_cv_ld_version_script_option=no
1244
libc_cv_ld_version_script_option=no
1247
if test $shared != no &&
1248
test $libc_cv_asm_symver_directive = yes &&
1249
test $libc_cv_ld_version_script_option = yes &&
1250
test $enable_versioning = yes; then
1252
AC_DEFINE(DO_VERSIONING)
1256
AC_SUBST(VERSIONING)
1258
if test $shared != no && test $VERSIONING = no; then
1260
*** WARNING: You should not compile GNU libc without versioning. Not using
1261
*** versioning will introduce incompatibilities so that old binaries
1262
*** will not run anymore.
1263
*** For versioning you need recent binutils (binutils-2.8.1.0.23 or newer)."
1265
AC_CACHE_CHECK(for .previous assembler directive,
1266
libc_cv_asm_previous_directive, [dnl
1267
cat > conftest.s <<EOF
1268
.section foo_section
1271
if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1272
libc_cv_asm_previous_directive=yes
1274
libc_cv_asm_previous_directive=no
1277
if test $libc_cv_asm_previous_directive = yes; then
1278
AC_DEFINE(HAVE_ASM_PREVIOUS_DIRECTIVE)
1280
AC_CACHE_CHECK(for .popsection assembler directive,
1281
libc_cv_asm_popsection_directive, [dnl
1282
cat > conftest.s <<EOF
1283
.pushsection foo_section
1286
if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1287
libc_cv_asm_popsection_directive=yes
1289
libc_cv_asm_popsection_directive=no
1292
if test $libc_cv_asm_popsection_directive = yes; then
1293
AC_DEFINE(HAVE_ASM_POPSECTION_DIRECTIVE)
1296
AC_CACHE_CHECK(for .protected and .hidden assembler directive,
1297
libc_cv_asm_protected_directive, [dnl
1298
cat > conftest.s <<EOF
1304
if AC_TRY_COMMAND(${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
1305
libc_cv_asm_protected_directive=yes
1307
AC_MSG_ERROR(assembler support for symbol visibility is required)
1311
if test $libc_cv_asm_protected_directive = yes; then
1312
AC_CACHE_CHECK(whether __attribute__((visibility())) is supported,
1313
libc_cv_visibility_attribute,
1314
[cat > conftest.c <<EOF
1315
int foo __attribute__ ((visibility ("hidden"))) = 1;
1316
int bar __attribute__ ((visibility ("protected"))) = 1;
1318
libc_cv_visibility_attribute=no
1319
if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1320
if grep '\.hidden.*foo' conftest.s >/dev/null; then
1321
if grep '\.protected.*bar' conftest.s >/dev/null; then
1322
libc_cv_visibility_attribute=yes
1326
rm -f conftest.{c,s}
1328
if test $libc_cv_visibility_attribute != yes; then
1329
AC_MSG_ERROR(compiler support for visibility attribute is required)
1333
if test $libc_cv_visibility_attribute = yes; then
1334
AC_CACHE_CHECK(for broken __attribute__((visibility())),
1335
libc_cv_broken_visibility_attribute,
1336
[cat > conftest.c <<EOF
1338
int bar (int x) __asm__ ("foo") __attribute__ ((visibility ("hidden")));
1339
int bar (int x) { return x; }
1341
libc_cv_broken_visibility_attribute=yes
1342
if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1344
if grep '\.hidden[ _]foo' conftest.s >/dev/null; then
1346
libc_cv_broken_visibility_attribute=no
1349
rm -f conftest.c conftest.s
1351
if test $libc_cv_broken_visibility_attribute = yes; then
1352
AC_MSG_ERROR(working compiler support for visibility attribute is required)
1356
AC_CACHE_CHECK(for broken __attribute__((alias())),
1357
libc_cv_broken_alias_attribute,
1358
[cat > conftest.c <<EOF
1359
extern int foo (int x) __asm ("xyzzy");
1360
int bar (int x) { return x; }
1361
extern __typeof (bar) foo __attribute ((weak, alias ("bar")));
1363
extern __typeof (dfoo) dfoo __asm ("abccb");
1366
libc_cv_broken_alias_attribute=yes
1367
if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
1368
if grep 'xyzzy' conftest.s >/dev/null &&
1369
grep 'abccb' conftest.s >/dev/null; then
1370
libc_cv_broken_alias_attribute=no
1373
rm -f conftest.c conftest.s
1375
if test $libc_cv_broken_alias_attribute = yes; then
1376
AC_MSG_ERROR(working alias attribute support required)
1379
if test $libc_cv_visibility_attribute = yes; then
1380
AC_CACHE_CHECK(whether to put _rtld_local into .sdata section,
1381
libc_cv_have_sdata_section,
1382
[echo "int i;" > conftest.c
1383
libc_cv_have_sdata_section=no
1384
if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \
1385
| grep '\.sdata' >/dev/null; then
1386
libc_cv_have_sdata_section=yes
1388
rm -f conftest.c conftest.so
1390
if test $libc_cv_have_sdata_section = yes; then
1391
AC_DEFINE(HAVE_SDATA_SECTION)
1395
AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
1396
libc_cv_initfini_array, [dnl
1397
LIBC_TRY_LINK_STATIC([
1398
int foo (void) { return 1; }
1399
int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
1401
[if $READELF -S conftest | fgrep INIT_ARRAY > /dev/null; then
1402
libc_cv_initfini_array=yes
1404
libc_cv_initfini_array=no
1406
[libc_cv_initfini_array=no])
1408
if test $libc_cv_initfini_array != yes; then
1409
AC_MSG_ERROR([Need linker with .init_array/.fini_array support.])
1412
AC_CACHE_CHECK(whether to use .ctors/.dtors header and trailer,
1413
libc_cv_ctors_header, [dnl
1414
libc_cv_ctors_header=yes
1415
LIBC_TRY_LINK_STATIC([
1416
__attribute__ ((constructor)) void ctor (void) { asm (""); }
1417
__attribute__ ((destructor)) void dtor (void) { asm (""); }
1420
AS_IF([$READELF -WS conftest$ac_exeext | $AWK '
1421
{ gsub(/\@<:@ */, "@<:@") }
1422
$2 == ".ctors" || $2 == ".dtors" {
1423
size = strtonum("0x" $6)
1424
align = strtonum("0x" $NF)
1426
stub@<:@$2@:>@ = size == align * 2
1429
ctors_ok = !seen@<:@".ctors"@:>@ || stub@<:@".ctors"@:>@
1430
dtors_ok = !seen@<:@".dtors"@:>@ || stub@<:@".dtors"@:>@
1431
exit ((ctors_ok && dtors_ok) ? 0 : 1)
1433
'], [libc_cv_ctors_header=no])
1435
AC_MSG_ERROR([missing __attribute__ ((constructor)) support??])
1438
if test $libc_cv_ctors_header = no; then
1439
AC_DEFINE(NO_CTORS_DTORS_SECTIONS)
1442
AC_CACHE_CHECK(for libunwind-support in compiler,
1443
libc_cv_cc_with_libunwind, [
1444
cat > conftest.c <<EOF
1445
int main (void) { return 0; }
1447
if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \
1448
conftest.c -v 2>&1 >/dev/null | grep -q " -lunwind "; then
1449
libc_cv_cc_with_libunwind=yes
1451
libc_cv_cc_with_libunwind=no
1454
AC_SUBST(libc_cv_cc_with_libunwind)
1455
if test $libc_cv_cc_with_libunwind = yes; then
1456
AC_DEFINE(HAVE_CC_WITH_LIBUNWIND)
1459
AC_CACHE_CHECK(for -z nodelete option,
1460
libc_cv_z_nodelete, [dnl
1461
cat > conftest.c <<EOF
1462
int _start (void) { return 42; }
1464
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1465
-fPIC -shared -o conftest.so conftest.c
1466
-nostartfiles -nostdlib
1467
-Wl,--enable-new-dtags,-z,nodelete 1>&AS_MESSAGE_LOG_FD])
1469
libc_cv_z_nodelete=yes
1471
AC_MSG_ERROR(linker with -z nodelete support required)
1475
AC_CACHE_CHECK(for -z nodlopen option,
1476
libc_cv_z_nodlopen, [dnl
1477
cat > conftest.c <<EOF
1478
int _start (void) { return 42; }
1480
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1481
-fPIC -shared -o conftest.so conftest.c
1482
-nostartfiles -nostdlib
1483
-Wl,--enable-new-dtags,-z,nodlopen 1>&AS_MESSAGE_LOG_FD])
1485
libc_cv_z_nodlopen=yes
1487
AC_MSG_ERROR(linker with -z nodlopen support required)
1491
AC_CACHE_CHECK(for -z initfirst option,
1492
libc_cv_z_initfirst, [dnl
1493
cat > conftest.c <<EOF
1494
int _start (void) { return 42; }
1496
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1497
-fPIC -shared -o conftest.so conftest.c
1498
-nostartfiles -nostdlib
1499
-Wl,--enable-new-dtags,-z,initfirst 1>&AS_MESSAGE_LOG_FD])
1501
libc_cv_z_initfirst=yes
1503
AC_MSG_ERROR(linker with -z initfirst support required)
1507
# Add-on fragments can set these for other machines.
1508
libc_commonpagesize=${libc_commonpagesize:-no}
1509
libc_relro_required=${libc_relro_required:-no}
1510
case "$base_machine" in
1511
i[[34567]]86 | x86_64 | powerpc* | s390*)
1512
libc_commonpagesize=0x1000
1513
libc_relro_required=yes
1516
libc_commonpagesize=0x2000
1517
libc_relro_required=yes
1521
if test $libc_commonpagesize != no; then
1522
AC_CACHE_CHECK(for -z relro option,
1523
libc_cv_z_relro, [dnl
1525
AC_LANG_CONFTEST([AC_LANG_SOURCE([[
1526
int _start (void) { return 42; }
1527
extern void _exit (int);
1528
/* Since these pointers are const, they should go in rodata.
1529
Since they refer to functions that have to be resolved by
1530
dynamic linking, they should instead go in RELRO data. */
1531
const void *const relro[] = { &_start, &_exit, 0 };
1532
/* GNU ld fails to produce RELRO data when it's very small and there is no
1533
normal writable data following it, or if only uninitialized (.bss) data
1534
follows it, or only very small writable data. */
1535
int data[0x10000] = { 1, };
1537
cat > conftest.awk <<\EOF
1540
commonpagesize = strtonum(commonpagesize)
1542
{ print "LINE:", $0 > "/dev/stderr" }
1544
vaddr = strtonum($3)
1545
memsz = strtonum($6)
1547
printf "vaddr %#x memsz %#x end %#x commonpagesize %#x\n", \
1548
vaddr, memsz, end, commonpagesize > "/dev/stderr"
1549
result = (end % commonpagesize == 0) ? "yes" : "broken"
1551
END { print result }
1553
AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1554
-fPIC -shared -o conftest.so conftest.c
1555
-nostartfiles -nostdlib
1556
-Wl,-z,relro 1>&AS_MESSAGE_LOG_FD]) &&
1557
AC_TRY_COMMAND([$READELF -Wl conftest.so > conftest.ph]) &&
1559
$AWK -v commonpagesize=$libc_commonpagesize -f conftest.awk
1560
conftest.ph > conftest.cps
1562
libc_cv_z_relro=`cat conftest.cps 2>&AS_MESSAGE_LOG_FD`
1564
if { test "x$libc_relro_required" = xyes &&
1565
test "x$libc_cv_z_relro" != xyes
1568
AC_MSG_ERROR(linker with -z relro support required)
1571
AC_MSG_WARN([missing architecture parameter to check for working -z relro])
1574
AC_CACHE_CHECK(for -Bgroup option,
1575
libc_cv_Bgroup, [dnl
1576
cat > conftest.c <<EOF
1577
int _start (void) { return 42; }
1579
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1580
-fPIC -shared -o conftest.so conftest.c
1581
-Wl,-Bgroup -nostdlib 1>&AS_MESSAGE_LOG_FD])
1588
AC_SUBST(libc_cv_Bgroup)
1591
AC_CACHE_CHECK(whether --noexecstack is desirable for .S files,
1592
libc_cv_as_noexecstack, [dnl
1593
cat > conftest.c <<EOF
1596
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS
1597
-S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \
1598
&& grep -q .note.GNU-stack conftest.s \
1599
&& AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack
1600
-c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD])
1602
libc_cv_as_noexecstack=yes
1604
libc_cv_as_noexecstack=no
1607
if test $libc_cv_as_noexecstack = yes; then
1608
ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack"
1610
AC_SUBST(ASFLAGS_config)
1612
AC_CACHE_CHECK(for -z combreloc,
1613
libc_cv_z_combreloc, [dnl
1614
cat > conftest.c <<EOF
1615
extern int bar (int);
1617
int foo (void) { return bar (mumble); }
1619
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1620
-fPIC -shared -o conftest.so conftest.c
1621
-nostdlib -nostartfiles
1622
-Wl,-z,combreloc 1>&AS_MESSAGE_LOG_FD])
1624
dnl The following test is a bit weak. We must use a tool which can test
1625
dnl cross-platform since the gcc used can be a cross compiler. Without
1626
dnl introducing new options this is not easily doable. Instead use a tool
1627
dnl which always is cross-platform: readelf. To detect whether -z combreloc
1628
dnl look for a section named .rel.dyn.
1629
if $READELF -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then
1630
libc_cv_z_combreloc=yes
1632
libc_cv_z_combreloc=no
1635
libc_cv_z_combreloc=no
1638
if test "$libc_cv_z_combreloc" = yes; then
1639
AC_DEFINE(HAVE_Z_COMBRELOC)
1641
AC_SUBST(libc_cv_z_combreloc)
1643
AC_CACHE_CHECK(for -z execstack,
1644
libc_cv_z_execstack, [dnl
1645
cat > conftest.c <<EOF
1646
int _start (void) { return 42; }
1648
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1649
-fPIC -shared -o conftest.so conftest.c
1650
-Wl,-z,execstack -nostdlib
1651
1>&AS_MESSAGE_LOG_FD])
1653
libc_cv_z_execstack=yes
1655
libc_cv_z_execstack=no
1658
AC_SUBST(libc_cv_z_execstack)
1660
AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
1661
LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no])
1664
AC_SUBST(libc_cv_fpie)
1666
AC_CACHE_CHECK(for --hash-style option,
1667
libc_cv_hashstyle, [dnl
1668
cat > conftest.c <<EOF
1669
int _start (void) { return 42; }
1671
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1672
-fPIC -shared -o conftest.so conftest.c
1673
-Wl,--hash-style=both -nostdlib 1>&AS_MESSAGE_LOG_FD])
1675
libc_cv_hashstyle=yes
1677
libc_cv_hashstyle=no
1680
AC_SUBST(libc_cv_hashstyle)
1682
# The linker's default -shared behavior is good enough if it
1683
# does these things that our custom linker scripts ensure that
1684
# all allocated NOTE sections come first.
1685
if test "$use_default_link" = default; then
1686
AC_CACHE_CHECK([for sufficient default -shared layout],
1687
libc_cv_use_default_link, [dnl
1688
libc_cv_use_default_link=no
1689
cat > conftest.s <<\EOF
1690
.section .note.a,"a",%note
1695
.section .note.b,"a",%note
1701
if AC_TRY_COMMAND([dnl
1702
${CC-cc} $ASFLAGS -shared -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD]) &&
1703
ac_try=`$READELF -S conftest.so | sed -n \
1705
s/^ *\[ *[1-9][0-9]*\] *\([^ ][^ ]*\) *\([^ ][^ ]*\) .*$/\2 \1/
1711
libc_seen_a=no libc_seen_b=no
1713
while test $# -ge 2 -a "$1" = NOTE; do
1715
.note.a) libc_seen_a=yes ;;
1716
.note.b) libc_seen_b=yes ;;
1720
case "$libc_seen_a$libc_seen_b" in
1722
libc_cv_use_default_link=yes
1725
echo >&AS_MESSAGE_LOG_FD "\
1726
$libc_seen_a$libc_seen_b from:
1732
use_default_link=$libc_cv_use_default_link
1735
AC_CACHE_CHECK(linker output format, libc_cv_output_format, [dnl
1736
if libc_cv_output_format=`
1737
${CC-cc} -nostartfiles -nostdlib -Wl,--print-output-format 2>&AS_MESSAGE_LOG_FD`
1741
libc_cv_output_format=
1743
test -n "$libc_cv_output_format" || libc_cv_output_format=unknown])
1744
AC_SUBST(libc_cv_output_format)
1746
AC_CACHE_CHECK(for -fno-toplevel-reorder -fno-section-anchors, libc_cv_fno_toplevel_reorder, [dnl
1747
cat > conftest.c <<EOF
1750
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -fno-toplevel-reorder -fno-section-anchors
1751
conftest.c 1>&AS_MESSAGE_LOG_FD])
1753
libc_cv_fno_toplevel_reorder=yes
1755
libc_cv_fno_toplevel_reorder=no
1758
if test $libc_cv_fno_toplevel_reorder = yes; then
1759
fno_unit_at_a_time="-fno-toplevel-reorder -fno-section-anchors"
1761
fno_unit_at_a_time=-fno-unit-at-a-time
1763
AC_SUBST(fno_unit_at_a_time)
1765
AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl
1766
LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector],
1770
AC_SUBST(libc_cv_ssp)
1772
AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl
1773
cat > conftest.c <<EOF
1775
#ifdef __GNUC_GNU_INLINE__
1776
main () { return 0;}
1781
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -std=gnu99 -fgnu89-inline
1782
-o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD])
1784
libc_cv_gnu89_inline=yes
1786
libc_cv_gnu89_inline=no
1789
if test $libc_cv_gnu89_inline = yes; then
1790
gnu89_inline=-fgnu89-inline
1794
AC_SUBST(gnu89_inline)
1796
AC_CACHE_CHECK(whether cc puts quotes around section names,
1797
libc_cv_have_section_quotes,
1798
[cat > conftest.c <<EOF
1799
static const int foo
1800
__attribute__ ((section ("bar"))) = 1;
1802
if ${CC-cc} -S conftest.c -o conftest.s; then
1803
if grep '\.section.*"bar"' conftest.s >/dev/null; then
1804
libc_cv_have_section_quotes=yes
1806
libc_cv_have_section_quotes=no
1809
libc_cv_have_section_quotes=unknown
1811
rm -f conftest.{c,s}
1813
if test $libc_cv_have_section_quotes = yes; then
1814
AC_DEFINE(HAVE_SECTION_QUOTES)
1817
AC_CACHE_CHECK(for assembler .weak directive, libc_cv_asm_weak_directive,
1819
cat > conftest.s <<EOF
1821
${libc_cv_asm_global_directive} foo
1824
.weak bar; bar = foo
1826
if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1827
libc_cv_asm_weak_directive=yes
1829
libc_cv_asm_weak_directive=no
1833
if test $libc_cv_asm_weak_directive = no; then
1834
AC_CACHE_CHECK(for assembler .weakext directive,
1835
libc_cv_asm_weakext_directive,
1837
cat > conftest.s <<EOF
1839
${libc_cv_asm_global_directive} foo
1843
${libc_cv_asm_global_directive} baz
1846
if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1847
libc_cv_asm_weakext_directive=yes
1849
libc_cv_asm_weakext_directive=no
1855
if test $libc_cv_asm_weak_directive = yes; then
1856
AC_DEFINE(HAVE_ASM_WEAK_DIRECTIVE)
1857
elif test $libc_cv_asm_weakext_directive = yes; then
1858
AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
1861
AC_CACHE_CHECK(whether CFI directives are supported, libc_cv_asm_cfi_directives, [dnl
1863
sparc/sparc64*) cfi_offset=2047;;
1866
cat > conftest.s <<EOF
1868
.type func,%function
1872
.cfi_rel_offset 1, $cfi_offset
1875
if AC_TRY_COMMAND(${CC-cc} $ASFLAGS -c conftest.s 1>&AS_MESSAGE_LOG_FD); then
1876
libc_cv_asm_cfi_directives=yes
1878
libc_cv_asm_cfi_directives=no
1881
if test $libc_cv_asm_cfi_directives = yes; then
1882
AC_DEFINE(HAVE_ASM_CFI_DIRECTIVES)
1885
AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
1886
cat > conftest.c <<\EOF
1891
dnl No \ in command here because it ends up inside ''.
1892
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1893
-nostdlib -nostartfiles -Wl,--no-whole-archive
1894
-o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1895
libc_cv_ld_no_whole_archive=yes
1897
libc_cv_ld_no_whole_archive=no
1900
if test $libc_cv_ld_no_whole_archive = no; then
1901
AC_MSG_ERROR([support for --no-whole-archive is needed])
1904
AC_CACHE_CHECK(for gcc -fexceptions, libc_cv_gcc_exceptions, [dnl
1905
cat > conftest.c <<\EOF
1910
dnl No \ in command here because it ends up inside ''.
1911
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
1912
-nostdlib -nostartfiles -fexceptions
1913
-o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
1914
libc_cv_gcc_exceptions=yes
1916
libc_cv_gcc_exceptions=no
1919
if test $libc_cv_gcc_exceptions = yes; then
1920
exceptions=-fexceptions
1922
AC_SUBST(exceptions)dnl
1924
if test "$host_cpu" = powerpc ; then
1925
# Check for a bug present in at least versions 2.8.x of GCC
1926
# and versions 1.0.x of EGCS.
1927
AC_CACHE_CHECK(whether clobbering cr0 causes problems,libc_cv_c_asmcr0_bug,[dnl
1928
AC_TRY_COMPILE([int tester(int x) { asm ("" : : : "cc"); return x & 123; }],,
1929
libc_cv_c_asmcr0_bug='no',
1930
libc_cv_c_asmcr0_bug='yes')])
1931
if test "$libc_cv_c_asmcr0_bug" != 'no'; then
1932
AC_DEFINE(BROKEN_PPC_ASM_CR0)
1936
AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl
1937
cat > conftest.c <<\EOF
1940
__builtin_memset (x, 0, 1000);
1944
if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]);
1946
libc_cv_gcc_builtin_memset=no
1948
libc_cv_gcc_builtin_memset=yes
1951
if test "$libc_cv_gcc_builtin_memset" = yes ; then
1952
AC_DEFINE(HAVE_BUILTIN_MEMSET)
1955
AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl
1956
cat > conftest.c <<\EOF
1957
extern char *strstr (const char *, const char *) __asm ("my_strstr");
1958
char *foo (const char *a, const char *b)
1960
return __builtin_strstr (a, b);
1964
if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "my_strstr" > /dev/null]);
1966
libc_cv_gcc_builtin_redirection=yes
1968
libc_cv_gcc_builtin_redirection=no
1971
if test "$libc_cv_gcc_builtin_redirection" = no; then
1972
AC_MSG_ERROR([support for the symbol redirection needed])
1975
dnl Check whether the compiler supports the __thread keyword.
1976
AC_CACHE_CHECK([for __thread], libc_cv_gcc___thread,
1977
[cat > conftest.c <<\EOF
1978
__thread int a = 42;
1980
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
1981
libc_cv_gcc___thread=yes
1983
libc_cv_gcc___thread=no
1986
if test "$libc_cv_gcc___thread" = no; then
1987
AC_MSG_ERROR([support for the __thread keyword is required])
1990
dnl Check whether the compiler supports the tls_model attribute.
1991
AC_CACHE_CHECK([for tls_model attribute], libc_cv_gcc_tls_model_attr, [dnl
1992
cat > conftest.c <<\EOF
1993
extern __thread int a __attribute__((tls_model ("initial-exec")));
1995
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -S -Werror conftest.c >&AS_MESSAGE_LOG_FD]); then
1996
libc_cv_gcc_tls_model_attr=yes
1998
libc_cv_gcc_tls_model_attr=no
2001
if test "$libc_cv_gcc_tls_model_attr" = no; then
2002
AC_MSG_ERROR([support for the tls_model attribute is required])
2005
dnl Determine how to disable generation of FMA instructions.
2006
AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
2007
libc_cv_cc_nofma, [dnl
2009
for opt in -ffp-contract=off -mno-fused-madd; do
2010
LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
2013
if test -n "$submachine"; then
2014
AC_CACHE_CHECK([for compiler option for CPU variant],
2015
libc_cv_cc_submachine, [dnl
2016
libc_cv_cc_submachine=no
2017
for opt in "-march=$submachine" "-mcpu=$submachine"; do
2018
LIBC_TRY_CC_OPTION([$opt], [
2019
libc_cv_cc_submachine="$opt"
2022
if test "x$libc_cv_cc_submachine" = xno; then
2023
AC_MSG_ERROR([${CC-cc} does not support $submachine])
2026
AC_SUBST(libc_cv_cc_submachine)
2028
dnl Check whether we have the gd library available.
2029
AC_MSG_CHECKING(for libgd)
2030
if test "$with_gd" != "no"; then
2031
old_CFLAGS="$CFLAGS"
2032
CFLAGS="$CFLAGS $libgd_include"
2033
old_LDFLAGS="$LDFLAGS"
2034
LDFLAGS="$LDFLAGS $libgd_ldflags"
2036
LIBS="$LIBS -lgd -lpng -lz -lm"
2037
AC_TRY_LINK([#include <gd.h>], [gdImagePng (0, 0)], LIBGD=yes, LIBGD=no)
2038
CFLAGS="$old_CFLAGS"
2039
LDFLAGS="$old_LDFLAGS"
2044
AC_MSG_RESULT($LIBGD)
2048
if test x$with_selinux = xno ; then
2051
# See if we have the SELinux library
2052
AC_CHECK_LIB(selinux, is_selinux_enabled,
2053
have_selinux=yes, have_selinux=no)
2054
# See if we have the SELinux header with the NSCD permissions in it.
2055
if test x$have_selinux = xyes ; then
2056
AC_MSG_CHECKING([for NSCD Flask permissions in selinux/av_permissions.h])
2057
AC_TRY_COMPILE([#include <selinux/av_permissions.h>],
2058
[#ifdef NSCD__SHMEMHOST
2061
#error NSCD__SHMEMHOST not defined
2063
have_selinux=yes, have_selinux=no)
2064
AC_MSG_RESULT($have_selinux)
2067
if test x$with_selinux = xyes ; then
2068
if test x$have_selinux = xno ; then
2069
AC_MSG_ERROR([SELinux explicitly required, but sufficiently recent SELinux library not found])
2073
# Check if we're building with SELinux support.
2074
if test "x$have_selinux" = xyes; then
2075
AC_DEFINE(HAVE_SELINUX, 1, [SELinux support])
2077
# See if we have the libaudit library
2078
AC_CHECK_LIB(audit, audit_log_user_avc_message,
2079
have_libaudit=yes, have_libaudit=no)
2080
if test "x$have_libaudit" = xyes; then
2081
AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support])
2083
AC_SUBST(have_libaudit)
2085
# See if we have the libcap library
2086
AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no)
2087
if test "x$have_libcap" = xyes; then
2088
AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support])
2090
AC_SUBST(have_libcap)
2092
AC_SUBST(have_selinux)
2094
dnl check for the size of 'long double'.
2095
AC_CHECK_SIZEOF(long double, 0)
2096
sizeof_long_double=$ac_cv_sizeof_long_double
2097
AC_SUBST(sizeof_long_double)
2100
dnl Check for silly hacked compilers predefining _FORTIFY_SOURCE.
2101
dnl Since we are building the implementations of the fortified functions here,
2102
dnl having the macro defined interacts very badly.
2103
AC_CACHE_CHECK([for _FORTIFY_SOURCE predefine], libc_cv_predef_fortify_source,
2104
[AC_TRY_COMPILE([], [
2105
#ifdef _FORTIFY_SOURCE
2108
[libc_cv_predef_fortify_source=no],
2109
[libc_cv_predef_fortify_source=yes])])
2110
if test $libc_cv_predef_fortify_source = yes; then
2111
CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE"
2115
dnl Check for silly hacked compilers inserting -fstack-protector.
2116
dnl This breaks badly for the early startup code we compile, since
2117
dnl the compiled code can refer to a magic machine-dependent location
2118
dnl for the canary value before we have sufficient setup for that to
2119
dnl work. It's also questionable to build all of libc with this flag
2120
dnl even when you're doing that for most applications you build, since
2121
dnl libc's code is so heavily-used and performance-sensitive. If we
2122
dnl ever really want to make that work, it should be enabled explicitly
2123
dnl in the libc build, not inherited from implicit compiler settings.
2124
AC_CACHE_CHECK([whether $CC implicitly enables -fstack-protector],
2125
libc_cv_predef_stack_protector, [
2126
AC_TRY_COMPILE([extern void foobar (char *);],
2127
[char large_array[2048]; foobar (large_array);], [
2128
libc_undefs=`$NM -u conftest.o |
2129
LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \
2130
2>&AS_MESSAGE_LOG_FD` || {
2131
AC_MSG_ERROR([confusing output from $NM -u])
2133
echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'"
2134
# On some architectures, there are architecture-specific undefined
2135
# symbols (resolved by the linker), so filter out unknown symbols.
2136
# This will fail to produce the correct result if the compiler
2137
# defaults to -fstack-protector but this produces an undefined symbol
2138
# other than __stack_chk_fail. However, compilers like that have not
2139
# been encountered in practice.
2140
libc_undefs=`echo "$libc_undefs" | egrep '^(foobar|__stack_chk_fail)$'`
2141
case "$libc_undefs" in
2142
foobar) libc_cv_predef_stack_protector=no ;;
2144
foobar') libc_cv_predef_stack_protector=yes ;;
2145
*) AC_MSG_ERROR([unexpected symbols in test: $libc_undefs]) ;;
2147
[AC_MSG_ERROR([test compilation failed])])
2150
if test $libc_cv_predef_stack_protector = yes; then
2151
libc_extra_cflags=-fno-stack-protector
2153
AC_SUBST(libc_extra_cflags)
2155
### End of automated tests.
2156
### Now run sysdeps configure fragments.
2158
# They also can set these variables.
2160
ldd_rewrite_script=no
2161
libc_cv_sysconfdir=$sysconfdir
2162
libc_cv_localstatedir=$localstatedir
2163
libc_cv_gcc_unwind_find_fde=no
2166
# Iterate over all the sysdep directories we will use, running their
2167
# configure fragments.
2168
for dir in $sysnames; do
2171
*) dest=$srcdir/$dir ;;
2173
if test -r $dest/configure; then
2174
AC_MSG_RESULT(running configure fragment for $dir)
2179
if test x$libc_cv_gcc_unwind_find_fde = xyes; then
2180
AC_DEFINE(EXPORT_UNWIND_FIND_FDE)
2182
AC_SUBST(libc_cv_gcc_unwind_find_fde)
2184
# Test for old glibc 2.0.x headers so that they can be removed properly
2185
# Search only in includedir.
2186
AC_MSG_CHECKING(for old glibc 2.0.x headers)
2187
if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h"
2189
old_glibc_headers=yes
2191
old_glibc_headers=no
2193
AC_MSG_RESULT($old_glibc_headers)
2194
if test ${old_glibc_headers} = yes; then
2195
AC_MSG_WARN(*** During \"make install\" old headers from glibc 2.0.x will)
2196
AC_MSG_WARN(*** be removed.)
2198
AC_SUBST(old_glibc_headers)
2200
AC_SUBST(libc_cv_slibdir)
2201
AC_SUBST(libc_cv_localedir)
2202
AC_SUBST(libc_cv_sysconfdir)
2203
AC_SUBST(libc_cv_localstatedir)
2204
AC_SUBST(libc_cv_rootsbindir)
2205
AC_SUBST(libc_cv_forced_unwind)
2207
dnl sysdeps/CPU/configure.in checks set this via arch-specific asm tests
2208
AC_SUBST(libc_cv_cpp_asm_debuginfo)
2209
AC_SUBST(libc_cv_cc_sse4)
2210
AC_SUBST(libc_cv_cc_avx)
2211
AC_SUBST(libc_cv_cc_sse2avx)
2212
AC_SUBST(libc_cv_cc_novzeroupper)
2213
AC_SUBST(libc_cv_cc_fma4)
2214
AC_SUBST(libc_cv_cc_nofma)
2215
AC_SUBST(libc_cv_as_i686)
2216
AC_SUBST(libc_cv_sparc_as_vis3)
2218
AC_SUBST(use_ldconfig)
2219
AC_SUBST(ldd_rewrite_script)
2224
AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default,
2225
[libc_cv_pic_default=yes
2226
cat > conftest.c <<EOF
2227
#if defined __PIC__ || defined __pic__ || defined PIC || defined pic
2228
# error PIC is default.
2231
if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then
2232
libc_cv_pic_default=no
2235
AC_SUBST(libc_cv_pic_default)
2238
AC_SUBST(static_nss)
2242
dnl See sysdeps/mach/configure.in for this variable.
2243
AC_SUBST(mach_interface_list)
2245
if test "`(cd $srcdir; pwd)`" = "`pwd`"; then
2248
config_makefile=Makefile
2251
VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h`
2252
RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h`
2256
AC_CONFIG_FILES([config.make ${config_makefile}])
2257
AC_CONFIG_COMMANDS([default],[[
2258
case $CONFIG_FILES in *config.make*)
2259
echo "$config_vars" >> config.make;;
2261
test -d bits || mkdir bits]],[[config_vars='$config_vars']])