summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordaan <daan@effp.org>2022-10-30 12:49:29 -0700
committerdaan <daan@effp.org>2022-10-30 12:49:29 -0700
commit886fd7d1b8514452b04f3e92b3c835feed96376a (patch)
tree103a53739eaa56ce03d7596c56c02c7e680ded60
parentb48040e20aa908b4ed4ec13d6a48b0e29214470f (diff)
add cmakefile MI_VALGRIND option
-rw-r--r--CMakeLists.txt22
-rw-r--r--include/mimalloc-types.h2
2 files changed, 21 insertions, 3 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b702300..93fbb1c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,10 +6,11 @@ set(CMAKE_CXX_STANDARD 17)
option(MI_SECURE "Use full security mitigations (like guard pages, allocation randomization, double-free mitigation, and free-list corruption detection)" OFF)
option(MI_DEBUG_FULL "Use full internal heap invariant checking in DEBUG mode (expensive)" OFF)
-option(MI_PADDING "Enable padding to detect heap block overflow (used only in DEBUG mode)" ON)
+option(MI_PADDING "Enable padding to detect heap block overflow (used only in DEBUG mode or with Valgrind)" ON)
option(MI_OVERRIDE "Override the standard malloc interface (e.g. define entry points for malloc() etc)" ON)
option(MI_XMALLOC "Enable abort() call on memory allocation failure by default" OFF)
option(MI_SHOW_ERRORS "Show error and warning messages by default (only enabled by default in DEBUG mode)" OFF)
+option(MI_VALGRIND "Compile with Valgrind support (adds a small overhead)" OFF)
option(MI_USE_CXX "Use the C++ compiler to compile the library (instead of the C compiler)" OFF)
option(MI_SEE_ASM "Generate assembly files" OFF)
option(MI_OSX_INTERPOSE "Use interpose to override standard malloc on macOS" ON)
@@ -28,6 +29,7 @@ option(MI_CHECK_FULL "Use full internal invariant checking in DEBUG mode
option(MI_INSTALL_TOPLEVEL "Install directly into $CMAKE_INSTALL_PREFIX instead of PREFIX/lib/mimalloc-version (deprecated)" OFF)
option(MI_USE_LIBATOMIC "Explicitly link with -latomic (on older systems) (deprecated and detected automatically)" OFF)
+include(CheckIncludeFiles)
include(GNUInstallDirs)
include("cmake/mimalloc-config-version.cmake")
@@ -108,6 +110,18 @@ if(MI_SECURE)
list(APPEND mi_defines MI_SECURE=4)
endif()
+if(MI_VALGRIND)
+ CHECK_INCLUDE_FILES("valgrind/valgrind.h;valgrind/memcheck.h" MI_HAS_VALGRINDH)
+ if (NOT MI_HAS_VALGRINDH)
+ set(MI_VALGRIND OFF)
+ message(WARNING "Cannot find the 'valgrind/valgrind.h' and 'valgrind/memcheck.h' -- install valgrind first")
+ message(STATUS "Compile **without** Valgrind support (MI_VALGRIND=OFF)")
+ else()
+ message(STATUS "Compile with Valgrind support (MI_VALGRIND=ON)")
+ list(APPEND mi_defines MI_VALGRIND=1)
+ endif()
+endif()
+
if(MI_SEE_ASM)
message(STATUS "Generate assembly listings (MI_SEE_ASM=ON)")
list(APPEND mi_cflags -save-temps)
@@ -254,7 +268,11 @@ endif()
if(MI_SECURE)
set(mi_basename "mimalloc-secure")
else()
- set(mi_basename "mimalloc")
+ if(MI_VALGRIND)
+ set(mi_basename "mimalloc-valgrind")
+ else()
+ set(mi_basename "mimalloc")
+ endif()
endif()
string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LC)
diff --git a/include/mimalloc-types.h b/include/mimalloc-types.h
index 6c7c201..bca0ad6 100644
--- a/include/mimalloc-types.h
+++ b/include/mimalloc-types.h
@@ -30,7 +30,7 @@ terms of the MIT license. A copy of the license can be found in the file
// #define NDEBUG
// Define MI_VALGRIND to enable valgrind support
-#define MI_VALGRIND 1
+// #define MI_VALGRIND 1
// Define MI_STAT as 1 to maintain statistics; set it to 2 to have detailed statistics (but costs some performance).
// #define MI_STAT 1