mirror of https://github.com/microsoft/mimalloc
add cmake option MI_WIN_REDIRECT to be able to explicitly disable linking with mimalloc-redirect on windows; always OFF on ARM, fixes issue #591 and #590
This commit is contained in:
parent
c4663463d1
commit
d8dd297974
|
@ -15,6 +15,7 @@ option(MI_USE_CXX "Use the C++ compiler to compile the library (instea
|
||||||
option(MI_SEE_ASM "Generate assembly files" OFF)
|
option(MI_SEE_ASM "Generate assembly files" OFF)
|
||||||
option(MI_OSX_INTERPOSE "Use interpose to override standard malloc on macOS" ON)
|
option(MI_OSX_INTERPOSE "Use interpose to override standard malloc on macOS" ON)
|
||||||
option(MI_OSX_ZONE "Use malloc zone to override standard malloc on macOS" ON)
|
option(MI_OSX_ZONE "Use malloc zone to override standard malloc on macOS" ON)
|
||||||
|
option(MI_WIN_REDIRECT "Use redirection module ('mimalloc-redirect') on Windows if compiling mimalloc as a DLL" ON)
|
||||||
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_SHARED "Build shared library" ON)
|
option(MI_BUILD_SHARED "Build shared library" ON)
|
||||||
option(MI_BUILD_STATIC "Build static library" ON)
|
option(MI_BUILD_STATIC "Build static library" ON)
|
||||||
|
@ -105,6 +106,19 @@ if(MI_OVERRIDE)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
if (MI_WIN_REDIRECT)
|
||||||
|
if (MSVC_C_ARCHITECTURE_ID MATCHES "ARM")
|
||||||
|
message(STATUS "Cannot use redirection on Windows ARM (MI_WIN_REDIRECT=OFF)")
|
||||||
|
set(MI_WIN_REDIRECT OFF)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
if (NOT MI_WIN_REDIRECT)
|
||||||
|
# use a negative define for backward compatibility
|
||||||
|
list(APPEND mi_defines MI_WIN_NOREDIRECT=1)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
if(MI_SECURE)
|
if(MI_SECURE)
|
||||||
message(STATUS "Set full secure build (MI_SECURE=ON)")
|
message(STATUS "Set full secure build (MI_SECURE=ON)")
|
||||||
list(APPEND mi_defines MI_SECURE=4)
|
list(APPEND mi_defines MI_SECURE=4)
|
||||||
|
@ -323,8 +337,8 @@ if(MI_BUILD_SHARED)
|
||||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||||||
$<INSTALL_INTERFACE:${mi_install_incdir}>
|
$<INSTALL_INTERFACE:${mi_install_incdir}>
|
||||||
)
|
)
|
||||||
if(WIN32)
|
if(WIN32 AND MI_WIN_REDIRECT)
|
||||||
# On windows copy the mimalloc redirection dll too.
|
# On windows, link and copy the mimalloc redirection dll too.
|
||||||
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||||
set(MIMALLOC_REDIRECT_SUFFIX "32")
|
set(MIMALLOC_REDIRECT_SUFFIX "32")
|
||||||
else()
|
else()
|
||||||
|
|
|
@ -463,7 +463,7 @@ mi_decl_nodiscard bool mi_is_redirected(void) mi_attr_noexcept {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Communicate with the redirection module on Windows
|
// Communicate with the redirection module on Windows
|
||||||
#if defined(_WIN32) && defined(MI_SHARED_LIB)
|
#if defined(_WIN32) && defined(MI_SHARED_LIB) && !defined(MI_WIN_NOREDIRECT)
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue