summaryrefslogtreecommitdiffstats
path: root/m4/lnav_with_jemalloc.m4
diff options
context:
space:
mode:
Diffstat (limited to 'm4/lnav_with_jemalloc.m4')
-rw-r--r--m4/lnav_with_jemalloc.m481
1 files changed, 81 insertions, 0 deletions
diff --git a/m4/lnav_with_jemalloc.m4 b/m4/lnav_with_jemalloc.m4
new file mode 100644
index 0000000..99103eb
--- /dev/null
+++ b/m4/lnav_with_jemalloc.m4
@@ -0,0 +1,81 @@
+dnl -------------------------------------------------------- -*- autoconf -*-
+dnl Licensed to the Apache Software Foundation (ASF) under one or more
+dnl contributor license agreements. See the NOTICE file distributed with
+dnl this work for additional information regarding copyright ownership.
+dnl The ASF licenses this file to You under the Apache License, Version 2.0
+dnl (the "License"); you may not use this file except in compliance with
+dnl the License. You may obtain a copy of the License at
+dnl
+dnl http://www.apache.org/licenses/LICENSE-2.0
+dnl
+dnl Unless required by applicable law or agreed to in writing, software
+dnl distributed under the License is distributed on an "AS IS" BASIS,
+dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+dnl See the License for the specific language governing permissions and
+dnl limitations under the License.
+
+dnl
+dnl lnav_with_jemalloc.m4: lnav's jemalloc autoconf macros
+dnl
+dnl
+AC_DEFUN([LNAV_WITH_JEMALLOC], [
+enable_jemalloc=no
+AC_ARG_WITH([jemalloc],
+ [AS_HELP_STRING([--with-jemalloc=DIR],[use a specific jemalloc library])],
+[
+ if test "$withval" != "no"; then
+ enable_jemalloc=yes
+ modify_env_variables=no
+ case "$withval" in
+ yes)
+ AC_MSG_NOTICE([Checking for jemalloc libs])
+ ;;
+ *)
+ jemalloc_include="$withval/include"
+ jemalloc_ldflags="$withval/lib"
+ modify_env_variables="yes"
+ AC_MSG_NOTICE([Checking for jemalloc libs in $withval])
+ ;;
+ esac
+ fi
+])
+
+jemalloch=0
+if test "$enable_jemalloc" != "no"; then
+ saved_ldflags=$LDFLAGS
+ saved_cppflags=$CPPFLAGS
+ saved_libtool_link_flags=$LIBTOOL_LINK_FLAGS
+ jemalloc_have_headers=0
+ jemalloc_have_libs=0
+
+ if test "$modify_env_variables" != "no"; then
+ LNAV_ADDTO(CPPFLAGS, [-I${jemalloc_include}])
+ LNAV_ADDTO(LDFLAGS, [-L${jemalloc_ldflags}])
+ LNAV_ADDTO(LIBTOOL_LINK_FLAGS, [-R${jemalloc_ldflags}])
+ fi
+ # On Darwin, jemalloc symbols are prefixed with je_. Search for that first,
+ # then fall back to unadorned symbols.
+ AC_SEARCH_LIBS([je_malloc_stats_print], [jemalloc], [jemalloc_have_libs=1],
+ [AC_SEARCH_LIBS([malloc_stats_print], [jemalloc], [jemalloc_have_libs=1])]
+ )
+ if test "$jemalloc_have_libs" != "0"; then
+ AC_MSG_NOTICE([Checking for jemalloc includes])
+ AC_CHECK_HEADERS(jemalloc/jemalloc.h, [jemalloc_have_headers=1])
+ if test "$jemalloc_have_headers" != "0"; then
+ jemalloch=1
+ LNAV_ADDTO(LIBS, [-ljemalloc])
+ else
+ AC_MSG_WARN([jemalloc headers not found])
+ fi
+ else
+ AC_MSG_WARN([jemalloc libs not found])
+ fi
+ if test "$jemalloc_have_libs" = "0"; then
+ CPPFLAGS=$saved_cppflags
+ LDFLAGS=$saved_ldflags
+ LIBTOOL_LINK_FLAGS=$saved_libtool_link_flags
+ AC_MSG_WARN([jemalloc not found])
+ fi
+fi
+AC_SUBST(jemalloch)
+])dnl