Blame configure.ac

Packit Service 724aca
#
Packit Service 724aca
#  Copyright (C) 2014 - 2019 Intel Corporation.
Packit Service 724aca
#  All rights reserved.
Packit Service 724aca
#
Packit Service 724aca
#  Redistribution and use in source and binary forms, with or without
Packit Service 724aca
#  modification, are permitted provided that the following conditions are met:
Packit Service 724aca
#  1. Redistributions of source code must retain the above copyright notice(s),
Packit Service 724aca
#     this list of conditions and the following disclaimer.
Packit Service 724aca
#  2. Redistributions in binary form must reproduce the above copyright notice(s),
Packit Service 724aca
#     this list of conditions and the following disclaimer in the documentation
Packit Service 724aca
#     and/or other materials provided with the distribution.
Packit Service 724aca
#
Packit Service 724aca
#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY EXPRESS
Packit Service 724aca
#  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
Packit Service 724aca
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
Packit Service 724aca
#  EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
Packit Service 724aca
#  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
Packit Service 724aca
#  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
Packit Service 724aca
#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
Packit Service 724aca
#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
Packit Service 724aca
#  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
Packit Service 724aca
#  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Packit Service 724aca
#
Packit Service 724aca
Packit Service 724aca
#                                               -*- Autoconf -*-
Packit Service 724aca
# Process this file with autoconf to produce a configure script.
Packit Service 724aca
Packit Service 724aca
AC_PREREQ([2.63])
Packit Service 724aca
AC_INIT([memkind],m4_esyscmd([tr -d '\n' < VERSION]))
Packit Service 724aca
Packit Service 724aca
AC_CONFIG_MACRO_DIR([m4])
Packit Service 724aca
AC_CONFIG_HEADERS([config.h])
Packit Service 724aca
AC_CONFIG_SRCDIR([memkind.spec.mk])
Packit Service 724aca
Packit Service 724aca
AM_INIT_AUTOMAKE([-Wall -Werror foreign 1.11 silent-rules subdir-objects parallel-tests tar-pax])
Packit Service 724aca
AM_SILENT_RULES([yes])
Packit Service 724aca
Packit Service 724aca
# Checks for programs and libraries.
Packit Service 724aca
m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
Packit Service 724aca
AC_PROG_CXX
Packit Service 724aca
AC_PROG_CC
Packit Service 724aca
AC_OPENMP
Packit Service 724aca
AC_CHECK_LIB(numa, numa_available, [], [AC_MSG_ERROR([libnuma is required dependency])])
Packit Service 724aca
AX_PTHREAD([LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" CC="$PTHREAD_CC"],
Packit Service 724aca
           [AC_MSG_ERROR([pthreads are required dependency])])
Packit Service 724aca
Packit Service 724aca
AM_PROG_CC_C_O
Packit Service 724aca
Packit Service 724aca
#============================tls===============================================
Packit Service 724aca
# Check for thread local storage support
Packit Service 724aca
AC_ARG_ENABLE([tls],
Packit Service 724aca
  [AS_HELP_STRING([--enable-tls], [Enable thread-local storage (__thread keyword)])],
Packit Service 724aca
[if test "x$enable_tls" = "xyes" ; then
Packit Service 724aca
  enable_tls="1"
Packit Service 724aca
else
Packit Service 724aca
  enable_tls="0"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_tls="0"]
Packit Service 724aca
)
Packit Service 724aca
if test "x${enable_tls}" = "x1" ; then
Packit Service 724aca
AC_MSG_CHECKING([for TLS support])
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 = 1234;
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
fi
Packit Service 724aca
if test "x${enable_tls}" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([MEMKIND_TLS], [ ], [Enables TLS usage for mapping arenas to threads])
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([enable_tls])
Packit Service 724aca
Packit Service 724aca
#============================decorators========================================
Packit Service 724aca
AC_ARG_ENABLE([decorators],
Packit Service 724aca
  [AS_HELP_STRING([--enable-decorators], [Enable decorators])],
Packit Service 724aca
[if test "x$enable_decorators" = "xyes" ; then
Packit Service 724aca
  enable_decorators="1"
Packit Service 724aca
else
Packit Service 724aca
  enable_decorators="0"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_decorators="0"]
Packit Service 724aca
)
Packit Service 724aca
if test "x${enable_decorators}" = "x1" ; then
Packit Service 724aca
  AC_DEFINE([MEMKIND_DECORATION_ENABLED], [ ], [Enables decorators])
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([enable_decorators])
Packit Service 724aca
Packit Service 724aca
#============================debug=============================================
Packit Service 724aca
AC_ARG_ENABLE([debug],
Packit Service 724aca
  [AS_HELP_STRING([--enable-debug], [Build debugging code and compile with -O0 -g])],
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([MEMKIND_DEBUG], [ ], [Enables code for debugging])
Packit Service 724aca
  CFLAGS="$CFLAGS -O0 -g"
Packit Service 724aca
  CXXFLAGS="$CXXFLAGS -O0 -g"
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([enable_debug])
Packit Service 724aca
Packit Service 724aca
#============================gcov==============================================
Packit Service 724aca
AC_ARG_ENABLE([gcov],
Packit Service 724aca
  [AS_HELP_STRING([--enable-gcov], [Build code with gcov instructions])],
Packit Service 724aca
[if test "x$enable_gcov" = "xno" ; then
Packit Service 724aca
  enable_gcov="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_gcov="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_gcov="0"]
Packit Service 724aca
)
Packit Service 724aca
if test "x$enable_gcov" = "x1" ; then
Packit Service 724aca
  CFLAGS="$CFLAGS -O0 -fprofile-arcs -ftest-coverage"
Packit Service 724aca
  CXXFLAGS="$CXXFLAGS -O0 -fprofile-arcs -ftest-coverage"
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([enable_gcov])
Packit Service 724aca
Packit Service 724aca
#============================secure_flags======================================
Packit Service 724aca
AC_ARG_ENABLE([secure],
Packit Service 724aca
  [AS_HELP_STRING([--enable-secure], [Build library with security enchantments])],
Packit Service 724aca
[if test "x$enable_secure" = "xno" ; then
Packit Service 724aca
  enable_secure="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_secure="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_secure="1"]
Packit Service 724aca
)
Packit Service 724aca
Packit Service 724aca
AC_SUBST([enable_secure])
Packit Service 724aca
Packit Service 724aca
#============================tcache_max_size_class======================
Packit Service 724aca
Packit Service 724aca
tcache_max_size_class=12;
Packit Service 724aca
AC_DEFINE_UNQUOTED([JEMALLOC_TCACHE_CLASS], $tcache_max_size_class,
Packit Service 724aca
  [Maximum size class (log base 2) to cache in jemalloc tcache])
Packit Service 724aca
Packit Service 724aca
AC_SUBST(tcache_max_size_class)
Packit Service 724aca
Packit Service 724aca
#============================auto_arenas================================
Packit Service 724aca
auto_arenas=256;
Packit Service 724aca
AC_DEFINE_UNQUOTED([ARENA_LIMIT_DEFAULT_KIND], $auto_arenas,
Packit Service 724aca
  [Maximum number of automatic managed arenas by jemalloc (used by MEMKIND_DEFAULT)])
Packit Service 724aca
Packit Service 724aca
AC_SUBST(auto_arenas)
Packit Service 724aca
Packit Service 724aca
#============================arena_limit=======================================
Packit Service 724aca
arena_limit=256;
Packit Service 724aca
AC_ARG_VAR(ARENA_LIMIT,
Packit Service 724aca
  [Upper bound for number of arenas per kind, if set to 0 then no limit]
Packit Service 724aca
)
Packit Service 724aca
if test "$ARENA_LIMIT" != "" ; then
Packit Service 724aca
  arena_limit=$ARENA_LIMIT;
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
AC_DEFINE_UNQUOTED([ARENA_LIMIT_PER_KIND], $arena_limit, [Upper bound for number of arenas per kind])
Packit Service 724aca
Packit Service 724aca
#============================memkind_prefix=======================================
Packit Service 724aca
memkind_prefix=jemk_;
Packit Service 724aca
AC_ARG_VAR(MEMKIND_PREFIX,
Packit Service 724aca
  [Prefix used for all jemalloc public API under memkind, default value jemk_]
Packit Service 724aca
)
Packit Service 724aca
if test "$MEMKIND_PREFIX" != "" ; then
Packit Service 724aca
  memkind_prefix=$MEMKIND_PREFIX;
Packit Service 724aca
fi
Packit Service 724aca
Packit Service 724aca
AC_SUBST(memkind_prefix)
Packit Service 724aca
Packit Service 724aca
#===============================daxctl=========================================
Packit Service 724aca
AC_ARG_ENABLE([daxctl],
Packit Service 724aca
  [AS_HELP_STRING([--enable-daxctl], [Build library with daxctl support])],
Packit Service 724aca
[if test "x$enable_daxctl" = "xno" ; then
Packit Service 724aca
  enable_daxctl="0"
Packit Service 724aca
else
Packit Service 724aca
  enable_daxctl="1"
Packit Service 724aca
fi
Packit Service 724aca
],
Packit Service 724aca
[enable_daxctl="1"]
Packit Service 724aca
)
Packit Service 724aca
if test "x$enable_daxctl" = "x1" ; then
Packit Service 724aca
    AC_CHECK_LIB(daxctl, daxctl_dev_get_memory, [daxctl_kmem=yes], [daxctl_kmem=no])
Packit Service 724aca
fi
Packit Service 724aca
if test $daxctl_kmem = "yes" ; then
Packit Service 724aca
    AC_DEFINE([MEMKIND_DAXCTL_KMEM], [1], [Automatic recognition of PMEM as system memory in MEMKIND_DAX_KMEM])
Packit Service 724aca
    AC_SUBST(DAXCTL_LIBS, [-ldaxctl])
Packit Service 724aca
    LDFLAGS="$LDFLAGS -ldaxctl"
Packit Service 724aca
fi
Packit Service 724aca
AC_SUBST([enable_daxctl])
Packit Service 724aca
Packit Service 724aca
#============================cxx11=============================================
Packit Service 724aca
Packit Service 724aca
AX_CXX_COMPILE_STDCXX_11([noext], [optional])
Packit Service 724aca
AM_CONDITIONAL([HAVE_CXX11], [test "x$HAVE_CXX11" = x1])
Packit Service 724aca
Packit Service 724aca
LT_PREREQ([2.2])
Packit Service 724aca
LT_INIT
Packit Service 724aca
Packit Service 724aca
AC_CONFIG_FILES([Makefile memkind.pc])
Packit Service 724aca
Packit Service 724aca
AC_OUTPUT
Packit Service 724aca
AC_MSG_RESULT([=================================================================================])
Packit Service 724aca
AC_MSG_RESULT([
Packit Service 724aca
               Memkind version $VERSION])
Packit Service 724aca
if test $daxctl_kmem = "yes" ; then
Packit Service 724aca
AC_MSG_RESULT([
Packit Service 724aca
               Automatic recognition of PMEM NUMA in MEMKIND_DAX_KMEM is enabled])
Packit Service 724aca
else
Packit Service 724aca
AC_MSG_RESULT([
Packit Service 724aca
               Automatic recognition of PMEM NUMA in MEMKIND_DAX_KMEM is disabled
Packit Service 724aca
               To enable this feature please install libdaxctl-devel v66 or later
Packit Service 724aca
               and run configure again])
Packit Service 724aca
fi
Packit Service 724aca
AC_MSG_RESULT([=================================================================================])