This is an automated email from the ASF dual-hosted git repository.
cmcfarlen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push:
new d7f27c4145 cmake: fix support for je/mi malloc and the mallocallocator
(#10407)
d7f27c4145 is described below
commit d7f27c4145686ac4996a09084746438be639b6f0
Author: Chris McFarlen <[email protected]>
AuthorDate: Mon Sep 25 16:59:12 2023 -0500
cmake: fix support for je/mi malloc and the mallocallocator (#10407)
* fix support for je/mi malloc and the mallocallocator
* also fix includes for jemiallocator
* fix target for linking jemalloc
* restore default off to jemalloc auto_option
---------
Co-authored-by: Chris McFarlen <[email protected]>
---
CMakeLists.txt | 7 +++++--
include/tscore/JeMiAllocator.h | 4 ++++
include/tscore/ink_config.h.cmake.in | 2 ++
include/tscore/ink_memory.h | 4 ++++
plugins/experimental/memory_profile/memory_profile.cc | 4 +---
5 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 928accafe3..623dfbf5a4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -51,12 +51,13 @@ include(AutoOptionHelpers)
auto_option(HWLOC FEATURE_VAR TS_USE_HWLOC PACKAGE_DEPENDS hwloc)
auto_option(JEMALLOC
FEATURE_VAR TS_HAS_JEMALLOC
+ DEFAULT OFF
PACKAGE_DEPENDS jemalloc
)
auto_option(MIMALLOC
FEATURE_VAR TS_HAS_MIMALLOC
- PACKAGE_DEPENDS mimalloc
DEFAULT OFF
+ PACKAGE_DEPENDS mimalloc
)
auto_option(LUAJIT PACKAGE_DEPENDS LuaJIT)
auto_option(UNWIND FEATURE_VAR TS_USE_REMOTE_UNWINDING PACKAGE_DEPENDS unwind)
@@ -67,6 +68,7 @@ option(BUILD_REGRESSION_TESTING "Build regression tests
(default ON)" ON)
option(BUILD_EXPERIMENTAL_PLUGINS "Build the experimental plugins (default
OFF)")
set(DEFAULT_STACK_SIZE 1048576 CACHE STRING "Default stack size (default
1048576)")
option(ENABLE_FAST_SDK "Use fast SDK APIs (default OFF)")
+option(ENABLE_MALLOC_ALLOCATOR "Use direct malloc allocator over freelist
allocator (default OFF)")
option(ENABLE_DOCS "Build docs (default OFF)")
option(ENABLE_DISK_FAILURE_TESTS "Build disk failure tests (enables AIO fault
injection, default OFF)" OFF)
if(ENABLE_DISK_FAILURE_TESTS)
@@ -249,7 +251,7 @@ if(TS_HAS_JEMALLOC AND TS_HAS_MIMALLOC)
endif()
if(TS_HAS_JEMALLOC)
- link_libraries(jemalloc)
+ link_libraries(jemalloc::jemalloc)
elseif(TS_HAS_MIMALLOC)
link_libraries(mimalloc)
endif()
@@ -278,6 +280,7 @@ if(ENABLE_ASAN)
add_link_options(-fsanitize=address)
endif()
+set(TS_USE_MALLOC_ALLOCATOR ${ENABLE_MALLOC_ALLOCATOR})
find_package(ZLIB REQUIRED)
# ncurses is used in traffic_top
diff --git a/include/tscore/JeMiAllocator.h b/include/tscore/JeMiAllocator.h
index b7b35ee4bb..3976778d0b 100644
--- a/include/tscore/JeMiAllocator.h
+++ b/include/tscore/JeMiAllocator.h
@@ -32,7 +32,11 @@
#include <mutex>
#if TS_HAS_JEMALLOC
+#if __has_include(<jemalloc/jemalloc.h>)
#include <jemalloc/jemalloc.h>
+#else
+#include <jemalloc.h>
+#endif
#if (JEMALLOC_VERSION_MAJOR == 0)
#error jemalloc has bogus version
#endif
diff --git a/include/tscore/ink_config.h.cmake.in
b/include/tscore/ink_config.h.cmake.in
index 7ab4ce20b9..9c44ba14e9 100644
--- a/include/tscore/ink_config.h.cmake.in
+++ b/include/tscore/ink_config.h.cmake.in
@@ -176,6 +176,7 @@ const int DEFAULT_STACKSIZE = @DEFAULT_STACK_SIZE@;
#cmakedefine01 TS_HAS_IN6_IS_ADDR_UNSPECIFIED
#cmakedefine01 TS_HAS_IP_TOS
#cmakedefine01 TS_HAS_JEMALLOC
+#cmakedefine01 TS_HAS_MIMALLOC
#cmakedefine01 TS_HAS_PROFILER
#cmakedefine01 TS_HAS_QUICHE
#cmakedefine01 TS_HAS_SO_MARK
@@ -190,6 +191,7 @@ const int DEFAULT_STACKSIZE = @DEFAULT_STACK_SIZE@;
#cmakedefine01 TS_USE_HWLOC
#cmakedefine01 TS_USE_KQUEUE
#cmakedefine01 TS_USE_LINUX_IO_URING
+#cmakedefine01 TS_USE_MALLOC_ALLOCATOR
#cmakedefine01 TS_USE_POSIX_CAP
#cmakedefine01 TS_USE_QUIC
#cmakedefine01 TS_USE_REMOTE_UNWINDING
diff --git a/include/tscore/ink_memory.h b/include/tscore/ink_memory.h
index 3dbac7b75a..a7acbbc3f4 100644
--- a/include/tscore/ink_memory.h
+++ b/include/tscore/ink_memory.h
@@ -49,7 +49,11 @@
#endif
#if TS_HAS_JEMALLOC
+#if __has_include(<jemalloc/jemalloc.h>)
#include <jemalloc/jemalloc.h>
+#else
+#include <jemalloc.h>
+#endif
#elif TS_HAS_MIMALLOC
#include <mimalloc.h>
#elif HAVE_MALLOC_H
diff --git a/plugins/experimental/memory_profile/memory_profile.cc
b/plugins/experimental/memory_profile/memory_profile.cc
index b9c49923a4..c8e146b859 100644
--- a/plugins/experimental/memory_profile/memory_profile.cc
+++ b/plugins/experimental/memory_profile/memory_profile.cc
@@ -33,9 +33,7 @@
#include <cstring>
#include <cerrno>
#include <tscore/ink_config.h>
-#if TS_HAS_JEMALLOC
-#include <jemalloc/jemalloc.h>
-#endif
+#include <tscore/ink_memory.h>
#define PLUGIN_NAME "memory_profile"