1dnl Process this file with autoconf to produce a configure script 2 3AC_PREREQ(2.59) 4AC_INIT 5AC_CONFIG_SRCDIR([xmalloc.c]) 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 65# Do we have a single-tree copy of texinfo? Even if we do, we can't 66# rely on it - libiberty is built before texinfo. 67AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, ) 68if test "x$MAKEINFO" = "x"; then 69 MAKEINFO="@echo makeinfo missing; true" 70 BUILD_INFO= 71else 72 BUILD_INFO=info 73 case "$MAKEINFO" in 74 */missing\ makeinfo*) 75 BUILD_INFO= 76 AC_MSG_WARN([ 77*** Makeinfo is missing. Info documentation will not be built.]) 78 ;; 79 *) 80 case x"`$MAKEINFO --version | grep 'GNU texinfo'`" in 81 x*\ [[1-3]].* ) 82 MAKEINFO="@echo $MAKEINFO is too old, 4.0 or newer required; true" 83 BUILD_INFO= 84 AC_MSG_WARN([ 85*** Makeinfo is too old. Info documentation will not be built.]) 86 ;; 87 esac 88 ;; 89 esac 90fi 91AC_SUBST(MAKEINFO) 92AC_SUBST(BUILD_INFO) 93 94AC_CHECK_PROG(PERL, perl, perl, ) 95if test x"$PERL" = x""; then 96 HAVE_PERL='#' 97else 98 HAVE_PERL='' 99fi 100AC_SUBST(HAVE_PERL) 101 102AC_CANONICAL_HOST 103 104dnl When we start using automake: 105dnl AM_INIT_AUTOMAKE(libiberty, 1.0) 106 107dnl These must be called before AM_PROG_LIBTOOL, because it may want 108dnl to call AC_CHECK_PROG. 109AC_CHECK_TOOL(AR, ar) 110AC_CHECK_TOOL(RANLIB, ranlib, :) 111 112GCC_NO_EXECUTABLES 113AC_PROG_CC 114AC_PROG_CPP_WERROR 115 116if test x$GCC = xyes; then 117 ac_libiberty_warn_cflags='-W -Wall -Wtraditional -pedantic' 118fi 119AC_SUBST(ac_libiberty_warn_cflags) 120 121AC_PROG_CC_C_O 122# autoconf is lame and doesn't give us any substitution variable for this. 123if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then 124 NO_MINUS_C_MINUS_O=yes 125else 126 OUTPUT_OPTION='-o $@' 127fi 128AC_SUBST(NO_MINUS_C_MINUS_O) 129AC_SUBST(OUTPUT_OPTION) 130 131AC_C_CONST 132AC_C_INLINE 133AC_C_BIGENDIAN_CROSS 134 135dnl When we start using libtool: 136dnl Default to a non shared library. This may be overridden by the 137dnl configure option --enable-shared. 138dnl AM_DISABLE_SHARED 139 140dnl When we start using libtool: 141dnl AM_PROG_LIBTOOL 142 143dnl When we start using automake: 144dnl AM_CONFIG_HEADER(config.h:config.in) 145AC_CONFIG_HEADER(config.h:config.in) 146 147dnl When we start using automake: 148dnl AM_MAINTAINER_MODE 149dnl AC_EXEEXT 150 151dnl When we start using automake: 152dnl AM_PROG_INSTALL 153AC_PROG_INSTALL 154 155. ${srcdir}/config.table 156host_makefile_frag=${frag} 157AC_SUBST_FILE(host_makefile_frag) 158 159# It's OK to check for header files. Although the compiler may not be 160# able to link anything, it had better be able to at least compile 161# something. 162AC_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) 163AC_HEADER_SYS_WAIT 164AC_HEADER_TIME 165 166libiberty_AC_DECLARE_ERRNO 167 168AC_CHECK_TYPE(uintptr_t, unsigned long) 169 170# Look for a 64-bit type. 171AC_MSG_CHECKING([for a 64-bit type]) 172AC_CACHE_VAL(liberty_cv_uint64, 173[AC_TRY_COMPILE( 174[#ifdef HAVE_STDINT_H 175#include <stdint.h> 176#endif], 177[extern uint64_t foo;], 178liberty_cv_uint64=uint64_t, 179[AC_TRY_COMPILE( 180[#ifdef HAVE_LIMITS_H 181#include <limits.h> 182#endif 183#ifndef CHAR_BIT 184#define CHAR_BIT 8 185#endif], 186[extern char foo[sizeof(long) * CHAR_BIT >= 64 ? 1 : -1];], 187liberty_cv_uint64="unsigned long", 188[AC_TRY_COMPILE( 189[#ifdef HAVE_LIMITS_H 190#include <limits.h> 191#endif 192#ifndef CHAR_BIT 193#define CHAR_BIT 8 194#endif], 195[extern char foo[sizeof(long long) * CHAR_BIT >= 64 ? 1 : -1];], 196liberty_cv_uint64="unsigned long long", liberty_cv_uint64=none)])])]) 197AC_MSG_RESULT($liberty_cv_uint64) 198if test "$liberty_cv_uint64" != none; then 199 AC_DEFINE_UNQUOTED(UNSIGNED_64BIT_TYPE, $liberty_cv_uint64, 200 [Define to an unsigned 64-bit type available in the compiler.]) 201fi 202 203# Given the above check, we always have uintptr_t or a fallback 204# definition. So define HAVE_UINTPTR_T in case any imported code 205# relies on it. 206AC_DEFINE(HAVE_UINTPTR_T, 1, [Define if you have the \`uintptr_t' type.]) 207 208AC_TYPE_PID_T 209 210# This is the list of functions which libiberty will provide if they 211# are not available on the host. 212 213funcs="asprintf" 214funcs="$funcs atexit" 215funcs="$funcs basename" 216funcs="$funcs bcmp" 217funcs="$funcs bcopy" 218funcs="$funcs bsearch" 219funcs="$funcs bzero" 220funcs="$funcs calloc" 221funcs="$funcs clock" 222funcs="$funcs ffs" 223funcs="$funcs getcwd" 224funcs="$funcs getpagesize" 225funcs="$funcs index" 226funcs="$funcs insque" 227funcs="$funcs memchr" 228funcs="$funcs memcmp" 229funcs="$funcs memcpy" 230funcs="$funcs memmove" 231funcs="$funcs mempcpy" 232funcs="$funcs memset" 233funcs="$funcs mkstemps" 234funcs="$funcs putenv" 235funcs="$funcs random" 236funcs="$funcs rename" 237funcs="$funcs rindex" 238funcs="$funcs setenv" 239funcs="$funcs snprintf" 240funcs="$funcs sigsetmask" 241funcs="$funcs stpcpy" 242funcs="$funcs stpncpy" 243funcs="$funcs strcasecmp" 244funcs="$funcs strchr" 245funcs="$funcs strdup" 246funcs="$funcs strncasecmp" 247funcs="$funcs strrchr" 248funcs="$funcs strstr" 249funcs="$funcs strtod" 250funcs="$funcs strtol" 251funcs="$funcs strtoul" 252funcs="$funcs tmpnam" 253funcs="$funcs vasprintf" 254funcs="$funcs vfprintf" 255funcs="$funcs vprintf" 256funcs="$funcs vsnprintf" 257funcs="$funcs vsprintf" 258funcs="$funcs waitpid" 259 260# Also in the old function.def file: alloca, vfork, getopt. 261 262vars="sys_errlist sys_nerr sys_siglist" 263 264checkfuncs="getrusage on_exit psignal strerror strsignal sysconf times sbrk gettimeofday" 265checkfuncs="$checkfuncs realpath canonicalize_file_name pstat_getstatic pstat_getdynamic sysmp" 266checkfuncs="$checkfuncs getsysinfo table sysctl" 267 268# These are neither executed nor required, but they help keep 269# autoheader happy without adding a bunch of text to acconfig.h. 270if test "x" = "y"; then 271 AC_CHECK_FUNCS(asprintf atexit basename bcmp bcopy bsearch bzero calloc clock \ 272 getcwd getpagesize index insque mkstemps memchr memcmp memcpy \ 273 memmove mempcpy memset putenv random rename rindex sigsetmask \ 274 strcasecmp setenv stpcpy stpncpy strchr strdup strncasecmp strrchr strstr \ 275 strtod strtol strtoul tmpnam vasprintf vfprintf vprintf \ 276 vsprintf waitpid getrusage on_exit psignal strerror strsignal \ 277 sysconf times sbrk gettimeofday ffs snprintf vsnprintf \ 278 pstat_getstatic pstat_getdynamic sysmp getsysinfo table sysctl \ 279 realpath canonicalize_file_name) 280 AC_DEFINE(HAVE_SYS_ERRLIST, 1, [Define if you have the sys_errlist variable.]) 281 AC_DEFINE(HAVE_SYS_NERR, 1, [Define if you have the sys_nerr variable.]) 282 AC_DEFINE(HAVE_SYS_SIGLIST, 1, [Define if you have the sys_siglist variable.]) 283fi 284 285# For each of these functions, if the host does not provide the 286# function we want to put FN.o in LIBOBJS, and if the host does 287# provide the function, we want to define HAVE_FN in config.h. 288 289setobjs= 290CHECK= 291target_header_dir= 292if test -n "${with_target_subdir}"; then 293 294 # We are being configured as a target library. AC_REPLACE_FUNCS 295 # may not work correctly, because the compiler may not be able to 296 # link executables. Note that we may still be being configured 297 # native. 298 299 # If we are being configured for newlib, we know which functions 300 # newlib provide and which ones we will be expected to provide. 301 302 if test "x${with_newlib}" = "xyes"; then 303 AC_LIBOBJ([asprintf]) 304 AC_LIBOBJ([basename]) 305 AC_LIBOBJ([insque]) 306 AC_LIBOBJ([random]) 307 AC_LIBOBJ([strdup]) 308 AC_LIBOBJ([vasprintf]) 309 310 for f in $funcs; do 311 case "$f" in 312 asprintf | basename | insque | random | strdup | vasprintf) 313 ;; 314 *) 315 n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` 316 AC_DEFINE_UNQUOTED($n) 317 ;; 318 esac 319 done 320 321 # newlib doesnt provide any of the variables in $vars, so we 322 # dont have to check them here. 323 324 # Of the functions in $checkfuncs, newlib only has strerror. 325 AC_DEFINE_NOAUTOHEADER(HAVE_STRERROR) 326 327 setobjs=yes 328 329 fi 330 331 # We may wish to install the target headers somewhere. 332 AC_ARG_ENABLE(install-libiberty, 333 [ --enable-install-libiberty Install headers for end users], 334 enable_install_libiberty=$enableval, 335 enable_install_libiberty=no)dnl 336 337 # Option parsed, now set things appropriately. 338 case x"$enable_install_libiberty" in 339 xyes|x) 340 target_header_dir=libiberty 341 ;; 342 xno) 343 target_header_dir= 344 ;; 345 *) 346 # This could be sanity-checked in various ways... 347 target_header_dir="${enable_install_libiberty}" 348 ;; 349 esac 350 351 352else 353 354 # Not a target library, so we set things up to run the test suite. 355 CHECK=check-cplus-dem 356 357fi 358 359AC_SUBST(CHECK) 360AC_SUBST(target_header_dir) 361 362case "${host}" in 363 *-*-cygwin* | *-*-mingw*) 364 AC_DEFINE_NOAUTOHEADER(HAVE_SYS_ERRLIST) 365 AC_DEFINE_NOAUTOHEADER(HAVE_SYS_NERR) 366 ;; 367esac 368 369if test -z "${setobjs}"; then 370 case "${host}" in 371 372 *-*-vxworks*) 373 # Handle VxWorks configuration specially, since on VxWorks the 374 # libraries are actually on the target board, not in the file 375 # system. 376 AC_LIBOBJ([basename]) 377 AC_LIBOBJ([getpagesize]) 378 AC_LIBOBJ([insque]) 379 AC_LIBOBJ([random]) 380 AC_LIBOBJ([strcasecmp]) 381 AC_LIBOBJ([strncasecmp]) 382 AC_LIBOBJ([strdup]) 383 AC_LIBOBJ([vfork]) 384 AC_LIBOBJ([waitpid]) 385 AC_LIBOBJ([vasprintf]) 386 for f in $funcs; do 387 case "$f" in 388 basename | getpagesize | insque | random | strcasecmp) 389 ;; 390 strncasecmp | strdup | vfork | waitpid | vasprintf) 391 ;; 392 *) 393 n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` 394 AC_DEFINE_UNQUOTED($n) 395 ;; 396 esac 397 done 398 399 # VxWorks doesn't provide any of the variables in $vars, so we 400 # don't have to check them here. 401 402 # Of the functions in $checkfuncs, VxWorks only has strerror. 403 AC_DEFINE_NOAUTOHEADER(HAVE_STRERROR) 404 405 setobjs=yes 406 ;; 407 408 esac 409fi 410 411if test -z "${setobjs}"; then 412 413 case "${host}" in 414 415 *-*-cygwin*) 416 # The Cygwin library actually uses a couple of files from 417 # libiberty when it is built. If we are building a native 418 # Cygwin, and we run the tests, we will appear to have these 419 # files. However, when we go on to build winsup, we will wind up 420 # with a library which does not have the files, since they should 421 # have come from libiberty. 422 423 # We handle this by removing the functions the winsup library 424 # provides from our shell variables, so that they appear to be 425 # missing. 426 427 # DJ - only if we're *building* cygwin, not just building *with* cygwin 428 429 if test -n "${with_target_subdir}" 430 then 431 funcs="`echo $funcs | sed -e 's/random//'`" 432 AC_LIBOBJ([random]) 433 vars="`echo $vars | sed -e 's/sys_siglist//'`" 434 checkfuncs="`echo $checkfuncs | sed -e 's/strsignal//' -e 's/psignal//'`" 435 fi 436 ;; 437 438 *-*-mingw32*) 439 # Under mingw32, sys_nerr and sys_errlist exist, but they are 440 # macros, so the test below won't find them. 441 libiberty_cv_var_sys_nerr=yes 442 libiberty_cv_var_sys_errlist=yes 443 ;; 444 445 *-*-uwin*) 446 # Under some versions of uwin, vfork is notoriously buggy and the test 447 # can hang configure; on other versions, vfork exists just as a stub. 448 # FIXME: This should be removed once vfork in uwin's runtime is fixed. 449 ac_cv_func_vfork_works=no 450 # Under uwin 2.0+, sys_nerr and sys_errlist exist, but they are 451 # macros (actually, these are imported from a DLL, but the end effect 452 # is the same), so the test below won't find them. 453 libiberty_cv_var_sys_nerr=yes 454 libiberty_cv_var_sys_errlist=yes 455 ;; 456 457 *-*-*vms*) 458 # Under VMS, vfork works very different than on Unix. The standard test 459 # won't work, and it isn't easily adaptable. It makes more sense to 460 # just force it. 461 ac_cv_func_vfork_works=yes 462 ;; 463 464 esac 465 466 # We haven't set the list of objects yet. Use the standard autoconf 467 # tests. This will only work if the compiler works. 468 AC_ISC_POSIX 469 AC_REPLACE_FUNCS($funcs) 470 libiberty_AC_FUNC_C_ALLOCA 471 AC_FUNC_FORK 472 if test $ac_cv_func_vfork_works = no; then 473 AC_LIBOBJ([vfork]) 474 fi 475 # We only need _doprnt if we might use it to implement v*printf. 476 if test $ac_cv_func_vprintf != yes \ 477 || test $ac_cv_func_vfprintf != yes \ 478 || test $ac_cv_func_vsprintf != yes; then 479 AC_REPLACE_FUNCS(_doprnt) 480 else 481 AC_CHECK_FUNCS(_doprnt) 482 fi 483 484 for v in $vars; do 485 AC_MSG_CHECKING([for $v]) 486 AC_CACHE_VAL(libiberty_cv_var_$v, 487 [AC_LINK_IFELSE([AC_LANG_PROGRAM([[int *p;]],[[extern int $v []; p = $v;]])], 488 [eval "libiberty_cv_var_$v=yes"], 489 [eval "libiberty_cv_var_$v=no"])]) 490 if eval "test \"`echo '$libiberty_cv_var_'$v`\" = yes"; then 491 AC_MSG_RESULT(yes) 492 n=HAVE_`echo $v | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` 493 AC_DEFINE_UNQUOTED($n) 494 else 495 AC_MSG_RESULT(no) 496 fi 497 done 498 499 # special check for _system_configuration because AIX <4.3.2 do not 500 # contain the `physmem' member. 501 AC_MSG_CHECKING([for external symbol _system_configuration]) 502 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/systemcfg.h>]], 503 [[double x = _system_configuration.physmem;]])], 504 [AC_MSG_RESULT([yes]) 505 AC_DEFINE(HAVE__SYSTEM_CONFIGURATION, 1, 506 [Define if you have the _system_configuration variable.])], 507 [AC_MSG_RESULT([no])]) 508 509 AC_CHECK_FUNCS($checkfuncs) 510 libiberty_NEED_DECLARATION(canonicalize_file_name) 511fi 512 513# Figure out which version of pexecute to use. 514case "${host}" in 515 *-*-mingw* | *-*-winnt*) pexecute=./pex-win32.o ;; 516 *-*-msdosdjgpp*) pexecute=./pex-djgpp.o ;; 517 *-*-msdos*) pexecute=./pex-msdos.o ;; 518 *-*-os2-emx*) pexecute=./pex-os2.o ;; 519 *) pexecute=./pex-unix.o ;; 520esac 521AC_SUBST(pexecute) 522 523libiberty_AC_FUNC_STRNCMP 524 525# Install a library built with a cross compiler in $(tooldir) rather 526# than $(libdir). 527if test -z "${with_cross_host}"; then 528 INSTALL_DEST=libdir 529else 530 INSTALL_DEST=tooldir 531fi 532AC_SUBST(INSTALL_DEST) 533 534m4_pattern_allow(LIBOBJS) 535L="" 536for l in x $LIBOBJS; do 537 case $l in 538 x) ;; 539 *) L="$L ./$l" ;; 540 esac 541done 542LIBOBJS="$L" 543 544# We need multilib support, but only if configuring for the target. 545AC_CONFIG_FILES([Makefile testsuite/Makefile]) 546AC_CONFIG_COMMANDS([default], 547 [[test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h 548if test -n "$CONFIG_FILES"; then 549 if test -n "${with_target_subdir}"; then 550 # FIXME: We shouldn't need to set ac_file 551 ac_file=Makefile 552 LD="${ORIGINAL_LD_FOR_MULTILIBS}" 553 . ${libiberty_topdir}/config-ml.in 554 fi 555fi]], 556[[srcdir=${srcdir} 557host=${host} 558target=${target} 559with_target_subdir=${with_target_subdir} 560with_multisubdir=${with_multisubdir} 561ac_configure_args="--enable-multilib ${ac_configure_args}" 562CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} 563ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}" 564libiberty_topdir=${libiberty_topdir} 565]]) 566AC_OUTPUT 567