add flags, add function declaration

This commit is contained in:
Kirill Pinegin 2019-11-14 15:33:40 +03:00
parent e946d56ba0
commit f8dc519a04
3 changed files with 15 additions and 0 deletions

View file

@ -12,6 +12,7 @@ option(MI_USE_CXX "Use the C++ compiler to compile the library" OFF)
option(MI_SECURE "Use security mitigations (like guard pages and randomization)" OFF) option(MI_SECURE "Use security mitigations (like guard pages and randomization)" OFF)
option(MI_LOCAL_DYNAMIC_TLS "Use slightly slower, dlopen-compatible TLS mechanism (Unix)" OFF) option(MI_LOCAL_DYNAMIC_TLS "Use slightly slower, dlopen-compatible TLS mechanism (Unix)" OFF)
option(MI_BUILD_TESTS "Build test executables" ON) option(MI_BUILD_TESTS "Build test executables" ON)
option(MI_USER_CLEANUP "Enable mi_register_user_cleanup functionality" OFF)
set(mi_install_dir "lib/mimalloc-${mi_version}") set(mi_install_dir "lib/mimalloc-${mi_version}")
@ -71,6 +72,11 @@ if(MI_SECURE MATCHES "ON")
list(APPEND mi_defines MI_SECURE=2) list(APPEND mi_defines MI_SECURE=2)
endif() endif()
if(MI_USER_CLEANUP MATCHES "ON")
message(STATUS "Enable mi_register_user_cleanup functionality (MI_USER_CLEANUP=ON)")
list(APPEND mi_defines MI_USER_CLEANUP=1)
endif()
if(MI_SEE_ASM MATCHES "ON") if(MI_SEE_ASM MATCHES "ON")
message(STATUS "Generate assembly listings (MI_SEE_ASM=ON)") message(STATUS "Generate assembly listings (MI_SEE_ASM=ON)")
list(APPEND mi_cflags -save-temps) list(APPEND mi_cflags -save-temps)

View file

@ -29,6 +29,10 @@ terms of the MIT license. A copy of the license can be found in the file
#define MI_SECURE 0 #define MI_SECURE 0
#endif #endif
#if !defined(MI_USER_CLEANUP)
#define MI_USER_CLEANUP 0
#endif
// Define MI_DEBUG as 1 for basic assert checks and statistics // Define MI_DEBUG as 1 for basic assert checks and statistics
// set it to 2 to do internal asserts, // set it to 2 to do internal asserts,
// and to 3 to do extensive invariant checking. // and to 3 to do extensive invariant checking.

View file

@ -114,6 +114,11 @@ mi_decl_export void mi_register_deferred_free(mi_deferred_free_fun* deferred_fre
typedef void (mi_output_fun)(const char* msg); typedef void (mi_output_fun)(const char* msg);
mi_decl_export void mi_register_output(mi_output_fun* out) mi_attr_noexcept; mi_decl_export void mi_register_output(mi_output_fun* out) mi_attr_noexcept;
#if MI_USER_CLEANUP
typedef void (mi_cleanup_fun)(void* user_data, void* p, size_t size);
mi_decl_export void mi_register_user_cleanup(mi_cleanup_fun* out, void* user_data) mi_attr_noexcept;
#endif
mi_decl_export void mi_collect(bool force) mi_attr_noexcept; mi_decl_export void mi_collect(bool force) mi_attr_noexcept;
mi_decl_export int mi_version(void) mi_attr_noexcept; mi_decl_export int mi_version(void) mi_attr_noexcept;
mi_decl_export void mi_stats_reset(void) mi_attr_noexcept; mi_decl_export void mi_stats_reset(void) mi_attr_noexcept;