Allow using system jemalloc for non-static build
This commit is contained in:
parent
f5adf7fece
commit
c44694bc23
|
@ -1,6 +1,6 @@
|
|||
|
||||
local default_deps_base='libsystemd-dev libboost-program-options-dev libcurl4-openssl-dev ' +
|
||||
'libsqlite3-dev libsodium-dev libssl-dev pkg-config autoconf make';
|
||||
'libsqlite3-dev libsodium-dev libssl-dev pkg-config autoconf make libjemalloc-dev';
|
||||
local default_deps_nocxx='libsodium-dev ' + default_deps_base; // libsodium-dev needs to be >= 1.0.18
|
||||
local default_deps='g++ ' + default_deps_nocxx; // g++ sometimes needs replacement
|
||||
local docker_base = 'registry.oxen.rocks/lokinet-ci-';
|
||||
|
|
|
@ -147,37 +147,45 @@ add_library(cpr::cpr ALIAS cpr)
|
|||
|
||||
|
||||
option(USE_JEMALLOC "Use jemalloc for memory allocations" ON)
|
||||
option(FORCE_JEMALLOC_SUBMODULE "force using jemalloc submodule" OFF)
|
||||
add_library(jemalloc INTERFACE)
|
||||
add_library(jemalloc::jemalloc ALIAS jemalloc)
|
||||
if (USE_JEMALLOC)
|
||||
set(jemalloc_cc "${CMAKE_C_COMPILER}")
|
||||
set(jemalloc_cxx "${CMAKE_CXX_COMPILER}")
|
||||
if(CMAKE_C_COMPILER_LAUNCHER)
|
||||
set(jemalloc_cc "${CMAKE_C_COMPILER_LAUNCHER} ${jemalloc_cc}")
|
||||
endif()
|
||||
if(CMAKE_CXX_COMPILER_LAUNCHER)
|
||||
set(jemalloc_cxx "${CMAKE_CXX_COMPILER_LAUNCHER} ${jemalloc_cxx}")
|
||||
if(NOT STATIC AND NOT FORCE_JEMALLOC_SUBMODULE)
|
||||
pkg_check_modules(JEMALLOC jemalloc>=5.2 IMPORTED_TARGET)
|
||||
endif()
|
||||
if(JEMALLOC_FOUND)
|
||||
target_link_libraries(jemalloc INTERFACE PkgConfig::JEMALLOC)
|
||||
else()
|
||||
set(jemalloc_cc "${CMAKE_C_COMPILER}")
|
||||
set(jemalloc_cxx "${CMAKE_CXX_COMPILER}")
|
||||
if(CMAKE_C_COMPILER_LAUNCHER)
|
||||
set(jemalloc_cc "${CMAKE_C_COMPILER_LAUNCHER} ${jemalloc_cc}")
|
||||
endif()
|
||||
if(CMAKE_CXX_COMPILER_LAUNCHER)
|
||||
set(jemalloc_cxx "${CMAKE_CXX_COMPILER_LAUNCHER} ${jemalloc_cxx}")
|
||||
endif()
|
||||
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(jemalloc_external
|
||||
PREFIX jemalloc
|
||||
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/jemalloc
|
||||
BINARY_DIR jemalloc
|
||||
CONFIGURE_COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR}/jemalloc && ./autogen.sh
|
||||
COMMAND cd ${CMAKE_CURRENT_BINARY_DIR}/jemalloc && ${CMAKE_CURRENT_SOURCE_DIR}/jemalloc/configure
|
||||
--enable-static --disable-shared --prefix=<INSTALL_DIR>
|
||||
"CC=${jemalloc_cc}" "CXX=${jemalloc_cxx}"
|
||||
EXCLUDE_FROM_ALL TRUE
|
||||
INSTALL_DIR jemalloc-install
|
||||
BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/jemalloc-install/lib/libjemalloc.a
|
||||
)
|
||||
add_library(jemalloc_a STATIC IMPORTED GLOBAL)
|
||||
add_dependencies(jemalloc_a jemalloc_external)
|
||||
set_target_properties(jemalloc_a PROPERTIES
|
||||
IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/jemalloc-install/lib/libjemalloc.a
|
||||
)
|
||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/jemalloc-install/include)
|
||||
target_link_libraries(jemalloc_a INTERFACE ${CMAKE_DL_LIBS})
|
||||
target_link_libraries(jemalloc INTERFACE jemalloc_a)
|
||||
include(ExternalProject)
|
||||
ExternalProject_Add(jemalloc_external
|
||||
PREFIX jemalloc
|
||||
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/jemalloc
|
||||
BINARY_DIR jemalloc
|
||||
CONFIGURE_COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR}/jemalloc && ./autogen.sh
|
||||
COMMAND cd ${CMAKE_CURRENT_BINARY_DIR}/jemalloc && ${CMAKE_CURRENT_SOURCE_DIR}/jemalloc/configure
|
||||
--enable-static --disable-shared --prefix=<INSTALL_DIR>
|
||||
"CC=${jemalloc_cc}" "CXX=${jemalloc_cxx}"
|
||||
EXCLUDE_FROM_ALL TRUE
|
||||
INSTALL_DIR jemalloc-install
|
||||
BUILD_BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/jemalloc-install/lib/libjemalloc.a
|
||||
)
|
||||
add_library(jemalloc_a STATIC IMPORTED GLOBAL)
|
||||
add_dependencies(jemalloc_a jemalloc_external)
|
||||
set_target_properties(jemalloc_a PROPERTIES
|
||||
IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/jemalloc-install/lib/libjemalloc.a
|
||||
)
|
||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/jemalloc-install/include)
|
||||
target_link_libraries(jemalloc_a INTERFACE ${CMAKE_DL_LIBS})
|
||||
target_link_libraries(jemalloc INTERFACE jemalloc_a)
|
||||
endif()
|
||||
endif()
|
||||
|
|
Loading…
Reference in New Issue