Blame jemalloc/configure.ac

Packit Service 724aca
dnl Process this file with autoconf to produce a configure script.
Packit Service 724aca
AC_PREREQ(2.63)
Packit Service 724aca
AC_INIT([Makefile.in])
Packit Service 724aca
Packit Service 724aca
AC_CONFIG_AUX_DIR([build-aux])
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
dnl Custom macro definitions.
Packit Service 724aca
Packit Service 724aca
dnl JE_CONCAT_VVV(r, a, b)
Packit Service 724aca
dnl
Packit Service 724aca
dnl Set $r to the concatenation of $a and $b, with a space separating them iff
Packit Service 724aca
dnl both $a and $b are non-empty.
Packit Service 724aca
AC_DEFUN([JE_CONCAT_VVV],
Packit Service 724aca
if test "x[$]{$2}" = "x" -o "x[$]{$3}" = "x" ; then
Packit Service 724aca
  $1="[$]{$2}[$]{$3}"
Packit Service 724aca
else
Packit Service 724aca
  $1="[$]{$2} [$]{$3}"
Packit Service 724aca
fi
Packit Service 724aca
)
Packit Service 724aca
Packit Service 724aca
dnl JE_APPEND_VS(a, b)
Packit Service 724aca
dnl
Packit Service 724aca
dnl Set $a to the concatenation of $a and b, with a space separating them iff
Packit Service 724aca
dnl both $a and b are non-empty.
Packit Service 724aca
AC_DEFUN([JE_APPEND_VS],
Packit Service 724aca
  T_APPEND_V=$2
Packit Service 724aca
  JE_CONCAT_VVV($1, $1, T_APPEND_V)
Packit Service 724aca
)
Packit Service 724aca
Packit Service 724aca
CONFIGURE_CFLAGS=
Packit Service 724aca
SPECIFIED_CFLAGS="${CFLAGS}"
Packit Service 724aca
dnl JE_CFLAGS_ADD(cflag)
Packit Service 724aca
dnl
Packit Service 724aca
dnl CFLAGS is the concatenation of CONFIGURE_CFLAGS and SPECIFIED_CFLAGS
Packit Service 724aca
dnl (ignoring EXTRA_CFLAGS, which does not impact configure tests.  This macro
Packit Service 724aca
dnl appends to CONFIGURE_CFLAGS and regenerates CFLAGS.
Packit Service 724aca
AC_DEFUN([JE_CFLAGS_ADD],
Packit Service 724aca
[
Packit Service 724aca
AC_MSG_CHECKING([whether compiler supports $1])
Packit Service 724aca
T_CONFIGURE_CFLAGS="${CONFIGURE_CFLAGS}"
Packit Service 724aca
JE_APPEND_VS(CONFIGURE_CFLAGS, $1)
Packit Service 724aca
JE_CONCAT_VVV(CFLAGS, CONFIGURE_CFLAGS, SPECIFIED_CFLAGS)
Packit Service 724aca
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
Packit Service 724aca
[[
Packit Service 724aca
]], [[
Packit Service 724aca
    return 0;
Packit Service 724aca
]])],
Packit Service 724aca
              [je_cv_cflags_added=$1]
Packit Service 724aca
              AC_MSG_RESULT([yes]),
Packit Service 724aca
              [je_cv_cflags_added=]
Packit Service 724aca
              AC_MSG_RESULT([no])
Packit Service 724aca
              [CONFIGURE_CFLAGS="${T_CONFIGURE_CFLAGS}"]
Packit Service 724aca
)
Packit Service 724aca
JE_CONCAT_VVV(CFLAGS, CONFIGURE_CFLAGS, SPECIFIED_CFLAGS)
Packit Service 724aca
])
Packit Service 724aca
Packit Service 724aca
dnl JE_CFLAGS_SAVE()
Packit Service 724aca
dnl JE_CFLAGS_RESTORE()
Packit Service 724aca
dnl
Packit Service 724aca
dnl Save/restore CFLAGS.  Nesting is not supported.
Packit Service 724aca
AC_DEFUN([JE_CFLAGS_SAVE],
Packit Service 724aca
SAVED_CONFIGURE_CFLAGS="${CONFIGURE_CFLAGS}"
Packit Service 724aca
)
Packit Service 724aca
AC_DEFUN([JE_CFLAGS_RESTORE],
Packit Service 724aca
CONFIGURE_CFLAGS="${SAVED_CONFIGURE_CFLAGS}"
Packit Service 724aca
JE_CONCAT_VVV(CFLAGS, CONFIGURE_CFLAGS, SPECIFIED_CFLAGS)
Packit Service 724aca
)
Packit Service 724aca
Packit Service 724aca
CONFIGURE_CXXFLAGS=
Packit Service 724aca
SPECIFIED_CXXFLAGS="${CXXFLAGS}"
Packit Service 724aca
dnl JE_CXXFLAGS_ADD(cxxflag)
Packit Service 724aca
AC_DEFUN([JE_CXXFLAGS_ADD],
Packit Service 724aca
[
Packit Service 724aca
AC_MSG_CHECKING([whether compiler supports $1])
Packit Service 724aca
T_CONFIGURE_CXXFLAGS="${CONFIGURE_CXXFLAGS}"
Packit Service 724aca
JE_APPEND_VS(CONFIGURE_CXXFLAGS, $1)
Packit Service 724aca
JE_CONCAT_VVV(CXXFLAGS, CONFIGURE_CXXFLAGS, SPECIFIED_CXXFLAGS)
Packit Service 724aca
AC_LANG_PUSH([C++])
Packit Service 724aca
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
Packit Service 724aca
[[
Packit Service 724aca
]], [[
Packit Service 724aca
    return 0;
Packit Service 724aca
]])],
Packit Service 724aca
              [je_cv_cxxflags_added=$1]
Packit Service 724aca
              AC_MSG_RESULT([yes]),
Packit Service 724aca
              [je_cv_cxxflags_added=]
Packit Service 724aca
              AC_MSG_RESULT([no])
Packit Service 724aca
              [CONFIGURE_CXXFLAGS="${T_CONFIGURE_CXXFLAGS}"]
Packit Service 724aca
)
Packit Service 724aca
AC_LANG_POP([C++])
Packit Service 724aca
JE_CONCAT_VVV(CXXFLAGS, CONFIGURE_CXXFLAGS, SPECIFIED_CXXFLAGS)
Packit Service 724aca
])
Packit Service 724aca
Packit Service 724aca
dnl JE_COMPILABLE(label, hcode, mcode, rvar)
Packit Service 724aca
dnl
Packit Service 724aca
dnl Use AC_LINK_IFELSE() rather than AC_COMPILE_IFELSE() so that linker errors
Packit Service 724aca
dnl cause failure.
Packit Service 724aca
AC_DEFUN([JE_COMPILABLE],
Packit Service 724aca
[
Packit Service 724aca
AC_CACHE_CHECK([whether $1 is compilable],
Packit Service 724aca
               [$4],
Packit Service 724aca
               [AC_LINK_IFELSE([AC_LANG_PROGRAM([$2],
Packit Service 724aca
                                                [$3])],
Packit Service 724aca
                               [$4=yes],
Packit Service 724aca
                               [$4=no])])
Packit Service 724aca
])
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
Packit Service 724aca
CONFIG=`echo ${ac_configure_args} | sed -e 's#'"'"'\([^ ]*\)'"'"'#\1#g'`
Packit Service 724aca
AC_SUBST([CONFIG])
Packit Service 724aca
Packit Service 724aca
dnl Library revision.
Packit Service 724aca
rev=2
Packit Service 724aca
AC_SUBST([rev])
Packit Service 724aca
Packit Service 724aca
srcroot=$srcdir
Packit Service 724aca
if test "x${srcroot}" = "x." ; then
Packit Service 724aca
  srcroot=""
Packit Service 724aca
else
Packit Service 724aca
  srcroot="${srcroot}/"
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([srcroot])
Packit Service 724aca
abs_srcroot="`cd \"${srcdir}\"; pwd`/"
Packit Service 724aca
AC_SUBST([abs_srcroot])
Packit Service 724aca
Packit Service 724aca
objroot=""
Packit Service 724aca
AC_SUBST([objroot])
Packit Service 724aca
abs_objroot="`pwd`/"
Packit Service 724aca
AC_SUBST([abs_objroot])
Packit Service 724aca
Packit Service 724aca
dnl Munge install path variables.
Packit Service 724aca
if test "x$prefix" = "xNONE" ; then
Packit Service 724aca
  prefix="/usr/local"
Packit Service 724aca
fi
Packit Service 724aca
if test "x$exec_prefix" = "xNONE" ; then
Packit Service 724aca
  exec_prefix=$prefix
Packit Service 724aca
fi
Packit Service 724aca
PREFIX=$prefix
Packit Service 724aca
AC_SUBST([PREFIX])
Packit Service 724aca
BINDIR=`eval echo $bindir`
Packit Service 724aca
BINDIR=`eval echo $BINDIR`
Packit Service 724aca
AC_SUBST([BINDIR])
Packit Service 724aca
INCLUDEDIR=`eval echo $includedir`
Packit Service 724aca
INCLUDEDIR=`eval echo $INCLUDEDIR`
Packit Service 724aca
AC_SUBST([INCLUDEDIR])
Packit Service 724aca
LIBDIR=`eval echo $libdir`
Packit Service 724aca
LIBDIR=`eval echo $LIBDIR`
Packit Service 724aca
AC_SUBST([LIBDIR])
Packit Service 724aca
DATADIR=`eval echo $datadir`
Packit Service 724aca
DATADIR=`eval echo $DATADIR`
Packit Service 724aca
AC_SUBST([DATADIR])
Packit Service 724aca
MANDIR=`eval echo $mandir`
Packit Service 724aca
MANDIR=`eval echo $MANDIR`
Packit Service 724aca
AC_SUBST([MANDIR])
Packit Service 724aca
Packit Service 724aca
dnl Support for building documentation.
Packit Service 724aca
AC_PATH_PROG([XSLTPROC], [xsltproc], [false], [$PATH])
Packit Service 724aca
if test -d "/usr/share/xml/docbook/stylesheet/docbook-xsl" ; then
Packit Service 724aca
  DEFAULT_XSLROOT="/usr/share/xml/docbook/stylesheet/docbook-xsl"
Packit Service 724aca
elif test -d "/usr/share/sgml/docbook/xsl-stylesheets" ; then
Packit Service 724aca
  DEFAULT_XSLROOT="/usr/share/sgml/docbook/xsl-stylesheets"
Packit Service 724aca
else
Packit Service 724aca
  dnl Documentation building will fail if this default gets used.
Packit Service 724aca
  DEFAULT_XSLROOT=""
Packit Service 724aca
fi
Packit Service 724aca
AC_ARG_WITH([xslroot],
Packit Service 724aca
  [AS_HELP_STRING([--with-xslroot=<path>], [XSL stylesheet root path])], [
Packit Service 724aca
if test "x$with_xslroot" = "xno" ; then
Packit Service 724aca
  XSLROOT="${DEFAULT_XSLROOT}"
Packit Service 724aca
else
Packit Service 724aca
  XSLROOT="${with_xslroot}"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
  XSLROOT="${DEFAULT_XSLROOT}"
Packit Service 724aca
)
Packit Service 724aca
if test "x$XSLTPROC" = "xfalse" ; then
Packit Service 724aca
  XSLROOT=""
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([XSLROOT])
Packit Service 724aca
Packit Service 724aca
dnl If CFLAGS isn't defined, set CFLAGS to something reasonable.  Otherwise,
Packit Service 724aca
dnl just prevent autoconf from molesting CFLAGS.
Packit Service 724aca
CFLAGS=$CFLAGS
Packit Service 724aca
AC_PROG_CC
Packit Service 724aca
Packit Service 724aca
if test "x$GCC" != "xyes" ; then
Packit Service 724aca
  AC_CACHE_CHECK([whether compiler is MSVC],
Packit Service 724aca
                 [je_cv_msvc],
Packit Service 724aca
                 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
Packit Service 724aca
                                                     [
Packit Service 724aca
#ifndef _MSC_VER
Packit Service 724aca
  int fail[-1];
Packit Service 724aca
#endif
Packit Service 724aca
])],
Packit Service 724aca
                               [je_cv_msvc=yes],
Packit Service 724aca
                               [je_cv_msvc=no])])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl check if a cray prgenv wrapper compiler is being used
Packit Service 724aca
je_cv_cray_prgenv_wrapper=""
Packit Service 724aca
if test "x${PE_ENV}" != "x" ; then
Packit Service 724aca
  case "${CC}" in
Packit Service 724aca
    CC|cc)
Packit Service 724aca
	je_cv_cray_prgenv_wrapper="yes"
Packit Service 724aca
	;;
Packit Service 724aca
    *)
Packit Service 724aca
       ;;
Packit Service 724aca
  esac
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
AC_CACHE_CHECK([whether compiler is cray],
Packit Service 724aca
              [je_cv_cray],
Packit Service 724aca
              [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
Packit Service 724aca
                                                  [
Packit Service 724aca
#ifndef _CRAYC
Packit Service 724aca
  int fail[-1];
Packit Service 724aca
#endif
Packit Service 724aca
])],
Packit Service 724aca
                            [je_cv_cray=yes],
Packit Service 724aca
                            [je_cv_cray=no])])
Packit Service 724aca
Packit Service 724aca
if test "x${je_cv_cray}" = "xyes" ; then
Packit Service 724aca
  AC_CACHE_CHECK([whether cray compiler version is 8.4],
Packit Service 724aca
                [je_cv_cray_84],
Packit Service 724aca
                [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
Packit Service 724aca
                                                      [
Packit Service 724aca
#if !(_RELEASE_MAJOR == 8 && _RELEASE_MINOR == 4)
Packit Service 724aca
  int fail[-1];
Packit Service 724aca
#endif
Packit Service 724aca
])],
Packit Service 724aca
                              [je_cv_cray_84=yes],
Packit Service 724aca
                              [je_cv_cray_84=no])])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
if test "x$GCC" = "xyes" ; then
Packit Service 724aca
  JE_CFLAGS_ADD([-std=gnu11])
Packit Service 724aca
  if test "x$je_cv_cflags_added" = "x-std=gnu11" ; then
Packit Service 724aca
    AC_DEFINE_UNQUOTED([JEMALLOC_HAS_RESTRICT])
Packit Service 724aca
  else
Packit Service 724aca
    JE_CFLAGS_ADD([-std=gnu99])
Packit Service 724aca
    if test "x$je_cv_cflags_added" = "x-std=gnu99" ; then
Packit Service 724aca
      AC_DEFINE_UNQUOTED([JEMALLOC_HAS_RESTRICT])
Packit Service 724aca
    fi
Packit Service 724aca
  fi
Packit Service 724aca
  JE_CFLAGS_ADD([-Wall])
Packit Service 724aca
  JE_CFLAGS_ADD([-Wextra])
Packit Service 724aca
  JE_CFLAGS_ADD([-Wshorten-64-to-32])
Packit Service 724aca
  JE_CFLAGS_ADD([-Wsign-compare])
Packit Service 724aca
  JE_CFLAGS_ADD([-Wundef])
Packit Service 724aca
  JE_CFLAGS_ADD([-Wno-format-zero-length])
Packit Service 724aca
  JE_CFLAGS_ADD([-pipe])
Packit Service 724aca
  JE_CFLAGS_ADD([-g3])
Packit Service 724aca
elif test "x$je_cv_msvc" = "xyes" ; then
Packit Service 724aca
  CC="$CC -nologo"
Packit Service 724aca
  JE_CFLAGS_ADD([-Zi])
Packit Service 724aca
  JE_CFLAGS_ADD([-MT])
Packit Service 724aca
  JE_CFLAGS_ADD([-W3])
Packit Service 724aca
  JE_CFLAGS_ADD([-FS])
Packit Service 724aca
  JE_APPEND_VS(CPPFLAGS, -I${srcdir}/include/msvc_compat)
Packit Service 724aca
fi
Packit Service 724aca
if test "x$je_cv_cray" = "xyes" ; then
Packit Service 724aca
  dnl cray compiler 8.4 has an inlining bug
Packit Service 724aca
  if test "x$je_cv_cray_84" = "xyes" ; then
Packit Service 724aca
    JE_CFLAGS_ADD([-hipa2])
Packit Service 724aca
    JE_CFLAGS_ADD([-hnognu])
Packit Service 724aca
  fi
Packit Service 724aca
  dnl ignore unreachable code warning
Packit Service 724aca
  JE_CFLAGS_ADD([-hnomessage=128])
Packit Service 724aca
  dnl ignore redefinition of "malloc", "free", etc warning
Packit Service 724aca
  JE_CFLAGS_ADD([-hnomessage=1357])
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([CONFIGURE_CFLAGS])
Packit Service 724aca
AC_SUBST([SPECIFIED_CFLAGS])
Packit Service 724aca
AC_SUBST([EXTRA_CFLAGS])
Packit Service 724aca
AC_PROG_CPP
Packit Service 724aca
Packit Service 724aca
AC_ARG_ENABLE([cxx],
Packit Service 724aca
  [AS_HELP_STRING([--disable-cxx], [Disable C++ integration])],
Packit Service 724aca
if test "x$enable_cxx" = "xno" ; then
Packit Service 724aca
  enable_cxx="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_cxx="1"
Packit Service 724aca
fi
Packit Service 724aca
,
Packit Service 724aca
enable_cxx="1"
Packit Service 724aca
)
Packit Service 724aca
if test "x$enable_cxx" = "x1" ; then
Packit Service 724aca
  dnl Require at least c++14, which is the first version to support sized
Packit Service 724aca
  dnl deallocation.  C++ support is not compiled otherwise.
Packit Service 724aca
  m4_include([m4/ax_cxx_compile_stdcxx.m4])
Packit Service 724aca
  AX_CXX_COMPILE_STDCXX([14], [noext], [optional])
Packit Service 724aca
  if test "x${HAVE_CXX14}" = "x1" ; then
Packit Service 724aca
    JE_CXXFLAGS_ADD([-Wall])
Packit Service 724aca
    JE_CXXFLAGS_ADD([-Wextra])
Packit Service 724aca
    JE_CXXFLAGS_ADD([-g3])
Packit Service 724aca
Packit Service 724aca
    SAVED_LIBS="${LIBS}"
Packit Service 724aca
    JE_APPEND_VS(LIBS, -lstdc++)
Packit Service 724aca
    JE_COMPILABLE([libstdc++ linkage], [
Packit Service 724aca
#include <stdlib.h>
Packit Service 724aca
], [[
Packit Service 724aca
	int *arr = (int *)malloc(sizeof(int) * 42);
Packit Service 724aca
	if (arr == NULL)
Packit Service 724aca
		return 1;
Packit Service 724aca
]], [je_cv_libstdcxx])
Packit Service 724aca
    if test "x${je_cv_libstdcxx}" = "xno" ; then
Packit Service 724aca
      LIBS="${SAVED_LIBS}"
Packit Service 724aca
    fi
Packit Service 724aca
  else
Packit Service 724aca
    enable_cxx="0"
Packit Service 724aca
  fi
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([enable_cxx])
Packit Service 724aca
AC_SUBST([CONFIGURE_CXXFLAGS])
Packit Service 724aca
AC_SUBST([SPECIFIED_CXXFLAGS])
Packit Service 724aca
AC_SUBST([EXTRA_CXXFLAGS])
Packit Service 724aca
Packit Service 724aca
AC_C_BIGENDIAN([ac_cv_big_endian=1], [ac_cv_big_endian=0])
Packit Service 724aca
if test "x${ac_cv_big_endian}" = "x1" ; then
Packit Service 724aca
  AC_DEFINE_UNQUOTED([JEMALLOC_BIG_ENDIAN], [ ])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
if test "x${je_cv_msvc}" = "xyes" -a "x${ac_cv_header_inttypes_h}" = "xno"; then
Packit Service 724aca
  JE_APPEND_VS(CPPFLAGS, -I${srcdir}/include/msvc_compat/C99)
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
if test "x${je_cv_msvc}" = "xyes" ; then
Packit Service 724aca
  LG_SIZEOF_PTR=LG_SIZEOF_PTR_WIN
Packit Service 724aca
  AC_MSG_RESULT([Using a predefined value for sizeof(void *): 4 for 32-bit, 8 for 64-bit])
Packit Service 724aca
else
Packit Service 724aca
  AC_CHECK_SIZEOF([void *])
Packit Service 724aca
  if test "x${ac_cv_sizeof_void_p}" = "x8" ; then
Packit Service 724aca
    LG_SIZEOF_PTR=3
Packit Service 724aca
  elif test "x${ac_cv_sizeof_void_p}" = "x4" ; then
Packit Service 724aca
    LG_SIZEOF_PTR=2
Packit Service 724aca
  else
Packit Service 724aca
    AC_MSG_ERROR([Unsupported pointer size: ${ac_cv_sizeof_void_p}])
Packit Service 724aca
  fi
Packit Service 724aca
fi
Packit Service 724aca
AC_DEFINE_UNQUOTED([LG_SIZEOF_PTR], [$LG_SIZEOF_PTR])
Packit Service 724aca
Packit Service 724aca
AC_CHECK_SIZEOF([int])
Packit Service 724aca
if test "x${ac_cv_sizeof_int}" = "x8" ; then
Packit Service 724aca
  LG_SIZEOF_INT=3
Packit Service 724aca
elif test "x${ac_cv_sizeof_int}" = "x4" ; then
Packit Service 724aca
  LG_SIZEOF_INT=2
Packit Service 724aca
else
Packit Service 724aca
  AC_MSG_ERROR([Unsupported int size: ${ac_cv_sizeof_int}])
Packit Service 724aca
fi
Packit Service 724aca
AC_DEFINE_UNQUOTED([LG_SIZEOF_INT], [$LG_SIZEOF_INT])
Packit Service 724aca
Packit Service 724aca
AC_CHECK_SIZEOF([long])
Packit Service 724aca
if test "x${ac_cv_sizeof_long}" = "x8" ; then
Packit Service 724aca
  LG_SIZEOF_LONG=3
Packit Service 724aca
elif test "x${ac_cv_sizeof_long}" = "x4" ; then
Packit Service 724aca
  LG_SIZEOF_LONG=2
Packit Service 724aca
else
Packit Service 724aca
  AC_MSG_ERROR([Unsupported long size: ${ac_cv_sizeof_long}])
Packit Service 724aca
fi
Packit Service 724aca
AC_DEFINE_UNQUOTED([LG_SIZEOF_LONG], [$LG_SIZEOF_LONG])
Packit Service 724aca
Packit Service 724aca
AC_CHECK_SIZEOF([long long])
Packit Service 724aca
if test "x${ac_cv_sizeof_long_long}" = "x8" ; then
Packit Service 724aca
  LG_SIZEOF_LONG_LONG=3
Packit Service 724aca
elif test "x${ac_cv_sizeof_long_long}" = "x4" ; then
Packit Service 724aca
  LG_SIZEOF_LONG_LONG=2
Packit Service 724aca
else
Packit Service 724aca
  AC_MSG_ERROR([Unsupported long long size: ${ac_cv_sizeof_long_long}])
Packit Service 724aca
fi
Packit Service 724aca
AC_DEFINE_UNQUOTED([LG_SIZEOF_LONG_LONG], [$LG_SIZEOF_LONG_LONG])
Packit Service 724aca
Packit Service 724aca
AC_CHECK_SIZEOF([intmax_t])
Packit Service 724aca
if test "x${ac_cv_sizeof_intmax_t}" = "x16" ; then
Packit Service 724aca
  LG_SIZEOF_INTMAX_T=4
Packit Service 724aca
elif test "x${ac_cv_sizeof_intmax_t}" = "x8" ; then
Packit Service 724aca
  LG_SIZEOF_INTMAX_T=3
Packit Service 724aca
elif test "x${ac_cv_sizeof_intmax_t}" = "x4" ; then
Packit Service 724aca
  LG_SIZEOF_INTMAX_T=2
Packit Service 724aca
else
Packit Service 724aca
  AC_MSG_ERROR([Unsupported intmax_t size: ${ac_cv_sizeof_intmax_t}])
Packit Service 724aca
fi
Packit Service 724aca
AC_DEFINE_UNQUOTED([LG_SIZEOF_INTMAX_T], [$LG_SIZEOF_INTMAX_T])
Packit Service 724aca
Packit Service 724aca
AC_CANONICAL_HOST
Packit Service 724aca
dnl CPU-specific settings.
Packit Service 724aca
CPU_SPINWAIT=""
Packit Service 724aca
case "${host_cpu}" in
Packit Service 724aca
  i686|x86_64)
Packit Service 724aca
	HAVE_CPU_SPINWAIT=1
Packit Service 724aca
	if test "x${je_cv_msvc}" = "xyes" ; then
Packit Service 724aca
	    AC_CACHE_VAL([je_cv_pause_msvc],
Packit Service 724aca
	      [JE_COMPILABLE([pause instruction MSVC], [],
Packit Service 724aca
					[[_mm_pause(); return 0;]],
Packit Service 724aca
					[je_cv_pause_msvc])])
Packit Service 724aca
	    if test "x${je_cv_pause_msvc}" = "xyes" ; then
Packit Service 724aca
		CPU_SPINWAIT='_mm_pause()'
Packit Service 724aca
	    fi
Packit Service 724aca
	else
Packit Service 724aca
	    AC_CACHE_VAL([je_cv_pause],
Packit Service 724aca
	      [JE_COMPILABLE([pause instruction], [],
Packit Service 724aca
					[[__asm__ volatile("pause"); return 0;]],
Packit Service 724aca
					[je_cv_pause])])
Packit Service 724aca
	    if test "x${je_cv_pause}" = "xyes" ; then
Packit Service 724aca
		CPU_SPINWAIT='__asm__ volatile("pause")'
Packit Service 724aca
	    fi
Packit Service 724aca
	fi
Packit Service 724aca
	;;
Packit Service 724aca
  *)
Packit Service 724aca
	HAVE_CPU_SPINWAIT=0
Packit Service 724aca
	;;
Packit Service 724aca
esac
Packit Service 724aca
AC_DEFINE_UNQUOTED([HAVE_CPU_SPINWAIT], [$HAVE_CPU_SPINWAIT])
Packit Service 724aca
AC_DEFINE_UNQUOTED([CPU_SPINWAIT], [$CPU_SPINWAIT])
Packit Service 724aca
Packit Service 724aca
AC_ARG_WITH([lg_vaddr],
Packit Service 724aca
  [AS_HELP_STRING([--with-lg-vaddr=<lg-vaddr>], [Number of significant virtual address bits])],
Packit Service 724aca
  [LG_VADDR="$with_lg_vaddr"], [LG_VADDR="detect"])
Packit Service 724aca
Packit Service 724aca
case "${host_cpu}" in
Packit Service 724aca
  aarch64)
Packit Service 724aca
    if test "x$LG_VADDR" = "xdetect"; then
Packit Service 724aca
      AC_MSG_CHECKING([number of significant virtual address bits])
Packit Service 724aca
      if test "x${LG_SIZEOF_PTR}" = "x2" ; then
Packit Service 724aca
        #aarch64 ILP32
Packit Service 724aca
        LG_VADDR=32
Packit Service 724aca
      else
Packit Service 724aca
        #aarch64 LP64
Packit Service 724aca
        LG_VADDR=48
Packit Service 724aca
      fi
Packit Service 724aca
      AC_MSG_RESULT([$LG_VADDR])
Packit Service 724aca
    fi
Packit Service 724aca
    ;;
Packit Service 724aca
  x86_64)
Packit Service 724aca
    if test "x$LG_VADDR" = "xdetect"; then
Packit Service 724aca
      AC_CACHE_CHECK([number of significant virtual address bits],
Packit Service 724aca
                     [je_cv_lg_vaddr],
Packit Service 724aca
                     AC_RUN_IFELSE([AC_LANG_PROGRAM(
Packit Service 724aca
[[
Packit Service 724aca
#include <stdio.h>
Packit Service 724aca
#ifdef _WIN32
Packit Service 724aca
#include <limits.h>
Packit Service 724aca
#include <intrin.h>
Packit Service 724aca
typedef unsigned __int32 uint32_t;
Packit Service 724aca
#else
Packit Service 724aca
#include <stdint.h>
Packit Service 724aca
#endif
Packit Service 724aca
]], [[
Packit Service 724aca
	uint32_t r[[4]];
Packit Service 724aca
	uint32_t eax_in = 0x80000008U;
Packit Service 724aca
#ifdef _WIN32
Packit Service 724aca
	__cpuid((int *)r, (int)eax_in);
Packit Service 724aca
#else
Packit Service 724aca
	asm volatile ("cpuid"
Packit Service 724aca
	    : "=a" (r[[0]]), "=b" (r[[1]]), "=c" (r[[2]]), "=d" (r[[3]])
Packit Service 724aca
	    : "a" (eax_in), "c" (0)
Packit Service 724aca
	);
Packit Service 724aca
#endif
Packit Service 724aca
	uint32_t eax_out = r[[0]];
Packit Service 724aca
	uint32_t vaddr = ((eax_out & 0x0000ff00U) >> 8);
Packit Service 724aca
	FILE *f = fopen("conftest.out", "w");
Packit Service 724aca
	if (f == NULL) {
Packit Service 724aca
		return 1;
Packit Service 724aca
	}
Packit Service 724aca
	if (vaddr > (sizeof(void *) << 3)) {
Packit Service 724aca
		vaddr = sizeof(void *) << 3;
Packit Service 724aca
	}
Packit Service 724aca
	fprintf(f, "%u", vaddr);
Packit Service 724aca
	fclose(f);
Packit Service 724aca
	return 0;
Packit Service 724aca
]])],
Packit Service 724aca
                   [je_cv_lg_vaddr=`cat conftest.out`],
Packit Service 724aca
                   [je_cv_lg_vaddr=error],
Packit Service 724aca
                   [je_cv_lg_vaddr=57]))
Packit Service 724aca
      if test "x${je_cv_lg_vaddr}" != "x" ; then
Packit Service 724aca
        LG_VADDR="${je_cv_lg_vaddr}"
Packit Service 724aca
      fi
Packit Service 724aca
      if test "x${LG_VADDR}" != "xerror" ; then
Packit Service 724aca
        AC_DEFINE_UNQUOTED([LG_VADDR], [$LG_VADDR])
Packit Service 724aca
      else
Packit Service 724aca
        AC_MSG_ERROR([cannot determine number of significant virtual address bits])
Packit Service 724aca
      fi
Packit Service 724aca
    fi
Packit Service 724aca
    ;;
Packit Service 724aca
  *)
Packit Service 724aca
    if test "x$LG_VADDR" = "xdetect"; then
Packit Service 724aca
      AC_MSG_CHECKING([number of significant virtual address bits])
Packit Service 724aca
      if test "x${LG_SIZEOF_PTR}" = "x3" ; then
Packit Service 724aca
        LG_VADDR=64
Packit Service 724aca
      elif test "x${LG_SIZEOF_PTR}" = "x2" ; then
Packit Service 724aca
        LG_VADDR=32
Packit Service 724aca
      elif test "x${LG_SIZEOF_PTR}" = "xLG_SIZEOF_PTR_WIN" ; then
Packit Service 724aca
        LG_VADDR="(1U << (LG_SIZEOF_PTR_WIN+3))"
Packit Service 724aca
      else
Packit Service 724aca
        AC_MSG_ERROR([Unsupported lg(pointer size): ${LG_SIZEOF_PTR}])
Packit Service 724aca
      fi
Packit Service 724aca
      AC_MSG_RESULT([$LG_VADDR])
Packit Service 724aca
    fi
Packit Service 724aca
    ;;
Packit Service 724aca
esac
Packit Service 724aca
AC_DEFINE_UNQUOTED([LG_VADDR], [$LG_VADDR])
Packit Service 724aca
Packit Service 724aca
LD_PRELOAD_VAR="LD_PRELOAD"
Packit Service 724aca
so="so"
Packit Service 724aca
importlib="${so}"
Packit Service 724aca
o="$ac_objext"
Packit Service 724aca
a="a"
Packit Service 724aca
exe="$ac_exeext"
Packit Service 724aca
libprefix="lib"
Packit Service 724aca
link_whole_archive="0"
Packit Service 724aca
DSO_LDFLAGS='-shared -Wl,-soname,$(@F)'
Packit Service 724aca
RPATH='-Wl,-rpath,$(1)'
Packit Service 724aca
SOREV="${so}.${rev}"
Packit Service 724aca
PIC_CFLAGS='-fPIC -DPIC'
Packit Service 724aca
CTARGET='-o $@'
Packit Service 724aca
LDTARGET='-o $@'
Packit Service 724aca
TEST_LD_MODE=
Packit Service 724aca
EXTRA_LDFLAGS=
Packit Service 724aca
ARFLAGS='crus'
Packit Service 724aca
AROUT=' $@'
Packit Service 724aca
CC_MM=1
Packit Service 724aca
Packit Service 724aca
if test "x$je_cv_cray_prgenv_wrapper" = "xyes" ; then
Packit Service 724aca
  TEST_LD_MODE='-dynamic'
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
if test "x${je_cv_cray}" = "xyes" ; then
Packit Service 724aca
  CC_MM=
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
AN_MAKEVAR([AR], [AC_PROG_AR])
Packit Service 724aca
AN_PROGRAM([ar], [AC_PROG_AR])
Packit Service 724aca
AC_DEFUN([AC_PROG_AR], [AC_CHECK_TOOL(AR, ar, :)])
Packit Service 724aca
AC_PROG_AR
Packit Service 724aca
Packit Service 724aca
AN_MAKEVAR([NM], [AC_PROG_NM])
Packit Service 724aca
AN_PROGRAM([nm], [AC_PROG_NM])
Packit Service 724aca
AC_DEFUN([AC_PROG_NM], [AC_CHECK_TOOL(NM, nm, :)])
Packit Service 724aca
AC_PROG_NM
Packit Service 724aca
Packit Service 724aca
AC_PROG_AWK
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
dnl jemalloc version.
Packit Service 724aca
dnl
Packit Service 724aca
Packit Service 724aca
AC_ARG_WITH([version],
Packit Service 724aca
  [AS_HELP_STRING([--with-version=<major>.<minor>.<bugfix>-<nrev>-g<gid>],
Packit Service 724aca
   [Version string])],
Packit Service 724aca
  [
Packit Service 724aca
    echo "${with_version}" | grep ['^[0-9]\+\.[0-9]\+\.[0-9]\+-[0-9]\+-g[0-9a-f]\+$'] 2>&1 1>/dev/null
Packit Service 724aca
    if test $? -eq 0 ; then
Packit Service 724aca
      echo "$with_version" > "${objroot}VERSION"
Packit Service 724aca
    else
Packit Service 724aca
      echo "${with_version}" | grep ['^VERSION$'] 2>&1 1>/dev/null
Packit Service 724aca
      if test $? -ne 0 ; then
Packit Service 724aca
        AC_MSG_ERROR([${with_version} does not match <major>.<minor>.<bugfix>-<nrev>-g<gid> or VERSION])
Packit Service 724aca
      fi
Packit Service 724aca
    fi
Packit Service 724aca
  ], [
Packit Service 724aca
    dnl Set VERSION if source directory is inside a git repository.
Packit Service 724aca
    if test "x`test ! \"${srcroot}\" && cd \"${srcroot}\"; git rev-parse --is-inside-work-tree 2>/dev/null`" = "xtrue" ; then
Packit Service 724aca
      dnl Pattern globs aren't powerful enough to match both single- and
Packit Service 724aca
      dnl double-digit version numbers, so iterate over patterns to support up
Packit Service 724aca
      dnl to version 99.99.99 without any accidental matches.
Packit Service 724aca
      for pattern in ['[0-9].[0-9].[0-9]' '[0-9].[0-9].[0-9][0-9]' \
Packit Service 724aca
                     '[0-9].[0-9][0-9].[0-9]' '[0-9].[0-9][0-9].[0-9][0-9]' \
Packit Service 724aca
                     '[0-9][0-9].[0-9].[0-9]' '[0-9][0-9].[0-9].[0-9][0-9]' \
Packit Service 724aca
                     '[0-9][0-9].[0-9][0-9].[0-9]' \
Packit Service 724aca
                     '[0-9][0-9].[0-9][0-9].[0-9][0-9]']; do
Packit Service 724aca
        (test ! "${srcroot}" && cd "${srcroot}"; git describe --long --abbrev=40 --match="${pattern}") > "${objroot}VERSION.tmp" 2>/dev/null
Packit Service 724aca
        if test $? -eq 0 ; then
Packit Service 724aca
          mv "${objroot}VERSION.tmp" "${objroot}VERSION"
Packit Service 724aca
          break
Packit Service 724aca
        fi
Packit Service 724aca
      done
Packit Service 724aca
    fi
Packit Service 724aca
    rm -f "${objroot}VERSION.tmp"
Packit Service 724aca
  ])
Packit Service 724aca
Packit Service 724aca
if test ! -e "${objroot}VERSION" ; then
Packit Service 724aca
  if test ! -e "${srcroot}VERSION" ; then
Packit Service 724aca
    AC_MSG_RESULT(
Packit Service 724aca
      [Missing VERSION file, and unable to generate it; creating bogus VERSION])
Packit Service 724aca
    echo "0.0.0-0-g0000000000000000000000000000000000000000" > "${objroot}VERSION"
Packit Service 724aca
  else
Packit Service 724aca
    cp ${srcroot}VERSION ${objroot}VERSION
Packit Service 724aca
  fi
Packit Service 724aca
fi
Packit Service 724aca
jemalloc_version=`cat "${objroot}VERSION"`
Packit Service 724aca
jemalloc_version_major=`echo ${jemalloc_version} | tr ".g-" " " | awk '{print [$]1}'`
Packit Service 724aca
jemalloc_version_minor=`echo ${jemalloc_version} | tr ".g-" " " | awk '{print [$]2}'`
Packit Service 724aca
jemalloc_version_bugfix=`echo ${jemalloc_version} | tr ".g-" " " | awk '{print [$]3}'`
Packit Service 724aca
jemalloc_version_nrev=`echo ${jemalloc_version} | tr ".g-" " " | awk '{print [$]4}'`
Packit Service 724aca
jemalloc_version_gid=`echo ${jemalloc_version} | tr ".g-" " " | awk '{print [$]5}'`
Packit Service 724aca
AC_SUBST([jemalloc_version])
Packit Service 724aca
AC_SUBST([jemalloc_version_major])
Packit Service 724aca
AC_SUBST([jemalloc_version_minor])
Packit Service 724aca
AC_SUBST([jemalloc_version_bugfix])
Packit Service 724aca
AC_SUBST([jemalloc_version_nrev])
Packit Service 724aca
AC_SUBST([jemalloc_version_gid])
Packit Service 724aca
Packit Service 724aca
dnl Platform-specific settings.  abi and RPATH can probably be determined
Packit Service 724aca
dnl programmatically, but doing so is error-prone, which makes it generally
Packit Service 724aca
dnl not worth the trouble.
Packit Service 724aca
dnl
Packit Service 724aca
dnl Define cpp macros in CPPFLAGS, rather than doing AC_DEFINE(macro), since the
Packit Service 724aca
dnl definitions need to be seen before any headers are included, which is a pain
Packit Service 724aca
dnl to make happen otherwise.
Packit Service 724aca
default_retain="0"
Packit Service 724aca
maps_coalesce="1"
Packit Service 724aca
DUMP_SYMS="${NM} -a"
Packit Service 724aca
SYM_PREFIX=""
Packit Service 724aca
case "${host}" in
Packit Service 724aca
  *-*-darwin* | *-*-ios*)
Packit Service 724aca
	abi="macho"
Packit Service 724aca
	RPATH=""
Packit Service 724aca
	LD_PRELOAD_VAR="DYLD_INSERT_LIBRARIES"
Packit Service 724aca
	so="dylib"
Packit Service 724aca
	importlib="${so}"
Packit Service 724aca
	force_tls="0"
Packit Service 724aca
	DSO_LDFLAGS='-shared -Wl,-install_name,$(LIBDIR)/$(@F)'
Packit Service 724aca
	SOREV="${rev}.${so}"
Packit Service 724aca
	sbrk_deprecated="1"
Packit Service 724aca
	SYM_PREFIX="_"
Packit Service 724aca
	;;
Packit Service 724aca
  *-*-freebsd*)
Packit Service 724aca
	abi="elf"
Packit Service 724aca
	AC_DEFINE([JEMALLOC_SYSCTL_VM_OVERCOMMIT], [ ])
Packit Service 724aca
	force_lazy_lock="1"
Packit Service 724aca
	;;
Packit Service 724aca
  *-*-dragonfly*)
Packit Service 724aca
	abi="elf"
Packit Service 724aca
	;;
Packit Service 724aca
  *-*-openbsd*)
Packit Service 724aca
	abi="elf"
Packit Service 724aca
	force_tls="0"
Packit Service 724aca
	;;
Packit Service 724aca
  *-*-bitrig*)
Packit Service 724aca
	abi="elf"
Packit Service 724aca
	;;
Packit Service 724aca
  *-*-linux-android)
Packit Service 724aca
	dnl syscall(2) and secure_getenv(3) are exposed by _GNU_SOURCE.
Packit Service 724aca
	JE_APPEND_VS(CPPFLAGS, -D_GNU_SOURCE)
Packit Service 724aca
	abi="elf"
Packit Service 724aca
	AC_DEFINE([JEMALLOC_PURGE_MADVISE_DONTNEED_ZEROS], [ ])
Packit Service 724aca
	AC_DEFINE([JEMALLOC_HAS_ALLOCA_H])
Packit Service 724aca
	AC_DEFINE([JEMALLOC_PROC_SYS_VM_OVERCOMMIT_MEMORY], [ ])
Packit Service 724aca
	AC_DEFINE([JEMALLOC_THREADED_INIT], [ ])
Packit Service 724aca
	AC_DEFINE([JEMALLOC_C11_ATOMICS])
Packit Service 724aca
	force_tls="0"
Packit Service 724aca
	if test "${LG_SIZEOF_PTR}" = "3"; then
Packit Service 724aca
	  default_retain="1"
Packit Service 724aca
	fi
Packit Service 724aca
	;;
Packit Service 724aca
  *-*-linux*)
Packit Service 724aca
	dnl syscall(2) and secure_getenv(3) are exposed by _GNU_SOURCE.
Packit Service 724aca
	JE_APPEND_VS(CPPFLAGS, -D_GNU_SOURCE)
Packit Service 724aca
	abi="elf"
Packit Service 724aca
	AC_DEFINE([JEMALLOC_PURGE_MADVISE_DONTNEED_ZEROS], [ ])
Packit Service 724aca
	AC_DEFINE([JEMALLOC_HAS_ALLOCA_H])
Packit Service 724aca
	AC_DEFINE([JEMALLOC_PROC_SYS_VM_OVERCOMMIT_MEMORY], [ ])
Packit Service 724aca
	AC_DEFINE([JEMALLOC_THREADED_INIT], [ ])
Packit Service 724aca
	AC_DEFINE([JEMALLOC_USE_CXX_THROW], [ ])
Packit Service 724aca
	if test "${LG_SIZEOF_PTR}" = "3"; then
Packit Service 724aca
	  default_retain="1"
Packit Service 724aca
	fi
Packit Service 724aca
	;;
Packit Service 724aca
  *-*-kfreebsd*)
Packit Service 724aca
	dnl syscall(2) and secure_getenv(3) are exposed by _GNU_SOURCE.
Packit Service 724aca
	JE_APPEND_VS(CPPFLAGS, -D_GNU_SOURCE)
Packit Service 724aca
	abi="elf"
Packit Service 724aca
	AC_DEFINE([JEMALLOC_HAS_ALLOCA_H])
Packit Service 724aca
	AC_DEFINE([JEMALLOC_SYSCTL_VM_OVERCOMMIT], [ ])
Packit Service 724aca
	AC_DEFINE([JEMALLOC_THREADED_INIT], [ ])
Packit Service 724aca
	AC_DEFINE([JEMALLOC_USE_CXX_THROW], [ ])
Packit Service 724aca
	;;
Packit Service 724aca
  *-*-netbsd*)
Packit Service 724aca
	AC_MSG_CHECKING([ABI])
Packit Service 724aca
        AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
Packit Service 724aca
[[#ifdef __ELF__
Packit Service 724aca
/* ELF */
Packit Service 724aca
#else
Packit Service 724aca
#error aout
Packit Service 724aca
#endif
Packit Service 724aca
]])],
Packit Service 724aca
                          [abi="elf"],
Packit Service 724aca
                          [abi="aout"])
Packit Service 724aca
	AC_MSG_RESULT([$abi])
Packit Service 724aca
	;;
Packit Service 724aca
  *-*-solaris2*)
Packit Service 724aca
	abi="elf"
Packit Service 724aca
	RPATH='-Wl,-R,$(1)'
Packit Service 724aca
	dnl Solaris needs this for sigwait().
Packit Service 724aca
	JE_APPEND_VS(CPPFLAGS, -D_POSIX_PTHREAD_SEMANTICS)
Packit Service 724aca
	JE_APPEND_VS(LIBS, -lposix4 -lsocket -lnsl)
Packit Service 724aca
	;;
Packit Service 724aca
  *-ibm-aix*)
Packit Service 724aca
	if test "${LG_SIZEOF_PTR}" = "3"; then
Packit Service 724aca
	  dnl 64bit AIX
Packit Service 724aca
	  LD_PRELOAD_VAR="LDR_PRELOAD64"
Packit Service 724aca
	else
Packit Service 724aca
	  dnl 32bit AIX
Packit Service 724aca
	  LD_PRELOAD_VAR="LDR_PRELOAD"
Packit Service 724aca
	fi
Packit Service 724aca
	abi="xcoff"
Packit Service 724aca
	;;
Packit Service 724aca
  *-*-mingw* | *-*-cygwin*)
Packit Service 724aca
	abi="pecoff"
Packit Service 724aca
	force_tls="0"
Packit Service 724aca
	maps_coalesce="0"
Packit Service 724aca
	RPATH=""
Packit Service 724aca
	so="dll"
Packit Service 724aca
	if test "x$je_cv_msvc" = "xyes" ; then
Packit Service 724aca
	  importlib="lib"
Packit Service 724aca
	  DSO_LDFLAGS="-LD"
Packit Service 724aca
	  EXTRA_LDFLAGS="-link -DEBUG"
Packit Service 724aca
	  CTARGET='-Fo$@'
Packit Service 724aca
	  LDTARGET='-Fe$@'
Packit Service 724aca
	  AR='lib'
Packit Service 724aca
	  ARFLAGS='-nologo -out:'
Packit Service 724aca
	  AROUT='$@'
Packit Service 724aca
	  CC_MM=
Packit Service 724aca
        else
Packit Service 724aca
	  importlib="${so}"
Packit Service 724aca
	  DSO_LDFLAGS="-shared"
Packit Service 724aca
	  link_whole_archive="1"
Packit Service 724aca
	fi
Packit Service 724aca
	case "${host}" in
Packit Service 724aca
	  *-*-cygwin*)
Packit Service 724aca
	    DUMP_SYMS="dumpbin /SYMBOLS"
Packit Service 724aca
	    ;;
Packit Service 724aca
	  *)
Packit Service 724aca
	    ;;
Packit Service 724aca
	esac
Packit Service 724aca
	a="lib"
Packit Service 724aca
	libprefix=""
Packit Service 724aca
	SOREV="${so}"
Packit Service 724aca
	PIC_CFLAGS=""
Packit Service 724aca
	if test "${LG_SIZEOF_PTR}" = "3"; then
Packit Service 724aca
	  default_retain="1"
Packit Service 724aca
	fi
Packit Service 724aca
	;;
Packit Service 724aca
  *)
Packit Service 724aca
	AC_MSG_RESULT([Unsupported operating system: ${host}])
Packit Service 724aca
	abi="elf"
Packit Service 724aca
	;;
Packit Service 724aca
esac
Packit Service 724aca
Packit Service 724aca
JEMALLOC_USABLE_SIZE_CONST=const
Packit Service 724aca
AC_CHECK_HEADERS([malloc.h], [
Packit Service 724aca
  AC_MSG_CHECKING([whether malloc_usable_size definition can use const argument])
Packit Service 724aca
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
Packit Service 724aca
    [#include <malloc.h>
Packit Service 724aca
     #include <stddef.h>
Packit Service 724aca
    size_t malloc_usable_size(const void *ptr);
Packit Service 724aca
    ],
Packit Service 724aca
    [])],[
Packit Service 724aca
                AC_MSG_RESULT([yes])
Packit Service 724aca
         ],[
Packit Service 724aca
                JEMALLOC_USABLE_SIZE_CONST=
Packit Service 724aca
                AC_MSG_RESULT([no])
Packit Service 724aca
         ])
Packit Service 724aca
])
Packit Service 724aca
AC_DEFINE_UNQUOTED([JEMALLOC_USABLE_SIZE_CONST], [$JEMALLOC_USABLE_SIZE_CONST])
Packit Service 724aca
AC_SUBST([abi])
Packit Service 724aca
AC_SUBST([RPATH])
Packit Service 724aca
AC_SUBST([LD_PRELOAD_VAR])
Packit Service 724aca
AC_SUBST([so])
Packit Service 724aca
AC_SUBST([importlib])
Packit Service 724aca
AC_SUBST([o])
Packit Service 724aca
AC_SUBST([a])
Packit Service 724aca
AC_SUBST([exe])
Packit Service 724aca
AC_SUBST([libprefix])
Packit Service 724aca
AC_SUBST([link_whole_archive])
Packit Service 724aca
AC_SUBST([DSO_LDFLAGS])
Packit Service 724aca
AC_SUBST([EXTRA_LDFLAGS])
Packit Service 724aca
AC_SUBST([SOREV])
Packit Service 724aca
AC_SUBST([PIC_CFLAGS])
Packit Service 724aca
AC_SUBST([CTARGET])
Packit Service 724aca
AC_SUBST([LDTARGET])
Packit Service 724aca
AC_SUBST([TEST_LD_MODE])
Packit Service 724aca
AC_SUBST([MKLIB])
Packit Service 724aca
AC_SUBST([ARFLAGS])
Packit Service 724aca
AC_SUBST([AROUT])
Packit Service 724aca
AC_SUBST([DUMP_SYMS])
Packit Service 724aca
AC_SUBST([CC_MM])
Packit Service 724aca
Packit Service 724aca
dnl Determine whether libm must be linked to use e.g. log(3).
Packit Service 724aca
AC_SEARCH_LIBS([log], [m], , [AC_MSG_ERROR([Missing math functions])])
Packit Service 724aca
if test "x$ac_cv_search_log" != "xnone required" ; then
Packit Service 724aca
  LM="$ac_cv_search_log"
Packit Service 724aca
else
Packit Service 724aca
  LM=
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST(LM)
Packit Service 724aca
Packit Service 724aca
JE_COMPILABLE([__attribute__ syntax],
Packit Service 724aca
              [static __attribute__((unused)) void foo(void){}],
Packit Service 724aca
              [],
Packit Service 724aca
              [je_cv_attribute])
Packit Service 724aca
if test "x${je_cv_attribute}" = "xyes" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_HAVE_ATTR], [ ])
Packit Service 724aca
  if test "x${GCC}" = "xyes" -a "x${abi}" = "xelf"; then
Packit Service 724aca
    JE_CFLAGS_ADD([-fvisibility=hidden])
Packit Service 724aca
    JE_CXXFLAGS_ADD([-fvisibility=hidden])
Packit Service 724aca
  fi
Packit Service 724aca
fi
Packit Service 724aca
dnl Check for tls_model attribute support (clang 3.0 still lacks support).
Packit Service 724aca
JE_CFLAGS_SAVE()
Packit Service 724aca
JE_CFLAGS_ADD([-Werror])
Packit Service 724aca
JE_CFLAGS_ADD([-herror_on_warning])
Packit Service 724aca
JE_COMPILABLE([tls_model attribute], [],
Packit Service 724aca
              [static __thread int
Packit Service 724aca
               __attribute__((tls_model("initial-exec"), unused)) foo;
Packit Service 724aca
               foo = 0;],
Packit Service 724aca
              [je_cv_tls_model])
Packit Service 724aca
JE_CFLAGS_RESTORE()
Packit Service 724aca
dnl (Setting of JEMALLOC_TLS_MODEL is done later, after we've checked for
Packit Service 724aca
dnl --disable-initial-exec-tls)
Packit Service 724aca
Packit Service 724aca
dnl Check for alloc_size attribute support.
Packit Service 724aca
JE_CFLAGS_SAVE()
Packit Service 724aca
JE_CFLAGS_ADD([-Werror])
Packit Service 724aca
JE_CFLAGS_ADD([-herror_on_warning])
Packit Service 724aca
JE_COMPILABLE([alloc_size attribute], [#include <stdlib.h>],
Packit Service 724aca
              [void *foo(size_t size) __attribute__((alloc_size(1)));],
Packit Service 724aca
              [je_cv_alloc_size])
Packit Service 724aca
JE_CFLAGS_RESTORE()
Packit Service 724aca
if test "x${je_cv_alloc_size}" = "xyes" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_HAVE_ATTR_ALLOC_SIZE], [ ])
Packit Service 724aca
fi
Packit Service 724aca
dnl Check for format(gnu_printf, ...) attribute support.
Packit Service 724aca
JE_CFLAGS_SAVE()
Packit Service 724aca
JE_CFLAGS_ADD([-Werror])
Packit Service 724aca
JE_CFLAGS_ADD([-herror_on_warning])
Packit Service 724aca
JE_COMPILABLE([format(gnu_printf, ...) attribute], [#include <stdlib.h>],
Packit Service 724aca
              [void *foo(const char *format, ...) __attribute__((format(gnu_printf, 1, 2)));],
Packit Service 724aca
              [je_cv_format_gnu_printf])
Packit Service 724aca
JE_CFLAGS_RESTORE()
Packit Service 724aca
if test "x${je_cv_format_gnu_printf}" = "xyes" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_HAVE_ATTR_FORMAT_GNU_PRINTF], [ ])
Packit Service 724aca
fi
Packit Service 724aca
dnl Check for format(printf, ...) attribute support.
Packit Service 724aca
JE_CFLAGS_SAVE()
Packit Service 724aca
JE_CFLAGS_ADD([-Werror])
Packit Service 724aca
JE_CFLAGS_ADD([-herror_on_warning])
Packit Service 724aca
JE_COMPILABLE([format(printf, ...) attribute], [#include <stdlib.h>],
Packit Service 724aca
              [void *foo(const char *format, ...) __attribute__((format(printf, 1, 2)));],
Packit Service 724aca
              [je_cv_format_printf])
Packit Service 724aca
JE_CFLAGS_RESTORE()
Packit Service 724aca
if test "x${je_cv_format_printf}" = "xyes" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_HAVE_ATTR_FORMAT_PRINTF], [ ])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl Check for format_arg(...) attribute support.
Packit Service 724aca
JE_CFLAGS_SAVE()
Packit Service 724aca
JE_CFLAGS_ADD([-Werror])
Packit Service 724aca
JE_CFLAGS_ADD([-herror_on_warning])
Packit Service 724aca
JE_COMPILABLE([format(printf, ...) attribute], [#include <stdlib.h>],
Packit Service 724aca
              [const char * __attribute__((__format_arg__(1))) foo(const char *format);],
Packit Service 724aca
              [je_cv_format_arg])
Packit Service 724aca
JE_CFLAGS_RESTORE()
Packit Service 724aca
if test "x${je_cv_format_arg}" = "xyes" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_HAVE_ATTR_FORMAT_ARG], [ ])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl Support optional additions to rpath.
Packit Service 724aca
AC_ARG_WITH([rpath],
Packit Service 724aca
  [AS_HELP_STRING([--with-rpath=<rpath>], [Colon-separated rpath (ELF systems only)])],
Packit Service 724aca
if test "x$with_rpath" = "xno" ; then
Packit Service 724aca
  RPATH_EXTRA=
Packit Service 724aca
else
Packit Service 724aca
  RPATH_EXTRA="`echo $with_rpath | tr \":\" \" \"`"
Packit Service 724aca
fi,
Packit Service 724aca
  RPATH_EXTRA=
Packit Service 724aca
)
Packit Service 724aca
AC_SUBST([RPATH_EXTRA])
Packit Service 724aca
Packit Service 724aca
dnl Disable rules that do automatic regeneration of configure output by default.
Packit Service 724aca
AC_ARG_ENABLE([autogen],
Packit Service 724aca
  [AS_HELP_STRING([--enable-autogen], [Automatically regenerate configure output])],
Packit Service 724aca
if test "x$enable_autogen" = "xno" ; then
Packit Service 724aca
  enable_autogen="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_autogen="1"
Packit Service 724aca
fi
Packit Service 724aca
,
Packit Service 724aca
enable_autogen="0"
Packit Service 724aca
)
Packit Service 724aca
AC_SUBST([enable_autogen])
Packit Service 724aca
Packit Service 724aca
AC_PROG_INSTALL
Packit Service 724aca
AC_PROG_RANLIB
Packit Service 724aca
AC_PATH_PROG([LD], [ld], [false], [$PATH])
Packit Service 724aca
AC_PATH_PROG([AUTOCONF], [autoconf], [false], [$PATH])
Packit Service 724aca
Packit Service 724aca
dnl Enable documentation
Packit Service 724aca
AC_ARG_ENABLE([doc],
Packit Service 724aca
	      [AS_HELP_STRING([--enable-documentation], [Build documentation])],
Packit Service 724aca
if test "x$enable_doc" = "xno" ; then
Packit Service 724aca
  enable_doc="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_doc="1"
Packit Service 724aca
fi
Packit Service 724aca
,
Packit Service 724aca
enable_doc="1"
Packit Service 724aca
)
Packit Service 724aca
AC_SUBST([enable_doc])
Packit Service 724aca
Packit Service 724aca
dnl Enable shared libs
Packit Service 724aca
AC_ARG_ENABLE([shared],
Packit Service 724aca
  [AS_HELP_STRING([--enable-shared], [Build shared libaries])],
Packit Service 724aca
if test "x$enable_shared" = "xno" ; then
Packit Service 724aca
  enable_shared="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_shared="1"
Packit Service 724aca
fi
Packit Service 724aca
,
Packit Service 724aca
enable_shared="1"
Packit Service 724aca
)
Packit Service 724aca
AC_SUBST([enable_shared])
Packit Service 724aca
Packit Service 724aca
dnl Enable static libs
Packit Service 724aca
AC_ARG_ENABLE([static],
Packit Service 724aca
  [AS_HELP_STRING([--enable-static], [Build static libaries])],
Packit Service 724aca
if test "x$enable_static" = "xno" ; then
Packit Service 724aca
  enable_static="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_static="1"
Packit Service 724aca
fi
Packit Service 724aca
,
Packit Service 724aca
enable_static="1"
Packit Service 724aca
)
Packit Service 724aca
AC_SUBST([enable_static])
Packit Service 724aca
Packit Service 724aca
if test "$enable_shared$enable_static" = "00" ; then
Packit Service 724aca
  AC_MSG_ERROR([Please enable one of shared or static builds])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl Perform no name mangling by default.
Packit Service 724aca
AC_ARG_WITH([mangling],
Packit Service 724aca
  [AS_HELP_STRING([--with-mangling=<map>], [Mangle symbols in <map>])],
Packit Service 724aca
  [mangling_map="$with_mangling"], [mangling_map=""])
Packit Service 724aca
Packit Service 724aca
dnl Do not prefix public APIs by default.
Packit Service 724aca
AC_ARG_WITH([jemalloc_prefix],
Packit Service 724aca
  [AS_HELP_STRING([--with-jemalloc-prefix=<prefix>], [Prefix to prepend to all public APIs])],
Packit Service 724aca
  [JEMALLOC_PREFIX="$with_jemalloc_prefix"],
Packit Service 724aca
  [if test "x$abi" != "xmacho" -a "x$abi" != "xpecoff"; then
Packit Service 724aca
  JEMALLOC_PREFIX=""
Packit Service 724aca
else
Packit Service 724aca
  JEMALLOC_PREFIX="je_"
Packit Service 724aca
fi]
Packit Service 724aca
)
Packit Service 724aca
if test "x$JEMALLOC_PREFIX" = "x" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_IS_MALLOC])
Packit Service 724aca
else
Packit Service 724aca
  JEMALLOC_CPREFIX=`echo ${JEMALLOC_PREFIX} | tr "a-z" "A-Z"`
Packit Service 724aca
  AC_DEFINE_UNQUOTED([JEMALLOC_PREFIX], ["$JEMALLOC_PREFIX"])
Packit Service 724aca
  AC_DEFINE_UNQUOTED([JEMALLOC_CPREFIX], ["$JEMALLOC_CPREFIX"])
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([JEMALLOC_PREFIX])
Packit Service 724aca
AC_SUBST([JEMALLOC_CPREFIX])
Packit Service 724aca
Packit Service 724aca
AC_ARG_WITH([export],
Packit Service 724aca
  [AS_HELP_STRING([--without-export], [disable exporting jemalloc public APIs])],
Packit Service 724aca
  [if test "x$with_export" = "xno"; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_EXPORT],[])
Packit Service 724aca
fi]
Packit Service 724aca
)
Packit Service 724aca
Packit Service 724aca
public_syms="aligned_alloc calloc dallocx free mallctl mallctlbymib mallctlnametomib malloc malloc_conf malloc_message malloc_stats_print malloc_usable_size mallocx smallocx_${jemalloc_version_gid} nallocx posix_memalign rallocx realloc sallocx sdallocx xallocx"
Packit Service 724aca
dnl Check for additional platform-specific public API functions.
Packit Service 724aca
AC_CHECK_FUNC([memalign],
Packit Service 724aca
	      [AC_DEFINE([JEMALLOC_OVERRIDE_MEMALIGN], [ ])
Packit Service 724aca
	       public_syms="${public_syms} memalign"])
Packit Service 724aca
AC_CHECK_FUNC([valloc],
Packit Service 724aca
	      [AC_DEFINE([JEMALLOC_OVERRIDE_VALLOC], [ ])
Packit Service 724aca
	       public_syms="${public_syms} valloc"])
Packit Service 724aca
Packit Service 724aca
dnl Check for allocator-related functions that should be wrapped.
Packit Service 724aca
wrap_syms=
Packit Service 724aca
if test "x${JEMALLOC_PREFIX}" = "x" ; then
Packit Service 724aca
  AC_CHECK_FUNC([__libc_calloc],
Packit Service 724aca
		[AC_DEFINE([JEMALLOC_OVERRIDE___LIBC_CALLOC], [ ])
Packit Service 724aca
		 wrap_syms="${wrap_syms} __libc_calloc"])
Packit Service 724aca
  AC_CHECK_FUNC([__libc_free],
Packit Service 724aca
		[AC_DEFINE([JEMALLOC_OVERRIDE___LIBC_FREE], [ ])
Packit Service 724aca
		 wrap_syms="${wrap_syms} __libc_free"])
Packit Service 724aca
  AC_CHECK_FUNC([__libc_malloc],
Packit Service 724aca
		[AC_DEFINE([JEMALLOC_OVERRIDE___LIBC_MALLOC], [ ])
Packit Service 724aca
		 wrap_syms="${wrap_syms} __libc_malloc"])
Packit Service 724aca
  AC_CHECK_FUNC([__libc_memalign],
Packit Service 724aca
		[AC_DEFINE([JEMALLOC_OVERRIDE___LIBC_MEMALIGN], [ ])
Packit Service 724aca
		 wrap_syms="${wrap_syms} __libc_memalign"])
Packit Service 724aca
  AC_CHECK_FUNC([__libc_realloc],
Packit Service 724aca
		[AC_DEFINE([JEMALLOC_OVERRIDE___LIBC_REALLOC], [ ])
Packit Service 724aca
		 wrap_syms="${wrap_syms} __libc_realloc"])
Packit Service 724aca
  AC_CHECK_FUNC([__libc_valloc],
Packit Service 724aca
		[AC_DEFINE([JEMALLOC_OVERRIDE___LIBC_VALLOC], [ ])
Packit Service 724aca
		 wrap_syms="${wrap_syms} __libc_valloc"])
Packit Service 724aca
  AC_CHECK_FUNC([__posix_memalign],
Packit Service 724aca
		[AC_DEFINE([JEMALLOC_OVERRIDE___POSIX_MEMALIGN], [ ])
Packit Service 724aca
		 wrap_syms="${wrap_syms} __posix_memalign"])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
case "${host}" in
Packit Service 724aca
  *-*-mingw* | *-*-cygwin*)
Packit Service 724aca
    wrap_syms="${wrap_syms} tls_callback"
Packit Service 724aca
    ;;
Packit Service 724aca
  *)
Packit Service 724aca
    ;;
Packit Service 724aca
esac
Packit Service 724aca
Packit Service 724aca
dnl Mangle library-private APIs.
Packit Service 724aca
AC_ARG_WITH([private_namespace],
Packit Service 724aca
  [AS_HELP_STRING([--with-private-namespace=<prefix>], [Prefix to prepend to all library-private APIs])],
Packit Service 724aca
  [JEMALLOC_PRIVATE_NAMESPACE="${with_private_namespace}je_"],
Packit Service 724aca
  [JEMALLOC_PRIVATE_NAMESPACE="je_"]
Packit Service 724aca
)
Packit Service 724aca
AC_DEFINE_UNQUOTED([JEMALLOC_PRIVATE_NAMESPACE], [$JEMALLOC_PRIVATE_NAMESPACE])
Packit Service 724aca
private_namespace="$JEMALLOC_PRIVATE_NAMESPACE"
Packit Service 724aca
AC_SUBST([private_namespace])
Packit Service 724aca
Packit Service 724aca
dnl Do not add suffix to installed files by default.
Packit Service 724aca
AC_ARG_WITH([install_suffix],
Packit Service 724aca
  [AS_HELP_STRING([--with-install-suffix=<suffix>], [Suffix to append to all installed files])],
Packit Service 724aca
  [INSTALL_SUFFIX="$with_install_suffix"],
Packit Service 724aca
  [INSTALL_SUFFIX=]
Packit Service 724aca
)
Packit Service 724aca
install_suffix="$INSTALL_SUFFIX"
Packit Service 724aca
AC_SUBST([install_suffix])
Packit Service 724aca
Packit Service 724aca
dnl Specify default malloc_conf.
Packit Service 724aca
AC_ARG_WITH([malloc_conf],
Packit Service 724aca
  [AS_HELP_STRING([--with-malloc-conf=<malloc_conf>], [config.malloc_conf options string])],
Packit Service 724aca
  [JEMALLOC_CONFIG_MALLOC_CONF="$with_malloc_conf"],
Packit Service 724aca
  [JEMALLOC_CONFIG_MALLOC_CONF=""]
Packit Service 724aca
)
Packit Service 724aca
config_malloc_conf="$JEMALLOC_CONFIG_MALLOC_CONF"
Packit Service 724aca
AC_DEFINE_UNQUOTED([JEMALLOC_CONFIG_MALLOC_CONF], ["$config_malloc_conf"])
Packit Service 724aca
Packit Service 724aca
dnl Substitute @je_@ in jemalloc_protos.h.in, primarily to make generation of
Packit Service 724aca
dnl jemalloc_protos_jet.h easy.
Packit Service 724aca
je_="je_"
Packit Service 724aca
AC_SUBST([je_])
Packit Service 724aca
Packit Service 724aca
cfgoutputs_in="Makefile.in"
Packit Service 724aca
cfgoutputs_in="${cfgoutputs_in} jemalloc.pc.in"
Packit Service 724aca
cfgoutputs_in="${cfgoutputs_in} doc/html.xsl.in"
Packit Service 724aca
cfgoutputs_in="${cfgoutputs_in} doc/manpages.xsl.in"
Packit Service 724aca
cfgoutputs_in="${cfgoutputs_in} doc/jemalloc.xml.in"
Packit Service 724aca
cfgoutputs_in="${cfgoutputs_in} include/jemalloc/jemalloc_macros.h.in"
Packit Service 724aca
cfgoutputs_in="${cfgoutputs_in} include/jemalloc/jemalloc_protos.h.in"
Packit Service 724aca
cfgoutputs_in="${cfgoutputs_in} include/jemalloc/jemalloc_typedefs.h.in"
Packit Service 724aca
cfgoutputs_in="${cfgoutputs_in} include/jemalloc/internal/jemalloc_preamble.h.in"
Packit Service 724aca
cfgoutputs_in="${cfgoutputs_in} test/test.sh.in"
Packit Service 724aca
cfgoutputs_in="${cfgoutputs_in} test/include/test/jemalloc_test.h.in"
Packit Service 724aca
Packit Service 724aca
cfgoutputs_out="Makefile"
Packit Service 724aca
cfgoutputs_out="${cfgoutputs_out} jemalloc.pc"
Packit Service 724aca
cfgoutputs_out="${cfgoutputs_out} doc/html.xsl"
Packit Service 724aca
cfgoutputs_out="${cfgoutputs_out} doc/manpages.xsl"
Packit Service 724aca
cfgoutputs_out="${cfgoutputs_out} doc/jemalloc.xml"
Packit Service 724aca
cfgoutputs_out="${cfgoutputs_out} include/jemalloc/jemalloc_macros.h"
Packit Service 724aca
cfgoutputs_out="${cfgoutputs_out} include/jemalloc/jemalloc_protos.h"
Packit Service 724aca
cfgoutputs_out="${cfgoutputs_out} include/jemalloc/jemalloc_typedefs.h"
Packit Service 724aca
cfgoutputs_out="${cfgoutputs_out} include/jemalloc/internal/jemalloc_preamble.h"
Packit Service 724aca
cfgoutputs_out="${cfgoutputs_out} test/test.sh"
Packit Service 724aca
cfgoutputs_out="${cfgoutputs_out} test/include/test/jemalloc_test.h"
Packit Service 724aca
Packit Service 724aca
cfgoutputs_tup="Makefile"
Packit Service 724aca
cfgoutputs_tup="${cfgoutputs_tup} jemalloc.pc:jemalloc.pc.in"
Packit Service 724aca
cfgoutputs_tup="${cfgoutputs_tup} doc/html.xsl:doc/html.xsl.in"
Packit Service 724aca
cfgoutputs_tup="${cfgoutputs_tup} doc/manpages.xsl:doc/manpages.xsl.in"
Packit Service 724aca
cfgoutputs_tup="${cfgoutputs_tup} doc/jemalloc.xml:doc/jemalloc.xml.in"
Packit Service 724aca
cfgoutputs_tup="${cfgoutputs_tup} include/jemalloc/jemalloc_macros.h:include/jemalloc/jemalloc_macros.h.in"
Packit Service 724aca
cfgoutputs_tup="${cfgoutputs_tup} include/jemalloc/jemalloc_protos.h:include/jemalloc/jemalloc_protos.h.in"
Packit Service 724aca
cfgoutputs_tup="${cfgoutputs_tup} include/jemalloc/jemalloc_typedefs.h:include/jemalloc/jemalloc_typedefs.h.in"
Packit Service 724aca
cfgoutputs_tup="${cfgoutputs_tup} include/jemalloc/internal/jemalloc_preamble.h"
Packit Service 724aca
cfgoutputs_tup="${cfgoutputs_tup} test/test.sh:test/test.sh.in"
Packit Service 724aca
cfgoutputs_tup="${cfgoutputs_tup} test/include/test/jemalloc_test.h:test/include/test/jemalloc_test.h.in"
Packit Service 724aca
Packit Service 724aca
cfghdrs_in="include/jemalloc/jemalloc_defs.h.in"
Packit Service 724aca
cfghdrs_in="${cfghdrs_in} include/jemalloc/internal/jemalloc_internal_defs.h.in"
Packit Service 724aca
cfghdrs_in="${cfghdrs_in} include/jemalloc/internal/private_symbols.sh"
Packit Service 724aca
cfghdrs_in="${cfghdrs_in} include/jemalloc/internal/private_namespace.sh"
Packit Service 724aca
cfghdrs_in="${cfghdrs_in} include/jemalloc/internal/public_namespace.sh"
Packit Service 724aca
cfghdrs_in="${cfghdrs_in} include/jemalloc/internal/public_unnamespace.sh"
Packit Service 724aca
cfghdrs_in="${cfghdrs_in} include/jemalloc/jemalloc_rename.sh"
Packit Service 724aca
cfghdrs_in="${cfghdrs_in} include/jemalloc/jemalloc_mangle.sh"
Packit Service 724aca
cfghdrs_in="${cfghdrs_in} include/jemalloc/jemalloc.sh"
Packit Service 724aca
cfghdrs_in="${cfghdrs_in} test/include/test/jemalloc_test_defs.h.in"
Packit Service 724aca
Packit Service 724aca
cfghdrs_out="include/jemalloc/jemalloc_defs.h"
Packit Service 724aca
cfghdrs_out="${cfghdrs_out} include/jemalloc/jemalloc${install_suffix}.h"
Packit Service 724aca
cfghdrs_out="${cfghdrs_out} include/jemalloc/internal/private_symbols.awk"
Packit Service 724aca
cfghdrs_out="${cfghdrs_out} include/jemalloc/internal/private_symbols_jet.awk"
Packit Service 724aca
cfghdrs_out="${cfghdrs_out} include/jemalloc/internal/public_symbols.txt"
Packit Service 724aca
cfghdrs_out="${cfghdrs_out} include/jemalloc/internal/public_namespace.h"
Packit Service 724aca
cfghdrs_out="${cfghdrs_out} include/jemalloc/internal/public_unnamespace.h"
Packit Service 724aca
cfghdrs_out="${cfghdrs_out} include/jemalloc/jemalloc_protos_jet.h"
Packit Service 724aca
cfghdrs_out="${cfghdrs_out} include/jemalloc/jemalloc_rename.h"
Packit Service 724aca
cfghdrs_out="${cfghdrs_out} include/jemalloc/jemalloc_mangle.h"
Packit Service 724aca
cfghdrs_out="${cfghdrs_out} include/jemalloc/jemalloc_mangle_jet.h"
Packit Service 724aca
cfghdrs_out="${cfghdrs_out} include/jemalloc/internal/jemalloc_internal_defs.h"
Packit Service 724aca
cfghdrs_out="${cfghdrs_out} test/include/test/jemalloc_test_defs.h"
Packit Service 724aca
Packit Service 724aca
cfghdrs_tup="include/jemalloc/jemalloc_defs.h:include/jemalloc/jemalloc_defs.h.in"
Packit Service 724aca
cfghdrs_tup="${cfghdrs_tup} include/jemalloc/internal/jemalloc_internal_defs.h:include/jemalloc/internal/jemalloc_internal_defs.h.in"
Packit Service 724aca
cfghdrs_tup="${cfghdrs_tup} test/include/test/jemalloc_test_defs.h:test/include/test/jemalloc_test_defs.h.in"
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
dnl jemalloc build options.
Packit Service 724aca
dnl
Packit Service 724aca
Packit Service 724aca
dnl Do not compile with debugging by default.
Packit Service 724aca
AC_ARG_ENABLE([debug],
Packit Service 724aca
  [AS_HELP_STRING([--enable-debug],
Packit Service 724aca
                  [Build debugging code])],
Packit Service 724aca
[if test "x$enable_debug" = "xno" ; then
Packit Service 724aca
  enable_debug="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_debug="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_debug="0"]
Packit Service 724aca
)
Packit Service 724aca
if test "x$enable_debug" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_DEBUG], [ ])
Packit Service 724aca
fi
Packit Service 724aca
if test "x$enable_debug" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_DEBUG], [ ])
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([enable_debug])
Packit Service 724aca
Packit Service 724aca
dnl Only optimize if not debugging.
Packit Service 724aca
if test "x$enable_debug" = "x0" ; then
Packit Service 724aca
  if test "x$GCC" = "xyes" ; then
Packit Service 724aca
    JE_CFLAGS_ADD([-O3])
Packit Service 724aca
    JE_CXXFLAGS_ADD([-O3])
Packit Service 724aca
    JE_CFLAGS_ADD([-funroll-loops])
Packit Service 724aca
  elif test "x$je_cv_msvc" = "xyes" ; then
Packit Service 724aca
    JE_CFLAGS_ADD([-O2])
Packit Service 724aca
    JE_CXXFLAGS_ADD([-O2])
Packit Service 724aca
  else
Packit Service 724aca
    JE_CFLAGS_ADD([-O])
Packit Service 724aca
    JE_CXXFLAGS_ADD([-O])
Packit Service 724aca
  fi
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl Enable statistics calculation by default.
Packit Service 724aca
AC_ARG_ENABLE([stats],
Packit Service 724aca
  [AS_HELP_STRING([--disable-stats],
Packit Service 724aca
                  [Disable statistics calculation/reporting])],
Packit Service 724aca
[if test "x$enable_stats" = "xno" ; then
Packit Service 724aca
  enable_stats="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_stats="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_stats="1"]
Packit Service 724aca
)
Packit Service 724aca
if test "x$enable_stats" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_STATS], [ ])
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([enable_stats])
Packit Service 724aca
Packit Service 724aca
dnl Do not enable smallocx by default.
Packit Service 724aca
AC_ARG_ENABLE([experimental_smallocx],
Packit Service 724aca
  [AS_HELP_STRING([--enable-experimental-smallocx], [Enable experimental smallocx API])],
Packit Service 724aca
[if test "x$enable_experimental_smallocx" = "xno" ; then
Packit Service 724aca
enable_experimental_smallocx="0"
Packit Service 724aca
else
Packit Service 724aca
enable_experimental_smallocx="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_experimental_smallocx="0"]
Packit Service 724aca
)
Packit Service 724aca
if test "x$enable_experimental_smallocx" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_EXPERIMENTAL_SMALLOCX_API])
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([enable_experimental_smallocx])
Packit Service 724aca
Packit Service 724aca
dnl Do not enable profiling by default.
Packit Service 724aca
AC_ARG_ENABLE([prof],
Packit Service 724aca
  [AS_HELP_STRING([--enable-prof], [Enable allocation profiling])],
Packit Service 724aca
[if test "x$enable_prof" = "xno" ; then
Packit Service 724aca
  enable_prof="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_prof="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_prof="0"]
Packit Service 724aca
)
Packit Service 724aca
if test "x$enable_prof" = "x1" ; then
Packit Service 724aca
  backtrace_method=""
Packit Service 724aca
else
Packit Service 724aca
  backtrace_method="N/A"
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
AC_ARG_ENABLE([prof-libunwind],
Packit Service 724aca
  [AS_HELP_STRING([--enable-prof-libunwind], [Use libunwind for backtracing])],
Packit Service 724aca
[if test "x$enable_prof_libunwind" = "xno" ; then
Packit Service 724aca
  enable_prof_libunwind="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_prof_libunwind="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_prof_libunwind="0"]
Packit Service 724aca
)
Packit Service 724aca
AC_ARG_WITH([static_libunwind],
Packit Service 724aca
  [AS_HELP_STRING([--with-static-libunwind=<libunwind.a>],
Packit Service 724aca
  [Path to static libunwind library; use rather than dynamically linking])],
Packit Service 724aca
if test "x$with_static_libunwind" = "xno" ; then
Packit Service 724aca
  LUNWIND="-lunwind"
Packit Service 724aca
else
Packit Service 724aca
  if test ! -f "$with_static_libunwind" ; then
Packit Service 724aca
    AC_MSG_ERROR([Static libunwind not found: $with_static_libunwind])
Packit Service 724aca
  fi
Packit Service 724aca
  LUNWIND="$with_static_libunwind"
Packit Service 724aca
fi,
Packit Service 724aca
  LUNWIND="-lunwind"
Packit Service 724aca
)
Packit Service 724aca
if test "x$backtrace_method" = "x" -a "x$enable_prof_libunwind" = "x1" ; then
Packit Service 724aca
  AC_CHECK_HEADERS([libunwind.h], , [enable_prof_libunwind="0"])
Packit Service 724aca
  if test "x$LUNWIND" = "x-lunwind" ; then
Packit Service 724aca
    AC_CHECK_LIB([unwind], [unw_backtrace], [JE_APPEND_VS(LIBS, $LUNWIND)],
Packit Service 724aca
                 [enable_prof_libunwind="0"])
Packit Service 724aca
  else
Packit Service 724aca
    JE_APPEND_VS(LIBS, $LUNWIND)
Packit Service 724aca
  fi
Packit Service 724aca
  if test "x${enable_prof_libunwind}" = "x1" ; then
Packit Service 724aca
    backtrace_method="libunwind"
Packit Service 724aca
    AC_DEFINE([JEMALLOC_PROF_LIBUNWIND], [ ])
Packit Service 724aca
  fi
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
AC_ARG_ENABLE([prof-libgcc],
Packit Service 724aca
  [AS_HELP_STRING([--disable-prof-libgcc],
Packit Service 724aca
  [Do not use libgcc for backtracing])],
Packit Service 724aca
[if test "x$enable_prof_libgcc" = "xno" ; then
Packit Service 724aca
  enable_prof_libgcc="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_prof_libgcc="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_prof_libgcc="1"]
Packit Service 724aca
)
Packit Service 724aca
if test "x$backtrace_method" = "x" -a "x$enable_prof_libgcc" = "x1" \
Packit Service 724aca
     -a "x$GCC" = "xyes" ; then
Packit Service 724aca
  AC_CHECK_HEADERS([unwind.h], , [enable_prof_libgcc="0"])
Packit Service 724aca
  if test "x${enable_prof_libgcc}" = "x1" ; then
Packit Service 724aca
    AC_CHECK_LIB([gcc], [_Unwind_Backtrace], [JE_APPEND_VS(LIBS, -lgcc)], [enable_prof_libgcc="0"])
Packit Service 724aca
  fi
Packit Service 724aca
  if test "x${enable_prof_libgcc}" = "x1" ; then
Packit Service 724aca
    backtrace_method="libgcc"
Packit Service 724aca
    AC_DEFINE([JEMALLOC_PROF_LIBGCC], [ ])
Packit Service 724aca
  fi
Packit Service 724aca
else
Packit Service 724aca
  enable_prof_libgcc="0"
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
AC_ARG_ENABLE([prof-gcc],
Packit Service 724aca
  [AS_HELP_STRING([--disable-prof-gcc],
Packit Service 724aca
  [Do not use gcc intrinsics for backtracing])],
Packit Service 724aca
[if test "x$enable_prof_gcc" = "xno" ; then
Packit Service 724aca
  enable_prof_gcc="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_prof_gcc="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_prof_gcc="1"]
Packit Service 724aca
)
Packit Service 724aca
if test "x$backtrace_method" = "x" -a "x$enable_prof_gcc" = "x1" \
Packit Service 724aca
     -a "x$GCC" = "xyes" ; then
Packit Service 724aca
  JE_CFLAGS_ADD([-fno-omit-frame-pointer])
Packit Service 724aca
  backtrace_method="gcc intrinsics"
Packit Service 724aca
  AC_DEFINE([JEMALLOC_PROF_GCC], [ ])
Packit Service 724aca
else
Packit Service 724aca
  enable_prof_gcc="0"
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
if test "x$backtrace_method" = "x" ; then
Packit Service 724aca
  backtrace_method="none (disabling profiling)"
Packit Service 724aca
  enable_prof="0"
Packit Service 724aca
fi
Packit Service 724aca
AC_MSG_CHECKING([configured backtracing method])
Packit Service 724aca
AC_MSG_RESULT([$backtrace_method])
Packit Service 724aca
if test "x$enable_prof" = "x1" ; then
Packit Service 724aca
  dnl Heap profiling uses the log(3) function.
Packit Service 724aca
  JE_APPEND_VS(LIBS, $LM)
Packit Service 724aca
Packit Service 724aca
  AC_DEFINE([JEMALLOC_PROF], [ ])
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([enable_prof])
Packit Service 724aca
Packit Service 724aca
dnl Indicate whether adjacent virtual memory mappings automatically coalesce
Packit Service 724aca
dnl (and fragment on demand).
Packit Service 724aca
if test "x${maps_coalesce}" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_MAPS_COALESCE], [ ])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl Indicate whether to retain memory (rather than using munmap()) by default.
Packit Service 724aca
if test "x$default_retain" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_RETAIN], [ ])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl Enable allocation from DSS if supported by the OS.
Packit Service 724aca
have_dss="1"
Packit Service 724aca
dnl Check whether the BSD/SUSv1 sbrk() exists.  If not, disable DSS support.
Packit Service 724aca
AC_CHECK_FUNC([sbrk], [have_sbrk="1"], [have_sbrk="0"])
Packit Service 724aca
if test "x$have_sbrk" = "x1" ; then
Packit Service 724aca
  if test "x$sbrk_deprecated" = "x1" ; then
Packit Service 724aca
    AC_MSG_RESULT([Disabling dss allocation because sbrk is deprecated])
Packit Service 724aca
    have_dss="0"
Packit Service 724aca
  fi
Packit Service 724aca
else
Packit Service 724aca
  have_dss="0"
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
if test "x$have_dss" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_DSS], [ ])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl Support the junk/zero filling option by default.
Packit Service 724aca
AC_ARG_ENABLE([fill],
Packit Service 724aca
  [AS_HELP_STRING([--disable-fill], [Disable support for junk/zero filling])],
Packit Service 724aca
[if test "x$enable_fill" = "xno" ; then
Packit Service 724aca
  enable_fill="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_fill="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_fill="1"]
Packit Service 724aca
)
Packit Service 724aca
if test "x$enable_fill" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_FILL], [ ])
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([enable_fill])
Packit Service 724aca
Packit Service 724aca
dnl Disable utrace(2)-based tracing by default.
Packit Service 724aca
AC_ARG_ENABLE([utrace],
Packit Service 724aca
  [AS_HELP_STRING([--enable-utrace], [Enable utrace(2)-based tracing])],
Packit Service 724aca
[if test "x$enable_utrace" = "xno" ; then
Packit Service 724aca
  enable_utrace="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_utrace="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_utrace="0"]
Packit Service 724aca
)
Packit Service 724aca
JE_COMPILABLE([utrace(2)], [
Packit Service 724aca
#include <sys/types.h>
Packit Service 724aca
#include <sys/param.h>
Packit Service 724aca
#include <sys/time.h>
Packit Service 724aca
#include <sys/uio.h>
Packit Service 724aca
#include <sys/ktrace.h>
Packit Service 724aca
], [
Packit Service 724aca
	utrace((void *)0, 0);
Packit Service 724aca
], [je_cv_utrace])
Packit Service 724aca
if test "x${je_cv_utrace}" = "xno" ; then
Packit Service 724aca
  enable_utrace="0"
Packit Service 724aca
fi
Packit Service 724aca
if test "x$enable_utrace" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_UTRACE], [ ])
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([enable_utrace])
Packit Service 724aca
Packit Service 724aca
dnl Do not support the xmalloc option by default.
Packit Service 724aca
AC_ARG_ENABLE([xmalloc],
Packit Service 724aca
  [AS_HELP_STRING([--enable-xmalloc], [Support xmalloc option])],
Packit Service 724aca
[if test "x$enable_xmalloc" = "xno" ; then
Packit Service 724aca
  enable_xmalloc="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_xmalloc="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_xmalloc="0"]
Packit Service 724aca
)
Packit Service 724aca
if test "x$enable_xmalloc" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_XMALLOC], [ ])
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([enable_xmalloc])
Packit Service 724aca
Packit Service 724aca
dnl Support cache-oblivious allocation alignment by default.
Packit Service 724aca
AC_ARG_ENABLE([cache-oblivious],
Packit Service 724aca
  [AS_HELP_STRING([--disable-cache-oblivious],
Packit Service 724aca
                  [Disable support for cache-oblivious allocation alignment])],
Packit Service 724aca
[if test "x$enable_cache_oblivious" = "xno" ; then
Packit Service 724aca
  enable_cache_oblivious="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_cache_oblivious="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_cache_oblivious="1"]
Packit Service 724aca
)
Packit Service 724aca
if test "x$enable_cache_oblivious" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_CACHE_OBLIVIOUS], [ ])
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([enable_cache_oblivious])
Packit Service 724aca
Packit Service 724aca
dnl Do not log by default.
Packit Service 724aca
AC_ARG_ENABLE([log],
Packit Service 724aca
  [AS_HELP_STRING([--enable-log], [Support debug logging])],
Packit Service 724aca
[if test "x$enable_log" = "xno" ; then
Packit Service 724aca
  enable_log="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_log="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_log="0"]
Packit Service 724aca
)
Packit Service 724aca
if test "x$enable_log" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_LOG], [ ])
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([enable_log])
Packit Service 724aca
Packit Service 724aca
dnl Do not use readlinkat by default
Packit Service 724aca
AC_ARG_ENABLE([readlinkat],
Packit Service 724aca
  [AS_HELP_STRING([--enable-readlinkat], [Use readlinkat over readlink])],
Packit Service 724aca
[if test "x$enable_readlinkat" = "xno" ; then
Packit Service 724aca
  enable_readlinkat="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_readlinkat="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_readlinkat="0"]
Packit Service 724aca
)
Packit Service 724aca
if test "x$enable_readlinkat" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_READLINKAT], [ ])
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([enable_readlinkat])
Packit Service 724aca
Packit Service 724aca
dnl Avoid extra safety checks by default
Packit Service 724aca
AC_ARG_ENABLE([opt-safety-checks],
Packit Service 724aca
  [AS_HELP_STRING([--enable-opt-safety-checks],
Packit Service 724aca
  [Perform certain low-overhead checks, even in opt mode])],
Packit Service 724aca
[if test "x$enable_opt_safety_checks" = "xno" ; then
Packit Service 724aca
  enable_opt_safety_checks="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_opt_safety_checks="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_opt_safety_checks="0"]
Packit Service 724aca
)
Packit Service 724aca
if test "x$enable_opt_safety_checks" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_OPT_SAFETY_CHECKS], [ ])
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([enable_opt_safety_checks])
Packit Service 724aca
Packit Service 724aca
JE_COMPILABLE([a program using __builtin_unreachable], [
Packit Service 724aca
void foo (void) {
Packit Service 724aca
  __builtin_unreachable();
Packit Service 724aca
}
Packit Service 724aca
], [
Packit Service 724aca
	{
Packit Service 724aca
		foo();
Packit Service 724aca
	}
Packit Service 724aca
], [je_cv_gcc_builtin_unreachable])
Packit Service 724aca
if test "x${je_cv_gcc_builtin_unreachable}" = "xyes" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_INTERNAL_UNREACHABLE], [__builtin_unreachable])
Packit Service 724aca
else
Packit Service 724aca
  AC_DEFINE([JEMALLOC_INTERNAL_UNREACHABLE], [abort])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
dnl Check for  __builtin_ffsl(), then ffsl(3), and fail if neither are found.
Packit Service 724aca
dnl One of those two functions should (theoretically) exist on all platforms
Packit Service 724aca
dnl that jemalloc currently has a chance of functioning on without modification.
Packit Service 724aca
dnl We additionally assume ffs[ll]() or __builtin_ffs[ll]() are defined if
Packit Service 724aca
dnl ffsl() or __builtin_ffsl() are defined, respectively.
Packit Service 724aca
JE_COMPILABLE([a program using __builtin_ffsl], [
Packit Service 724aca
#include <stdio.h>
Packit Service 724aca
#include <strings.h>
Packit Service 724aca
#include <string.h>
Packit Service 724aca
], [
Packit Service 724aca
	{
Packit Service 724aca
		int rv = __builtin_ffsl(0x08);
Packit Service 724aca
		printf("%d\n", rv);
Packit Service 724aca
	}
Packit Service 724aca
], [je_cv_gcc_builtin_ffsl])
Packit Service 724aca
if test "x${je_cv_gcc_builtin_ffsl}" = "xyes" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_INTERNAL_FFSLL], [__builtin_ffsll])
Packit Service 724aca
  AC_DEFINE([JEMALLOC_INTERNAL_FFSL], [__builtin_ffsl])
Packit Service 724aca
  AC_DEFINE([JEMALLOC_INTERNAL_FFS], [__builtin_ffs])
Packit Service 724aca
else
Packit Service 724aca
  JE_COMPILABLE([a program using ffsl], [
Packit Service 724aca
  #include <stdio.h>
Packit Service 724aca
  #include <strings.h>
Packit Service 724aca
  #include <string.h>
Packit Service 724aca
  ], [
Packit Service 724aca
	{
Packit Service 724aca
		int rv = ffsl(0x08);
Packit Service 724aca
		printf("%d\n", rv);
Packit Service 724aca
	}
Packit Service 724aca
  ], [je_cv_function_ffsl])
Packit Service 724aca
  if test "x${je_cv_function_ffsl}" = "xyes" ; then
Packit Service 724aca
    AC_DEFINE([JEMALLOC_INTERNAL_FFSLL], [ffsll])
Packit Service 724aca
    AC_DEFINE([JEMALLOC_INTERNAL_FFSL], [ffsl])
Packit Service 724aca
    AC_DEFINE([JEMALLOC_INTERNAL_FFS], [ffs])
Packit Service 724aca
  else
Packit Service 724aca
    AC_MSG_ERROR([Cannot build without ffsl(3) or __builtin_ffsl()])
Packit Service 724aca
  fi
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
JE_COMPILABLE([a program using __builtin_popcountl], [
Packit Service 724aca
#include <stdio.h>
Packit Service 724aca
#include <strings.h>
Packit Service 724aca
#include <string.h>
Packit Service 724aca
], [
Packit Service 724aca
	{
Packit Service 724aca
		int rv = __builtin_popcountl(0x08);
Packit Service 724aca
		printf("%d\n", rv);
Packit Service 724aca
	}
Packit Service 724aca
], [je_cv_gcc_builtin_popcountl])
Packit Service 724aca
if test "x${je_cv_gcc_builtin_popcountl}" = "xyes" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_INTERNAL_POPCOUNT], [__builtin_popcount])
Packit Service 724aca
  AC_DEFINE([JEMALLOC_INTERNAL_POPCOUNTL], [__builtin_popcountl])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
AC_ARG_WITH([lg_quantum],
Packit Service 724aca
  [AS_HELP_STRING([--with-lg-quantum=<lg-quantum>],
Packit Service 724aca
   [Base 2 log of minimum allocation alignment])],
Packit Service 724aca
  [LG_QUANTA="$with_lg_quantum"],
Packit Service 724aca
  [LG_QUANTA="3 4"])
Packit Service 724aca
if test "x$with_lg_quantum" != "x" ; then
Packit Service 724aca
  AC_DEFINE_UNQUOTED([LG_QUANTUM], [$with_lg_quantum])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
AC_ARG_WITH([lg_page],
Packit Service 724aca
  [AS_HELP_STRING([--with-lg-page=<lg-page>], [Base 2 log of system page size])],
Packit Service 724aca
  [LG_PAGE="$with_lg_page"], [LG_PAGE="detect"])
Packit Service 724aca
if test "x$LG_PAGE" = "xdetect"; then
Packit Service 724aca
  AC_CACHE_CHECK([LG_PAGE],
Packit Service 724aca
               [je_cv_lg_page],
Packit Service 724aca
               AC_RUN_IFELSE([AC_LANG_PROGRAM(
Packit Service 724aca
[[
Packit Service 724aca
#include <strings.h>
Packit Service 724aca
#ifdef _WIN32
Packit Service 724aca
#include <windows.h>
Packit Service 724aca
#else
Packit Service 724aca
#include <unistd.h>
Packit Service 724aca
#endif
Packit Service 724aca
#include <stdio.h>
Packit Service 724aca
]],
Packit Service 724aca
[[
Packit Service 724aca
    int result;
Packit Service 724aca
    FILE *f;
Packit Service 724aca
Packit Service 724aca
#ifdef _WIN32
Packit Service 724aca
    SYSTEM_INFO si;
Packit Service 724aca
    GetSystemInfo(&si);
Packit Service 724aca
    result = si.dwPageSize;
Packit Service 724aca
#else
Packit Service 724aca
    result = sysconf(_SC_PAGESIZE);
Packit Service 724aca
#endif
Packit Service 724aca
    if (result == -1) {
Packit Service 724aca
	return 1;
Packit Service 724aca
    }
Packit Service 724aca
    result = JEMALLOC_INTERNAL_FFSL(result) - 1;
Packit Service 724aca
Packit Service 724aca
    f = fopen("conftest.out", "w");
Packit Service 724aca
    if (f == NULL) {
Packit Service 724aca
	return 1;
Packit Service 724aca
    }
Packit Service 724aca
    fprintf(f, "%d", result);
Packit Service 724aca
    fclose(f);
Packit Service 724aca
Packit Service 724aca
    return 0;
Packit Service 724aca
]])],
Packit Service 724aca
                             [je_cv_lg_page=`cat conftest.out`],
Packit Service 724aca
                             [je_cv_lg_page=undefined],
Packit Service 724aca
                             [je_cv_lg_page=12]))
Packit Service 724aca
fi
Packit Service 724aca
if test "x${je_cv_lg_page}" != "x" ; then
Packit Service 724aca
  LG_PAGE="${je_cv_lg_page}"
Packit Service 724aca
fi
Packit Service 724aca
if test "x${LG_PAGE}" != "xundefined" ; then
Packit Service 724aca
   AC_DEFINE_UNQUOTED([LG_PAGE], [$LG_PAGE])
Packit Service 724aca
else
Packit Service 724aca
   AC_MSG_ERROR([cannot determine value for LG_PAGE])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
AC_ARG_WITH([lg_hugepage],
Packit Service 724aca
  [AS_HELP_STRING([--with-lg-hugepage=<lg-hugepage>],
Packit Service 724aca
   [Base 2 log of system huge page size])],
Packit Service 724aca
  [je_cv_lg_hugepage="${with_lg_hugepage}"],
Packit Service 724aca
  [je_cv_lg_hugepage=""])
Packit Service 724aca
if test "x${je_cv_lg_hugepage}" = "x" ; then
Packit Service 724aca
  dnl Look in /proc/meminfo (Linux-specific) for information on the default huge
Packit Service 724aca
  dnl page size, if any.  The relevant line looks like:
Packit Service 724aca
  dnl
Packit Service 724aca
  dnl   Hugepagesize:       2048 kB
Packit Service 724aca
  if test -e "/proc/meminfo" ; then
Packit Service 724aca
    hpsk=[`cat /proc/meminfo 2>/dev/null | \
Packit Service 724aca
          grep -e '^Hugepagesize:[[:space:]]\+[0-9]\+[[:space:]]kB$' | \
Packit Service 724aca
          awk '{print $2}'`]
Packit Service 724aca
    if test "x${hpsk}" != "x" ; then
Packit Service 724aca
      je_cv_lg_hugepage=10
Packit Service 724aca
      while test "${hpsk}" -gt 1 ; do
Packit Service 724aca
        hpsk="$((hpsk / 2))"
Packit Service 724aca
        je_cv_lg_hugepage="$((je_cv_lg_hugepage + 1))"
Packit Service 724aca
      done
Packit Service 724aca
    fi
Packit Service 724aca
  fi
Packit Service 724aca
Packit Service 724aca
  dnl Set default if unable to automatically configure.
Packit Service 724aca
  if test "x${je_cv_lg_hugepage}" = "x" ; then
Packit Service 724aca
    je_cv_lg_hugepage=21
Packit Service 724aca
  fi
Packit Service 724aca
fi
Packit Service 724aca
if test "x${LG_PAGE}" != "xundefined" -a \
Packit Service 724aca
        "${je_cv_lg_hugepage}" -lt "${LG_PAGE}" ; then
Packit Service 724aca
  AC_MSG_ERROR([Huge page size (2^${je_cv_lg_hugepage}) must be at least page size (2^${LG_PAGE})])
Packit Service 724aca
fi
Packit Service 724aca
AC_DEFINE_UNQUOTED([LG_HUGEPAGE], [${je_cv_lg_hugepage}])
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
dnl Enable libdl by default.
Packit Service 724aca
AC_ARG_ENABLE([libdl],
Packit Service 724aca
  [AS_HELP_STRING([--disable-libdl],
Packit Service 724aca
  [Do not use libdl])],
Packit Service 724aca
[if test "x$enable_libdl" = "xno" ; then
Packit Service 724aca
  enable_libdl="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_libdl="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_libdl="1"]
Packit Service 724aca
)
Packit Service 724aca
AC_SUBST([libdl])
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
dnl Configure pthreads.
Packit Service 724aca
Packit Service 724aca
if test "x$abi" != "xpecoff" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_HAVE_PTHREAD], [ ])
Packit Service 724aca
  AC_CHECK_HEADERS([pthread.h], , [AC_MSG_ERROR([pthread.h is missing])])
Packit Service 724aca
  dnl Some systems may embed pthreads functionality in libc; check for libpthread
Packit Service 724aca
  dnl first, but try libc too before failing.
Packit Service 724aca
  AC_CHECK_LIB([pthread], [pthread_create], [JE_APPEND_VS(LIBS, -pthread)],
Packit Service 724aca
               [AC_SEARCH_LIBS([pthread_create], , ,
Packit Service 724aca
                               AC_MSG_ERROR([libpthread is missing]))])
Packit Service 724aca
  wrap_syms="${wrap_syms} pthread_create"
Packit Service 724aca
  have_pthread="1"
Packit Service 724aca
Packit Service 724aca
dnl Check if we have dlsym support.
Packit Service 724aca
  if test "x$enable_libdl" = "x1" ; then
Packit Service 724aca
    have_dlsym="1"
Packit Service 724aca
    AC_CHECK_HEADERS([dlfcn.h], , [have_dlsym="0"])
Packit Service 724aca
    check_dlsym_in_libdl="0"
Packit Service 724aca
    if test "x$have_dlsym" = "x1" ; then
Packit Service 724aca
      AC_CHECK_FUNC([dlsym], [], [check_dlsym_in_libdl="1"])
Packit Service 724aca
    fi
Packit Service 724aca
    if test "x$check_dlsym_in_libdl" = "x1" ; then
Packit Service 724aca
      AC_CHECK_LIB([dl], [dlsym], [LIBS="$LIBS -ldl"], [have_dlsym="0"])
Packit Service 724aca
    fi
Packit Service 724aca
    if test "x$have_dlsym" = "x1" ; then
Packit Service 724aca
      AC_DEFINE([JEMALLOC_HAVE_DLSYM], [ ])
Packit Service 724aca
    fi
Packit Service 724aca
  else
Packit Service 724aca
    have_dlsym="0"
Packit Service 724aca
  fi
Packit Service 724aca
Packit Service 724aca
  JE_COMPILABLE([pthread_atfork(3)], [
Packit Service 724aca
#include <pthread.h>
Packit Service 724aca
], [
Packit Service 724aca
  pthread_atfork((void *)0, (void *)0, (void *)0);
Packit Service 724aca
], [je_cv_pthread_atfork])
Packit Service 724aca
  if test "x${je_cv_pthread_atfork}" = "xyes" ; then
Packit Service 724aca
    AC_DEFINE([JEMALLOC_HAVE_PTHREAD_ATFORK], [ ])
Packit Service 724aca
  fi
Packit Service 724aca
  dnl Check if pthread_setname_np is available with the expected API.
Packit Service 724aca
  JE_COMPILABLE([pthread_setname_np(3)], [
Packit Service 724aca
#include <pthread.h>
Packit Service 724aca
], [
Packit Service 724aca
  pthread_setname_np(pthread_self(), "setname_test");
Packit Service 724aca
], [je_cv_pthread_setname_np])
Packit Service 724aca
  if test "x${je_cv_pthread_setname_np}" = "xyes" ; then
Packit Service 724aca
    AC_DEFINE([JEMALLOC_HAVE_PTHREAD_SETNAME_NP], [ ])
Packit Service 724aca
  fi
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
JE_APPEND_VS(CPPFLAGS, -D_REENTRANT)
Packit Service 724aca
Packit Service 724aca
dnl Check whether clock_gettime(2) is in libc or librt.
Packit Service 724aca
AC_SEARCH_LIBS([clock_gettime], [rt])
Packit Service 724aca
Packit Service 724aca
dnl Cray wrapper compiler often adds `-lrt` when using `-static`. Check with
Packit Service 724aca
dnl `-dynamic` as well in case a user tries to dynamically link in jemalloc
Packit Service 724aca
if test "x$je_cv_cray_prgenv_wrapper" = "xyes" ; then
Packit Service 724aca
  if test "$ac_cv_search_clock_gettime" != "-lrt"; then
Packit Service 724aca
    JE_CFLAGS_SAVE()
Packit Service 724aca
Packit Service 724aca
    unset ac_cv_search_clock_gettime
Packit Service 724aca
    JE_CFLAGS_ADD([-dynamic])
Packit Service 724aca
    AC_SEARCH_LIBS([clock_gettime], [rt])
Packit Service 724aca
Packit Service 724aca
    JE_CFLAGS_RESTORE()
Packit Service 724aca
  fi
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl check for CLOCK_MONOTONIC_COARSE (Linux-specific).
Packit Service 724aca
JE_COMPILABLE([clock_gettime(CLOCK_MONOTONIC_COARSE, ...)], [
Packit Service 724aca
#include <time.h>
Packit Service 724aca
], [
Packit Service 724aca
	struct timespec ts;
Packit Service 724aca
Packit Service 724aca
	clock_gettime(CLOCK_MONOTONIC_COARSE, &ts);
Packit Service 724aca
], [je_cv_clock_monotonic_coarse])
Packit Service 724aca
if test "x${je_cv_clock_monotonic_coarse}" = "xyes" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_HAVE_CLOCK_MONOTONIC_COARSE])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl check for CLOCK_MONOTONIC.
Packit Service 724aca
JE_COMPILABLE([clock_gettime(CLOCK_MONOTONIC, ...)], [
Packit Service 724aca
#include <unistd.h>
Packit Service 724aca
#include <time.h>
Packit Service 724aca
], [
Packit Service 724aca
	struct timespec ts;
Packit Service 724aca
Packit Service 724aca
	clock_gettime(CLOCK_MONOTONIC, &ts);
Packit Service 724aca
#if !defined(_POSIX_MONOTONIC_CLOCK) || _POSIX_MONOTONIC_CLOCK < 0
Packit Service 724aca
#  error _POSIX_MONOTONIC_CLOCK missing/invalid
Packit Service 724aca
#endif
Packit Service 724aca
], [je_cv_clock_monotonic])
Packit Service 724aca
if test "x${je_cv_clock_monotonic}" = "xyes" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_HAVE_CLOCK_MONOTONIC])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl Check for mach_absolute_time().
Packit Service 724aca
JE_COMPILABLE([mach_absolute_time()], [
Packit Service 724aca
#include <mach/mach_time.h>
Packit Service 724aca
], [
Packit Service 724aca
	mach_absolute_time();
Packit Service 724aca
], [je_cv_mach_absolute_time])
Packit Service 724aca
if test "x${je_cv_mach_absolute_time}" = "xyes" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_HAVE_MACH_ABSOLUTE_TIME])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl Use syscall(2) (if available) by default.
Packit Service 724aca
AC_ARG_ENABLE([syscall],
Packit Service 724aca
  [AS_HELP_STRING([--disable-syscall], [Disable use of syscall(2)])],
Packit Service 724aca
[if test "x$enable_syscall" = "xno" ; then
Packit Service 724aca
  enable_syscall="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_syscall="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_syscall="1"]
Packit Service 724aca
)
Packit Service 724aca
if test "x$enable_syscall" = "x1" ; then
Packit Service 724aca
  dnl Check if syscall(2) is usable.  Treat warnings as errors, so that e.g. OS
Packit Service 724aca
  dnl X 10.12's deprecation warning prevents use.
Packit Service 724aca
  JE_CFLAGS_SAVE()
Packit Service 724aca
  JE_CFLAGS_ADD([-Werror])
Packit Service 724aca
  JE_COMPILABLE([syscall(2)], [
Packit Service 724aca
#include <sys/syscall.h>
Packit Service 724aca
#include <unistd.h>
Packit Service 724aca
], [
Packit Service 724aca
	syscall(SYS_write, 2, "hello", 5);
Packit Service 724aca
],
Packit Service 724aca
                [je_cv_syscall])
Packit Service 724aca
  JE_CFLAGS_RESTORE()
Packit Service 724aca
  if test "x$je_cv_syscall" = "xyes" ; then
Packit Service 724aca
    AC_DEFINE([JEMALLOC_USE_SYSCALL], [ ])
Packit Service 724aca
  fi
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl Check if the GNU-specific secure_getenv function exists.
Packit Service 724aca
AC_CHECK_FUNC([secure_getenv],
Packit Service 724aca
              [have_secure_getenv="1"],
Packit Service 724aca
              [have_secure_getenv="0"]
Packit Service 724aca
             )
Packit Service 724aca
if test "x$have_secure_getenv" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_HAVE_SECURE_GETENV], [ ])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl Check if the GNU-specific sched_getcpu function exists.
Packit Service 724aca
AC_CHECK_FUNC([sched_getcpu],
Packit Service 724aca
              [have_sched_getcpu="1"],
Packit Service 724aca
              [have_sched_getcpu="0"]
Packit Service 724aca
             )
Packit Service 724aca
if test "x$have_sched_getcpu" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_HAVE_SCHED_GETCPU], [ ])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl Check if the GNU-specific sched_setaffinity function exists.
Packit Service 724aca
AC_CHECK_FUNC([sched_setaffinity],
Packit Service 724aca
              [have_sched_setaffinity="1"],
Packit Service 724aca
              [have_sched_setaffinity="0"]
Packit Service 724aca
             )
Packit Service 724aca
if test "x$have_sched_setaffinity" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_HAVE_SCHED_SETAFFINITY], [ ])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl Check if the Solaris/BSD issetugid function exists.
Packit Service 724aca
AC_CHECK_FUNC([issetugid],
Packit Service 724aca
              [have_issetugid="1"],
Packit Service 724aca
              [have_issetugid="0"]
Packit Service 724aca
             )
Packit Service 724aca
if test "x$have_issetugid" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_HAVE_ISSETUGID], [ ])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl Check whether the BSD-specific _malloc_thread_cleanup() exists.  If so, use
Packit Service 724aca
dnl it rather than pthreads TSD cleanup functions to support cleanup during
Packit Service 724aca
dnl thread exit, in order to avoid pthreads library recursion during
Packit Service 724aca
dnl bootstrapping.
Packit Service 724aca
AC_CHECK_FUNC([_malloc_thread_cleanup],
Packit Service 724aca
              [have__malloc_thread_cleanup="1"],
Packit Service 724aca
              [have__malloc_thread_cleanup="0"]
Packit Service 724aca
             )
Packit Service 724aca
if test "x$have__malloc_thread_cleanup" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_MALLOC_THREAD_CLEANUP], [ ])
Packit Service 724aca
  wrap_syms="${wrap_syms} _malloc_thread_cleanup"
Packit Service 724aca
  force_tls="1"
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl Check whether the BSD-specific _pthread_mutex_init_calloc_cb() exists.  If
Packit Service 724aca
dnl so, mutex initialization causes allocation, and we need to implement this
Packit Service 724aca
dnl callback function in order to prevent recursive allocation.
Packit Service 724aca
AC_CHECK_FUNC([_pthread_mutex_init_calloc_cb],
Packit Service 724aca
              [have__pthread_mutex_init_calloc_cb="1"],
Packit Service 724aca
              [have__pthread_mutex_init_calloc_cb="0"]
Packit Service 724aca
             )
Packit Service 724aca
if test "x$have__pthread_mutex_init_calloc_cb" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_MUTEX_INIT_CB])
Packit Service 724aca
  wrap_syms="${wrap_syms} _malloc_prefork _malloc_postfork"
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl Disable lazy locking by default.
Packit Service 724aca
AC_ARG_ENABLE([lazy_lock],
Packit Service 724aca
  [AS_HELP_STRING([--enable-lazy-lock],
Packit Service 724aca
  [Enable lazy locking (only lock when multi-threaded)])],
Packit Service 724aca
[if test "x$enable_lazy_lock" = "xno" ; then
Packit Service 724aca
  enable_lazy_lock="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_lazy_lock="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_lazy_lock=""]
Packit Service 724aca
)
Packit Service 724aca
if test "x${enable_lazy_lock}" = "x" ; then
Packit Service 724aca
  if test "x${force_lazy_lock}" = "x1" ; then
Packit Service 724aca
    AC_MSG_RESULT([Forcing lazy-lock to avoid allocator/threading bootstrap issues])
Packit Service 724aca
    enable_lazy_lock="1"
Packit Service 724aca
  else
Packit Service 724aca
    enable_lazy_lock="0"
Packit Service 724aca
  fi
Packit Service 724aca
fi
Packit Service 724aca
if test "x${enable_lazy_lock}" = "x1" -a "x${abi}" = "xpecoff" ; then
Packit Service 724aca
  AC_MSG_RESULT([Forcing no lazy-lock because thread creation monitoring is unimplemented])
Packit Service 724aca
  enable_lazy_lock="0"
Packit Service 724aca
fi
Packit Service 724aca
if test "x$enable_lazy_lock" = "x1" ; then
Packit Service 724aca
  if test "x$have_dlsym" = "x1" ; then
Packit Service 724aca
    AC_DEFINE([JEMALLOC_LAZY_LOCK], [ ])
Packit Service 724aca
  else
Packit Service 724aca
    AC_MSG_ERROR([Missing dlsym support: lazy-lock cannot be enabled.])
Packit Service 724aca
  fi
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([enable_lazy_lock])
Packit Service 724aca
Packit Service 724aca
dnl Automatically configure TLS.
Packit Service 724aca
if test "x${force_tls}" = "x1" ; then
Packit Service 724aca
  enable_tls="1"
Packit Service 724aca
elif test "x${force_tls}" = "x0" ; then
Packit Service 724aca
  enable_tls="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_tls="1"
Packit Service 724aca
fi
Packit Service 724aca
if test "x${enable_tls}" = "x1" ; then
Packit Service 724aca
AC_MSG_CHECKING([for TLS])
Packit Service 724aca
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
Packit Service 724aca
[[
Packit Service 724aca
    __thread int x;
Packit Service 724aca
]], [[
Packit Service 724aca
    x = 42;
Packit Service 724aca
Packit Service 724aca
    return 0;
Packit Service 724aca
]])],
Packit Service 724aca
              AC_MSG_RESULT([yes]),
Packit Service 724aca
              AC_MSG_RESULT([no])
Packit Service 724aca
              enable_tls="0")
Packit Service 724aca
else
Packit Service 724aca
  enable_tls="0"
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([enable_tls])
Packit Service 724aca
if test "x${enable_tls}" = "x1" ; then
Packit Service 724aca
  AC_DEFINE_UNQUOTED([JEMALLOC_TLS], [ ])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
dnl Check for C11 atomics.
Packit Service 724aca
Packit Service 724aca
JE_COMPILABLE([C11 atomics], [
Packit Service 724aca
#include <stdint.h>
Packit Service 724aca
#if (__STDC_VERSION__ >= 201112L) && !defined(__STDC_NO_ATOMICS__)
Packit Service 724aca
#include <stdatomic.h>
Packit Service 724aca
#else
Packit Service 724aca
#error Atomics not available
Packit Service 724aca
#endif
Packit Service 724aca
], [
Packit Service 724aca
    uint64_t *p = (uint64_t *)0;
Packit Service 724aca
    uint64_t x = 1;
Packit Service 724aca
    volatile atomic_uint_least64_t *a = (volatile atomic_uint_least64_t *)p;
Packit Service 724aca
    uint64_t r = atomic_fetch_add(a, x) + x;
Packit Service 724aca
    return r == 0;
Packit Service 724aca
], [je_cv_c11_atomics])
Packit Service 724aca
if test "x${je_cv_c11_atomics}" = "xyes" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_C11_ATOMICS])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
dnl Check for GCC-style __atomic atomics.
Packit Service 724aca
Packit Service 724aca
JE_COMPILABLE([GCC __atomic atomics], [
Packit Service 724aca
], [
Packit Service 724aca
    int x = 0;
Packit Service 724aca
    int val = 1;
Packit Service 724aca
    int y = __atomic_fetch_add(&x, val, __ATOMIC_RELAXED);
Packit Service 724aca
    int after_add = x;
Packit Service 724aca
    return after_add == 1;
Packit Service 724aca
], [je_cv_gcc_atomic_atomics])
Packit Service 724aca
if test "x${je_cv_gcc_atomic_atomics}" = "xyes" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_GCC_ATOMIC_ATOMICS])
Packit Service 724aca
Packit Service 724aca
  dnl check for 8-bit atomic support
Packit Service 724aca
  JE_COMPILABLE([GCC 8-bit __atomic atomics], [
Packit Service 724aca
  ], [
Packit Service 724aca
      unsigned char x = 0;
Packit Service 724aca
      int val = 1;
Packit Service 724aca
      int y = __atomic_fetch_add(&x, val, __ATOMIC_RELAXED);
Packit Service 724aca
      int after_add = (int)x;
Packit Service 724aca
      return after_add == 1;
Packit Service 724aca
  ], [je_cv_gcc_u8_atomic_atomics])
Packit Service 724aca
  if test "x${je_cv_gcc_u8_atomic_atomics}" = "xyes" ; then
Packit Service 724aca
    AC_DEFINE([JEMALLOC_GCC_U8_ATOMIC_ATOMICS])
Packit Service 724aca
  fi
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
dnl Check for GCC-style __sync atomics.
Packit Service 724aca
Packit Service 724aca
JE_COMPILABLE([GCC __sync atomics], [
Packit Service 724aca
], [
Packit Service 724aca
    int x = 0;
Packit Service 724aca
    int before_add = __sync_fetch_and_add(&x, 1);
Packit Service 724aca
    int after_add = x;
Packit Service 724aca
    return (before_add == 0) && (after_add == 1);
Packit Service 724aca
], [je_cv_gcc_sync_atomics])
Packit Service 724aca
if test "x${je_cv_gcc_sync_atomics}" = "xyes" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_GCC_SYNC_ATOMICS])
Packit Service 724aca
Packit Service 724aca
  dnl check for 8-bit atomic support
Packit Service 724aca
  JE_COMPILABLE([GCC 8-bit __sync atomics], [
Packit Service 724aca
  ], [
Packit Service 724aca
      unsigned char x = 0;
Packit Service 724aca
      int before_add = __sync_fetch_and_add(&x, 1);
Packit Service 724aca
      int after_add = (int)x;
Packit Service 724aca
      return (before_add == 0) && (after_add == 1);
Packit Service 724aca
  ], [je_cv_gcc_u8_sync_atomics])
Packit Service 724aca
  if test "x${je_cv_gcc_u8_sync_atomics}" = "xyes" ; then
Packit Service 724aca
    AC_DEFINE([JEMALLOC_GCC_U8_SYNC_ATOMICS])
Packit Service 724aca
  fi
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
dnl Check for atomic(3) operations as provided on Darwin.
Packit Service 724aca
dnl We need this not for the atomic operations (which are provided above), but
Packit Service 724aca
dnl rather for the OS_unfair_lock type it exposes.
Packit Service 724aca
Packit Service 724aca
JE_COMPILABLE([Darwin OSAtomic*()], [
Packit Service 724aca
#include <libkern/OSAtomic.h>
Packit Service 724aca
#include <inttypes.h>
Packit Service 724aca
], [
Packit Service 724aca
	{
Packit Service 724aca
		int32_t x32 = 0;
Packit Service 724aca
		volatile int32_t *x32p = &x3;;
Packit Service 724aca
		OSAtomicAdd32(1, x32p);
Packit Service 724aca
	}
Packit Service 724aca
	{
Packit Service 724aca
		int64_t x64 = 0;
Packit Service 724aca
		volatile int64_t *x64p = &x6;;
Packit Service 724aca
		OSAtomicAdd64(1, x64p);
Packit Service 724aca
	}
Packit Service 724aca
], [je_cv_osatomic])
Packit Service 724aca
if test "x${je_cv_osatomic}" = "xyes" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_OSATOMIC], [ ])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
dnl Check for madvise(2).
Packit Service 724aca
Packit Service 724aca
JE_COMPILABLE([madvise(2)], [
Packit Service 724aca
#include <sys/mman.h>
Packit Service 724aca
], [
Packit Service 724aca
	madvise((void *)0, 0, 0);
Packit Service 724aca
], [je_cv_madvise])
Packit Service 724aca
if test "x${je_cv_madvise}" = "xyes" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_HAVE_MADVISE], [ ])
Packit Service 724aca
Packit Service 724aca
  dnl Check for madvise(..., MADV_FREE).
Packit Service 724aca
  JE_COMPILABLE([madvise(..., MADV_FREE)], [
Packit Service 724aca
#include <sys/mman.h>
Packit Service 724aca
], [
Packit Service 724aca
	madvise((void *)0, 0, MADV_FREE);
Packit Service 724aca
], [je_cv_madv_free])
Packit Service 724aca
  if test "x${je_cv_madv_free}" = "xyes" ; then
Packit Service 724aca
    AC_DEFINE([JEMALLOC_PURGE_MADVISE_FREE], [ ])
Packit Service 724aca
  elif test "x${je_cv_madvise}" = "xyes" ; then
Packit Service 724aca
    case "${host_cpu}" in i686|x86_64)
Packit Service 724aca
        case "${host}" in *-*-linux*)
Packit Service 724aca
            AC_DEFINE([JEMALLOC_PURGE_MADVISE_FREE], [ ])
Packit Service 724aca
            AC_DEFINE([JEMALLOC_DEFINE_MADVISE_FREE], [ ])
Packit Service 724aca
	    ;;
Packit Service 724aca
        esac
Packit Service 724aca
        ;;
Packit Service 724aca
    esac
Packit Service 724aca
  fi
Packit Service 724aca
Packit Service 724aca
  dnl Check for madvise(..., MADV_DONTNEED).
Packit Service 724aca
  JE_COMPILABLE([madvise(..., MADV_DONTNEED)], [
Packit Service 724aca
#include <sys/mman.h>
Packit Service 724aca
], [
Packit Service 724aca
	madvise((void *)0, 0, MADV_DONTNEED);
Packit Service 724aca
], [je_cv_madv_dontneed])
Packit Service 724aca
  if test "x${je_cv_madv_dontneed}" = "xyes" ; then
Packit Service 724aca
    AC_DEFINE([JEMALLOC_PURGE_MADVISE_DONTNEED], [ ])
Packit Service 724aca
  fi
Packit Service 724aca
Packit Service 724aca
  dnl Check for madvise(..., MADV_DO[NT]DUMP).
Packit Service 724aca
  JE_COMPILABLE([madvise(..., MADV_DO[[NT]]DUMP)], [
Packit Service 724aca
#include <sys/mman.h>
Packit Service 724aca
], [
Packit Service 724aca
	madvise((void *)0, 0, MADV_DONTDUMP);
Packit Service 724aca
	madvise((void *)0, 0, MADV_DODUMP);
Packit Service 724aca
], [je_cv_madv_dontdump])
Packit Service 724aca
  if test "x${je_cv_madv_dontdump}" = "xyes" ; then
Packit Service 724aca
    AC_DEFINE([JEMALLOC_MADVISE_DONTDUMP], [ ])
Packit Service 724aca
  fi
Packit Service 724aca
Packit Service 724aca
  dnl Check for madvise(..., MADV_[NO]HUGEPAGE).
Packit Service 724aca
  JE_COMPILABLE([madvise(..., MADV_[[NO]]HUGEPAGE)], [
Packit Service 724aca
#include <sys/mman.h>
Packit Service 724aca
], [
Packit Service 724aca
	madvise((void *)0, 0, MADV_HUGEPAGE);
Packit Service 724aca
	madvise((void *)0, 0, MADV_NOHUGEPAGE);
Packit Service 724aca
], [je_cv_thp])
Packit Service 724aca
case "${host_cpu}" in
Packit Service 724aca
  arm*)
Packit Service 724aca
    ;;
Packit Service 724aca
  *)
Packit Service 724aca
  if test "x${je_cv_thp}" = "xyes" ; then
Packit Service 724aca
    AC_DEFINE([JEMALLOC_HAVE_MADVISE_HUGE], [ ])
Packit Service 724aca
  fi
Packit Service 724aca
  ;;
Packit Service 724aca
esac
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
dnl Check for __builtin_clz() and __builtin_clzl().
Packit Service 724aca
Packit Service 724aca
AC_CACHE_CHECK([for __builtin_clz],
Packit Service 724aca
               [je_cv_builtin_clz],
Packit Service 724aca
               [AC_LINK_IFELSE([AC_LANG_PROGRAM([],
Packit Service 724aca
                                                [
Packit Service 724aca
                                                {
Packit Service 724aca
                                                        unsigned x = 0;
Packit Service 724aca
                                                        int y = __builtin_clz(x);
Packit Service 724aca
                                                }
Packit Service 724aca
                                                {
Packit Service 724aca
                                                        unsigned long x = 0;
Packit Service 724aca
                                                        int y = __builtin_clzl(x);
Packit Service 724aca
                                                }
Packit Service 724aca
                                                ])],
Packit Service 724aca
                               [je_cv_builtin_clz=yes],
Packit Service 724aca
                               [je_cv_builtin_clz=no])])
Packit Service 724aca
Packit Service 724aca
if test "x${je_cv_builtin_clz}" = "xyes" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_HAVE_BUILTIN_CLZ], [ ])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
dnl Check for os_unfair_lock operations as provided on Darwin.
Packit Service 724aca
Packit Service 724aca
JE_COMPILABLE([Darwin os_unfair_lock_*()], [
Packit Service 724aca
#include <os/lock.h>
Packit Service 724aca
#include <AvailabilityMacros.h>
Packit Service 724aca
], [
Packit Service 724aca
	#if MAC_OS_X_VERSION_MIN_REQUIRED < 101200
Packit Service 724aca
	#error "os_unfair_lock is not supported"
Packit Service 724aca
	#else
Packit Service 724aca
	os_unfair_lock lock = OS_UNFAIR_LOCK_INIT;
Packit Service 724aca
	os_unfair_lock_lock(&lock);
Packit Service 724aca
	os_unfair_lock_unlock(&lock);
Packit Service 724aca
	#endif
Packit Service 724aca
], [je_cv_os_unfair_lock])
Packit Service 724aca
if test "x${je_cv_os_unfair_lock}" = "xyes" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_OS_UNFAIR_LOCK], [ ])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
dnl Darwin-related configuration.
Packit Service 724aca
Packit Service 724aca
AC_ARG_ENABLE([zone-allocator],
Packit Service 724aca
  [AS_HELP_STRING([--disable-zone-allocator],
Packit Service 724aca
                  [Disable zone allocator for Darwin])],
Packit Service 724aca
[if test "x$enable_zone_allocator" = "xno" ; then
Packit Service 724aca
  enable_zone_allocator="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_zone_allocator="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[if test "x${abi}" = "xmacho"; then
Packit Service 724aca
  enable_zone_allocator="1"
Packit Service 724aca
fi
Packit Service 724aca
]
Packit Service 724aca
)
Packit Service 724aca
AC_SUBST([enable_zone_allocator])
Packit Service 724aca
Packit Service 724aca
if test "x${enable_zone_allocator}" = "x1" ; then
Packit Service 724aca
  if test "x${abi}" != "xmacho"; then
Packit Service 724aca
    AC_MSG_ERROR([--enable-zone-allocator is only supported on Darwin])
Packit Service 724aca
  fi
Packit Service 724aca
  AC_DEFINE([JEMALLOC_ZONE], [ ])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
dnl Use initial-exec TLS by default.
Packit Service 724aca
AC_ARG_ENABLE([initial-exec-tls],
Packit Service 724aca
  [AS_HELP_STRING([--disable-initial-exec-tls],
Packit Service 724aca
                  [Disable the initial-exec tls model])],
Packit Service 724aca
[if test "x$enable_initial_exec_tls" = "xno" ; then
Packit Service 724aca
  enable_initial_exec_tls="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_initial_exec_tls="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_initial_exec_tls="1"]
Packit Service 724aca
)
Packit Service 724aca
AC_SUBST([enable_initial_exec_tls])
Packit Service 724aca
Packit Service 724aca
if test "x${je_cv_tls_model}" = "xyes" -a \
Packit Service 724aca
       "x${enable_initial_exec_tls}" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_TLS_MODEL],
Packit Service 724aca
            [__attribute__((tls_model("initial-exec")))])
Packit Service 724aca
else
Packit Service 724aca
  AC_DEFINE([JEMALLOC_TLS_MODEL], [ ])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
dnl Enable background threads if possible.
Packit Service 724aca
Packit Service 724aca
if test "x${have_pthread}" = "x1" -a "x${je_cv_os_unfair_lock}" != "xyes" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_BACKGROUND_THREAD])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
dnl Check for glibc malloc hooks
Packit Service 724aca
Packit Service 724aca
JE_COMPILABLE([glibc malloc hook], [
Packit Service 724aca
#include <stddef.h>
Packit Service 724aca
Packit Service 724aca
extern void (* __free_hook)(void *ptr);
Packit Service 724aca
extern void *(* __malloc_hook)(size_t size);
Packit Service 724aca
extern void *(* __realloc_hook)(void *ptr, size_t size);
Packit Service 724aca
], [
Packit Service 724aca
  void *ptr = 0L;
Packit Service 724aca
  if (__malloc_hook) ptr = __malloc_hook(1);
Packit Service 724aca
  if (__realloc_hook) ptr = __realloc_hook(ptr, 2);
Packit Service 724aca
  if (__free_hook && ptr) __free_hook(ptr);
Packit Service 724aca
], [je_cv_glibc_malloc_hook])
Packit Service 724aca
if test "x${je_cv_glibc_malloc_hook}" = "xyes" ; then
Packit Service 724aca
  if test "x${JEMALLOC_PREFIX}" = "x" ; then
Packit Service 724aca
    AC_DEFINE([JEMALLOC_GLIBC_MALLOC_HOOK], [ ])
Packit Service 724aca
    wrap_syms="${wrap_syms} __free_hook __malloc_hook __realloc_hook"
Packit Service 724aca
  fi
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
JE_COMPILABLE([glibc memalign hook], [
Packit Service 724aca
#include <stddef.h>
Packit Service 724aca
Packit Service 724aca
extern void *(* __memalign_hook)(size_t alignment, size_t size);
Packit Service 724aca
], [
Packit Service 724aca
  void *ptr = 0L;
Packit Service 724aca
  if (__memalign_hook) ptr = __memalign_hook(16, 7);
Packit Service 724aca
], [je_cv_glibc_memalign_hook])
Packit Service 724aca
if test "x${je_cv_glibc_memalign_hook}" = "xyes" ; then
Packit Service 724aca
  if test "x${JEMALLOC_PREFIX}" = "x" ; then
Packit Service 724aca
    AC_DEFINE([JEMALLOC_GLIBC_MEMALIGN_HOOK], [ ])
Packit Service 724aca
    wrap_syms="${wrap_syms} __memalign_hook"
Packit Service 724aca
  fi
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
JE_COMPILABLE([pthreads adaptive mutexes], [
Packit Service 724aca
#include <pthread.h>
Packit Service 724aca
], [
Packit Service 724aca
  pthread_mutexattr_t attr;
Packit Service 724aca
  pthread_mutexattr_init(&attr);
Packit Service 724aca
  pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ADAPTIVE_NP);
Packit Service 724aca
  pthread_mutexattr_destroy(&attr);
Packit Service 724aca
], [je_cv_pthread_mutex_adaptive_np])
Packit Service 724aca
if test "x${je_cv_pthread_mutex_adaptive_np}" = "xyes" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_HAVE_PTHREAD_MUTEX_ADAPTIVE_NP], [ ])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
JE_CFLAGS_SAVE()
Packit Service 724aca
JE_CFLAGS_ADD([-D_GNU_SOURCE])
Packit Service 724aca
JE_CFLAGS_ADD([-Werror])
Packit Service 724aca
JE_CFLAGS_ADD([-herror_on_warning])
Packit Service 724aca
JE_COMPILABLE([strerror_r returns char with gnu source], [
Packit Service 724aca
#include <errno.h>
Packit Service 724aca
#include <stdio.h>
Packit Service 724aca
#include <stdlib.h>
Packit Service 724aca
#include <string.h>
Packit Service 724aca
], [
Packit Service 724aca
  char *buffer = (char *) malloc(100);
Packit Service 724aca
  char *error = strerror_r(EINVAL, buffer, 100);
Packit Service 724aca
  printf("%s\n", error);
Packit Service 724aca
], [je_cv_strerror_r_returns_char_with_gnu_source])
Packit Service 724aca
JE_CFLAGS_RESTORE()
Packit Service 724aca
if test "x${je_cv_strerror_r_returns_char_with_gnu_source}" = "xyes" ; then
Packit Service 724aca
  AC_DEFINE([JEMALLOC_STRERROR_R_RETURNS_CHAR_WITH_GNU_SOURCE], [ ])
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
dnl Check for typedefs, structures, and compiler characteristics.
Packit Service 724aca
AC_HEADER_STDBOOL
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
dnl Define commands that generate output files.
Packit Service 724aca
Packit Service 724aca
AC_CONFIG_COMMANDS([include/jemalloc/internal/public_symbols.txt], [
Packit Service 724aca
  f="${objroot}include/jemalloc/internal/public_symbols.txt"
Packit Service 724aca
  mkdir -p "${objroot}include/jemalloc/internal"
Packit Service 724aca
  cp /dev/null "${f}"
Packit Service 724aca
  for nm in `echo ${mangling_map} |tr ',' ' '` ; do
Packit Service 724aca
    n=`echo ${nm} |tr ':' ' ' |awk '{print $[]1}'`
Packit Service 724aca
    m=`echo ${nm} |tr ':' ' ' |awk '{print $[]2}'`
Packit Service 724aca
    echo "${n}:${m}" >> "${f}"
Packit Service 724aca
    dnl Remove name from public_syms so that it isn't redefined later.
Packit Service 724aca
    public_syms=`for sym in ${public_syms}; do echo "${sym}"; done |grep -v "^${n}\$" |tr '\n' ' '`
Packit Service 724aca
  done
Packit Service 724aca
  for sym in ${public_syms} ; do
Packit Service 724aca
    n="${sym}"
Packit Service 724aca
    m="${JEMALLOC_PREFIX}${sym}"
Packit Service 724aca
    echo "${n}:${m}" >> "${f}"
Packit Service 724aca
  done
Packit Service 724aca
], [
Packit Service 724aca
  srcdir="${srcdir}"
Packit Service 724aca
  objroot="${objroot}"
Packit Service 724aca
  mangling_map="${mangling_map}"
Packit Service 724aca
  public_syms="${public_syms}"
Packit Service 724aca
  JEMALLOC_PREFIX="${JEMALLOC_PREFIX}"
Packit Service 724aca
])
Packit Service 724aca
AC_CONFIG_COMMANDS([include/jemalloc/internal/private_symbols.awk], [
Packit Service 724aca
  f="${objroot}include/jemalloc/internal/private_symbols.awk"
Packit Service 724aca
  mkdir -p "${objroot}include/jemalloc/internal"
Packit Service 724aca
  export_syms=`for sym in ${public_syms}; do echo "${JEMALLOC_PREFIX}${sym}"; done; for sym in ${wrap_syms}; do echo "${sym}"; done;`
Packit Service 724aca
  "${srcdir}/include/jemalloc/internal/private_symbols.sh" "${SYM_PREFIX}" ${export_syms} > "${objroot}include/jemalloc/internal/private_symbols.awk"
Packit Service 724aca
], [
Packit Service 724aca
  srcdir="${srcdir}"
Packit Service 724aca
  objroot="${objroot}"
Packit Service 724aca
  public_syms="${public_syms}"
Packit Service 724aca
  wrap_syms="${wrap_syms}"
Packit Service 724aca
  SYM_PREFIX="${SYM_PREFIX}"
Packit Service 724aca
  JEMALLOC_PREFIX="${JEMALLOC_PREFIX}"
Packit Service 724aca
])
Packit Service 724aca
AC_CONFIG_COMMANDS([include/jemalloc/internal/private_symbols_jet.awk], [
Packit Service 724aca
  f="${objroot}include/jemalloc/internal/private_symbols_jet.awk"
Packit Service 724aca
  mkdir -p "${objroot}include/jemalloc/internal"
Packit Service 724aca
  export_syms=`for sym in ${public_syms}; do echo "jet_${sym}"; done; for sym in ${wrap_syms}; do echo "${sym}"; done;`
Packit Service 724aca
  "${srcdir}/include/jemalloc/internal/private_symbols.sh" "${SYM_PREFIX}" ${export_syms} > "${objroot}include/jemalloc/internal/private_symbols_jet.awk"
Packit Service 724aca
], [
Packit Service 724aca
  srcdir="${srcdir}"
Packit Service 724aca
  objroot="${objroot}"
Packit Service 724aca
  public_syms="${public_syms}"
Packit Service 724aca
  wrap_syms="${wrap_syms}"
Packit Service 724aca
  SYM_PREFIX="${SYM_PREFIX}"
Packit Service 724aca
])
Packit Service 724aca
AC_CONFIG_COMMANDS([include/jemalloc/internal/public_namespace.h], [
Packit Service 724aca
  mkdir -p "${objroot}include/jemalloc/internal"
Packit Service 724aca
  "${srcdir}/include/jemalloc/internal/public_namespace.sh" "${objroot}include/jemalloc/internal/public_symbols.txt" > "${objroot}include/jemalloc/internal/public_namespace.h"
Packit Service 724aca
], [
Packit Service 724aca
  srcdir="${srcdir}"
Packit Service 724aca
  objroot="${objroot}"
Packit Service 724aca
])
Packit Service 724aca
AC_CONFIG_COMMANDS([include/jemalloc/internal/public_unnamespace.h], [
Packit Service 724aca
  mkdir -p "${objroot}include/jemalloc/internal"
Packit Service 724aca
  "${srcdir}/include/jemalloc/internal/public_unnamespace.sh" "${objroot}include/jemalloc/internal/public_symbols.txt" > "${objroot}include/jemalloc/internal/public_unnamespace.h"
Packit Service 724aca
], [
Packit Service 724aca
  srcdir="${srcdir}"
Packit Service 724aca
  objroot="${objroot}"
Packit Service 724aca
])
Packit Service 724aca
AC_CONFIG_COMMANDS([include/jemalloc/jemalloc_protos_jet.h], [
Packit Service 724aca
  mkdir -p "${objroot}include/jemalloc"
Packit Service 724aca
  cat "${srcdir}/include/jemalloc/jemalloc_protos.h.in" | sed -e 's/@je_@/jet_/g' > "${objroot}include/jemalloc/jemalloc_protos_jet.h"
Packit Service 724aca
], [
Packit Service 724aca
  srcdir="${srcdir}"
Packit Service 724aca
  objroot="${objroot}"
Packit Service 724aca
])
Packit Service 724aca
AC_CONFIG_COMMANDS([include/jemalloc/jemalloc_rename.h], [
Packit Service 724aca
  mkdir -p "${objroot}include/jemalloc"
Packit Service 724aca
  "${srcdir}/include/jemalloc/jemalloc_rename.sh" "${objroot}include/jemalloc/internal/public_symbols.txt" > "${objroot}include/jemalloc/jemalloc_rename.h"
Packit Service 724aca
], [
Packit Service 724aca
  srcdir="${srcdir}"
Packit Service 724aca
  objroot="${objroot}"
Packit Service 724aca
])
Packit Service 724aca
AC_CONFIG_COMMANDS([include/jemalloc/jemalloc_mangle.h], [
Packit Service 724aca
  mkdir -p "${objroot}include/jemalloc"
Packit Service 724aca
  "${srcdir}/include/jemalloc/jemalloc_mangle.sh" "${objroot}include/jemalloc/internal/public_symbols.txt" je_ > "${objroot}include/jemalloc/jemalloc_mangle.h"
Packit Service 724aca
], [
Packit Service 724aca
  srcdir="${srcdir}"
Packit Service 724aca
  objroot="${objroot}"
Packit Service 724aca
])
Packit Service 724aca
AC_CONFIG_COMMANDS([include/jemalloc/jemalloc_mangle_jet.h], [
Packit Service 724aca
  mkdir -p "${objroot}include/jemalloc"
Packit Service 724aca
  "${srcdir}/include/jemalloc/jemalloc_mangle.sh" "${objroot}include/jemalloc/internal/public_symbols.txt" jet_ > "${objroot}include/jemalloc/jemalloc_mangle_jet.h"
Packit Service 724aca
], [
Packit Service 724aca
  srcdir="${srcdir}"
Packit Service 724aca
  objroot="${objroot}"
Packit Service 724aca
])
Packit Service 724aca
AC_CONFIG_COMMANDS([include/jemalloc/jemalloc.h], [
Packit Service 724aca
  mkdir -p "${objroot}include/jemalloc"
Packit Service 724aca
  "${srcdir}/include/jemalloc/jemalloc.sh" "${objroot}" > "${objroot}include/jemalloc/jemalloc${install_suffix}.h"
Packit Service 724aca
], [
Packit Service 724aca
  srcdir="${srcdir}"
Packit Service 724aca
  objroot="${objroot}"
Packit Service 724aca
  install_suffix="${install_suffix}"
Packit Service 724aca
])
Packit Service 724aca
Packit Service 724aca
dnl Process .in files.
Packit Service 724aca
AC_SUBST([cfghdrs_in])
Packit Service 724aca
AC_SUBST([cfghdrs_out])
Packit Service 724aca
AC_CONFIG_HEADERS([$cfghdrs_tup])
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
dnl Generate outputs.
Packit Service 724aca
Packit Service 724aca
AC_CONFIG_FILES([$cfgoutputs_tup config.stamp bin/jemalloc-config bin/jemalloc.sh bin/jeprof])
Packit Service 724aca
AC_SUBST([cfgoutputs_in])
Packit Service 724aca
AC_SUBST([cfgoutputs_out])
Packit Service 724aca
AC_OUTPUT
Packit Service 724aca
Packit Service 724aca
dnl ============================================================================
Packit Service 724aca
dnl Print out the results of configuration.
Packit Service 724aca
AC_MSG_RESULT([===============================================================================])
Packit Service 724aca
AC_MSG_RESULT([jemalloc version   : ${jemalloc_version}])
Packit Service 724aca
AC_MSG_RESULT([library revision   : ${rev}])
Packit Service 724aca
AC_MSG_RESULT([])
Packit Service 724aca
AC_MSG_RESULT([CONFIG             : ${CONFIG}])
Packit Service 724aca
AC_MSG_RESULT([CC                 : ${CC}])
Packit Service 724aca
AC_MSG_RESULT([CONFIGURE_CFLAGS   : ${CONFIGURE_CFLAGS}])
Packit Service 724aca
AC_MSG_RESULT([SPECIFIED_CFLAGS   : ${SPECIFIED_CFLAGS}])
Packit Service 724aca
AC_MSG_RESULT([EXTRA_CFLAGS       : ${EXTRA_CFLAGS}])
Packit Service 724aca
AC_MSG_RESULT([CPPFLAGS           : ${CPPFLAGS}])
Packit Service 724aca
AC_MSG_RESULT([CXX                : ${CXX}])
Packit Service 724aca
AC_MSG_RESULT([CONFIGURE_CXXFLAGS : ${CONFIGURE_CXXFLAGS}])
Packit Service 724aca
AC_MSG_RESULT([SPECIFIED_CXXFLAGS : ${SPECIFIED_CXXFLAGS}])
Packit Service 724aca
AC_MSG_RESULT([EXTRA_CXXFLAGS     : ${EXTRA_CXXFLAGS}])
Packit Service 724aca
AC_MSG_RESULT([LDFLAGS            : ${LDFLAGS}])
Packit Service 724aca
AC_MSG_RESULT([EXTRA_LDFLAGS      : ${EXTRA_LDFLAGS}])
Packit Service 724aca
AC_MSG_RESULT([DSO_LDFLAGS        : ${DSO_LDFLAGS}])
Packit Service 724aca
AC_MSG_RESULT([LIBS               : ${LIBS}])
Packit Service 724aca
AC_MSG_RESULT([RPATH_EXTRA        : ${RPATH_EXTRA}])
Packit Service 724aca
AC_MSG_RESULT([])
Packit Service 724aca
AC_MSG_RESULT([XSLTPROC           : ${XSLTPROC}])
Packit Service 724aca
AC_MSG_RESULT([XSLROOT            : ${XSLROOT}])
Packit Service 724aca
AC_MSG_RESULT([])
Packit Service 724aca
AC_MSG_RESULT([PREFIX             : ${PREFIX}])
Packit Service 724aca
AC_MSG_RESULT([BINDIR             : ${BINDIR}])
Packit Service 724aca
AC_MSG_RESULT([DATADIR            : ${DATADIR}])
Packit Service 724aca
AC_MSG_RESULT([INCLUDEDIR         : ${INCLUDEDIR}])
Packit Service 724aca
AC_MSG_RESULT([LIBDIR             : ${LIBDIR}])
Packit Service 724aca
AC_MSG_RESULT([MANDIR             : ${MANDIR}])
Packit Service 724aca
AC_MSG_RESULT([])
Packit Service 724aca
AC_MSG_RESULT([srcroot            : ${srcroot}])
Packit Service 724aca
AC_MSG_RESULT([abs_srcroot        : ${abs_srcroot}])
Packit Service 724aca
AC_MSG_RESULT([objroot            : ${objroot}])
Packit Service 724aca
AC_MSG_RESULT([abs_objroot        : ${abs_objroot}])
Packit Service 724aca
AC_MSG_RESULT([])
Packit Service 724aca
AC_MSG_RESULT([JEMALLOC_PREFIX    : ${JEMALLOC_PREFIX}])
Packit Service 724aca
AC_MSG_RESULT([JEMALLOC_PRIVATE_NAMESPACE])
Packit Service 724aca
AC_MSG_RESULT([                   : ${JEMALLOC_PRIVATE_NAMESPACE}])
Packit Service 724aca
AC_MSG_RESULT([install_suffix     : ${install_suffix}])
Packit Service 724aca
AC_MSG_RESULT([malloc_conf        : ${config_malloc_conf}])
Packit Service 724aca
AC_MSG_RESULT([documentation      : ${enable_doc}])
Packit Service 724aca
AC_MSG_RESULT([shared libs        : ${enable_shared}])
Packit Service 724aca
AC_MSG_RESULT([static libs        : ${enable_static}])
Packit Service 724aca
AC_MSG_RESULT([autogen            : ${enable_autogen}])
Packit Service 724aca
AC_MSG_RESULT([debug              : ${enable_debug}])
Packit Service 724aca
AC_MSG_RESULT([stats              : ${enable_stats}])
Packit Service 724aca
AC_MSG_RESULT([experimetal_smallocx : ${enable_experimental_smallocx}])
Packit Service 724aca
AC_MSG_RESULT([prof               : ${enable_prof}])
Packit Service 724aca
AC_MSG_RESULT([prof-libunwind     : ${enable_prof_libunwind}])
Packit Service 724aca
AC_MSG_RESULT([prof-libgcc        : ${enable_prof_libgcc}])
Packit Service 724aca
AC_MSG_RESULT([prof-gcc           : ${enable_prof_gcc}])
Packit Service 724aca
AC_MSG_RESULT([fill               : ${enable_fill}])
Packit Service 724aca
AC_MSG_RESULT([utrace             : ${enable_utrace}])
Packit Service 724aca
AC_MSG_RESULT([xmalloc            : ${enable_xmalloc}])
Packit Service 724aca
AC_MSG_RESULT([log                : ${enable_log}])
Packit Service 724aca
AC_MSG_RESULT([lazy_lock          : ${enable_lazy_lock}])
Packit Service 724aca
AC_MSG_RESULT([cache-oblivious    : ${enable_cache_oblivious}])
Packit Service 724aca
AC_MSG_RESULT([cxx                : ${enable_cxx}])
Packit Service 724aca
AC_MSG_RESULT([===============================================================================])