1dnl Process this file with autoconf to produce a configure script. 2dnl Note we do not use AC_PREREQ here! See aclocal.m4 for what we use instead. 3AC_INIT([GNU C Library], [(see version.h)], [https://sourceware.org/bugzilla/], 4 [glibc], [https://www.gnu.org/software/glibc/]) 5AC_CONFIG_SRCDIR([include/features.h]) 6AC_CONFIG_HEADERS([config.h]) 7AC_CONFIG_AUX_DIR([scripts]) 8 9ACX_PKGVERSION([GNU libc]) 10ACX_BUGURL([https://www.gnu.org/software/libc/bugs.html]) 11AC_DEFINE_UNQUOTED([PKGVERSION], ["$PKGVERSION"], 12 [Package description]) 13AC_DEFINE_UNQUOTED([REPORT_BUGS_TO], ["$REPORT_BUGS_TO"], 14 [Bug reporting address]) 15 16# Glibc should not depend on any header files 17AC_DEFUN([_AC_INCLUDES_DEFAULT_REQUIREMENTS], 18 [m4_divert_text([DEFAULTS], 19 [ac_includes_default='/* none */'])]) 20 21# We require GCC, and by default use its preprocessor. Override AC_PROG_CPP 22# here to work around the Autoconf issue discussed in 23# <https://sourceware.org/ml/libc-alpha/2013-01/msg00721.html>. 24AC_DEFUN([AC_PROG_CPP], 25[AC_REQUIRE([AC_PROG_CC])dnl 26AC_ARG_VAR([CPP], [C preprocessor])dnl 27_AC_ARG_VAR_CPPFLAGS()dnl 28# On Suns, sometimes $CPP names a directory. 29if test -n "$CPP" && test -d "$CPP"; then 30 CPP= 31fi 32if test -z "$CPP"; then 33 CPP="$CC -E" 34fi 35AC_SUBST(CPP)dnl 36])# AC_PROG_CPP 37 38# We require GCC. Override _AC_PROG_CC_C89 here to work around the Autoconf 39# issue discussed in 40# <https://sourceware.org/ml/libc-alpha/2013-01/msg00757.html>. 41AC_DEFUN([_AC_PROG_CC_C89], [[$1]]) 42 43dnl This is here so we can set $subdirs directly based on configure fragments. 44AC_CONFIG_SUBDIRS() 45 46AC_CANONICAL_HOST 47 48AC_PROG_CC 49if test $host != $build; then 50 AC_CHECK_PROGS(BUILD_CC, gcc cc) 51fi 52AC_SUBST(cross_compiling) 53AC_PROG_CPP 54AC_CHECK_TOOL(READELF, readelf, false) 55 56# We need the C++ compiler only for testing. 57AC_PROG_CXX 58# It's useless to us if it can't link programs (e.g. missing -lstdc++). 59AC_CACHE_CHECK([whether $CXX can link programs], libc_cv_cxx_link_ok, [dnl 60AC_LANG_PUSH([C++]) 61# Default, dynamic case. 62AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], 63 [libc_cv_cxx_link_ok=yes], 64 [libc_cv_cxx_link_ok=no]) 65# Static case. 66old_LDFLAGS="$LDFLAGS" 67LDFLAGS="$LDFLAGS -static" 68AC_LINK_IFELSE([AC_LANG_SOURCE([ 69#include <iostream> 70 71int 72main() 73{ 74 std::cout << "Hello, world!"; 75 return 0; 76} 77])], 78 [], 79 [libc_cv_cxx_link_ok=no]) 80LDFLAGS="$old_LDFLAGS" 81AC_LANG_POP([C++])]) 82AS_IF([test $libc_cv_cxx_link_ok != yes], [CXX=]) 83 84if test "`cd $srcdir; pwd -P`" = "`pwd -P`"; then 85 AC_MSG_ERROR([you must configure in a separate build directory]) 86fi 87 88# This will get text that should go into config.make. 89config_vars= 90 91# Check for a --with-gd argument and set libgd-LDFLAGS in config.make. 92AC_ARG_WITH([gd], 93 AS_HELP_STRING([--with-gd=DIR], 94 [find libgd include dir and library with prefix DIR]), 95 [dnl 96case "$with_gd" in 97yes|''|no) ;; 98*) libgd_include="-I$withval/include" 99 libgd_ldflags="-L$withval/lib" ;; 100esac 101]) 102AC_ARG_WITH([gd-include], 103 AS_HELP_STRING([--with-gd-include=DIR], 104 [find libgd include files in DIR]), 105 [dnl 106case "$with_gd_include" in 107''|no) ;; 108*) libgd_include="-I$withval" ;; 109esac 110]) 111AC_ARG_WITH([gd-lib], 112 AS_HELP_STRING([--with-gd-lib=DIR], 113 [find libgd library files in DIR]), 114 [dnl 115case "$with_gd_lib" in 116''|no) ;; 117*) libgd_ldflags="-L$withval" ;; 118esac 119]) 120 121if test -n "$libgd_include"; then 122 config_vars="$config_vars 123CFLAGS-memusagestat.c = $libgd_include" 124fi 125if test -n "$libgd_ldflags"; then 126 config_vars="$config_vars 127libgd-LDFLAGS = $libgd_ldflags" 128fi 129 130dnl Arguments to specify presence of other packages/features. 131AC_ARG_WITH([binutils], 132 AS_HELP_STRING([--with-binutils=PATH], 133 [specify location of binutils (as and ld)]), 134 [path_binutils=$withval], 135 [path_binutils='']) 136AC_ARG_WITH([selinux], 137 AS_HELP_STRING([--with-selinux], 138 [if building with SELinux support]), 139 [with_selinux=$withval], 140 [with_selinux=auto]) 141 142AC_ARG_WITH([headers], 143 AS_HELP_STRING([--with-headers=PATH], 144 [location of system headers to use 145 (for example /usr/src/linux/include) 146 @<:@default=compiler default@:>@]), 147 [sysheaders=$withval], 148 [sysheaders='']) 149AC_SUBST(sysheaders) 150 151AC_SUBST(use_default_link) 152AC_ARG_WITH([default-link], 153 AS_HELP_STRING([--with-default-link], 154 [do not use explicit linker scripts]), 155 [use_default_link=$withval], 156 [use_default_link=no]) 157 158dnl Additional build flags injection. 159AC_ARG_WITH([nonshared-cflags], 160 AS_HELP_STRING([--with-nonshared-cflags=CFLAGS], 161 [build nonshared libraries with additional CFLAGS]), 162 [extra_nonshared_cflags=$withval], 163 [extra_nonshared_cflags=]) 164AC_SUBST(extra_nonshared_cflags) 165AC_ARG_WITH([rtld-early-cflags], 166 AS_HELP_STRING([--with-rtld-early-cflags=CFLAGS], 167 [build early initialization with additional CFLAGS]), 168 [rtld_early_cflags=$withval], 169 [rtld_early_cflags=]) 170AC_SUBST(rtld_early_cflags) 171 172AC_ARG_WITH([timeoutfactor], 173 AS_HELP_STRING([--with-timeoutfactor=NUM], 174 [specify an integer to scale the timeout]), 175 [timeoutfactor=$withval], 176 [timeoutfactor=1]) 177AC_DEFINE_UNQUOTED(TIMEOUTFACTOR, $timeoutfactor) 178 179AC_ARG_ENABLE([sanity-checks], 180 AS_HELP_STRING([--disable-sanity-checks], 181 [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]), 182 [enable_sanity=$enableval], 183 [enable_sanity=yes]) 184 185AC_ARG_ENABLE([shared], 186 AS_HELP_STRING([--enable-shared], 187 [build shared library @<:@default=yes if GNU ld@:>@]), 188 [shared=$enableval], 189 [shared=yes]) 190AC_ARG_ENABLE([profile], 191 AS_HELP_STRING([--enable-profile], 192 [build profiled library @<:@default=no@:>@]), 193 [profile=$enableval], 194 [profile=no]) 195AC_ARG_ENABLE([default-pie], 196 AS_HELP_STRING([--disable-default-pie], 197 [Do not build glibc programs and the testsuite as PIE @<:@default=no@:>@]), 198 [default_pie=$enableval], 199 [default_pie=yes]) 200AC_ARG_ENABLE([timezone-tools], 201 AS_HELP_STRING([--disable-timezone-tools], 202 [do not install timezone tools @<:@default=install@:>@]), 203 [enable_timezone_tools=$enableval], 204 [enable_timezone_tools=yes]) 205AC_SUBST(enable_timezone_tools) 206 207AC_ARG_ENABLE([hardcoded-path-in-tests], 208 AS_HELP_STRING([--enable-hardcoded-path-in-tests], 209 [hardcode newly built glibc path in tests @<:@default=no@:>@]), 210 [hardcoded_path_in_tests=$enableval], 211 [hardcoded_path_in_tests=no]) 212AC_SUBST(hardcoded_path_in_tests) 213 214AC_ARG_ENABLE([hidden-plt], 215 AS_HELP_STRING([--disable-hidden-plt], 216 [do not hide internal function calls to avoid PLT]), 217 [hidden=$enableval], 218 [hidden=yes]) 219if test "x$hidden" = xno; then 220 AC_DEFINE(NO_HIDDEN) 221fi 222 223AC_ARG_ENABLE([bind-now], 224 AS_HELP_STRING([--enable-bind-now], 225 [disable lazy relocations in DSOs]), 226 [bindnow=$enableval], 227 [bindnow=no]) 228AC_SUBST(bindnow) 229if test "x$bindnow" = xyes; then 230 AC_DEFINE(BIND_NOW) 231fi 232 233dnl Build glibc with -fstack-protector, -fstack-protector-all, or 234dnl -fstack-protector-strong. 235AC_ARG_ENABLE([stack-protector], 236 AS_HELP_STRING([--enable-stack-protector=@<:@yes|no|all|strong@:>@], 237 [Use -fstack-protector[-all|-strong] to detect glibc buffer overflows]), 238 [enable_stack_protector=$enableval], 239 [enable_stack_protector=no]) 240case "$enable_stack_protector" in 241all|yes|no|strong) ;; 242*) AC_MSG_ERROR([Not a valid argument for --enable-stack-protector: \"$enable_stack_protector\"]);; 243esac 244 245dnl On some platforms we cannot use dynamic loading. We must provide 246dnl static NSS modules. 247AC_ARG_ENABLE([static-nss], 248 AS_HELP_STRING([--enable-static-nss], 249 [build static NSS modules @<:@default=no@:>@]), 250 [static_nss=$enableval], 251 [static_nss=no]) 252dnl Enable static NSS also if we build no shared objects. 253if test x"$static_nss" = xyes || test x"$shared" = xno; then 254 static_nss=yes 255 AC_DEFINE(DO_STATIC_NSS) 256fi 257 258AC_ARG_ENABLE([force-install], 259 AS_HELP_STRING([--disable-force-install], 260 [don't force installation of files from this package, even if they are older than the installed files]), 261 [force_install=$enableval], 262 [force_install=yes]) 263AC_SUBST(force_install) 264 265AC_ARG_ENABLE([maintainer-mode], 266 AS_HELP_STRING([--enable-maintainer-mode], 267 [enable make rules and dependencies not useful (and sometimes confusing) to the casual installer]), 268 [maintainer=$enableval], 269 [maintainer=no]) 270 271dnl On some platforms we allow dropping compatibility with all kernel 272dnl versions. 273AC_ARG_ENABLE([kernel], 274 AS_HELP_STRING([--enable-kernel=VERSION], 275 [compile for compatibility with kernel not older than VERSION]), 276 [minimum_kernel=$enableval], 277 []) 278dnl Prevent unreasonable values. 279if test "$minimum_kernel" = yes || test "$minimum_kernel" = no; then 280 # Better nothing than this. 281 minimum_kernel="" 282else 283 if test "$minimum_kernel" = current; then 284 minimum_kernel=`uname -r 2>/dev/null` || minimum_kernel= 285 fi 286fi 287 288dnl For the development we sometimes want gcc to issue even more warnings. 289dnl This is not the default since many of the extra warnings are not 290dnl appropriate. 291AC_ARG_ENABLE([all-warnings], 292 AS_HELP_STRING([--enable-all-warnings], 293 [enable all useful warnings gcc can issue]), 294 [all_warnings=$enableval], 295 []) 296AC_SUBST(all_warnings) 297 298AC_ARG_ENABLE([werror], 299 AS_HELP_STRING([--disable-werror], 300 [do not build with -Werror]), 301 [enable_werror=$enableval], 302 [enable_werror=yes]) 303AC_SUBST(enable_werror) 304 305AC_ARG_ENABLE([multi-arch], 306 AS_HELP_STRING([--enable-multi-arch], 307 [enable single DSO with optimizations for multiple architectures]), 308 [multi_arch=$enableval], 309 [multi_arch=default]) 310 311AC_ARG_ENABLE([experimental-malloc], 312 AS_HELP_STRING([--disable-experimental-malloc], 313 [disable experimental malloc features]), 314 [experimental_malloc=$enableval], 315 [experimental_malloc=yes]) 316AC_SUBST(experimental_malloc) 317 318AC_ARG_ENABLE([memory-tagging], 319 AS_HELP_STRING([--enable-memory-tagging], 320 [enable memory tagging if supported by the architecture @<:@default=no@:>@]), 321 [memory_tagging=$enableval], 322 [memory_tagging=no]) 323if test "$memory_tagging" = yes; then 324 # Only enable this on architectures that support it. 325 case $host_cpu in 326 aarch64) 327 AC_DEFINE(USE_MTAG) 328 ;; 329 esac 330fi 331AC_SUBST(memory_tagging) 332 333AC_ARG_ENABLE([crypt], 334 AS_HELP_STRING([--disable-crypt], 335 [do not build nor install the passphrase hashing library, libcrypt]), 336 [build_crypt=$enableval], 337 [build_crypt=yes]) 338AC_SUBST(build_crypt) 339 340AC_ARG_ENABLE([nss-crypt], 341 AS_HELP_STRING([--enable-nss-crypt], 342 [enable libcrypt to use nss]), 343 [nss_crypt=$enableval], 344 [nss_crypt=no]) 345if test x$build_libcrypt = xno && test x$nss_crypt = xyes; then 346 AC_MSG_WARN([--enable-nss-crypt has no effect when libcrypt is disabled]) 347 nss_crypt=no 348fi 349if test x$nss_crypt = xyes; then 350 nss_includes=-I$(nss-config --includedir 2>/dev/null) 351 if test $? -ne 0; then 352 AC_MSG_ERROR([cannot find include directory with nss-config]) 353 fi 354 nspr_includes=-I$(nspr-config --includedir 2>/dev/null) 355 if test $? -ne 0; then 356 AC_MSG_ERROR([cannot find include directory with nspr-config]) 357 fi 358 old_CFLAGS="$CFLAGS" 359 CFLAGS="$CFLAGS $nss_includes $nspr_includes" 360 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([typedef int PRBool; 361#include <hasht.h> 362#include <nsslowhash.h> 363void f (void) { NSSLOW_Init (); }])], 364 libc_cv_nss_crypt=yes, 365 AC_MSG_ERROR([ 366cannot find NSS headers with lowlevel hash function interfaces])) 367 old_LIBS="$LIBS" 368 old_LDFLAGS="$LDFLAGS" 369 LIBS="$LIBS -lfreebl3" 370 AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool; 371#include <hasht.h> 372#include <nsslowhash.h>], 373 [NSSLOW_Init();])], 374 libc_cv_nss_crypt=yes, 375 AC_MSG_ERROR([ 376cannot link program using lowlevel NSS hash functions])) 377 # Check to see if there is a static NSS cryptographic library. 378 # If there isn't then we can't link anything with libcrypt.a, 379 # and that might mean disabling some static tests. 380 LDFLAGS="$LDFLAGS -static" 381 AC_LINK_IFELSE([AC_LANG_PROGRAM([typedef int PRBool; 382#include <hasht.h> 383#include <nsslowhash.h>], 384 [NSSLOW_Init();])], 385 libc_cv_static_nss_crypt=yes, 386 libc_cv_static_nss_crypt=no) 387 LDFLAGS="$old_LDFLAGS" 388 CFLAGS="$old_CFLAGS" 389 LIBS="$old_LIBS" 390else 391 libc_cv_nss_crypt=no 392 libc_cv_static_nss_crypt=no 393fi 394AC_SUBST(libc_cv_nss_crypt) 395AC_SUBST(libc_cv_static_nss_crypt) 396 397 398AC_ARG_ENABLE([systemtap], 399 [AS_HELP_STRING([--enable-systemtap], 400 [enable systemtap static probe points @<:@default=no@:>@])], 401 [systemtap=$enableval], 402 [systemtap=no]) 403if test "x$systemtap" != xno; then 404 AC_CACHE_CHECK([for systemtap static probe support], libc_cv_sdt, [dnl 405 old_CFLAGS="$CFLAGS" 406 CFLAGS="-std=gnu11 $CFLAGS" 407 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <sys/sdt.h> 408void foo (int i, void *p) 409{ 410 asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) "" 411 :: STAP_PROBE_ASM_OPERANDS (2, i, p)); 412}]])], [libc_cv_sdt=yes], [libc_cv_sdt=no]) 413 CFLAGS="$old_CFLAGS"]) 414 if test $libc_cv_sdt = yes; then 415 AC_DEFINE([USE_STAP_PROBE]) 416 elif test "x$systemtap" != xauto; then 417 AC_MSG_FAILURE([systemtap support needs sys/sdt.h with asm support]) 418 fi 419fi 420 421AC_ARG_ENABLE([build-nscd], 422 [AS_HELP_STRING([--disable-build-nscd], 423 [disable building and installing the nscd daemon])], 424 [build_nscd=$enableval], 425 [build_nscd=default]) 426AC_SUBST(build_nscd) 427 428# Note the use of $use_nscd is near the bottom of the file. 429AC_ARG_ENABLE([nscd], 430 [AS_HELP_STRING([--disable-nscd], 431 [library functions will not contact the nscd daemon])], 432 [use_nscd=$enableval], 433 [use_nscd=yes]) 434 435AC_ARG_ENABLE([pt_chown], 436 [AS_HELP_STRING([--enable-pt_chown], 437 [Enable building and installing pt_chown])], 438 [build_pt_chown=$enableval], 439 [build_pt_chown=no]) 440AC_SUBST(build_pt_chown) 441if test "$build_pt_chown" = yes; then 442 AC_DEFINE(HAVE_PT_CHOWN) 443fi 444 445AC_ARG_ENABLE([tunables], 446 [AS_HELP_STRING([--enable-tunables], 447 [Enable tunables support. Known values are 'yes', 'no' and 'valstring'])], 448 [have_tunables=$enableval], 449 [have_tunables=yes]) 450AC_SUBST(have_tunables) 451if test "$have_tunables" = yes; then 452 AC_DEFINE(HAVE_TUNABLES) 453fi 454 455# The abi-tags file uses a fairly simplistic model for name recognition that 456# can't distinguish i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a 457# $host_os of `gnu*' here to be `gnu-gnu*' just so that it can tell. 458# This doesn't get used much beyond that, so it's fairly safe. 459case "$host_os" in 460linux*) 461 ;; 462gnu*) 463 host_os=`echo $host_os | sed -e 's/gnu/gnu-gnu/'` 464 ;; 465esac 466 467AC_ARG_ENABLE([mathvec], 468 [AS_HELP_STRING([--enable-mathvec], 469 [Enable building and installing mathvec @<:@default depends on architecture@:>@])], 470 [build_mathvec=$enableval], 471 [build_mathvec=notset]) 472 473AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[]], [[ 474#ifndef __CET__ 475# error no CET compiler support 476#endif]])], 477 [libc_cv_compiler_default_cet=yes], 478 [libc_cv_compiler_default_cet=no]) 479 480AC_ARG_ENABLE([cet], 481 AS_HELP_STRING([--enable-cet], 482 [enable Intel Control-flow Enforcement Technology (CET), x86 only]), 483 [enable_cet=$enableval], 484 [enable_cet=$libc_cv_compiler_default_cet]) 485 486AC_ARG_ENABLE([scv], 487 AC_HELP_STRING([--disable-scv], 488 [syscalls will not use scv instruction, even if the kernel supports it, powerpc only]), 489 [use_scv=$enableval], 490 [use_scv=yes]) 491 492AS_IF([[test "$use_scv" != "no"]],[AC_DEFINE(USE_PPC_SCV)]) 493 494# We keep the original values in `$config_*' and never modify them, so we 495# can write them unchanged into config.make. Everything else uses 496# $machine, $vendor, and $os, and changes them whenever convenient. 497config_machine=$host_cpu config_vendor=$host_vendor config_os=$host_os 498 499# Don't allow vendor == "unknown" 500test "$config_vendor" = unknown && config_vendor= 501config_os="`echo $config_os | sed 's/^unknown-//'`" 502 503# Some configurations imply other options. 504elf=yes 505 506# The configure fragment of a port can modify these to supplement 507# or override the table in the case statement below. No fragment should 508# ever change the config_* variables, however. 509machine=$config_machine 510vendor=$config_vendor 511os=$config_os 512base_os='' 513 514submachine= 515AC_ARG_WITH([cpu], 516 AS_HELP_STRING([--with-cpu=CPU], [select code for CPU variant]), 517 [dnl 518 case "$withval" in 519 yes|'') AC_MSG_ERROR([--with-cpu requires an argument]) ;; 520 no) ;; 521 *) submachine="$withval" ;; 522 esac 523]) 524 525# An preconfigure script can set this when it wants to disable the sanity 526# check below. 527libc_config_ok=no 528 529# A preconfigure script for a system that may or may not use fpu 530# sysdeps directories sets this to a preprocessor conditional for 531# whether to use such directories. 532with_fp_cond=1 533 534dnl Let sysdeps/*/preconfigure act here. 535LIBC_PRECONFIGURE([$srcdir], [for sysdeps]) 536 537 538### 539### By using the undocumented --enable-hacker-mode option for configure 540### one can skip this test to make the configuration not fail for unsupported 541### platforms. 542### 543if test -z "$enable_hacker_mode" && test x"$libc_config_ok" != xyes; then 544 case "$machine-$host_os" in 545 *-linux* | *-gnu*) 546 ;; 547 *) 548 AC_MSG_ERROR([ 549*** The GNU C library is currently unavailable for this platform. 550*** If you are interested in seeing glibc on this platform visit 551*** the "How to submit a new port" in the wiki: 552*** https://sourceware.org/glibc/wiki/#Development 553*** and join the community!]) 554 ;; 555 esac 556fi 557 558# Set base_machine if not set by a preconfigure fragment. 559test -n "$base_machine" || base_machine=$machine 560AC_SUBST(base_machine) 561 562# Determine whether to use fpu or nofpu sysdeps directories. 563AC_CACHE_CHECK([for use of fpu sysdeps directories], 564 libc_cv_with_fp, [dnl 565cat > conftest.c <<EOF 566#if $with_fp_cond 567int dummy; 568#else 569# error "no hardware floating point" 570#endif 571EOF 572libc_cv_with_fp=no 573if ${CC-cc} $CFLAGS $CPPFLAGS -S conftest.c -o conftest.s \ 574 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then 575 libc_cv_with_fp=yes 576fi 577rm -f conftest*]) 578AC_SUBST(libc_cv_with_fp) 579 580AC_CACHE_CHECK(for -fstack-protector, libc_cv_ssp, [dnl 581LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector], 582 [libc_cv_ssp=yes], 583 [libc_cv_ssp=no]) 584]) 585 586AC_CACHE_CHECK(for -fstack-protector-strong, libc_cv_ssp_strong, [dnl 587LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector-strong], 588 [libc_cv_ssp_strong=yes], 589 [libc_cv_ssp_strong=no]) 590]) 591 592AC_CACHE_CHECK(for -fstack-protector-all, libc_cv_ssp_all, [dnl 593LIBC_TRY_CC_OPTION([$CFLAGS $CPPFLAGS -Werror -fstack-protector-all], 594 [libc_cv_ssp_all=yes], 595 [libc_cv_ssp_all=no]) 596]) 597 598stack_protector= 599no_stack_protector= 600if test "$libc_cv_ssp" = yes; then 601 no_stack_protector="-fno-stack-protector -DSTACK_PROTECTOR_LEVEL=0" 602 AC_DEFINE(HAVE_CC_NO_STACK_PROTECTOR) 603fi 604 605if test "$enable_stack_protector" = yes && test "$libc_cv_ssp" = yes; then 606 stack_protector="-fstack-protector" 607 AC_DEFINE(STACK_PROTECTOR_LEVEL, 1) 608elif test "$enable_stack_protector" = all && test "$libc_cv_ssp_all" = yes; then 609 stack_protector="-fstack-protector-all" 610 AC_DEFINE(STACK_PROTECTOR_LEVEL, 2) 611elif test "$enable_stack_protector" = strong && test "$libc_cv_ssp_strong" = yes; then 612 stack_protector="-fstack-protector-strong" 613 AC_DEFINE(STACK_PROTECTOR_LEVEL, 3) 614else 615 stack_protector="-fno-stack-protector" 616 AC_DEFINE(STACK_PROTECTOR_LEVEL, 0) 617fi 618AC_SUBST(libc_cv_ssp) 619AC_SUBST(stack_protector) 620AC_SUBST(no_stack_protector) 621 622if test -n "$stack_protector"; then 623 dnl Don't run configure tests with stack-protection on, to avoid problems with 624 dnl bootstrapping. 625 no_ssp=-fno-stack-protector 626else 627 no_ssp= 628 629 if test "$enable_stack_protector" != no; then 630 AC_MSG_ERROR([--enable-stack-protector=$enable_stack_protector specified, but specified level of stack protection is not supported by the compiler.]) 631 fi 632fi 633 634# For the multi-arch option we need support in the assembler & linker. 635AC_CACHE_CHECK([for assembler and linker STT_GNU_IFUNC support], 636 libc_cv_ld_gnu_indirect_function, [dnl 637cat > conftest.S <<EOF 638.type foo,%gnu_indirect_function 639foo: 640.globl _start 641_start: 642.globl __start 643__start: 644.data 645#ifdef _LP64 646.quad foo 647#else 648.long foo 649#endif 650EOF 651libc_cv_ld_gnu_indirect_function=no 652if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \ 653 -nostartfiles -nostdlib $no_ssp \ 654 -o conftest conftest.S 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then 655 # Do a link to see if the backend supports IFUNC relocs. 656 $READELF -r conftest 1>&AS_MESSAGE_LOG_FD 657 LC_ALL=C $READELF -Wr conftest | grep -q 'IRELATIVE\|R_SPARC_JMP_IREL' && { 658 libc_cv_ld_gnu_indirect_function=yes 659 } 660fi 661rm -f conftest*]) 662 663# Check if gcc supports attribute ifunc as it is used in libc_ifunc macro. 664AC_CACHE_CHECK([for gcc attribute ifunc support], 665 libc_cv_gcc_indirect_function, [dnl 666cat > conftest.c <<EOF 667extern int func (int); 668int used_func (int a) 669{ 670 return a; 671} 672static void *resolver () 673{ 674 return &used_func; 675} 676extern __typeof (func) func __attribute__ ((ifunc ("resolver"))); 677EOF 678libc_cv_gcc_indirect_function=no 679if ${CC-cc} -c conftest.c -o conftest.o 1>&AS_MESSAGE_LOG_FD \ 680 2>&AS_MESSAGE_LOG_FD ; then 681 if $READELF -s conftest.o | grep IFUNC >/dev/null 2>&AS_MESSAGE_LOG_FD; then 682 libc_cv_gcc_indirect_function=yes 683 fi 684fi 685rm -f conftest*]) 686 687# Check if linker supports textrel relocation with ifunc (used on elf/tests). 688# Note that it relies on libc_cv_ld_gnu_indirect_function test above. 689AC_CACHE_CHECK([whether the linker supports textrels along with ifunc], 690 libc_cv_textrel_ifunc, [dnl 691cat > conftest.S <<EOF 692.type foo,%gnu_indirect_function 693foo: 694.globl _start 695_start: 696.globl __start 697__start: 698.data 699#ifdef _LP64 700.quad foo 701#else 702.long foo 703#endif 704.text 705.globl address 706address: 707#ifdef _LP64 708.quad address 709#else 710.long address 711#endif 712EOF 713libc_cv_textrel_ifunc=no 714if test $libc_cv_ld_gnu_indirect_function = yes; then 715 if AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -nostartfiles -nostdlib $no_ssp -pie -o conftest conftest.S); then 716 libc_cv_textrel_ifunc=yes 717 fi 718fi 719rm -f conftest*]) 720AC_SUBST(libc_cv_textrel_ifunc) 721 722# Check if CC supports attribute retain as it is used in attribute_used_retain macro. 723AC_CACHE_CHECK([for GNU attribute retain support], 724 libc_cv_gnu_retain, [dnl 725cat > conftest.c <<EOF 726static int var __attribute__ ((used, retain, section ("__libc_atexit"))); 727EOF 728libc_cv_gnu_retain=no 729if ${CC-cc} -Werror -c conftest.c -o /dev/null 1>&AS_MESSAGE_LOG_FD \ 730 2>&AS_MESSAGE_LOG_FD ; then 731 libc_cv_gnu_retain=yes 732fi 733rm -f conftest*]) 734if test $libc_cv_gnu_retain = yes; then 735 AC_DEFINE(HAVE_GNU_RETAIN) 736fi 737LIBC_CONFIG_VAR([have-gnu-retain], [$libc_cv_gnu_retain]) 738 739# Check if gcc warns about alias for function with incompatible types. 740AC_CACHE_CHECK([if compiler warns about alias for function with incompatible types], 741 libc_cv_gcc_incompatible_alias, [dnl 742cat > conftest.c <<EOF 743int __redirect_foo (const void *s, int c); 744 745__typeof (__redirect_foo) *foo_impl (void) __asm__ ("foo"); 746__typeof (__redirect_foo) *foo_impl (void) 747{ 748 return 0; 749} 750 751extern __typeof (__redirect_foo) foo_alias __attribute__ ((alias ("foo"))); 752EOF 753libc_cv_gcc_incompatible_alias=yes 754if ${CC-cc} -Werror -c conftest.c -o conftest.o 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ; then 755 libc_cv_gcc_incompatible_alias=no 756fi 757rm -f conftest*]) 758 759if test x"$libc_cv_ld_gnu_indirect_function" != xyes; then 760 if test x"$multi_arch" = xyes; then 761 AC_MSG_ERROR([--enable-multi-arch support requires assembler and linker support]) 762 else 763 multi_arch=no 764 fi 765fi 766if test x"$libc_cv_gcc_indirect_function" != xyes; then 767 # GCC 8+ emits a warning for alias with incompatible types and it might 768 # fail to build ifunc resolvers aliases to either weak or internal 769 # symbols. Disables multiarch build in this case. 770 if test x"$libc_cv_gcc_incompatible_alias" = xyes; then 771 AC_MSG_WARN([gcc emits a warning for alias between functions of incompatible types]) 772 if test x"$multi_arch" = xyes; then 773 AC_MSG_ERROR([--enable-multi-arch support requires a gcc with gnu-indirect-function support]) 774 fi 775 AC_MSG_WARN([Multi-arch is disabled.]) 776 multi_arch=no 777 elif test x"$multi_arch" = xyes; then 778 AC_MSG_WARN([--enable-multi-arch support recommends a gcc with gnu-indirect-function support. 779Please use a gcc which supports it by default or configure gcc with --enable-gnu-indirect-function]) 780 fi 781fi 782multi_arch_d= 783if test x"$multi_arch" != xno; then 784 multi_arch_d=/multiarch 785fi 786 787# Compute the list of sysdep directories for this configuration. 788# This can take a while to compute. 789sysdep_dir=$srcdir/sysdeps 790AC_MSG_CHECKING(sysdep dirs) 791dnl We need to use [ and ] for other purposes for a while now. 792changequote(,)dnl 793# Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1. 794os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`" 795 796test "x$base_os" != x || case "$os" in 797gnu*) 798 base_os=mach/hurd ;; 799linux*) 800 base_os=unix/sysv ;; 801esac 802 803# For sunos4.1.1, try sunos4.1.1, then sunos4.1, then sunos4, then sunos. 804tail=$os 805ostry=$os 806while o=`echo $tail | sed 's/\.[^.]*$//'`; test $o != $tail; do 807 ostry="$ostry /$o" 808 tail=$o 809done 810o=`echo $tail | sed 's/[0-9]*$//'` 811if test $o != $tail; then 812 ostry="$ostry /$o" 813fi 814# For linux-gnu, try linux-gnu, then linux. 815o=`echo $tail | sed 's/-.*$//'` 816if test $o != $tail; then 817 ostry="$ostry /$o" 818fi 819 820# For unix/sysv/sysv4, try unix/sysv/sysv4, then unix/sysv, then unix. 821base= 822tail=$base_os 823while b=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$b"; do 824 set $b 825 base="$base /$1" 826 tail="$2" 827done 828 829# For sparc/sparc32, try sparc/sparc32 and then sparc. 830mach= 831tail=$machine${submachine:+/$submachine} 832while m=`echo $tail | sed 's@^\(.*\)/\([^/]*\)$@& \1@'`; test -n "$m"; do 833 set $m 834 # Prepend the machine's FPU directory unless the architecture specific 835 # preconfigure disables it. 836 if test "$libc_cv_with_fp" = yes; then 837 maybe_fpu=/fpu 838 else 839 maybe_fpu=/nofpu 840 fi 841 # For each machine term, try it with and then without /multiarch. 842 for try_fpu in $maybe_fpu ''; do 843 for try_multi in $multi_arch_d ''; do 844 mach="$mach /$1$try_fpu$try_multi" 845 done 846 done 847 tail="$2" 848done 849 850dnl We are done with glob and regexp uses of [ and ]; return to autoconf. 851changequote([,])dnl 852 853# Find what sysdep directories exist. 854sysnames= 855for b in $base ''; do 856 for m0 in $mach ''; do 857 for v in /$vendor ''; do 858 test "$v" = / && continue 859 for o in /$ostry ''; do 860 test "$o" = / && continue 861 for m in $mach ''; do 862 try_suffix="$m0$b$v$o$m" 863 if test -n "$try_suffix"; then 864 try_srcdir="${srcdir}/" 865 try="sysdeps$try_suffix" 866 test -n "$enable_debug_configure" && 867 echo "$0 [DEBUG]: try $try" >&2 868 if test -d "$try_srcdir$try"; then 869 sysnames="$sysnames $try" 870 { test -n "$o" || test -n "$b"; } && os_used=t 871 { test -n "$m" || test -n "$m0"; } && machine_used=t 872 case x${m0:-$m} in 873 x*/$submachine) submachine_used=t ;; 874 esac 875 fi 876 fi 877 done 878 done 879 done 880 done 881done 882 883# If the assembler supports gnu_indirect_function symbol type and the 884# architecture supports multi-arch, we enable multi-arch by default. 885case $sysnames in 886*"$multi_arch_d"*) 887 ;; 888*) 889 test x"$multi_arch" = xdefault && multi_arch=no 890 ;; 891esac 892if test x"$multi_arch" != xno; then 893 AC_DEFINE(USE_MULTIARCH) 894fi 895AC_SUBST(multi_arch) 896 897if test -z "$os_used" && test "$os" != none; then 898 AC_MSG_ERROR(Operating system $os is not supported.) 899fi 900if test -z "$machine_used" && test "$machine" != none; then 901 AC_MSG_ERROR(The $machine is not supported.) 902fi 903if test -z "$submachine_used" && test -n "$submachine"; then 904 AC_MSG_ERROR(The $submachine subspecies of $host_cpu is not supported.) 905fi 906AC_SUBST(submachine) 907 908# We have now validated the configuration. 909 910# Expand the list of system names into a full list of directories 911# from each element's parent name and Implies file (if present). 912set $sysnames 913names= 914while test $# -gt 0; do 915 name=$1 916 shift 917 918 case " $names " in *" $name "*) 919 # Already in the list. 920 continue 921 esac 922 923 # Report each name as we discover it, so there is no long pause in output. 924 echo $ECHO_N "$name $ECHO_C" >&AS_MESSAGE_FD 925 926 name_base=`echo $name | sed -e 's@\(.*sysdeps\)/.*@\1@'` 927 928 case $name in 929 /*) xsrcdir= ;; 930 *) xsrcdir=$srcdir/ ;; 931 esac 932 test -n "$enable_debug_configure" && 933 echo "[DEBUG]: name/Implies $xsrcdir$name/Implies" >&2 934 935 for implies_file in Implies Implies-before Implies-after; do 936 implies_type=`echo $implies_file | sed s/-/_/` 937 eval ${implies_type}= 938 if test -f $xsrcdir$name/$implies_file; then 939 # Collect more names from the `Implies' file (removing comments). 940 implied_candidate="`sed 's/#.*$//' < $xsrcdir$name/$implies_file`" 941 for x in $implied_candidate; do 942 found=no 943 if test -d $xsrcdir$name_base/$x; then 944 eval "${implies_type}=\"\$${implies_type} \$name_base/\$x\"" 945 found=yes 946 fi 947 try="sysdeps/$x" 948 try_srcdir=$srcdir/ 949 test -n "$enable_debug_configure" && 950 echo "[DEBUG]: $name $implies_file $x try() {$try_srcdir}$try" >&2 951 if test $try != $xsrcdir$name_base/$x && test -d $try_srcdir$try; 952 then 953 eval "${implies_type}=\"\$${implies_type} \$try\"" 954 found=yes 955 fi 956 if test $found = no; then 957 AC_MSG_WARN($name/$implies_file specifies nonexistent $x) 958 fi 959 done 960 fi 961 done 962 963 # Add NAME to the list of names. 964 names="$names $name" 965 966 # Find the parent of NAME, using the empty string if it has none. 967changequote(,)dnl 968 parent="`echo $name | sed -n -e 's=/[^/]*$==' -e '/sysdeps$/q' -e p`" 969changequote([,])dnl 970 971 test -n "$enable_debug_configure" && 972 echo "[DEBUG]: $name Implies='$Implies' rest='$*' parent='$parent' \ 973Implies_before='$Implies_before' Implies_after='$Implies_after'" >&2 974 975 # Add the names implied by NAME, and NAME's parent (if it has one), to 976 # the list of names to be processed (the argument list). We prepend the 977 # implied names to the list and append the parent. We want implied 978 # directories to come before further directories inferred from the 979 # configuration components; this ensures that for sysv4, unix/common 980 # (implied by unix/sysv/sysv4) comes before unix/sysv (in ostry (here $*) 981 # after sysv4). 982 sysnames="`echo $Implies $* $Implies_before $parent $Implies_after`" 983 test -n "$sysnames" && set $sysnames 984done 985 986# Add the default directories. 987default_sysnames="sysdeps/generic" 988sysnames="$names $default_sysnames" 989AC_SUBST(sysnames) 990# The other names were emitted during the scan. 991AC_MSG_RESULT($default_sysnames) 992 993 994### Locate tools. 995 996AC_PROG_INSTALL 997if test "$INSTALL" = "${srcdir}/scripts/install-sh -c"; then 998 # The makefiles need to use a different form to find it in $srcdir. 999 INSTALL='\$(..)./scripts/install-sh -c' 1000fi 1001AC_PROG_LN_S 1002 1003LIBC_PROG_BINUTILS 1004 1005# Accept binutils 2.25 or newer. 1006AC_CHECK_PROG_VER(AS, $AS, --version, 1007 [GNU assembler.* \([0-9]*\.[0-9.]*\)], 1008 [2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*], 1009 AS=: critic_missing="$critic_missing as") 1010 1011libc_cv_with_lld=no 1012case $($LD --version) in 1013 "GNU gold"*) 1014 # Accept gold 1.14 or higher 1015 AC_CHECK_PROG_VER(LD, $LD, --version, 1016 [GNU gold.* \([0-9][0-9]*\.[0-9.]*\)], 1017 [1.1[4-9]*|1.[2-9][0-9]*|1.1[0-9][0-9]*|[2-9].*|[1-9][0-9]*], 1018 LD=: critic_missing="$critic_missing GNU gold") 1019 ;; 1020 "LLD"*) 1021 # Accept LLD 13.0.0 or higher 1022 AC_CHECK_PROG_VER(LD, $LD, --version, 1023 [LLD.* \([0-9][0-9]*\.[0-9.]*\)], 1024 [1[3-9].*|[2-9][0-9].*], 1025 LD=: critic_missing="$critic_missing LLD") 1026 libc_cv_with_lld=yes 1027 ;; 1028 *) 1029 AC_CHECK_PROG_VER(LD, $LD, --version, 1030 [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)], 1031 [2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*], 1032 LD=: critic_missing="$critic_missing GNU ld") 1033 ;; 1034esac 1035LIBC_CONFIG_VAR([with-lld], [$libc_cv_with_lld]) 1036 1037# These programs are version sensitive. 1038AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version, 1039 [GNU Make[^0-9]*\([0-9][0-9.]*\)], 1040 [[4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make") 1041 1042AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version, 1043 [GNU gettext.* \([0-9]*\.[0-9.]*\)], 1044 [0.10.3[6-9]* | 0.10.[4-9][0-9]* | 0.1[1-9]* | 0.[2-9][0-9]* | [1-9].*], 1045 MSGFMT=: aux_missing="$aux_missing msgfmt") 1046AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version, 1047 [GNU texinfo.* \([0-9][0-9.]*\)], 1048 [4.[7-9]*|4.[1-9][0-9]*|[5-9].*], 1049 MAKEINFO=: aux_missing="$aux_missing makeinfo") 1050AC_CHECK_PROG_VER(SED, sed, --version, 1051 [GNU sed[^0-9]* \([0-9]*\.[0-9.]*\)], 1052 [3.0[2-9]*|3.[1-9]*|[4-9]*], 1053 SED=: aux_missing="$aux_missing sed") 1054AC_CHECK_PROG_VER(AWK, gawk, --version, 1055 [GNU Awk[^0-9]*\([0-9][0-9.]*\)], 1056 [3.1.[2-9]*|3.[2-9]*|[4-9]*], critic_missing="$critic_missing gawk") 1057AC_CHECK_PROG_VER(BISON, bison, --version, 1058 [bison (GNU Bison) \([0-9]*\.[0-9.]*\)], 1059 [2.7*|[3-9].*|[1-9][0-9]*], critic_missing="$critic_missing bison") 1060 1061AC_CACHE_CHECK([if $CC is sufficient to build libc], libc_cv_compiler_ok, [ 1062AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[]], [[ 1063#if !defined __GNUC__ || __GNUC__ < 6 || (__GNUC__ == 6 && __GNUC_MINOR__ < 2) 1064#error insufficient compiler 1065#endif]])], 1066 [libc_cv_compiler_ok=yes], 1067 [libc_cv_compiler_ok=no])]) 1068AS_IF([test $libc_cv_compiler_ok != yes], 1069 [critic_missing="$critic_missing compiler"]) 1070 1071AC_CHECK_TOOL(NM, nm, false) 1072 1073if test "x$maintainer" = "xyes"; then 1074 AC_CHECK_PROGS(AUTOCONF, autoconf, no) 1075 case "x$AUTOCONF" in 1076 xno|x|x:) AUTOCONF=no ;; 1077 *) 1078 AC_CACHE_CHECK(dnl 1079 whether $AUTOCONF${ACFLAGS:+ }$ACFLAGS works, libc_cv_autoconf_works, [dnl 1080 if (cd $srcdir; $AUTOCONF $ACFLAGS configure.ac > /dev/null 2>&1); then 1081 libc_cv_autoconf_works=yes 1082 else 1083 libc_cv_autoconf_works=no 1084 fi]) 1085 test $libc_cv_autoconf_works = yes || AUTOCONF=no 1086 ;; 1087 esac 1088 if test "x$AUTOCONF" = xno; then 1089 aux_missing="$aux_missing autoconf" 1090 fi 1091else 1092 AUTOCONF=no 1093fi 1094 1095# Check for python3 if available, or else python. 1096AC_CHECK_PROG_VER(PYTHON_PROG, python3 python, --version, 1097 [Python \([0-9][0-9.]*\)], 1098 [3.[4-9]*|3.[1-9][0-9]*|[4-9].*|[1-9][0-9]*], 1099 critic_missing="$critic_missing python") 1100PYTHON="$PYTHON_PROG -B" 1101AC_SUBST(PYTHON) 1102 1103test -n "$critic_missing" && AC_MSG_ERROR([ 1104*** These critical programs are missing or too old:$critic_missing 1105*** Check the INSTALL file for required versions.]) 1106 1107test -n "$aux_missing" && AC_MSG_WARN([ 1108*** These auxiliary programs are missing or incompatible versions:$aux_missing 1109*** some features or tests will be disabled. 1110*** Check the INSTALL file for required versions.]) 1111 1112# if using special system headers, find out the compiler's sekrit 1113# header directory and add that to the list. NOTE: Only does the right 1114# thing on a system that doesn't need fixincludes. (Not presently a problem.) 1115if test -n "$sysheaders"; then 1116 SYSINCLUDES=-nostdinc 1117 for d in include include-fixed; do 1118 i=`$CC -print-file-name="$d"` && test "x$i" != x && test "x$i" != "x$d" && 1119 SYSINCLUDES="$SYSINCLUDES -isystem $i" 1120 done 1121 SYSINCLUDES="$SYSINCLUDES \ 1122-isystem `echo $sysheaders | sed 's/:/ -isystem /g'`" 1123 if test -n "$CXX"; then 1124 CXX_SYSINCLUDES= 1125 for cxxheaders in `$CXX -v -S -x c++ /dev/null -o /dev/null 2>&1 \ 1126 | sed -n -e '1,/#include/d' -e 's/^ \(\/.*\/[cg]++\)/\1/p'`; do 1127 test "x$cxxheaders" != x && 1128 CXX_SYSINCLUDES="$CXX_SYSINCLUDES -isystem $cxxheaders" 1129 done 1130 fi 1131fi 1132AC_SUBST(SYSINCLUDES) 1133AC_SUBST(CXX_SYSINCLUDES) 1134 1135# Obtain some C++ header file paths. This is used to make a local 1136# copy of those headers in Makerules. 1137if test -n "$CXX"; then 1138 find_cxx_header () { 1139 echo "#include <$1>" | $CXX -M -MP -x c++ - 2>/dev/null \ 1140 | sed -n "\,$1:,{s/:\$//;p}" 1141 } 1142 CXX_CSTDLIB_HEADER="$(find_cxx_header cstdlib)" 1143 CXX_CMATH_HEADER="$(find_cxx_header cmath)" 1144 CXX_BITS_STD_ABS_H="$(find_cxx_header bits/std_abs.h)" 1145fi 1146AC_SUBST(CXX_CSTDLIB_HEADER) 1147AC_SUBST(CXX_CMATH_HEADER) 1148AC_SUBST(CXX_BITS_STD_ABS_H) 1149 1150# Test if LD_LIBRARY_PATH contains the notation for the current directory 1151# since this would lead to problems installing/building glibc. 1152# LD_LIBRARY_PATH contains the current directory if one of the following 1153# is true: 1154# - one of the terminals (":" and ";") is the first or last sign 1155# - two terminals occur directly after each other 1156# - the path contains an element with a dot in it 1157AC_MSG_CHECKING(LD_LIBRARY_PATH variable) 1158changequote(,)dnl 1159case ${LD_LIBRARY_PATH} in 1160 [:\;]* | *[:\;] | *[:\;][:\;]* | *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* ) 1161 ld_library_path_setting="contains current directory" 1162 ;; 1163 *) 1164 ld_library_path_setting="ok" 1165 ;; 1166esac 1167changequote([,])dnl 1168AC_MSG_RESULT($ld_library_path_setting) 1169if test "$ld_library_path_setting" != "ok"; then 1170AC_MSG_ERROR([ 1171*** LD_LIBRARY_PATH shouldn't contain the current directory when 1172*** building glibc. Please change the environment variable 1173*** and run configure again.]) 1174fi 1175 1176AC_PATH_PROG(BASH_SHELL, bash, no) 1177 1178AC_PATH_PROG(PERL, perl, no) 1179if test "$PERL" != no && 1180 (eval `$PERL -V:apiversion`; test `expr "$apiversion" \< 5` -ne 0); then 1181 PERL=no 1182fi 1183AC_PATH_PROG(INSTALL_INFO, install-info, no, 1184 $PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin) 1185 1186AC_CACHE_CHECK(for .set assembler directive, libc_cv_asm_set_directive, [dnl 1187cat > conftest.s <<EOF 1188.text 1189foo: 1190.set glibc_conftest_frobozz,foo 1191.globl glibc_conftest_frobozz 1192EOF 1193# The alpha-dec-osf1 assembler gives only a warning for `.set' 1194# (but it doesn't work), so we must do a linking check to be sure. 1195cat > conftest1.c <<\EOF 1196extern int glibc_conftest_frobozz; 1197void _start() { glibc_conftest_frobozz = 1; } 1198EOF 1199if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS \ 1200 -nostartfiles -nostdlib $no_ssp \ 1201 -o conftest conftest.s conftest1.c 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then 1202 libc_cv_asm_set_directive=yes 1203else 1204 libc_cv_asm_set_directive=no 1205fi 1206rm -f conftest*]) 1207if test $libc_cv_asm_set_directive = yes; then 1208 AC_DEFINE(HAVE_ASM_SET_DIRECTIVE) 1209fi 1210 1211AC_CACHE_CHECK(linker support for protected data symbol, 1212 libc_cv_protected_data, 1213 [cat > conftest.c <<EOF 1214 int bar __attribute__ ((visibility ("protected"))) = 1; 1215EOF 1216 libc_cv_protected_data=no 1217 if AC_TRY_COMMAND(${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -o conftest.so); then 1218 cat > conftest.c <<EOF 1219 extern int bar; 1220 int main (void) { return bar; } 1221EOF 1222 if AC_TRY_COMMAND(${CC-cc} -nostdlib -nostartfiles $no_ssp conftest.c -o conftest conftest.so); then 1223 libc_cv_protected_data=yes 1224 fi 1225 fi 1226 rm -f conftest.* 1227 ]) 1228AC_SUBST(libc_cv_protected_data) 1229 1230AC_CACHE_CHECK(linker support for INSERT in linker script, 1231 libc_cv_insert, 1232 [cat > conftest.c <<EOF 1233 int __attribute__ ((section(".bar"))) bar = 0x12345678; 1234 int test (void) { return bar; } 1235EOF 1236 cat > conftest.t <<EOF 1237 SECTIONS 1238 { 1239 .bar : { *(.bar) } 1240 } 1241 INSERT AFTER .rela.dyn; 1242EOF 1243 libc_cv_insert=no 1244 if AC_TRY_COMMAND([${CC-cc} -nostdlib -nostartfiles $no_ssp -fPIC -shared conftest.c -Wl,-T,conftest.t -o conftest.so]); then 1245 libc_cv_insert=yes 1246 fi 1247 rm -f conftest.* 1248 ]) 1249AC_SUBST(libc_cv_insert) 1250 1251AC_CACHE_CHECK(for broken __attribute__((alias())), 1252 libc_cv_broken_alias_attribute, 1253 [cat > conftest.c <<EOF 1254 extern int foo (int x) __asm ("xyzzy"); 1255 int bar (int x) { return x; } 1256 extern __typeof (bar) foo __attribute ((weak, alias ("bar"))); 1257 extern int dfoo; 1258 extern __typeof (dfoo) dfoo __asm ("abccb"); 1259 int dfoo = 1; 1260EOF 1261 libc_cv_broken_alias_attribute=yes 1262 if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then 1263 if grep 'xyzzy' conftest.s >/dev/null && 1264 grep 'abccb' conftest.s >/dev/null; then 1265 libc_cv_broken_alias_attribute=no 1266 fi 1267 fi 1268 rm -f conftest.c conftest.s 1269 ]) 1270if test $libc_cv_broken_alias_attribute = yes; then 1271 AC_MSG_ERROR(working alias attribute support required) 1272fi 1273 1274AC_CACHE_CHECK(whether to put _rtld_local into .sdata section, 1275 libc_cv_have_sdata_section, 1276 [echo "int i;" > conftest.c 1277 libc_cv_have_sdata_section=no 1278 if ${CC-cc} $LDFLAGS -fPIC -shared -Wl,--verbose conftest.c -o conftest.so 2>&1 \ 1279 | grep '\.sdata' >/dev/null; then 1280 libc_cv_have_sdata_section=yes 1281 fi 1282 rm -f conftest.c conftest.so 1283 ]) 1284if test $libc_cv_have_sdata_section = yes; then 1285 AC_DEFINE(HAVE_SDATA_SECTION) 1286fi 1287 1288AC_CACHE_CHECK(for libunwind-support in compiler, 1289 libc_cv_cc_with_libunwind, [ 1290 cat > conftest.c <<EOF 1291int main (void) { return 0; } 1292EOF 1293 if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static -o conftest \ 1294 conftest.c -v 2>&1 >/dev/null | grep ' -lunwind ' >/dev/null; then 1295 libc_cv_cc_with_libunwind=yes 1296 else 1297 libc_cv_cc_with_libunwind=no 1298 fi 1299 rm -f conftest*]) 1300AC_SUBST(libc_cv_cc_with_libunwind) 1301if test $libc_cv_cc_with_libunwind = yes; then 1302 AC_DEFINE(HAVE_CC_WITH_LIBUNWIND) 1303fi 1304 1305ASFLAGS_config= 1306AC_CACHE_CHECK(whether --noexecstack is desirable for .S files, 1307 libc_cv_as_noexecstack, [dnl 1308cat > conftest.c <<EOF 1309void foo (void) { } 1310EOF 1311if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS 1312 -S -o conftest.s conftest.c 1>&AS_MESSAGE_LOG_FD]) \ 1313 && grep .note.GNU-stack conftest.s >/dev/null \ 1314 && AC_TRY_COMMAND([${CC-cc} $ASFLAGS -Wa,--noexecstack 1315 -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD]) 1316then 1317 libc_cv_as_noexecstack=yes 1318else 1319 libc_cv_as_noexecstack=no 1320fi 1321rm -f conftest*]) 1322if test $libc_cv_as_noexecstack = yes; then 1323 ASFLAGS_config="$ASFLAGS_config -Wa,--noexecstack" 1324fi 1325AC_SUBST(ASFLAGS_config) 1326 1327LIBC_LINKER_FEATURE([-z execstack], [-Wl,-z,execstack], 1328 [libc_cv_z_execstack=yes], [libc_cv_z_execstack=no]) 1329AC_SUBST(libc_cv_z_execstack) 1330 1331LIBC_LINKER_FEATURE([-z start-stop-gc], [-Wl,-z,start-stop-gc], 1332 [libc_cv_z_start_stop_gc=yes], [libc_cv_z_start_stop_gc=no]) 1333LIBC_CONFIG_VAR([have-z-start-stop-gc], [$libc_cv_z_start_stop_gc]) 1334 1335LIBC_LINKER_FEATURE([--depaudit], [-Wl,--depaudit,x], 1336 [libc_cv_depaudit=yes], [libc_cv_depaudit=no]) 1337LIBC_CONFIG_VAR([have-depaudit], [$libc_cv_depaudit]) 1338 1339LIBC_LINKER_FEATURE([-z pack-relative-relocs], 1340 [-Wl,-z,pack-relative-relocs], 1341 [libc_cv_dt_relr=yes], [libc_cv_dt_relr=no]) 1342LIBC_CONFIG_VAR([have-dt-relr], [$libc_cv_dt_relr]) 1343 1344LIBC_LINKER_FEATURE([--no-dynamic-linker], 1345 [-Wl,--no-dynamic-linker], 1346 [libc_cv_no_dynamic_linker=yes], 1347 [libc_cv_no_dynamic_linker=no]) 1348LIBC_CONFIG_VAR([have-no-dynamic-linker], [$libc_cv_no_dynamic_linker]) 1349 1350AC_CACHE_CHECK(for -static-pie, libc_cv_static_pie, [dnl 1351LIBC_TRY_CC_OPTION([-static-pie], 1352 [libc_cv_static_pie=yes], 1353 [libc_cv_static_pie=no]) 1354]) 1355LIBC_CONFIG_VAR([have-static-pie], [$libc_cv_static_pie]) 1356 1357AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl 1358LIBC_TRY_CC_OPTION([-fpie], [libc_cv_fpie=yes], [libc_cv_fpie=no]) 1359]) 1360 1361AC_SUBST(libc_cv_fpie) 1362 1363AC_CACHE_CHECK(for GLOB_DAT reloc, 1364 libc_cv_has_glob_dat, [dnl 1365cat > conftest.c <<EOF 1366extern int mumble; 1367int foo (void) { return mumble; } 1368EOF 1369if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS 1370 -fPIC -shared -o conftest.so conftest.c 1371 -nostdlib -nostartfiles $no_ssp 1372 1>&AS_MESSAGE_LOG_FD]) 1373then 1374dnl look for GLOB_DAT relocation. 1375 if $READELF -rW conftest.so | grep '_GLOB_DAT' > /dev/null; then 1376 libc_cv_has_glob_dat=yes 1377 else 1378 libc_cv_has_glob_dat=no 1379 fi 1380else 1381 libc_cv_has_glob_dat=no 1382fi 1383rm -f conftest*]) 1384AC_SUBST(libc_cv_has_glob_dat) 1385 1386AC_CACHE_CHECK([for -mtls-dialect=gnu2], libc_cv_mtls_dialect_gnu2, 1387[dnl 1388cat > conftest.c <<EOF 1389__thread int i; 1390void foo (void) 1391{ 1392 i = 10; 1393} 1394EOF 1395if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -fPIC -mtls-dialect=gnu2 -nostdlib -nostartfiles 1396 conftest.c -o conftest 1>&AS_MESSAGE_LOG_FD]) 1397then 1398 libc_cv_mtls_dialect_gnu2=yes 1399else 1400 libc_cv_mtls_dialect_gnu2=no 1401fi 1402rm -f conftest*]) 1403AC_SUBST(libc_cv_mtls_dialect_gnu2) 1404LIBC_CONFIG_VAR([have-mtls-dialect-gnu2], [$libc_cv_mtls_dialect_gnu2]) 1405 1406AC_CACHE_CHECK(whether cc puts quotes around section names, 1407 libc_cv_have_section_quotes, 1408 [cat > conftest.c <<EOF 1409 static const int foo 1410 __attribute__ ((section ("bar"))) = 1; 1411EOF 1412 if ${CC-cc} -S conftest.c -o conftest.s; then 1413 if grep '\.section.*"bar"' conftest.s >/dev/null; then 1414 libc_cv_have_section_quotes=yes 1415 else 1416 libc_cv_have_section_quotes=no 1417 fi 1418 else 1419 libc_cv_have_section_quotes=unknown 1420 fi 1421 rm -f conftest.{c,s} 1422 ]) 1423if test $libc_cv_have_section_quotes = yes; then 1424 AC_DEFINE(HAVE_SECTION_QUOTES) 1425fi 1426 1427AC_CACHE_CHECK(for __builtin_memset, libc_cv_gcc_builtin_memset, [dnl 1428cat > conftest.c <<\EOF 1429void zero (void *x) 1430{ 1431 __builtin_memset (x, 0, 1000); 1432} 1433EOF 1434dnl 1435if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | grep -F "memset" > /dev/null]); 1436then 1437 libc_cv_gcc_builtin_memset=no 1438else 1439 libc_cv_gcc_builtin_memset=yes 1440fi 1441rm -f conftest* ]) 1442if test "$libc_cv_gcc_builtin_memset" = yes ; then 1443 AC_DEFINE(HAVE_BUILTIN_MEMSET) 1444fi 1445 1446AC_CACHE_CHECK(for redirection of built-in functions, libc_cv_gcc_builtin_redirection, [dnl 1447cat > conftest.c <<\EOF 1448extern char *strstr (const char *, const char *) __asm ("my_strstr"); 1449char *foo (const char *a, const char *b) 1450{ 1451 return __builtin_strstr (a, b); 1452} 1453EOF 1454dnl 1455if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | grep -F "my_strstr" > /dev/null]); 1456then 1457 libc_cv_gcc_builtin_redirection=yes 1458else 1459 libc_cv_gcc_builtin_redirection=no 1460fi 1461rm -f conftest* ]) 1462if test "$libc_cv_gcc_builtin_redirection" = no; then 1463 AC_MSG_ERROR([support for the symbol redirection needed]) 1464fi 1465 1466dnl Determine how to disable generation of FMA instructions. 1467AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions], 1468 libc_cv_cc_nofma, [dnl 1469libc_cv_cc_nofma= 1470for opt in -ffp-contract=off -mno-fused-madd; do 1471 LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break]) 1472done]) 1473AC_SUBST(libc_cv_cc_nofma) 1474 1475if test -n "$submachine"; then 1476 AC_CACHE_CHECK([for compiler option for CPU variant], 1477 libc_cv_cc_submachine, [dnl 1478 libc_cv_cc_submachine=no 1479 for opt in "-march=$submachine" "-mcpu=$submachine"; do 1480 LIBC_TRY_CC_OPTION([$opt], [ 1481 libc_cv_cc_submachine="$opt" 1482 break], []) 1483 done]) 1484 if test "x$libc_cv_cc_submachine" = xno; then 1485 AC_MSG_ERROR([${CC-cc} does not support $submachine]) 1486 fi 1487fi 1488AC_SUBST(libc_cv_cc_submachine) 1489 1490AC_CACHE_CHECK(if $CC accepts -fno-tree-loop-distribute-patterns with \ 1491__attribute__ ((__optimize__)), libc_cv_cc_loop_to_function, [dnl 1492cat > conftest.c <<EOF 1493void 1494__attribute__ ((__optimize__ ("-fno-tree-loop-distribute-patterns"))) 1495foo (void) {} 1496EOF 1497libc_cv_cc_loop_to_function=no 1498if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c]) 1499then 1500 libc_cv_cc_loop_to_function=yes 1501fi 1502rm -f conftest*]) 1503if test $libc_cv_cc_loop_to_function = yes; then 1504 AC_DEFINE(HAVE_CC_INHIBIT_LOOP_TO_LIBCALL) 1505fi 1506AC_SUBST(libc_cv_cc_loop_to_function) 1507 1508dnl Check whether we have the gd library available. 1509AC_MSG_CHECKING(for libgd) 1510if test "$with_gd" != "no"; then 1511 old_CFLAGS="$CFLAGS" 1512 CFLAGS="$CFLAGS $libgd_include" 1513 old_LDFLAGS="$LDFLAGS" 1514 LDFLAGS="$LDFLAGS $libgd_ldflags" 1515 old_LIBS="$LIBS" 1516 LIBS="$LIBS -lgd -lpng -lz -lm" 1517 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <gd.h>]], [[gdImagePng (0, 0)]])], 1518 [LIBGD=yes], [LIBGD=no]) 1519 CFLAGS="$old_CFLAGS" 1520 LDFLAGS="$old_LDFLAGS" 1521 LIBS="$old_LIBS" 1522else 1523 LIBGD=no 1524fi 1525AC_MSG_RESULT($LIBGD) 1526AC_SUBST(LIBGD) 1527 1528# SELinux detection 1529if test x$with_selinux = xno ; then 1530 have_selinux=no; 1531else 1532 # See if we have the SELinux library 1533 AC_CHECK_LIB(selinux, is_selinux_enabled, 1534 have_selinux=yes, have_selinux=no) 1535 if test x$with_selinux = xyes ; then 1536 if test x$have_selinux = xno ; then 1537 AC_MSG_ERROR([SELinux explicitly required, but SELinux library not found]) 1538 fi 1539 fi 1540fi 1541# Check if we're building with SELinux support. 1542if test "x$have_selinux" = xyes; then 1543 AC_DEFINE(HAVE_SELINUX, 1, [SELinux support]) 1544 1545 # See if we have the libaudit library 1546 AC_CHECK_LIB(audit, audit_log_user_avc_message, 1547 have_libaudit=yes, have_libaudit=no) 1548 if test "x$have_libaudit" = xyes; then 1549 AC_DEFINE(HAVE_LIBAUDIT, 1, [SELinux libaudit support]) 1550 fi 1551 AC_SUBST(have_libaudit) 1552 1553 # See if we have the libcap library 1554 AC_CHECK_LIB(cap, cap_init, have_libcap=yes, have_libcap=no) 1555 if test "x$have_libcap" = xyes; then 1556 AC_DEFINE(HAVE_LIBCAP, 1, [SELinux libcap support]) 1557 fi 1558 AC_SUBST(have_libcap) 1559fi 1560AC_SUBST(have_selinux) 1561 1562CPPUNDEFS= 1563dnl Check for silly hacked compilers predefining _FORTIFY_SOURCE. 1564dnl Since we are building the implementations of the fortified functions here, 1565dnl having the macro defined interacts very badly. 1566dnl _FORTIFY_SOURCE requires compiler optimization level 1 (gcc -O1) 1567dnl and above (see "man FEATURE_TEST_MACROS"). 1568dnl So do NOT replace AC_COMPILE_IFELSE with AC_PREPROC_IFELSE. 1569AC_CACHE_CHECK([for _FORTIFY_SOURCE predefine], libc_cv_predef_fortify_source, 1570[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ 1571#ifdef _FORTIFY_SOURCE 1572# error bogon 1573#endif]])], 1574 [libc_cv_predef_fortify_source=no], 1575 [libc_cv_predef_fortify_source=yes])]) 1576if test $libc_cv_predef_fortify_source = yes; then 1577 CPPUNDEFS="${CPPUNDEFS:+$CPPUNDEFS }-U_FORTIFY_SOURCE" 1578fi 1579AC_SUBST(CPPUNDEFS) 1580 1581dnl Starting with binutils 2.35, GAS can attach multiple symbol versions 1582dnl to one symbol (PR 23840). 1583AC_CACHE_CHECK(whether the assembler requires one version per symbol, 1584 libc_cv_symver_needs_alias, [dnl 1585 cat > conftest.s <<EOF 1586 .text 1587testfunc: 1588 .globl testfunc 1589 .symver testfunc, testfunc1@VERSION1 1590 .symver testfunc, testfunc1@VERSION2 1591EOF 1592 libc_cv_symver_needs_alias=no 1593 if ${CC-cc} $ASFLAGS -c conftest.s 2>&AS_MESSAGE_LOG_FD; then 1594 libc_cv_symver_needs_alias=no 1595 else 1596 libc_cv_symver_needs_alias=yes 1597 fi 1598 rm conftest.* 1599]) 1600if test "$libc_cv_symver_needs_alias" = yes; then 1601 AC_DEFINE(SYMVER_NEEDS_ALIAS) 1602fi 1603 1604AC_CACHE_CHECK(for __builtin_trap with no external dependencies, 1605 libc_cv_builtin_trap, [dnl 1606libc_cv_builtin_trap=no 1607AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[__builtin_trap ()]])],[ 1608libc_undefs=`$NM -u conftest.o | 1609 LC_ALL=C $AWK '$1 == "U" { print $2 | "sort -u"; next } { exit(1) }' \ 1610 2>&AS_MESSAGE_LOG_FD` || { 1611 AC_MSG_ERROR([confusing output from $NM -u]) 1612} 1613echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'" 1614if test -z "$libc_undefs"; then 1615 libc_cv_builtin_trap=yes 1616fi],[])]) 1617if test $libc_cv_builtin_trap = yes; then 1618 AC_DEFINE([HAVE_BUILTIN_TRAP]) 1619fi 1620 1621dnl C++ feature tests. 1622AC_LANG_PUSH([C++]) 1623 1624AC_CACHE_CHECK([whether the C++ compiler supports thread_local], 1625 libc_cv_cxx_thread_local, [ 1626old_CXXFLAGS="$CXXFLAGS" 1627CXXFLAGS="$CXXFLAGS -std=gnu++11" 1628AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 1629#include <thread> 1630 1631// Compiler support. 1632struct S 1633{ 1634 S (); 1635 ~S (); 1636}; 1637thread_local S s; 1638S * get () { return &s; } 1639 1640// libstdc++ support. 1641#ifndef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL 1642#error __cxa_thread_atexit_impl not supported 1643#endif 1644])], 1645 [libc_cv_cxx_thread_local=yes], 1646 [libc_cv_cxx_thread_local=no]) 1647CXXFLAGS="$old_CXXFLAGS" 1648]) 1649AC_SUBST(libc_cv_cxx_thread_local) 1650 1651AC_LANG_POP([C++]) 1652dnl End of C++ feature tests. 1653 1654### End of automated tests. 1655### Now run sysdeps configure fragments. 1656 1657# They also can set these variables. 1658use_ldconfig=no 1659ldd_rewrite_script=no 1660libc_cv_sysconfdir=$sysconfdir 1661libc_cv_localstatedir=$localstatedir 1662libc_cv_gcc_unwind_find_fde=no 1663libc_cv_idn=no 1664pthread_in_libc=yes 1665 1666# Iterate over all the sysdep directories we will use, running their 1667# configure fragments. 1668for dir in $sysnames; do 1669 case $dir in 1670 /*) dest=$dir ;; 1671 *) dest=$srcdir/$dir ;; 1672 esac 1673 if test -r $dest/configure; then 1674 AC_MSG_RESULT(running configure fragment for $dir) 1675 . $dest/configure 1676 fi 1677done 1678 1679if test x"$build_mathvec" = xnotset; then 1680 build_mathvec=no 1681fi 1682LIBC_CONFIG_VAR([build-mathvec], [$build_mathvec]) 1683 1684AC_SUBST(libc_extra_cflags) 1685AC_SUBST(libc_extra_cppflags) 1686 1687if test x$libc_cv_gcc_unwind_find_fde = xyes; then 1688 AC_DEFINE(EXPORT_UNWIND_FIND_FDE) 1689fi 1690AC_SUBST(libc_cv_gcc_unwind_find_fde) 1691 1692# A sysdeps configure fragment can reset this if IFUNC is not actually 1693# usable even though the assembler knows how to generate the symbol type. 1694if test x"$libc_cv_ld_gnu_indirect_function" = xyes; then 1695 AC_DEFINE(HAVE_IFUNC) 1696fi 1697LIBC_CONFIG_VAR([have-ifunc], [$libc_cv_ld_gnu_indirect_function]) 1698 1699if test x"$libc_cv_gcc_indirect_function" = xyes; then 1700 AC_DEFINE(HAVE_GCC_IFUNC) 1701fi 1702LIBC_CONFIG_VAR([have-gcc-ifunc], [$libc_cv_gcc_indirect_function]) 1703 1704# This is far from the AC_ARG_ENABLE that sets it so that a sysdeps 1705# configure fragment can override the value to prevent this AC_DEFINE. 1706AC_SUBST(use_nscd) 1707if test "x$use_nscd" != xno; then 1708 AC_DEFINE([USE_NSCD]) 1709fi 1710if test "x$build_nscd" = xdefault; then 1711 build_nscd=$use_nscd 1712fi 1713 1714AC_SUBST(libc_cv_slibdir) 1715AC_SUBST(libc_cv_rtlddir) 1716AC_SUBST(libc_cv_complocaledir) 1717AC_SUBST(libc_cv_sysconfdir) 1718AC_SUBST(libc_cv_localstatedir) 1719AC_SUBST(libc_cv_rootsbindir) 1720 1721if test x$use_ldconfig = xyes; then 1722 AC_DEFINE(USE_LDCONFIG) 1723fi 1724AC_SUBST(use_ldconfig) 1725AC_SUBST(ldd_rewrite_script) 1726 1727AC_SUBST(static) 1728AC_SUBST(shared) 1729 1730AC_CACHE_CHECK([whether -fPIC is default], libc_cv_pic_default, 1731[libc_cv_pic_default=yes 1732cat > conftest.c <<EOF 1733#if defined __PIC__ || defined __pic__ || defined PIC || defined pic 1734# error PIC is default. 1735#endif 1736EOF 1737if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then 1738 libc_cv_pic_default=no 1739fi 1740rm -f conftest.*]) 1741LIBC_CONFIG_VAR([build-pic-default], [$libc_cv_pic_default]) 1742 1743AC_CACHE_CHECK([whether -fPIE is default], libc_cv_cc_pie_default, 1744[libc_cv_cc_pie_default=yes 1745cat > conftest.c <<EOF 1746#if defined __PIE__ || defined __pie__ || defined PIE || defined pie 1747# error PIE is default. 1748#endif 1749EOF 1750if eval "${CC-cc} -S conftest.c 2>&AS_MESSAGE_LOG_FD 1>&AS_MESSAGE_LOG_FD"; then 1751 libc_cv_cc_pie_default=no 1752fi 1753rm -f conftest.*]) 1754LIBC_CONFIG_VAR([cc-pie-default], [$libc_cv_cc_pie_default]) 1755 1756AC_MSG_CHECKING(if we can build programs as PIE) 1757AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#ifdef PIE_UNSUPPORTED 1758# error PIE is not supported 1759#endif]])], [libc_cv_pie_supported=yes], [libc_cv_pie_supported=no]) 1760AC_MSG_RESULT($libc_cv_pie_supported) 1761# Disable build-pie-default if target does not support it or glibc is 1762# configured with --disable-default-pie. 1763if test "x$default_pie" = xno; then 1764 build_pie_default=no 1765else 1766 build_pie_default=$libc_cv_pie_supported 1767fi 1768LIBC_CONFIG_VAR([build-pie-default], [$build_pie_default]) 1769 1770AC_MSG_CHECKING(if we can build static PIE programs) 1771libc_cv_static_pie_supported=$libc_cv_pie_supported 1772if test "x$libc_cv_pie_supported" != xno \ 1773 -a "$libc_cv_no_dynamic_linker" = yes; then 1774 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#ifndef SUPPORT_STATIC_PIE 1775# error static PIE is not supported 1776#endif]])], [libc_cv_static_pie_supported=yes], 1777 [libc_cv_static_pie_supported=no]) 1778fi 1779AC_MSG_RESULT($libc_cv_static_pie_supported) 1780 1781# Enable static-pie only if it is available and glibc isn't configured 1782# with --disable-default-pie. 1783if test "x$default_pie" = xno; then 1784 libc_cv_static_pie=no 1785else 1786 libc_cv_static_pie=$libc_cv_static_pie_supported 1787fi 1788if test "$libc_cv_static_pie" = "yes"; then 1789 AC_DEFINE(ENABLE_STATIC_PIE) 1790fi 1791LIBC_CONFIG_VAR([enable-static-pie], [$libc_cv_static_pie]) 1792 1793# Set the `multidir' variable by grabbing the variable from the compiler. 1794# We do it once and save the result in a generated makefile. 1795libc_cv_multidir=`${CC-cc} $CFLAGS $CPPFLAGS -print-multi-directory` 1796AC_SUBST(libc_cv_multidir) 1797 1798AC_SUBST(profile) 1799AC_SUBST(static_nss) 1800 1801AC_SUBST(DEFINES) 1802 1803dnl See sysdeps/mach/configure.ac for this variable. 1804AC_SUBST(mach_interface_list) 1805 1806VERSION=`sed -n -e 's/^#define VERSION "\([^"]*\)"/\1/p' < $srcdir/version.h` 1807RELEASE=`sed -n -e 's/^#define RELEASE "\([^"]*\)"/\1/p' < $srcdir/version.h` 1808AC_SUBST(VERSION) 1809AC_SUBST(RELEASE) 1810 1811if test "$pthread_in_libc" = yes; then 1812 AC_DEFINE(PTHREAD_IN_LIBC) 1813fi 1814AC_SUBST(pthread_in_libc) 1815 1816AC_CONFIG_FILES([config.make Makefile]) 1817AC_CONFIG_COMMANDS([default],[[ 1818case $CONFIG_FILES in *config.make*) 1819echo "$config_vars" >> config.make;; 1820esac 1821test -d bits || mkdir bits]],[[config_vars='$config_vars']]) 1822AC_OUTPUT 1823