configure.ac revision 1.7
1dnl Process this file with autoconf to produce a configure script 2 3AC_INIT 4AC_CONFIG_SRCDIR([xmalloc.c]) 5AC_CONFIG_MACRO_DIRS([../config]) 6 7# This works around the fact that libtool configuration may change LD 8# for this particular configuration, but some shells, instead of 9# keeping the changes in LD private, export them just because LD is 10# exported. We don't use libtool yet, but some day we might, so... 11ORIGINAL_LD_FOR_MULTILIBS=$LD 12 13dnl We use these options to decide which functions to include. 14AC_ARG_WITH(target-subdir, 15[ --with-target-subdir=SUBDIR Configuring in a subdirectory for target]) 16AC_ARG_WITH(build-subdir, 17[ --with-build-subdir=SUBDIR Configuring in a subdirectory for build]) 18AC_ARG_WITH(cross-host, 19[ --with-cross-host=HOST Configuring with a cross compiler]) 20AC_ARG_WITH(newlib, 21[ --with-newlib Configuring with newlib]) 22 23if test "${srcdir}" = "."; then 24 if test -n "${with_build_subdir}"; then 25 libiberty_topdir="${srcdir}/../.." 26 with_target_subdir= 27 elif test -z "${with_target_subdir}"; then 28 libiberty_topdir="${srcdir}/.." 29 else 30 if test "${with_target_subdir}" != "."; then 31 libiberty_topdir="${srcdir}/${with_multisrctop}../.." 32 else 33 libiberty_topdir="${srcdir}/${with_multisrctop}.." 34 fi 35 fi 36else 37 libiberty_topdir="${srcdir}/.." 38fi 39AC_SUBST(libiberty_topdir) 40AC_CONFIG_AUX_DIR($libiberty_topdir) 41 42dnl Very limited version of automake's enable-maintainer-mode 43 44AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) 45 dnl maintainer-mode is disabled by default 46 AC_ARG_ENABLE(maintainer-mode, 47[ --enable-maintainer-mode 48 enable make rules and dependencies not useful 49 (and sometimes confusing) to the casual installer], 50 maintainer_mode=$enableval, 51 maintainer_mode=no) 52 53AC_MSG_RESULT($maintainer_mode) 54 55if test "$maintainer_mode" = "yes"; then 56 MAINT='' 57 NOTMAINT='#' 58else 59 MAINT='#' 60 NOTMAINT='' 61fi 62AC_SUBST(MAINT)dnl 63AC_SUBST(NOTMAINT)dnl 64 65if test -z "$ETAGS"; then 66 ETAGS=etags 67fi 68AC_SUBST([ETAGS]) 69 70# Do we have a single-tree copy of texinfo? Even if we do, we can't 71# rely on it - libiberty is built before texinfo. 72AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, ) 73if test "x$MAKEINFO" = "x"; then 74 MAKEINFO="@echo makeinfo missing; true" 75 BUILD_INFO= 76else 77 BUILD_INFO=info 78 case "$MAKEINFO" in 79 */missing\ makeinfo*) 80 BUILD_INFO= 81 AC_MSG_WARN([ 82*** Makeinfo is missing. Info documentation will not be built.]) 83 ;; 84 *) 85 case x"`$MAKEINFO --version | grep 'GNU texinfo'`" in 86 x*\ [[1-3]].* ) 87 MAKEINFO="@echo $MAKEINFO is too old, 4.0 or newer required; true" 88 BUILD_INFO= 89 AC_MSG_WARN([ 90*** Makeinfo is too old. Info documentation will not be built.]) 91 ;; 92 esac 93 ;; 94 esac 95fi 96AC_SUBST(MAKEINFO) 97AC_SUBST(BUILD_INFO) 98 99AC_CHECK_PROG(PERL, perl, perl, ) 100if test x"$PERL" = x""; then 101 HAVE_PERL='#' 102else 103 HAVE_PERL='' 104fi 105AC_SUBST(HAVE_PERL) 106 107AC_CANONICAL_HOST 108 109dnl When we start using automake: 110dnl AM_INIT_AUTOMAKE(libiberty, 1.0) 111 112dnl These must be called before AM_PROG_LIBTOOL, because it may want 113dnl to call AC_CHECK_PROG. 114AC_CHECK_TOOL(AR, ar) 115AC_CHECK_TOOL(RANLIB, ranlib, :) 116 117GCC_PLUGIN_OPTION(PLUGIN_OPTION) 118if test -n "$PLUGIN_OPTION"; then 119 if $AR --help 2>&1 | grep -q "\--plugin"; then 120 AR_PLUGIN_OPTION="$PLUGIN_OPTION" 121 AC_SUBST(AR_PLUGIN_OPTION) 122 fi 123 if $RANLIB --help 2>&1 | grep -q "\--plugin"; then 124 RANLIB_PLUGIN_OPTION="$PLUGIN_OPTION" 125 AC_SUBST(RANLIB_PLUGIN_OPTION) 126 fi 127fi 128 129dnl When switching to automake, replace the following with AM_ENABLE_MULTILIB. 130# Add --enable-multilib to configure. 131# Default to --enable-multilib 132AC_ARG_ENABLE(multilib, 133[ --enable-multilib build many library versions (default)], 134[case "$enableval" in 135 yes) multilib=yes ;; 136 no) multilib=no ;; 137 *) AC_MSG_ERROR([bad value $enableval for multilib option]) ;; 138 esac], 139 [multilib=yes]) 140 141# Even if the default multilib is not a cross compilation, 142# it may be that some of the other multilibs are. 143if test $cross_compiling = no && test $multilib = yes \ 144 && test "x${with_multisubdir}" != x ; then 145 cross_compiling=maybe 146fi 147 148# We may wish to install the target headers somewhere. 149AC_MSG_CHECKING([whether to install libiberty headers and static library]) 150dnl install-libiberty is disabled by default 151 152AC_ARG_ENABLE(install-libiberty, 153[ --enable-install-libiberty Install headers and library for end users], 154enable_install_libiberty=$enableval, 155enable_install_libiberty=no)dnl 156 157# Option parsed, now set things appropriately. 158case x"$enable_install_libiberty" in 159 xyes|x) 160 target_header_dir=libiberty 161 ;; 162 xno) 163 target_header_dir= 164 ;; 165 *) 166 # This could be sanity-checked in various ways... 167 target_header_dir="${enable_install_libiberty}" 168 ;; 169esac 170AC_MSG_RESULT($enable_install_libiberty) 171AC_MSG_NOTICE([target_header_dir = $target_header_dir]) 172 173GCC_NO_EXECUTABLES 174AC_PROG_CC 175AC_GNU_SOURCE 176AC_SYS_LARGEFILE 177AC_PROG_CPP_WERROR 178 179ACX_PROG_CC_WARNING_OPTS([-W -Wall -Wwrite-strings -Wc++-compat \ 180 -Wstrict-prototypes \ 181 -Wshadow=local], [ac_libiberty_warn_cflags]) 182ACX_PROG_CC_WARNING_ALMOST_PEDANTIC([], [ac_libiberty_warn_cflags]) 183 184AC_PROG_CC_C_O 185# autoconf is lame and doesn't give us any substitution variable for this. 186if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then 187 NO_MINUS_C_MINUS_O=yes 188else 189 OUTPUT_OPTION='-o $@' 190fi 191AC_SUBST(NO_MINUS_C_MINUS_O) 192AC_SUBST(OUTPUT_OPTION) 193 194AC_C_CONST 195AC_C_INLINE 196AC_C_BIGENDIAN 197 198dnl When we start using libtool: 199dnl Default to a non shared library. This may be overridden by the 200dnl configure option --enable-shared. 201dnl AM_DISABLE_SHARED 202 203dnl When we start using libtool: 204dnl AM_PROG_LIBTOOL 205 206dnl When we start using automake: 207dnl AM_CONFIG_HEADER(config.h:config.in) 208AC_CONFIG_HEADER(config.h:config.in) 209 210dnl When we start using automake: 211dnl AM_MAINTAINER_MODE 212dnl AC_EXEEXT 213 214dnl When we start using automake: 215dnl AM_PROG_INSTALL 216AC_PROG_INSTALL 217 218# Don't build the shared library for build. 219if [[ -n "${with_build_subdir}" ]]; then 220 enable_shared=no 221fi 222 223frag= 224case "${host}" in 225 rs6000-ibm-aix3.1 | rs6000-ibm-aix) 226 frag=mh-aix ;; 227 *-*-cxux7*) frag=mh-cxux7 ;; 228 *-*-freebsd2.1.*) frag=mh-fbsd21 ;; 229 *-*-freebsd2.2.[[012]]) frag=mh-fbsd21 ;; 230 i370-*-opened*) frag=mh-openedition ;; 231 i[[34567]]86-*-windows*) frag=mh-windows ;; 232esac 233 234if [[ -n "${frag}" ]]; then 235 frag=${libiberty_topdir}/libiberty/config/$frag 236fi 237 238GCC_PICFLAG 239 240# If they didn't specify --enable-shared, don't generate shared libs. 241case "${enable_shared}" in 242 yes) shared=yes ;; 243 no) shared=no ;; 244 "") shared=no ;; 245 *) shared=yes ;; 246esac 247 248# ...unless --enable-host-{shared,pie} was passed from top-level config: 249if [[ "${enable_host_shared}" = "yes" ]] || [[ "${enable_host_pie}" = "yes" ]]; then 250 shared=yes 251fi 252 253if [[ "${shared}" != "yes" ]]; then 254 PICFLAG= 255fi 256AC_SUBST(PICFLAG) 257 258NOASANFLAG= 259case " ${CFLAGS} " in 260 *\ -fsanitize=address\ *) NOASANFLAG=-fno-sanitize=address ;; 261 *\ -fsanitize=hwaddress\ *) NOASANFLAG=-fno-sanitize=hwaddress ;; 262esac 263AC_SUBST(NOASANFLAG) 264 265GCC_CET_HOST_FLAGS(CET_HOST_FLAGS) 266AC_SUBST(CET_HOST_FLAGS) 267 268GCC_CHECK_ASSEMBLER_HWCAP 269 270echo "# Warning: this fragment is automatically generated" > temp-frag 271 272if [[ -n "${frag}" ]] && [[ -f "${frag}" ]]; then 273 echo "Appending ${frag} to xhost-mkfrag" 274 echo "# Following fragment copied from ${frag}" >> temp-frag 275 cat ${frag} >> temp-frag 276fi 277 278# record if we want to build shared libs. 279if [[ "${shared}" = "yes" ]]; then 280 echo enable_shared = yes >> temp-frag 281else 282 echo enable_shared = no >> temp-frag 283fi 284 285frag=xhost-mkfrag 286${CONFIG_SHELL-/bin/sh} ${libiberty_topdir}/move-if-change temp-frag xhost-mkfrag 287 288host_makefile_frag=${frag} 289AC_SUBST_FILE(host_makefile_frag) 290 291# It's OK to check for header files. Although the compiler may not be 292# able to link anything, it had better be able to at least compile 293# something. 294AC_CHECK_HEADERS(sys/file.h sys/param.h limits.h stdlib.h malloc.h string.h unistd.h strings.h sys/time.h time.h sys/resource.h sys/stat.h sys/mman.h fcntl.h alloca.h sys/pstat.h sys/sysmp.h sys/sysinfo.h machine/hal_sysinfo.h sys/table.h sys/sysctl.h sys/systemcfg.h stdint.h stdio_ext.h process.h sys/prctl.h spawn.h) 295AC_HEADER_SYS_WAIT 296AC_HEADER_TIME 297 298libiberty_AC_DECLARE_ERRNO 299 300# Determine sizes of some types. 301AC_CHECK_SIZEOF([int]) 302AC_CHECK_SIZEOF([long]) 303AC_CHECK_SIZEOF([size_t]) 304 305# Check for presense of long long 306AC_CHECK_TYPE([long long], 307 [AC_DEFINE(HAVE_LONG_LONG, 1, [Define if you have the `long long' type.]) AC_CHECK_SIZEOF([long long])], 308 []) 309 310# Look for a 64-bit type. 311AC_MSG_CHECKING([for a 64-bit type]) 312AC_CACHE_VAL(liberty_cv_uint64, 313[AC_TRY_COMPILE( 314[#ifdef HAVE_STDINT_H 315#include <stdint.h> 316#endif], 317[extern uint64_t foo;], 318liberty_cv_uint64=uint64_t, 319[AC_TRY_COMPILE( 320[#ifdef HAVE_LIMITS_H 321#include <limits.h> 322#endif 323#ifndef CHAR_BIT 324#define CHAR_BIT 8 325#endif], 326[extern char foo[sizeof(long) * CHAR_BIT >= 64 ? 1 : -1];], 327liberty_cv_uint64="unsigned long", 328[AC_TRY_COMPILE( 329[#ifdef HAVE_LIMITS_H 330#include <limits.h> 331#endif 332#ifndef CHAR_BIT 333#define CHAR_BIT 8 334#endif], 335[extern char foo[sizeof(long long) * CHAR_BIT >= 64 ? 1 : -1];], 336liberty_cv_uint64="unsigned long long", liberty_cv_uint64=none)])])]) 337AC_MSG_RESULT($liberty_cv_uint64) 338if test "$liberty_cv_uint64" != none; then 339 AC_DEFINE_UNQUOTED(UNSIGNED_64BIT_TYPE, $liberty_cv_uint64, 340 [Define to an unsigned 64-bit type available in the compiler.]) 341fi 342 343AC_TYPE_INTPTR_T 344AC_TYPE_UINTPTR_T 345AC_TYPE_SSIZE_T 346 347# Given the above check, we always have uintptr_t or a fallback 348# definition. So define HAVE_UINTPTR_T in case any imported code 349# relies on it. 350AC_DEFINE(HAVE_UINTPTR_T, 1, [Define if you have the \`uintptr_t' type.]) 351 352AC_TYPE_PID_T 353 354# This is the list of functions which libiberty will provide if they 355# are not available on the host. 356 357funcs="asprintf" 358funcs="$funcs atexit" 359funcs="$funcs basename" 360funcs="$funcs bcmp" 361funcs="$funcs bcopy" 362funcs="$funcs bsearch" 363funcs="$funcs bzero" 364funcs="$funcs calloc" 365funcs="$funcs clock" 366funcs="$funcs ffs" 367funcs="$funcs getcwd" 368funcs="$funcs getpagesize" 369funcs="$funcs gettimeofday" 370funcs="$funcs index" 371funcs="$funcs insque" 372funcs="$funcs memchr" 373funcs="$funcs memcmp" 374funcs="$funcs memcpy" 375funcs="$funcs memmem" 376funcs="$funcs memmove" 377funcs="$funcs mempcpy" 378funcs="$funcs memset" 379funcs="$funcs mkstemps" 380funcs="$funcs putenv" 381funcs="$funcs random" 382funcs="$funcs rename" 383funcs="$funcs rindex" 384funcs="$funcs setenv" 385funcs="$funcs snprintf" 386funcs="$funcs sigsetmask" 387funcs="$funcs stpcpy" 388funcs="$funcs stpncpy" 389funcs="$funcs strcasecmp" 390funcs="$funcs strchr" 391funcs="$funcs strdup" 392funcs="$funcs strncasecmp" 393funcs="$funcs strndup" 394funcs="$funcs strnlen" 395funcs="$funcs strrchr" 396funcs="$funcs strstr" 397funcs="$funcs strtod" 398funcs="$funcs strtol" 399funcs="$funcs strtoul" 400funcs="$funcs strtoll" 401funcs="$funcs strtoull" 402funcs="$funcs strverscmp" 403funcs="$funcs tmpnam" 404funcs="$funcs vasprintf" 405funcs="$funcs vfprintf" 406funcs="$funcs vprintf" 407funcs="$funcs vsnprintf" 408funcs="$funcs vsprintf" 409funcs="$funcs waitpid" 410funcs="$funcs setproctitle" 411 412# Also in the old function.def file: alloca, vfork, getopt. 413 414vars="sys_errlist sys_nerr sys_siglist" 415 416checkfuncs="__fsetlocking canonicalize_file_name dup3 getrlimit getrusage \ 417 getsysinfo gettimeofday on_exit pipe2 posix_spawn posix_spawnp psignal \ 418 pstat_getdynamic pstat_getstatic \ 419 realpath setrlimit spawnve spawnvpe strerror strsignal sysconf sysctl \ 420 sysmp table times wait3 wait4" 421 422#��Darwin has sbrk, but it is deprecated and that produces build-time warnings 423#��so do not check for it. 424case "${host}" in 425 *-*-darwin*) ;; 426 *) checkfuncs="$checkfuncs sbrk" 427esac 428 429# These are neither executed nor required, but they help keep 430# autoheader happy without adding a bunch of text to acconfig.h. 431if test "x" = "y"; then 432 AC_CHECK_FUNCS(asprintf atexit \ 433 basename bcmp bcopy bsearch bzero \ 434 calloc canonicalize_file_name clock \ 435 dup3 \ 436 ffs __fsetlocking \ 437 getcwd getpagesize getrlimit getrusage getsysinfo gettimeofday \ 438 index insque \ 439 memchr memcmp memcpy memmem memmove memset mkstemps \ 440 on_exit \ 441 pipe2 posix_spawn posix_spawnp psignal \ 442 pstat_getdynamic pstat_getstatic putenv \ 443 random realpath rename rindex \ 444 sbrk setenv setproctitle setrlimit sigsetmask snprintf spawnve spawnvpe \ 445 stpcpy stpncpy strcasecmp strchr strdup \ 446 strerror strncasecmp strndup strnlen strrchr strsignal strstr strtod \ 447 strtol strtoul strtoll strtoull strverscmp sysconf sysctl sysmp \ 448 table times tmpnam \ 449 vasprintf vfprintf vprintf vsprintf \ 450 wait3 wait4 waitpid) 451 AC_CHECK_DECLS([basename(char *), ffs, asprintf, vasprintf, snprintf, vsnprintf, strtol, strtoul, strtoll, strtoull, strnlen]) 452 AC_DEFINE(HAVE_SYS_ERRLIST, 1, [Define if you have the sys_errlist variable.]) 453 AC_DEFINE(HAVE_SYS_NERR, 1, [Define if you have the sys_nerr variable.]) 454 AC_DEFINE(HAVE_SYS_SIGLIST, 1, [Define if you have the sys_siglist variable.]) 455fi 456 457# For each of these functions, if the host does not provide the 458# function we want to put FN.o in LIBOBJS, and if the host does 459# provide the function, we want to define HAVE_FN in config.h. 460 461setobjs= 462CHECK= 463if test -n "${with_target_subdir}"; then 464 465 # We are being configured as a target library. AC_REPLACE_FUNCS 466 # may not work correctly, because the compiler may not be able to 467 # link executables. Note that we may still be being configured 468 # native. 469 470 # If we are being configured for newlib, we know which functions 471 # newlib provide and which ones we will be expected to provide. 472 473 if test "x${with_newlib}" = "xyes"; then 474 AC_LIBOBJ([asprintf]) 475 AC_LIBOBJ([basename]) 476 AC_LIBOBJ([insque]) 477 AC_LIBOBJ([random]) 478 AC_LIBOBJ([strdup]) 479 AC_LIBOBJ([vasprintf]) 480 481 for f in $funcs; do 482 case "$f" in 483 asprintf | basename | insque | random | strdup | vasprintf) 484 ;; 485 *) 486 n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` 487 AC_DEFINE_UNQUOTED($n) 488 ;; 489 esac 490 done 491 492 # newlib doesnt provide any of the variables in $vars, so we 493 # dont have to check them here. 494 495 # Of the functions in $checkfuncs, newlib only has strerror. 496 AC_DEFINE(HAVE_STRERROR) 497 498 setobjs=yes 499 500 fi 501 502 # If we are being configured for Mingw, we know which functions 503 # Mingw provides and which ones we will be expected to provide. 504 505 case "${host}" in 506 *-*-mingw*) 507 AC_LIBOBJ([asprintf]) 508 AC_LIBOBJ([basename]) 509 AC_LIBOBJ([bcmp]) 510 AC_LIBOBJ([bcopy]) 511 AC_LIBOBJ([bzero]) 512 AC_LIBOBJ([clock]) 513 AC_LIBOBJ([ffs]) 514 AC_LIBOBJ([getpagesize]) 515 AC_LIBOBJ([index]) 516 AC_LIBOBJ([insque]) 517 AC_LIBOBJ([mempcpy]) 518 AC_LIBOBJ([mkstemps]) 519 AC_LIBOBJ([random]) 520 AC_LIBOBJ([rindex]) 521 AC_LIBOBJ([sigsetmask]) 522 AC_LIBOBJ([stpcpy]) 523 AC_LIBOBJ([stpncpy]) 524 AC_LIBOBJ([strndup]) 525 AC_LIBOBJ([strnlen]) 526 AC_LIBOBJ([strverscmp]) 527 AC_LIBOBJ([vasprintf]) 528 AC_LIBOBJ([waitpid]) 529 530 for f in $funcs; do 531 case "$f" in 532 asprintf | basename | bcmp | bcopy | bzero | clock | ffs | getpagesize | index | insque | mempcpy | mkstemps | random | rindex | sigsetmask | stpcpy | stpncpy | strdup | strndup | strnlen | strverscmp | vasprintf | waitpid) 533 ;; 534 *) 535 n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` 536 AC_DEFINE_UNQUOTED($n) 537 ;; 538 esac 539 done 540 541 # Mingw doesnt provide any of the variables in $vars, so we 542 # dont have to check them here. 543 544 # Of the functions in $checkfuncs, Mingw only has strerror. 545 AC_DEFINE(HAVE_STRERROR) 546 547 setobjs=yes 548 ;; 549 550 *-*-msdosdjgpp) 551 AC_LIBOBJ([vasprintf]) 552 AC_LIBOBJ([vsnprintf]) 553 AC_LIBOBJ([snprintf]) 554 AC_LIBOBJ([asprintf]) 555 556 for f in atexit basename bcmp bcopy bsearch bzero calloc clock ffs \ 557 getcwd getpagesize getrusage gettimeofday \ 558 index insque memchr memcmp memcpy memmove memset psignal \ 559 putenv random rename rindex sbrk setenv stpcpy strcasecmp \ 560 strchr strdup strerror strncasecmp strrchr strstr strtod \ 561 strtol strtoul sysconf times tmpnam vfprintf vprintf \ 562 vsprintf waitpid 563 do 564 n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` 565 AC_DEFINE_UNQUOTED($n) 566 done 567 568 569 setobjs=yes 570 ;; 571 572 esac 573 574else 575 576 # Not a target library, so we set things up to run the test suite. 577 CHECK=really-check 578 579fi 580 581AC_SUBST(CHECK) 582AC_SUBST(target_header_dir) 583 584case "${host}" in 585 *-*-cygwin* | *-*-mingw*) 586 AC_DEFINE(HAVE_SYS_ERRLIST) 587 AC_DEFINE(HAVE_SYS_NERR) 588 ;; 589esac 590 591if test -z "${setobjs}"; then 592 case "${host}" in 593 594 *-*-vxworks*) 595 # Handle VxWorks configuration specially, since on VxWorks the 596 # libraries are actually on the target board, not in the file 597 # system. 598 AC_LIBOBJ([basename]) 599 AC_LIBOBJ([getpagesize]) 600 AC_LIBOBJ([insque]) 601 AC_LIBOBJ([random]) 602 AC_LIBOBJ([strcasecmp]) 603 AC_LIBOBJ([strncasecmp]) 604 AC_LIBOBJ([strdup]) 605 AC_LIBOBJ([vfork]) 606 AC_LIBOBJ([waitpid]) 607 AC_LIBOBJ([vasprintf]) 608 for f in $funcs; do 609 case "$f" in 610 basename | getpagesize | insque | random | strcasecmp) 611 ;; 612 strncasecmp | strdup | vfork | waitpid | vasprintf) 613 ;; 614 *) 615 n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` 616 AC_DEFINE_UNQUOTED($n) 617 ;; 618 esac 619 done 620 621 # VxWorks doesn't provide any of the variables in $vars, so we 622 # don't have to check them here. 623 624 # Of the functions in $checkfuncs, VxWorks only has strerror. 625 AC_DEFINE(HAVE_STRERROR) 626 627 setobjs=yes 628 ;; 629 630 esac 631fi 632 633if test -z "${setobjs}"; then 634 635 case "${host}" in 636 637 *-*-android*) 638 # On android, getpagesize is defined in unistd.h as a static inline 639 # function, which AC_CHECK_FUNCS does not handle properly. 640 ac_cv_func_getpagesize=yes 641 ;; 642 643 hppa*-*-hpux*) 644 # Replace system snprintf and vsnprintf with libiberty implementations. 645 AC_LIBOBJ([snprintf]) 646 AC_LIBOBJ([vsnprintf]) 647 ;; 648 649 *-*-mingw32*) 650 # Under mingw32, sys_nerr and sys_errlist exist, but they are 651 # macros, so the test below won't find them. 652 libiberty_cv_var_sys_nerr=yes 653 libiberty_cv_var_sys_errlist=yes 654 ;; 655 656 *-*-msdosdjgpp*) 657 # vfork and fork are stubs. 658 ac_cv_func_vfork_works=no 659 ;; 660 661 *-*-uwin*) 662 # Under some versions of uwin, vfork is notoriously buggy and the test 663 # can hang configure; on other versions, vfork exists just as a stub. 664 # FIXME: This should be removed once vfork in uwin's runtime is fixed. 665 ac_cv_func_vfork_works=no 666 # Under uwin 2.0+, sys_nerr and sys_errlist exist, but they are 667 # macros (actually, these are imported from a DLL, but the end effect 668 # is the same), so the test below won't find them. 669 libiberty_cv_var_sys_nerr=yes 670 libiberty_cv_var_sys_errlist=yes 671 ;; 672 673 *-*-*vms*) 674 # Under VMS, vfork works very different than on Unix. The standard test 675 # won't work, and it isn't easily adaptable. It makes more sense to 676 # just force it. 677 ac_cv_func_vfork_works=yes 678 ;; 679 680 esac 681 682 # We haven't set the list of objects yet. Use the standard autoconf 683 # tests. This will only work if the compiler works. 684 AC_ISC_POSIX 685 AC_REPLACE_FUNCS($funcs) 686 libiberty_AC_FUNC_C_ALLOCA 687 AC_FUNC_FORK 688 if test $ac_cv_func_vfork_works = no; then 689 AC_LIBOBJ([vfork]) 690 fi 691 # We only need _doprnt if we might use it to implement v*printf. 692 if test $ac_cv_func_vprintf != yes \ 693 || test $ac_cv_func_vfprintf != yes \ 694 || test $ac_cv_func_vsprintf != yes; then 695 AC_REPLACE_FUNCS(_doprnt) 696 else 697 AC_CHECK_FUNCS(_doprnt) 698 fi 699 700 for v in $vars; do 701 AC_MSG_CHECKING([for $v]) 702 AC_CACHE_VAL(libiberty_cv_var_$v, 703 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern int $v [];]],[[if ($v [0]) return 1;]])], 704 [eval "libiberty_cv_var_$v=yes"], 705 [eval "libiberty_cv_var_$v=no"])]) 706 if eval "test \"`echo '$libiberty_cv_var_'$v`\" = yes"; then 707 AC_MSG_RESULT(yes) 708 n=HAVE_`echo $v | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` 709 AC_DEFINE_UNQUOTED($n) 710 else 711 AC_MSG_RESULT(no) 712 fi 713 done 714 715 # special check for _system_configuration because AIX <4.3.2 do not 716 # contain the `physmem' member. 717 AC_MSG_CHECKING([for external symbol _system_configuration]) 718 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/systemcfg.h>]], 719 [[double x = _system_configuration.physmem;]])], 720 [AC_MSG_RESULT([yes]) 721 AC_DEFINE(HAVE__SYSTEM_CONFIGURATION, 1, 722 [Define if you have the _system_configuration variable.])], 723 [AC_MSG_RESULT([no])]) 724 725 AC_CHECK_FUNCS($checkfuncs) 726 AC_CHECK_DECLS([basename(char *), ffs, asprintf, vasprintf, snprintf, vsnprintf]) 727 AC_CHECK_DECLS([calloc, getenv, getopt, malloc, realloc]) 728 case "${host}" in 729 *-*-darwin*) ;; # Darwin's sbrk implementation is deprecated. 730 *) AC_CHECK_DECLS([sbrk]);; 731 esac 732 AC_CHECK_DECLS([strtol, strtoul, strtoll, strtoull]) 733 AC_CHECK_DECLS([strverscmp]) 734 AC_CHECK_DECLS([strnlen]) 735 libiberty_NEED_DECLARATION(canonicalize_file_name) 736fi 737 738# Figure out which version of pexecute to use. 739case "${host}" in 740 *-*-mingw* | *-*-winnt*) pexecute=pex-win32 ;; 741 *-*-msdosdjgpp*) pexecute=pex-djgpp ;; 742 *-*-msdos*) pexecute=pex-msdos ;; 743 *) pexecute=pex-unix ;; 744esac 745AC_SUBST(pexecute) 746 747AC_MSG_CHECKING([for SHA1 HW acceleration support]) 748AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 749#include <x86intrin.h> 750#include <cpuid.h> 751 752__attribute__((__target__ ("sse4.1,sha"))) 753void foo (__m128i *buf, unsigned int e, __m128i msg0, __m128i msg1) 754{ 755 __m128i abcd = _mm_loadu_si128 ((const __m128i *) buf); 756 __m128i e0 = _mm_set_epi32 (e, 0, 0, 0); 757 abcd = _mm_shuffle_epi32 (abcd, 0x1b); 758 const __m128i shuf_mask = _mm_set_epi64x (0x0001020304050607ULL, 0x08090a0b0c0d0e0fULL); 759 abcd = _mm_shuffle_epi8 (abcd, shuf_mask); 760 e0 = _mm_sha1nexte_epu32 (e0, msg1); 761 abcd = _mm_sha1rnds4_epu32 (abcd, e0, 0); 762 msg0 = _mm_sha1msg1_epu32 (msg0, msg1); 763 msg0 = _mm_sha1msg2_epu32 (msg0, msg1); 764 msg0 = _mm_xor_si128 (msg0, msg1); 765 e0 = _mm_add_epi32 (e0, msg0); 766 e0 = abcd; 767 _mm_storeu_si128 (buf, abcd); 768 e = _mm_extract_epi32 (e0, 3); 769} 770 771int bar (void) 772{ 773 unsigned int eax, ebx, ecx, edx; 774 (void) __get_cpuid; 775 (void) __get_cpuid_count; 776 if (__get_cpuid_count (7, 0, &eax, &ebx, &ecx, &edx) 777 && (ebx & bit_SHA) != 0 778 && __get_cpuid (1, &eax, &ebx, &ecx, &edx) 779 && (ecx & bit_SSE4_1) != 0) 780 return 1; 781 return 0; 782} 783]], [[bar ();]])], 784 [AC_MSG_RESULT([x86 SHA1]) 785 AC_DEFINE(HAVE_X86_SHA1_HW_SUPPORT, 1, 786 [Define if you have x86 SHA1 HW acceleration support.])], 787 [AC_MSG_RESULT([no])]) 788 789libiberty_AC_FUNC_STRNCMP 790 791# Install a library built with a cross compiler in $(tooldir) rather 792# than $(libdir). 793if test -z "${with_cross_host}"; then 794 INSTALL_DEST=libdir 795else 796 INSTALL_DEST=tooldir 797fi 798AC_SUBST(INSTALL_DEST) 799 800m4_pattern_allow(LIBOBJS) 801L="" 802for l in x $LIBOBJS; do 803 case $l in 804 x) ;; 805 *) L="$L ./$l" ;; 806 esac 807done 808LIBOBJS="$L" 809 810dnl Required by html and install-html 811AC_SUBST(datarootdir) 812AC_SUBST(docdir) 813AC_SUBST(htmldir) 814 815# We need multilib support, but only if configuring for the target. 816AC_CONFIG_FILES([Makefile]) 817AC_CONFIG_COMMANDS([default], 818 [[test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h 819if test -n "$CONFIG_FILES"; then 820 if test -n "${with_target_subdir}"; then 821 # FIXME: We shouldn't need to set ac_file 822 ac_file=Makefile 823 LD="${ORIGINAL_LD_FOR_MULTILIBS}" 824 . ${libiberty_topdir}/config-ml.in 825 fi 826fi]], 827[[srcdir=${srcdir} 828host=${host} 829target=${target} 830with_target_subdir=${with_target_subdir} 831with_multisubdir=${with_multisubdir} 832ac_configure_args="--enable-multilib ${ac_configure_args}" 833CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} 834ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}" 835libiberty_topdir=${libiberty_topdir} 836]]) 837AC_OUTPUT 838