configure.ac revision 14103d3598e7b828e79a81f2978dc08348677b02
1dnl Process this file with autoconf to produce a configure script. 2AC_INIT([Makefile.in]) 3 4dnl ============================================================================ 5dnl Custom macro definitions. 6 7dnl JE_CFLAGS_APPEND(cflag) 8AC_DEFUN([JE_CFLAGS_APPEND], 9[ 10AC_MSG_CHECKING([whether compiler supports $1]) 11TCFLAGS="${CFLAGS}" 12if test "x${CFLAGS}" = "x" ; then 13 CFLAGS="$1" 14else 15 CFLAGS="${CFLAGS} $1" 16fi 17AC_COMPILE_IFELSE([AC_LANG_PROGRAM( 18[[ 19]], [[ 20 return 0; 21]])], 22 AC_MSG_RESULT([yes]), 23 AC_MSG_RESULT([no]) 24 [CFLAGS="${TCFLAGS}"] 25) 26]) 27 28dnl JE_COMPILABLE(label, hcode, mcode, rvar) 29dnl 30dnl Use AC_LINK_IFELSE() rather than AC_COMPILE_IFELSE() so that linker errors 31dnl cause failure. 32AC_DEFUN([JE_COMPILABLE], 33[ 34AC_CACHE_CHECK([whether $1 is compilable], 35 [$4], 36 [AC_LINK_IFELSE([AC_LANG_PROGRAM([$2], 37 [$3])], 38 [$4=yes], 39 [$4=no])]) 40]) 41 42dnl ============================================================================ 43 44dnl Library revision. 45rev=1 46AC_SUBST([rev]) 47 48srcroot=$srcdir 49if test "x${srcroot}" = "x." ; then 50 srcroot="" 51else 52 srcroot="${srcroot}/" 53fi 54AC_SUBST([srcroot]) 55abs_srcroot="`cd \"${srcdir}\"; pwd`/" 56AC_SUBST([abs_srcroot]) 57 58objroot="" 59AC_SUBST([objroot]) 60abs_objroot="`pwd`/" 61AC_SUBST([abs_objroot]) 62 63dnl Munge install path variables. 64if test "x$prefix" = "xNONE" ; then 65 prefix="/usr/local" 66fi 67if test "x$exec_prefix" = "xNONE" ; then 68 exec_prefix=$prefix 69fi 70PREFIX=$prefix 71AC_SUBST([PREFIX]) 72BINDIR=`eval echo $bindir` 73BINDIR=`eval echo $BINDIR` 74AC_SUBST([BINDIR]) 75INCLUDEDIR=`eval echo $includedir` 76INCLUDEDIR=`eval echo $INCLUDEDIR` 77AC_SUBST([INCLUDEDIR]) 78LIBDIR=`eval echo $libdir` 79LIBDIR=`eval echo $LIBDIR` 80AC_SUBST([LIBDIR]) 81DATADIR=`eval echo $datadir` 82DATADIR=`eval echo $DATADIR` 83AC_SUBST([DATADIR]) 84MANDIR=`eval echo $mandir` 85MANDIR=`eval echo $MANDIR` 86AC_SUBST([MANDIR]) 87 88dnl Support for building documentation. 89AC_PATH_PROG([XSLTPROC], [xsltproc], , [$PATH]) 90if test -d "/usr/share/xml/docbook/stylesheet/docbook-xsl" ; then 91 DEFAULT_XSLROOT="/usr/share/xml/docbook/stylesheet/docbook-xsl" 92elif test -d "/usr/share/sgml/docbook/xsl-stylesheets" ; then 93 DEFAULT_XSLROOT="/usr/share/sgml/docbook/xsl-stylesheets" 94else 95 dnl Documentation building will fail if this default gets used. 96 DEFAULT_XSLROOT="" 97fi 98AC_ARG_WITH([xslroot], 99 [AS_HELP_STRING([--with-xslroot=<path>], [XSL stylesheet root path])], [ 100if test "x$with_xslroot" = "xno" ; then 101 XSLROOT="${DEFAULT_XSLROOT}" 102else 103 XSLROOT="${with_xslroot}" 104fi 105], 106 XSLROOT="${DEFAULT_XSLROOT}" 107) 108AC_SUBST([XSLROOT]) 109 110dnl If CFLAGS isn't defined, set CFLAGS to something reasonable. Otherwise, 111dnl just prevent autoconf from molesting CFLAGS. 112CFLAGS=$CFLAGS 113AC_PROG_CC 114if test "x$CFLAGS" = "x" ; then 115 no_CFLAGS="yes" 116 if test "x$GCC" = "xyes" ; then 117 JE_CFLAGS_APPEND([-std=gnu99]) 118 JE_CFLAGS_APPEND([-Wall]) 119 JE_CFLAGS_APPEND([-pipe]) 120 JE_CFLAGS_APPEND([-g3]) 121 fi 122fi 123dnl Append EXTRA_CFLAGS to CFLAGS, if defined. 124if test "x$EXTRA_CFLAGS" != "x" ; then 125 JE_CFLAGS_APPEND([$EXTRA_CFLAGS]) 126fi 127AC_PROG_CPP 128 129AC_CHECK_SIZEOF([void *]) 130if test "x${ac_cv_sizeof_void_p}" = "x8" ; then 131 LG_SIZEOF_PTR=3 132elif test "x${ac_cv_sizeof_void_p}" = "x4" ; then 133 LG_SIZEOF_PTR=2 134else 135 AC_MSG_ERROR([Unsupported pointer size: ${ac_cv_sizeof_void_p}]) 136fi 137AC_DEFINE_UNQUOTED([LG_SIZEOF_PTR], [$LG_SIZEOF_PTR]) 138 139AC_CHECK_SIZEOF([int]) 140if test "x${ac_cv_sizeof_int}" = "x8" ; then 141 LG_SIZEOF_INT=3 142elif test "x${ac_cv_sizeof_int}" = "x4" ; then 143 LG_SIZEOF_INT=2 144else 145 AC_MSG_ERROR([Unsupported int size: ${ac_cv_sizeof_int}]) 146fi 147AC_DEFINE_UNQUOTED([LG_SIZEOF_INT], [$LG_SIZEOF_INT]) 148 149AC_CHECK_SIZEOF([long]) 150if test "x${ac_cv_sizeof_long}" = "x8" ; then 151 LG_SIZEOF_LONG=3 152elif test "x${ac_cv_sizeof_long}" = "x4" ; then 153 LG_SIZEOF_LONG=2 154else 155 AC_MSG_ERROR([Unsupported long size: ${ac_cv_sizeof_long}]) 156fi 157AC_DEFINE_UNQUOTED([LG_SIZEOF_LONG], [$LG_SIZEOF_LONG]) 158 159AC_CHECK_SIZEOF([intmax_t]) 160if test "x${ac_cv_sizeof_intmax_t}" = "x16" ; then 161 LG_SIZEOF_INTMAX_T=4 162elif test "x${ac_cv_sizeof_intmax_t}" = "x8" ; then 163 LG_SIZEOF_INTMAX_T=3 164elif test "x${ac_cv_sizeof_intmax_t}" = "x4" ; then 165 LG_SIZEOF_INTMAX_T=2 166else 167 AC_MSG_ERROR([Unsupported intmax_t size: ${ac_cv_sizeof_intmax_t}]) 168fi 169AC_DEFINE_UNQUOTED([LG_SIZEOF_INTMAX_T], [$LG_SIZEOF_INTMAX_T]) 170 171AC_CANONICAL_HOST 172dnl CPU-specific settings. 173CPU_SPINWAIT="" 174case "${host_cpu}" in 175 i[[345]]86) 176 ;; 177 i686) 178 JE_COMPILABLE([__asm__], [], [[__asm__ volatile("pause"); return 0;]], 179 [je_cv_asm]) 180 if test "x${je_cv_asm}" = "xyes" ; then 181 CPU_SPINWAIT='__asm__ volatile("pause")' 182 fi 183 ;; 184 x86_64) 185 JE_COMPILABLE([__asm__ syntax], [], 186 [[__asm__ volatile("pause"); return 0;]], [je_cv_asm]) 187 if test "x${je_cv_asm}" = "xyes" ; then 188 CPU_SPINWAIT='__asm__ volatile("pause")' 189 fi 190 ;; 191 *) 192 ;; 193esac 194AC_DEFINE_UNQUOTED([CPU_SPINWAIT], [$CPU_SPINWAIT]) 195 196LD_PRELOAD_VAR="LD_PRELOAD" 197so="so" 198o="o" 199a="a" 200exe= 201libprefix="lib" 202DSO_LDFLAGS='-shared -Wl,-soname,$(@F)' 203RPATH='-Wl,-rpath,$(1)' 204SOREV='$(SO).$(REV)' 205PIC_CFLAGS='-fPIC -DPIC' 206 207dnl Heap profiling uses the log(3) function. 208LIBS="$LIBS -lm" 209 210dnl Platform-specific settings. abi and RPATH can probably be determined 211dnl programmatically, but doing so is error-prone, which makes it generally 212dnl not worth the trouble. 213dnl 214dnl Define cpp macros in CPPFLAGS, rather than doing AC_DEFINE(macro), since the 215dnl definitions need to be seen before any headers are included, which is a pain 216dnl to make happen otherwise. 217default_munmap="1" 218case "${host}" in 219 *-*-darwin*) 220 CFLAGS="$CFLAGS -fno-common" 221 abi="macho" 222 AC_DEFINE([JEMALLOC_PURGE_MADVISE_FREE], [ ]) 223 RPATH="" 224 LD_PRELOAD_VAR="DYLD_INSERT_LIBRARIES" 225 so="dylib" 226 force_tls="0" 227 DSO_LDFLAGS='-shared -Wl,-dylib_install_name,$(@F)' 228 SOREV='$(REV).$(SO)' 229 ;; 230 *-*-freebsd*) 231 CFLAGS="$CFLAGS" 232 abi="elf" 233 AC_DEFINE([JEMALLOC_PURGE_MADVISE_FREE], [ ]) 234 force_lazy_lock="1" 235 ;; 236 *-*-linux*) 237 CFLAGS="$CFLAGS" 238 CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" 239 abi="elf" 240 AC_DEFINE([JEMALLOC_PURGE_MADVISE_DONTNEED], [ ]) 241 AC_DEFINE([JEMALLOC_THREADED_INIT], [ ]) 242 default_munmap="0" 243 ;; 244 *-*-netbsd*) 245 AC_MSG_CHECKING([ABI]) 246 AC_COMPILE_IFELSE([AC_LANG_PROGRAM( 247[[#ifdef __ELF__ 248/* ELF */ 249#else 250#error aout 251#endif 252]])], 253 [CFLAGS="$CFLAGS"; abi="elf"], 254 [abi="aout"]) 255 AC_MSG_RESULT([$abi]) 256 AC_DEFINE([JEMALLOC_PURGE_MADVISE_FREE], [ ]) 257 ;; 258 *-*-solaris2*) 259 CFLAGS="$CFLAGS" 260 abi="elf" 261 RPATH='-Wl,-R,$(1)' 262 dnl Solaris needs this for sigwait(). 263 CPPFLAGS="$CPPFLAGS -D_POSIX_PTHREAD_SEMANTICS" 264 LIBS="$LIBS -lposix4 -lsocket -lnsl" 265 ;; 266 *-ibm-aix*) 267 if "$LG_SIZEOF_PTR" = "8"; then 268 dnl 64bit AIX 269 LD_PRELOAD_VAR="LDR_PRELOAD64" 270 else 271 dnl 32bit AIX 272 LD_PRELOAD_VAR="LDR_PRELOAD" 273 fi 274 abi="xcoff" 275 ;; 276 *-*-mingw*) 277 abi="pecoff" 278 force_tls="0" 279 RPATH="" 280 so="dll" 281 DSO_LDFLAGS="-shared" 282 o="obj" 283 a="lib" 284 libprefix="" 285 exe=".exe" 286 SOREV='$(SO)' 287 PIC_CFLAGS="" 288 ;; 289 *) 290 AC_MSG_RESULT([Unsupported operating system: ${host}]) 291 abi="elf" 292 ;; 293esac 294AC_SUBST([abi]) 295AC_SUBST([RPATH]) 296AC_SUBST([LD_PRELOAD_VAR]) 297AC_SUBST([so]) 298AC_SUBST([o]) 299AC_SUBST([a]) 300AC_SUBST([exe]) 301AC_SUBST([libprefix]) 302AC_SUBST([DSO_LDFLAGS]) 303AC_SUBST([SOREV]) 304AC_SUBST([PIC_CFLAGS]) 305 306JE_COMPILABLE([__attribute__ syntax], 307 [static __attribute__((unused)) void foo(void){}], 308 [], 309 [je_cv_attribute]) 310if test "x${je_cv_attribute}" = "xyes" ; then 311 AC_DEFINE([JEMALLOC_HAVE_ATTR], [ ]) 312 if test "x${GCC}" = "xyes" -a "x${abi}" = "xelf"; then 313 JE_CFLAGS_APPEND([-fvisibility=hidden]) 314 fi 315fi 316dnl Check for tls_model attribute support (clang 3.0 still lacks support). 317SAVED_CFLAGS="${CFLAGS}" 318JE_CFLAGS_APPEND([-Werror]) 319JE_COMPILABLE([tls_model attribute], [], 320 [static __thread int 321 __attribute__((tls_model("initial-exec"))) foo; 322 foo = 0;], 323 [je_cv_tls_model]) 324CFLAGS="${SAVED_CFLAGS}" 325if test "x${je_cv_tls_model}" = "xyes" ; then 326 AC_DEFINE([JEMALLOC_TLS_MODEL], 327 [__attribute__((tls_model("initial-exec")))]) 328else 329 AC_DEFINE([JEMALLOC_TLS_MODEL], [ ]) 330fi 331 332JE_COMPILABLE([mremap(...MREMAP_FIXED...)], [ 333#define _GNU_SOURCE 334#include <sys/mman.h> 335], [ 336void *p = mremap((void *)0, 0, 0, MREMAP_MAYMOVE|MREMAP_FIXED, (void *)0); 337], [je_cv_mremap_fixed]) 338if test "x${je_cv_mremap_fixed}" = "xyes" ; then 339 AC_DEFINE([JEMALLOC_MREMAP_FIXED], [ ]) 340fi 341 342dnl Support optional additions to rpath. 343AC_ARG_WITH([rpath], 344 [AS_HELP_STRING([--with-rpath=<rpath>], [Colon-separated rpath (ELF systems only)])], 345if test "x$with_rpath" = "xno" ; then 346 RPATH_EXTRA= 347else 348 RPATH_EXTRA="`echo $with_rpath | tr \":\" \" \"`" 349fi, 350 RPATH_EXTRA= 351) 352AC_SUBST([RPATH_EXTRA]) 353 354dnl Disable rules that do automatic regeneration of configure output by default. 355AC_ARG_ENABLE([autogen], 356 [AS_HELP_STRING([--enable-autogen], [Automatically regenerate configure output])], 357if test "x$enable_autogen" = "xno" ; then 358 enable_autogen="0" 359else 360 enable_autogen="1" 361fi 362, 363enable_autogen="0" 364) 365AC_SUBST([enable_autogen]) 366 367AC_PROG_INSTALL 368AC_PROG_RANLIB 369AC_PATH_PROG([AR], [ar], , [$PATH]) 370AC_PATH_PROG([LD], [ld], , [$PATH]) 371AC_PATH_PROG([AUTOCONF], [autoconf], , [$PATH]) 372 373public_syms="malloc_conf malloc_message malloc calloc posix_memalign aligned_alloc realloc free malloc_usable_size malloc_stats_print mallctl mallctlnametomib mallctlbymib" 374 375dnl Check for allocator-related functions that should be wrapped. 376AC_CHECK_FUNC([memalign], 377 [AC_DEFINE([JEMALLOC_OVERRIDE_MEMALIGN], [ ]) 378 public_syms="${public_syms} memalign"]) 379AC_CHECK_FUNC([valloc], 380 [AC_DEFINE([JEMALLOC_OVERRIDE_VALLOC], [ ]) 381 public_syms="${public_syms} valloc"]) 382 383dnl Support the experimental API by default. 384AC_ARG_ENABLE([experimental], 385 [AS_HELP_STRING([--disable-experimental], 386 [Disable support for the experimental API])], 387[if test "x$enable_experimental" = "xno" ; then 388 enable_experimental="0" 389else 390 enable_experimental="1" 391fi 392], 393[enable_experimental="1"] 394) 395if test "x$enable_experimental" = "x1" ; then 396 AC_DEFINE([JEMALLOC_EXPERIMENTAL], [ ]) 397 public_syms="${public_syms} allocm dallocm nallocm rallocm sallocm" 398fi 399AC_SUBST([enable_experimental]) 400 401dnl Perform no name mangling by default. 402AC_ARG_WITH([mangling], 403 [AS_HELP_STRING([--with-mangling=<map>], [Mangle symbols in <map>])], 404 [mangling_map="$with_mangling"], [mangling_map=""]) 405for nm in `echo ${mangling_map} |tr ',' ' '` ; do 406 k="`echo ${nm} |tr ':' ' ' |awk '{print $1}'`" 407 n="je_${k}" 408 m=`echo ${nm} |tr ':' ' ' |awk '{print $2}'` 409 AC_DEFINE_UNQUOTED([${n}], [${m}]) 410 dnl Remove key from public_syms so that it isn't redefined later. 411 public_syms=`for sym in ${public_syms}; do echo "${sym}"; done |grep -v "^${k}\$" |tr '\n' ' '` 412done 413 414dnl Do not prefix public APIs by default. 415AC_ARG_WITH([jemalloc_prefix], 416 [AS_HELP_STRING([--with-jemalloc-prefix=<prefix>], [Prefix to prepend to all public APIs])], 417 [JEMALLOC_PREFIX="$with_jemalloc_prefix"], 418 [if test "x$abi" != "xmacho" ; then 419 JEMALLOC_PREFIX="" 420else 421 JEMALLOC_PREFIX="je_" 422fi] 423) 424if test "x$JEMALLOC_PREFIX" != "x" ; then 425 JEMALLOC_CPREFIX=`echo ${JEMALLOC_PREFIX} | tr "a-z" "A-Z"` 426 AC_DEFINE_UNQUOTED([JEMALLOC_PREFIX], ["$JEMALLOC_PREFIX"]) 427 AC_DEFINE_UNQUOTED([JEMALLOC_CPREFIX], ["$JEMALLOC_CPREFIX"]) 428fi 429dnl Generate macros to rename public symbols. All public symbols are prefixed 430dnl with je_ in the source code, so these macro definitions are needed even if 431dnl --with-jemalloc-prefix wasn't specified. 432for stem in ${public_syms}; do 433 n="je_${stem}" 434 m="${JEMALLOC_PREFIX}${stem}" 435 AC_DEFINE_UNQUOTED([${n}], [${m}]) 436done 437 438dnl Do not mangle library-private APIs by default. 439AC_ARG_WITH([private_namespace], 440 [AS_HELP_STRING([--with-private-namespace=<prefix>], [Prefix to prepend to all library-private APIs])], 441 [JEMALLOC_PRIVATE_NAMESPACE="$with_private_namespace"], 442 [JEMALLOC_PRIVATE_NAMESPACE=""] 443) 444AC_DEFINE_UNQUOTED([JEMALLOC_PRIVATE_NAMESPACE], ["$JEMALLOC_PRIVATE_NAMESPACE"]) 445if test "x$JEMALLOC_PRIVATE_NAMESPACE" != "x" ; then 446 AC_DEFINE_UNQUOTED([JEMALLOC_N(string_that_no_one_should_want_to_use_as_a_jemalloc_private_namespace_prefix)], [${JEMALLOC_PRIVATE_NAMESPACE}##string_that_no_one_should_want_to_use_as_a_jemalloc_private_namespace_prefix]) 447else 448 AC_DEFINE_UNQUOTED([JEMALLOC_N(string_that_no_one_should_want_to_use_as_a_jemalloc_private_namespace_prefix)], [string_that_no_one_should_want_to_use_as_a_jemalloc_private_namespace_prefix]) 449fi 450 451dnl Do not add suffix to installed files by default. 452AC_ARG_WITH([install_suffix], 453 [AS_HELP_STRING([--with-install-suffix=<suffix>], [Suffix to append to all installed files])], 454 [INSTALL_SUFFIX="$with_install_suffix"], 455 [INSTALL_SUFFIX=] 456) 457install_suffix="$INSTALL_SUFFIX" 458AC_SUBST([install_suffix]) 459 460cfgoutputs_in="${srcroot}Makefile.in" 461cfgoutputs_in="${cfgoutputs_in} ${srcroot}doc/html.xsl.in" 462cfgoutputs_in="${cfgoutputs_in} ${srcroot}doc/manpages.xsl.in" 463cfgoutputs_in="${cfgoutputs_in} ${srcroot}doc/jemalloc.xml.in" 464cfgoutputs_in="${cfgoutputs_in} ${srcroot}include/jemalloc/jemalloc.h.in" 465cfgoutputs_in="${cfgoutputs_in} ${srcroot}include/jemalloc/internal/jemalloc_internal.h.in" 466cfgoutputs_in="${cfgoutputs_in} ${srcroot}test/jemalloc_test.h.in" 467 468cfgoutputs_out="Makefile" 469cfgoutputs_out="${cfgoutputs_out} doc/html.xsl" 470cfgoutputs_out="${cfgoutputs_out} doc/manpages.xsl" 471cfgoutputs_out="${cfgoutputs_out} doc/jemalloc${install_suffix}.xml" 472cfgoutputs_out="${cfgoutputs_out} include/jemalloc/jemalloc${install_suffix}.h" 473cfgoutputs_out="${cfgoutputs_out} include/jemalloc/internal/jemalloc_internal.h" 474cfgoutputs_out="${cfgoutputs_out} test/jemalloc_test.h" 475 476cfgoutputs_tup="Makefile" 477cfgoutputs_tup="${cfgoutputs_tup} doc/html.xsl:doc/html.xsl.in" 478cfgoutputs_tup="${cfgoutputs_tup} doc/manpages.xsl:doc/manpages.xsl.in" 479cfgoutputs_tup="${cfgoutputs_tup} doc/jemalloc${install_suffix}.xml:doc/jemalloc.xml.in" 480cfgoutputs_tup="${cfgoutputs_tup} include/jemalloc/jemalloc${install_suffix}.h:include/jemalloc/jemalloc.h.in" 481cfgoutputs_tup="${cfgoutputs_tup} include/jemalloc/internal/jemalloc_internal.h" 482cfgoutputs_tup="${cfgoutputs_tup} test/jemalloc_test.h:test/jemalloc_test.h.in" 483 484cfghdrs_in="${srcroot}include/jemalloc/jemalloc_defs.h.in" 485cfghdrs_in="${cfghdrs_in} ${srcroot}include/jemalloc/internal/size_classes.sh" 486 487cfghdrs_out="include/jemalloc/jemalloc_defs${install_suffix}.h" 488cfghdrs_out="${cfghdrs_out} include/jemalloc/internal/size_classes.h" 489 490cfghdrs_tup="include/jemalloc/jemalloc_defs${install_suffix}.h:include/jemalloc/jemalloc_defs.h.in" 491 492dnl Do not silence irrelevant compiler warnings by default, since enabling this 493dnl option incurs a performance penalty. 494AC_ARG_ENABLE([cc-silence], 495 [AS_HELP_STRING([--enable-cc-silence], 496 [Silence irrelevant compiler warnings])], 497[if test "x$enable_cc_silence" = "xno" ; then 498 enable_cc_silence="0" 499else 500 enable_cc_silence="1" 501fi 502], 503[enable_cc_silence="0"] 504) 505if test "x$enable_cc_silence" = "x1" ; then 506 AC_DEFINE([JEMALLOC_CC_SILENCE], [ ]) 507fi 508 509dnl Do not compile with debugging by default. 510AC_ARG_ENABLE([debug], 511 [AS_HELP_STRING([--enable-debug], [Build debugging code])], 512[if test "x$enable_debug" = "xno" ; then 513 enable_debug="0" 514else 515 enable_debug="1" 516fi 517], 518[enable_debug="0"] 519) 520if test "x$enable_debug" = "x1" ; then 521 AC_DEFINE([JEMALLOC_DEBUG], [ ]) 522 AC_DEFINE([JEMALLOC_IVSALLOC], [ ]) 523fi 524AC_SUBST([enable_debug]) 525 526dnl Only optimize if not debugging. 527if test "x$enable_debug" = "x0" -a "x$no_CFLAGS" = "xyes" ; then 528 dnl Make sure that an optimization flag was not specified in EXTRA_CFLAGS. 529 optimize="no" 530 echo "$EXTRA_CFLAGS" | grep "\-O" >/dev/null || optimize="yes" 531 if test "x${optimize}" = "xyes" ; then 532 if test "x$GCC" = "xyes" ; then 533 JE_CFLAGS_APPEND([-O3]) 534 JE_CFLAGS_APPEND([-funroll-loops]) 535 else 536 JE_CFLAGS_APPEND([-O]) 537 fi 538 fi 539fi 540 541dnl Enable statistics calculation by default. 542AC_ARG_ENABLE([stats], 543 [AS_HELP_STRING([--disable-stats], 544 [Disable statistics calculation/reporting])], 545[if test "x$enable_stats" = "xno" ; then 546 enable_stats="0" 547else 548 enable_stats="1" 549fi 550], 551[enable_stats="1"] 552) 553if test "x$enable_stats" = "x1" ; then 554 AC_DEFINE([JEMALLOC_STATS], [ ]) 555fi 556AC_SUBST([enable_stats]) 557 558dnl Do not enable profiling by default. 559AC_ARG_ENABLE([prof], 560 [AS_HELP_STRING([--enable-prof], [Enable allocation profiling])], 561[if test "x$enable_prof" = "xno" ; then 562 enable_prof="0" 563else 564 enable_prof="1" 565fi 566], 567[enable_prof="0"] 568) 569if test "x$enable_prof" = "x1" ; then 570 backtrace_method="" 571else 572 backtrace_method="N/A" 573fi 574 575AC_ARG_ENABLE([prof-libunwind], 576 [AS_HELP_STRING([--enable-prof-libunwind], [Use libunwind for backtracing])], 577[if test "x$enable_prof_libunwind" = "xno" ; then 578 enable_prof_libunwind="0" 579else 580 enable_prof_libunwind="1" 581fi 582], 583[enable_prof_libunwind="0"] 584) 585AC_ARG_WITH([static_libunwind], 586 [AS_HELP_STRING([--with-static-libunwind=<libunwind.a>], 587 [Path to static libunwind library; use rather than dynamically linking])], 588if test "x$with_static_libunwind" = "xno" ; then 589 LUNWIND="-lunwind" 590else 591 if test ! -f "$with_static_libunwind" ; then 592 AC_MSG_ERROR([Static libunwind not found: $with_static_libunwind]) 593 fi 594 LUNWIND="$with_static_libunwind" 595fi, 596 LUNWIND="-lunwind" 597) 598if test "x$backtrace_method" = "x" -a "x$enable_prof_libunwind" = "x1" ; then 599 AC_CHECK_HEADERS([libunwind.h], , [enable_prof_libunwind="0"]) 600 if test "x$LUNWIND" = "x-lunwind" ; then 601 AC_CHECK_LIB([unwind], [backtrace], [LIBS="$LIBS $LUNWIND"], 602 [enable_prof_libunwind="0"]) 603 else 604 LIBS="$LIBS $LUNWIND" 605 fi 606 if test "x${enable_prof_libunwind}" = "x1" ; then 607 backtrace_method="libunwind" 608 AC_DEFINE([JEMALLOC_PROF_LIBUNWIND], [ ]) 609 fi 610fi 611 612AC_ARG_ENABLE([prof-libgcc], 613 [AS_HELP_STRING([--disable-prof-libgcc], 614 [Do not use libgcc for backtracing])], 615[if test "x$enable_prof_libgcc" = "xno" ; then 616 enable_prof_libgcc="0" 617else 618 enable_prof_libgcc="1" 619fi 620], 621[enable_prof_libgcc="1"] 622) 623if test "x$backtrace_method" = "x" -a "x$enable_prof_libgcc" = "x1" \ 624 -a "x$GCC" = "xyes" ; then 625 AC_CHECK_HEADERS([unwind.h], , [enable_prof_libgcc="0"]) 626 AC_CHECK_LIB([gcc], [_Unwind_Backtrace], [LIBS="$LIBS -lgcc"], [enable_prof_libgcc="0"]) 627 dnl The following is conservative, in that it only has entries for CPUs on 628 dnl which jemalloc has been tested. 629 AC_MSG_CHECKING([libgcc-based backtracing reliability on ${host_cpu}]) 630 case "${host_cpu}" in 631 i[[3456]]86) 632 AC_MSG_RESULT([unreliable]) 633 enable_prof_libgcc="0"; 634 ;; 635 x86_64) 636 AC_MSG_RESULT([reliable]) 637 ;; 638 *) 639 AC_MSG_RESULT([unreliable]) 640 enable_prof_libgcc="0"; 641 ;; 642 esac 643 if test "x${enable_prof_libgcc}" = "x1" ; then 644 backtrace_method="libgcc" 645 AC_DEFINE([JEMALLOC_PROF_LIBGCC], [ ]) 646 fi 647else 648 enable_prof_libgcc="0" 649fi 650 651AC_ARG_ENABLE([prof-gcc], 652 [AS_HELP_STRING([--disable-prof-gcc], 653 [Do not use gcc intrinsics for backtracing])], 654[if test "x$enable_prof_gcc" = "xno" ; then 655 enable_prof_gcc="0" 656else 657 enable_prof_gcc="1" 658fi 659], 660[enable_prof_gcc="1"] 661) 662if test "x$backtrace_method" = "x" -a "x$enable_prof_gcc" = "x1" \ 663 -a "x$GCC" = "xyes" ; then 664 backtrace_method="gcc intrinsics" 665 AC_DEFINE([JEMALLOC_PROF_GCC], [ ]) 666else 667 enable_prof_gcc="0" 668fi 669 670if test "x$backtrace_method" = "x" ; then 671 backtrace_method="none (disabling profiling)" 672 enable_prof="0" 673fi 674AC_MSG_CHECKING([configured backtracing method]) 675AC_MSG_RESULT([$backtrace_method]) 676if test "x$enable_prof" = "x1" ; then 677 AC_DEFINE([JEMALLOC_PROF], [ ]) 678fi 679AC_SUBST([enable_prof]) 680 681dnl Enable thread-specific caching by default. 682AC_ARG_ENABLE([tcache], 683 [AS_HELP_STRING([--disable-tcache], [Disable per thread caches])], 684[if test "x$enable_tcache" = "xno" ; then 685 enable_tcache="0" 686else 687 enable_tcache="1" 688fi 689], 690[enable_tcache="1"] 691) 692if test "x$enable_tcache" = "x1" ; then 693 AC_DEFINE([JEMALLOC_TCACHE], [ ]) 694fi 695AC_SUBST([enable_tcache]) 696 697dnl Enable VM deallocation via munmap() by default. 698AC_ARG_ENABLE([munmap], 699 [AS_HELP_STRING([--disable-munmap], [Disable VM deallocation via munmap(2)])], 700[if test "x$enable_munmap" = "xno" ; then 701 enable_munmap="0" 702else 703 enable_munmap="1" 704fi 705], 706[enable_munmap="${default_munmap}"] 707) 708if test "x$enable_munmap" = "x1" ; then 709 AC_DEFINE([JEMALLOC_MUNMAP], [ ]) 710fi 711AC_SUBST([enable_munmap]) 712 713dnl Do not enable allocation from DSS by default. 714AC_ARG_ENABLE([dss], 715 [AS_HELP_STRING([--enable-dss], [Enable allocation from DSS])], 716[if test "x$enable_dss" = "xno" ; then 717 enable_dss="0" 718else 719 enable_dss="1" 720fi 721], 722[enable_dss="0"] 723) 724dnl Check whether the BSD/SUSv1 sbrk() exists. If not, disable DSS support. 725AC_CHECK_FUNC([sbrk], [have_sbrk="1"], [have_sbrk="0"]) 726if test "x$have_sbrk" = "x1" ; then 727 AC_DEFINE([JEMALLOC_HAVE_SBRK], [ ]) 728else 729 enable_dss="0" 730fi 731 732if test "x$enable_dss" = "x1" ; then 733 AC_DEFINE([JEMALLOC_DSS], [ ]) 734fi 735AC_SUBST([enable_dss]) 736 737dnl Support the junk/zero filling option by default. 738AC_ARG_ENABLE([fill], 739 [AS_HELP_STRING([--disable-fill], 740 [Disable support for junk/zero filling, quarantine, and redzones])], 741[if test "x$enable_fill" = "xno" ; then 742 enable_fill="0" 743else 744 enable_fill="1" 745fi 746], 747[enable_fill="1"] 748) 749if test "x$enable_fill" = "x1" ; then 750 AC_DEFINE([JEMALLOC_FILL], [ ]) 751fi 752AC_SUBST([enable_fill]) 753 754dnl Disable utrace(2)-based tracing by default. 755AC_ARG_ENABLE([utrace], 756 [AS_HELP_STRING([--enable-utrace], [Enable utrace(2)-based tracing])], 757[if test "x$enable_utrace" = "xno" ; then 758 enable_utrace="0" 759else 760 enable_utrace="1" 761fi 762], 763[enable_utrace="0"] 764) 765JE_COMPILABLE([utrace(2)], [ 766#include <sys/types.h> 767#include <sys/param.h> 768#include <sys/time.h> 769#include <sys/uio.h> 770#include <sys/ktrace.h> 771], [ 772 utrace((void *)0, 0); 773], [je_cv_utrace]) 774if test "x${je_cv_utrace}" = "xno" ; then 775 enable_utrace="0" 776fi 777if test "x$enable_utrace" = "x1" ; then 778 AC_DEFINE([JEMALLOC_UTRACE], [ ]) 779fi 780AC_SUBST([enable_utrace]) 781 782dnl Support Valgrind by default. 783AC_ARG_ENABLE([valgrind], 784 [AS_HELP_STRING([--disable-valgrind], [Disable support for Valgrind])], 785[if test "x$enable_valgrind" = "xno" ; then 786 enable_valgrind="0" 787else 788 enable_valgrind="1" 789fi 790], 791[enable_valgrind="1"] 792) 793if test "x$enable_valgrind" = "x1" ; then 794 JE_COMPILABLE([valgrind], [ 795#include <valgrind/valgrind.h> 796#include <valgrind/memcheck.h> 797 798#if defined(__VALGRIND_MAJOR__) && defined(__VALGRIND_MINOR__) \ 799 && (__VALGRIND_MAJOR__ > 3 || (__VALGRIND_MAJOR__ == 3 && \ 800 __VALGRIND_MINOR__ >= 6)) 801#else 802# error "Incompatible Valgrind version" 803#endif 804], [], [je_cv_valgrind]) 805 if test "x${je_cv_valgrind}" = "xno" ; then 806 enable_valgrind="0" 807 fi 808 if test "x$enable_valgrind" = "x1" ; then 809 AC_DEFINE([JEMALLOC_VALGRIND], [ ]) 810 fi 811fi 812AC_SUBST([enable_valgrind]) 813 814dnl Do not support the xmalloc option by default. 815AC_ARG_ENABLE([xmalloc], 816 [AS_HELP_STRING([--enable-xmalloc], [Support xmalloc option])], 817[if test "x$enable_xmalloc" = "xno" ; then 818 enable_xmalloc="0" 819else 820 enable_xmalloc="1" 821fi 822], 823[enable_xmalloc="0"] 824) 825if test "x$enable_xmalloc" = "x1" ; then 826 AC_DEFINE([JEMALLOC_XMALLOC], [ ]) 827fi 828AC_SUBST([enable_xmalloc]) 829 830AC_CACHE_CHECK([STATIC_PAGE_SHIFT], 831 [je_cv_static_page_shift], 832 AC_RUN_IFELSE([AC_LANG_PROGRAM( 833[[ 834#ifdef _WIN32 835#include <windows.h> 836#else 837#include <unistd.h> 838#include <strings.h> 839#endif 840#include <stdio.h> 841]], 842[[ 843 long result; 844 FILE *f; 845 846#ifdef _WIN32 847 SYSTEM_INFO si; 848 GetSystemInfo(&si); 849 result = si.dwPageSize; 850#else 851 result = sysconf(_SC_PAGESIZE); 852#endif 853 if (result == -1) { 854 return 1; 855 } 856 result = ffsl(result) - 1; 857 858 f = fopen("conftest.out", "w"); 859 if (f == NULL) { 860 return 1; 861 } 862 fprintf(f, "%u\n", result); 863 fclose(f); 864 865 return 0; 866]])], 867 [je_cv_static_page_shift=`cat conftest.out`], 868 [je_cv_static_page_shift=undefined])) 869 870if test "x$je_cv_static_page_shift" != "xundefined"; then 871 AC_DEFINE_UNQUOTED([STATIC_PAGE_SHIFT], [$je_cv_static_page_shift]) 872else 873 AC_MSG_ERROR([cannot determine value for STATIC_PAGE_SHIFT]) 874fi 875 876dnl ============================================================================ 877dnl jemalloc configuration. 878dnl 879 880dnl Set VERSION if source directory has an embedded git repository. 881if test -d "${srcroot}.git" ; then 882 git describe --long --abbrev=40 > ${srcroot}VERSION 883fi 884jemalloc_version=`cat ${srcroot}VERSION` 885jemalloc_version_major=`echo ${jemalloc_version} | tr ".g-" " " | awk '{print [$]1}'` 886jemalloc_version_minor=`echo ${jemalloc_version} | tr ".g-" " " | awk '{print [$]2}'` 887jemalloc_version_bugfix=`echo ${jemalloc_version} | tr ".g-" " " | awk '{print [$]3}'` 888jemalloc_version_nrev=`echo ${jemalloc_version} | tr ".g-" " " | awk '{print [$]4}'` 889jemalloc_version_gid=`echo ${jemalloc_version} | tr ".g-" " " | awk '{print [$]5}'` 890AC_SUBST([jemalloc_version]) 891AC_SUBST([jemalloc_version_major]) 892AC_SUBST([jemalloc_version_minor]) 893AC_SUBST([jemalloc_version_bugfix]) 894AC_SUBST([jemalloc_version_nrev]) 895AC_SUBST([jemalloc_version_gid]) 896 897dnl ============================================================================ 898dnl Configure pthreads. 899 900if test "x$abi" != "xpecoff" ; then 901 AC_CHECK_HEADERS([pthread.h], , [AC_MSG_ERROR([pthread.h is missing])]) 902 dnl Some systems may embed pthreads functionality in libc; check for libpthread 903 dnl first, but try libc too before failing. 904 AC_CHECK_LIB([pthread], [pthread_create], [LIBS="$LIBS -lpthread"], 905 [AC_SEARCH_LIBS([pthread_create], , , 906 AC_MSG_ERROR([libpthread is missing]))]) 907fi 908 909CPPFLAGS="$CPPFLAGS -D_REENTRANT" 910 911dnl Check whether the BSD-specific _malloc_thread_cleanup() exists. If so, use 912dnl it rather than pthreads TSD cleanup functions to support cleanup during 913dnl thread exit, in order to avoid pthreads library recursion during 914dnl bootstrapping. 915AC_CHECK_FUNC([_malloc_thread_cleanup], 916 [have__malloc_thread_cleanup="1"], 917 [have__malloc_thread_cleanup="0"] 918 ) 919if test "x$have__malloc_thread_cleanup" = "x1" ; then 920 AC_DEFINE([JEMALLOC_MALLOC_THREAD_CLEANUP], [ ]) 921 force_tls="1" 922fi 923 924dnl Check whether the BSD-specific _pthread_mutex_init_calloc_cb() exists. If 925dnl so, mutex initialization causes allocation, and we need to implement this 926dnl callback function in order to prevent recursive allocation. 927AC_CHECK_FUNC([_pthread_mutex_init_calloc_cb], 928 [have__pthread_mutex_init_calloc_cb="1"], 929 [have__pthread_mutex_init_calloc_cb="0"] 930 ) 931if test "x$have__pthread_mutex_init_calloc_cb" = "x1" ; then 932 AC_DEFINE([JEMALLOC_MUTEX_INIT_CB]) 933fi 934 935dnl Disable lazy locking by default. 936AC_ARG_ENABLE([lazy_lock], 937 [AS_HELP_STRING([--enable-lazy-lock], 938 [Enable lazy locking (only lock when multi-threaded)])], 939[if test "x$enable_lazy_lock" = "xno" ; then 940 enable_lazy_lock="0" 941else 942 enable_lazy_lock="1" 943fi 944], 945[enable_lazy_lock="0"] 946) 947if test "x$enable_lazy_lock" = "x0" -a "x${force_lazy_lock}" = "x1" ; then 948 AC_MSG_RESULT([Forcing lazy-lock to avoid allocator/threading bootstrap issues]) 949 enable_lazy_lock="1" 950fi 951if test "x$enable_lazy_lock" = "x1" ; then 952 if test "x$abi" != "xpecoff" ; then 953 AC_CHECK_HEADERS([dlfcn.h], , [AC_MSG_ERROR([dlfcn.h is missing])]) 954 AC_CHECK_FUNC([dlsym], [], 955 [AC_CHECK_LIB([dl], [dlsym], [LIBS="$LIBS -ldl"], 956 [AC_MSG_ERROR([libdl is missing])]) 957 ]) 958 fi 959 AC_DEFINE([JEMALLOC_LAZY_LOCK], [ ]) 960fi 961AC_SUBST([enable_lazy_lock]) 962 963AC_ARG_ENABLE([tls], 964 [AS_HELP_STRING([--disable-tls], [Disable thread-local storage (__thread keyword)])], 965if test "x$enable_tls" = "xno" ; then 966 enable_tls="0" 967else 968 enable_tls="1" 969fi 970, 971enable_tls="1" 972) 973if test "x${enable_tls}" = "x0" -a "x${force_tls}" = "x1" ; then 974 AC_MSG_RESULT([Forcing TLS to avoid allocator/threading bootstrap issues]) 975 enable_tls="1" 976fi 977if test "x${enable_tls}" = "x1" -a "x${force_tls}" = "x0" ; then 978 AC_MSG_RESULT([Forcing no TLS to avoid allocator/threading bootstrap issues]) 979 enable_tls="0" 980fi 981if test "x${enable_tls}" = "x1" ; then 982AC_MSG_CHECKING([for TLS]) 983AC_COMPILE_IFELSE([AC_LANG_PROGRAM( 984[[ 985 __thread int x; 986]], [[ 987 x = 42; 988 989 return 0; 990]])], 991 AC_MSG_RESULT([yes]), 992 AC_MSG_RESULT([no]) 993 enable_tls="0") 994fi 995AC_SUBST([enable_tls]) 996if test "x${enable_tls}" = "x1" ; then 997 AC_DEFINE_UNQUOTED([JEMALLOC_TLS], [ ]) 998elif test "x${force_tls}" = "x1" ; then 999 AC_MSG_ERROR([Failed to configure TLS, which is mandatory for correct function]) 1000fi 1001 1002dnl ============================================================================ 1003dnl Check for ffsl(3), and fail if not found. This function exists on all 1004dnl platforms that jemalloc currently has a chance of functioning on without 1005dnl modification. 1006JE_COMPILABLE([a program using ffsl], [ 1007#include <strings.h> 1008#include <string.h> 1009], [ 1010 { 1011 int rv = ffsl(0x08); 1012 } 1013], [je_cv_function_ffsl]) 1014if test "x${je_cv_function_ffsl}" != "xyes" ; then 1015 AC_MSG_ERROR([Cannot build without ffsl(3)]) 1016fi 1017 1018dnl ============================================================================ 1019dnl Check for atomic(9) operations as provided on FreeBSD. 1020 1021JE_COMPILABLE([atomic(9)], [ 1022#include <sys/types.h> 1023#include <machine/atomic.h> 1024#include <inttypes.h> 1025], [ 1026 { 1027 uint32_t x32 = 0; 1028 volatile uint32_t *x32p = &x32; 1029 atomic_fetchadd_32(x32p, 1); 1030 } 1031 { 1032 unsigned long xlong = 0; 1033 volatile unsigned long *xlongp = &xlong; 1034 atomic_fetchadd_long(xlongp, 1); 1035 } 1036], [je_cv_atomic9]) 1037if test "x${je_cv_atomic9}" = "xyes" ; then 1038 AC_DEFINE([JEMALLOC_ATOMIC9]) 1039fi 1040 1041dnl ============================================================================ 1042dnl Check for atomic(3) operations as provided on Darwin. 1043 1044JE_COMPILABLE([Darwin OSAtomic*()], [ 1045#include <libkern/OSAtomic.h> 1046#include <inttypes.h> 1047], [ 1048 { 1049 int32_t x32 = 0; 1050 volatile int32_t *x32p = &x32; 1051 OSAtomicAdd32(1, x32p); 1052 } 1053 { 1054 int64_t x64 = 0; 1055 volatile int64_t *x64p = &x64; 1056 OSAtomicAdd64(1, x64p); 1057 } 1058], [je_cv_osatomic]) 1059if test "x${je_cv_osatomic}" = "xyes" ; then 1060 AC_DEFINE([JEMALLOC_OSATOMIC], [ ]) 1061fi 1062 1063dnl ============================================================================ 1064dnl Check whether __sync_{add,sub}_and_fetch() are available despite 1065dnl __GCC_HAVE_SYNC_COMPARE_AND_SWAP_n macros being undefined. 1066 1067AC_DEFUN([JE_SYNC_COMPARE_AND_SWAP_CHECK],[ 1068 AC_CACHE_CHECK([whether to force $1-bit __sync_{add,sub}_and_fetch()], 1069 [je_cv_sync_compare_and_swap_$2], 1070 [AC_LINK_IFELSE([AC_LANG_PROGRAM([ 1071 #include <stdint.h> 1072 ], 1073 [ 1074 #ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_$2 1075 { 1076 uint$1_t x$1 = 0; 1077 __sync_add_and_fetch(&x$1, 42); 1078 __sync_sub_and_fetch(&x$1, 1); 1079 } 1080 #else 1081 #error __GCC_HAVE_SYNC_COMPARE_AND_SWAP_$2 is defined, no need to force 1082 #endif 1083 ])], 1084 [je_cv_sync_compare_and_swap_$2=yes], 1085 [je_cv_sync_compare_and_swap_$2=no])]) 1086 1087 if test "x${je_cv_sync_compare_and_swap_$2}" = "xyes" ; then 1088 AC_DEFINE([JE_FORCE_SYNC_COMPARE_AND_SWAP_$2], [ ]) 1089 fi 1090]) 1091 1092if test "x${je_cv_atomic9}" != "xyes" -a "x${je_cv_osatomic}" != "xyes" ; then 1093 JE_SYNC_COMPARE_AND_SWAP_CHECK(32, 4) 1094 JE_SYNC_COMPARE_AND_SWAP_CHECK(64, 8) 1095fi 1096 1097dnl ============================================================================ 1098dnl Check for spinlock(3) operations as provided on Darwin. 1099 1100JE_COMPILABLE([Darwin OSSpin*()], [ 1101#include <libkern/OSAtomic.h> 1102#include <inttypes.h> 1103], [ 1104 OSSpinLock lock = 0; 1105 OSSpinLockLock(&lock); 1106 OSSpinLockUnlock(&lock); 1107], [je_cv_osspin]) 1108if test "x${je_cv_osspin}" = "xyes" ; then 1109 AC_DEFINE([JEMALLOC_OSSPIN], [ ]) 1110fi 1111 1112dnl ============================================================================ 1113dnl Darwin-related configuration. 1114 1115if test "x${abi}" = "xmacho" ; then 1116 AC_DEFINE([JEMALLOC_IVSALLOC], [ ]) 1117 AC_DEFINE([JEMALLOC_ZONE], [ ]) 1118 1119 dnl The szone version jumped from 3 to 6 between the OS X 10.5.x and 10.6 1120 dnl releases. malloc_zone_t and malloc_introspection_t have new fields in 1121 dnl 10.6, which is the only source-level indication of the change. 1122 AC_MSG_CHECKING([malloc zone version]) 1123 AC_DEFUN([JE_ZONE_PROGRAM], 1124 [AC_LANG_PROGRAM( 1125 [#include <malloc/malloc.h>], 1126 [static foo[[sizeof($1) $2 sizeof(void *) * $3 ? 1 : -1]]] 1127 )]) 1128 1129 AC_COMPILE_IFELSE([JE_ZONE_PROGRAM(malloc_zone_t,==,14)],[JEMALLOC_ZONE_VERSION=3],[ 1130 AC_COMPILE_IFELSE([JE_ZONE_PROGRAM(malloc_zone_t,==,15)],[JEMALLOC_ZONE_VERSION=5],[ 1131 AC_COMPILE_IFELSE([JE_ZONE_PROGRAM(malloc_zone_t,==,16)],[ 1132 AC_COMPILE_IFELSE([JE_ZONE_PROGRAM(malloc_introspection_t,==,9)],[JEMALLOC_ZONE_VERSION=6],[ 1133 AC_COMPILE_IFELSE([JE_ZONE_PROGRAM(malloc_introspection_t,==,13)],[JEMALLOC_ZONE_VERSION=7],[JEMALLOC_ZONE_VERSION=] 1134 )])],[ 1135 AC_COMPILE_IFELSE([JE_ZONE_PROGRAM(malloc_zone_t,==,17)],[JEMALLOC_ZONE_VERSION=8],[ 1136 AC_COMPILE_IFELSE([JE_ZONE_PROGRAM(malloc_zone_t,>,17)],[JEMALLOC_ZONE_VERSION=9],[JEMALLOC_ZONE_VERSION=] 1137 )])])])]) 1138 if test "x${JEMALLOC_ZONE_VERSION}" = "x"; then 1139 AC_MSG_RESULT([unsupported]) 1140 AC_MSG_ERROR([Unsupported malloc zone version]) 1141 fi 1142 if test "${JEMALLOC_ZONE_VERSION}" = 9; then 1143 JEMALLOC_ZONE_VERSION=8 1144 AC_MSG_RESULT([> 8]) 1145 else 1146 AC_MSG_RESULT([$JEMALLOC_ZONE_VERSION]) 1147 fi 1148 AC_DEFINE_UNQUOTED(JEMALLOC_ZONE_VERSION, [$JEMALLOC_ZONE_VERSION]) 1149fi 1150 1151dnl ============================================================================ 1152dnl Check for typedefs, structures, and compiler characteristics. 1153AC_HEADER_STDBOOL 1154 1155AC_CONFIG_COMMANDS([include/jemalloc/internal/size_classes.h], [ 1156 mkdir -p "include/jemalloc/internal" 1157 "${srcdir}/include/jemalloc/internal/size_classes.sh" > "${objroot}include/jemalloc/internal/size_classes.h" 1158]) 1159 1160dnl Process .in files. 1161AC_SUBST([cfghdrs_in]) 1162AC_SUBST([cfghdrs_out]) 1163AC_CONFIG_HEADERS([$cfghdrs_tup]) 1164 1165dnl ============================================================================ 1166dnl Generate outputs. 1167AC_CONFIG_FILES([$cfgoutputs_tup config.stamp bin/jemalloc.sh]) 1168AC_SUBST([cfgoutputs_in]) 1169AC_SUBST([cfgoutputs_out]) 1170AC_OUTPUT 1171 1172dnl ============================================================================ 1173dnl Print out the results of configuration. 1174AC_MSG_RESULT([===============================================================================]) 1175AC_MSG_RESULT([jemalloc version : ${jemalloc_version}]) 1176AC_MSG_RESULT([library revision : ${rev}]) 1177AC_MSG_RESULT([]) 1178AC_MSG_RESULT([CC : ${CC}]) 1179AC_MSG_RESULT([CPPFLAGS : ${CPPFLAGS}]) 1180AC_MSG_RESULT([CFLAGS : ${CFLAGS}]) 1181AC_MSG_RESULT([LDFLAGS : ${LDFLAGS}]) 1182AC_MSG_RESULT([LIBS : ${LIBS}]) 1183AC_MSG_RESULT([RPATH_EXTRA : ${RPATH_EXTRA}]) 1184AC_MSG_RESULT([]) 1185AC_MSG_RESULT([XSLTPROC : ${XSLTPROC}]) 1186AC_MSG_RESULT([XSLROOT : ${XSLROOT}]) 1187AC_MSG_RESULT([]) 1188AC_MSG_RESULT([PREFIX : ${PREFIX}]) 1189AC_MSG_RESULT([BINDIR : ${BINDIR}]) 1190AC_MSG_RESULT([INCLUDEDIR : ${INCLUDEDIR}]) 1191AC_MSG_RESULT([LIBDIR : ${LIBDIR}]) 1192AC_MSG_RESULT([DATADIR : ${DATADIR}]) 1193AC_MSG_RESULT([MANDIR : ${MANDIR}]) 1194AC_MSG_RESULT([]) 1195AC_MSG_RESULT([srcroot : ${srcroot}]) 1196AC_MSG_RESULT([abs_srcroot : ${abs_srcroot}]) 1197AC_MSG_RESULT([objroot : ${objroot}]) 1198AC_MSG_RESULT([abs_objroot : ${abs_objroot}]) 1199AC_MSG_RESULT([]) 1200AC_MSG_RESULT([JEMALLOC_PREFIX : ${JEMALLOC_PREFIX}]) 1201AC_MSG_RESULT([JEMALLOC_PRIVATE_NAMESPACE]) 1202AC_MSG_RESULT([ : ${JEMALLOC_PRIVATE_NAMESPACE}]) 1203AC_MSG_RESULT([install_suffix : ${install_suffix}]) 1204AC_MSG_RESULT([autogen : ${enable_autogen}]) 1205AC_MSG_RESULT([experimental : ${enable_experimental}]) 1206AC_MSG_RESULT([cc-silence : ${enable_cc_silence}]) 1207AC_MSG_RESULT([debug : ${enable_debug}]) 1208AC_MSG_RESULT([stats : ${enable_stats}]) 1209AC_MSG_RESULT([prof : ${enable_prof}]) 1210AC_MSG_RESULT([prof-libunwind : ${enable_prof_libunwind}]) 1211AC_MSG_RESULT([prof-libgcc : ${enable_prof_libgcc}]) 1212AC_MSG_RESULT([prof-gcc : ${enable_prof_gcc}]) 1213AC_MSG_RESULT([tcache : ${enable_tcache}]) 1214AC_MSG_RESULT([fill : ${enable_fill}]) 1215AC_MSG_RESULT([utrace : ${enable_utrace}]) 1216AC_MSG_RESULT([valgrind : ${enable_valgrind}]) 1217AC_MSG_RESULT([xmalloc : ${enable_xmalloc}]) 1218AC_MSG_RESULT([munmap : ${enable_munmap}]) 1219AC_MSG_RESULT([dss : ${enable_dss}]) 1220AC_MSG_RESULT([lazy_lock : ${enable_lazy_lock}]) 1221AC_MSG_RESULT([tls : ${enable_tls}]) 1222AC_MSG_RESULT([===============================================================================]) 1223