mirror of
https://github.com/neovim/neovim.git
synced 2025-09-18 01:08:20 +00:00

Jemalloc will be used if the cmake option `USE_JEMALLOC` is enabled(which is the default). To avoid trouble with clang's ASAN, it is disabled by default if the `SANITIZE` option is enabled. Since jemalloc has thread cache for small objects, it fills the gap created by removing klib memory pools. The `xstrdup` funciton(memory.c) had to be reimplemented on top of `xmalloc` to make it work with a custom allocator.
20 lines
751 B
CMake
20 lines
751 B
CMake
ExternalProject_Add(jemalloc
|
|
PREFIX ${DEPS_BUILD_DIR}
|
|
URL ${JEMALLOC_URL}
|
|
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/jemalloc
|
|
DOWNLOAD_COMMAND ${CMAKE_COMMAND}
|
|
-DPREFIX=${DEPS_BUILD_DIR}
|
|
-DDOWNLOAD_DIR=${DEPS_DOWNLOAD_DIR}/jemalloc
|
|
-DURL=${JEMALLOC_URL}
|
|
-DEXPECTED_SHA256=${JEMALLOC_SHA256}
|
|
-DTARGET=jemalloc
|
|
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DownloadAndExtractFile.cmake
|
|
BUILD_IN_SOURCE 1
|
|
CONFIGURE_COMMAND sh ${DEPS_BUILD_DIR}/src/jemalloc/autogen.sh &&
|
|
${DEPS_BUILD_DIR}/src/jemalloc/configure --with-jemalloc-prefix=je_
|
|
--enable-cc-silence CC=${DEPS_C_COMPILER} --prefix=${DEPS_INSTALL_DIR}
|
|
BUILD_COMMAND ""
|
|
INSTALL_COMMAND ${MAKE_PRG} install_include install_lib)
|
|
|
|
list(APPEND THIRD_PARTY_DEPS jemalloc)
|