@@ -204,6 +204,7 @@ option(FLB_RUN_LDCONFIG "Enable execution of ldconfig after installation" No)
204204# Prefer system libraries if available
205205option (FLB_PREFER_SYSTEM_LIBS "Prefer system libraries" No )
206206option (FLB_PREFER_SYSTEM_LIB_BACKTRACE "Prefer the libbacktrace system library" ${FLB_PREFER_SYSTEM_LIBS} )
207+ option (FLB_PREFER_SYSTEM_LIB_JEMALLOC "Prefer the libjemalloc system library" ${FLB_PREFER_SYSTEM_LIBS} )
207208option (FLB_PREFER_SYSTEM_LIB_LUAJIT "Prefer the libluajit system library" ${FLB_PREFER_SYSTEM_LIBS} )
208209option (FLB_PREFER_SYSTEM_LIB_NGHTTP2 "Prefer the libnghttp2 system library" ${FLB_PREFER_SYSTEM_LIBS} )
209210
@@ -912,31 +913,41 @@ endif()
912913# Memory Allocator
913914# ================
914915if (FLB_JEMALLOC AND ${CMAKE_SYSTEM_NAME} MATCHES "Linux" )
915- FLB_DEFINITION(FLB_HAVE_JEMALLOC)
916- FLB_DEFINITION(JEMALLOC_MANGLE)
916+ if (FLB_PREFER_SYSTEM_LIB_JEMALLOC)
917+ find_package (PkgConfig)
918+ pkg_check_modules(JEMALLOC jemalloc>=5.0.0)
919+ endif ()
920+ if (JEMALLOC_FOUND)
921+ include_directories (${JEMALLOC_INCLUDE_DIRS} )
922+ link_directories (${JEMALLOC_LIBRARY_DIRS} )
923+ else ()
924+ FLB_DEFINITION(JEMALLOC_MANGLE)
917925
918- # Add support for options like page size, if empty we default it
919- if (NOT DEFINED FLB_JEMALLOC_OPTIONS OR "${FLB_JEMALLOC_OPTIONS} " STREQUAL "" )
920- set (FLB_JEMALLOC_OPTIONS "--with-lg-quantum=3" )
926+ # Add support for options like page size, if empty we default it
927+ if (NOT DEFINED FLB_JEMALLOC_OPTIONS OR "${FLB_JEMALLOC_OPTIONS} " STREQUAL "" )
928+ set (FLB_JEMALLOC_OPTIONS "--with-lg-quantum=3" )
929+ endif ()
930+ # Split into a list so CMake handles it correctly when passing to configure command
931+ separate_arguments (FLB_JEMALLOC_OPTIONS_LIST UNIX_COMMAND ${FLB_JEMALLOC_OPTIONS} )
932+ message (STATUS "jemalloc configure: ${FLB_JEMALLOC_OPTIONS_LIST} " )
933+
934+ # Link to Jemalloc as an external dependency
935+ set (FLB_LIBJEMALLOC_PATH "${CMAKE_CURRENT_BINARY_DIR} /lib/libjemalloc_pic.a" )
936+ ExternalProject_Add(jemalloc
937+ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /lib/jemalloc-5.3.0
938+ CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR} /lib/jemalloc-5.3.0/configure ${AUTOCONF_HOST_OPT} "${FLB_JEMALLOC_OPTIONS_LIST} " --prefix =<INSTALL_DIR>
939+ CFLAGS=-std=gnu99\ -Wall\ -pipe\ -g3\ -O3\ -funroll-loops
940+ BUILD_COMMAND ${EXTERNAL_BUILD_TOOL}
941+ BUILD_BYPRODUCTS ${FLB_LIBJEMALLOC_PATH}
942+ INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR} /
943+ INSTALL_COMMAND ${EXTERNAL_BUILD_TOOL} install_lib_static install_include)
944+ add_library (libjemalloc STATIC IMPORTED GLOBAL )
945+ set_target_properties (libjemalloc PROPERTIES IMPORTED_LOCATION ${FLB_LIBJEMALLOC_PATH} )
946+ add_dependencies (libjemalloc jemalloc)
947+ include_directories ("${CMAKE_BINARY_DIR} /include/" )
948+ set (JEMALLOC_LIBRARIES "libjemalloc" )
921949 endif ()
922- # Split into a list so CMake handles it correctly when passing to configure command
923- separate_arguments (FLB_JEMALLOC_OPTIONS_LIST UNIX_COMMAND ${FLB_JEMALLOC_OPTIONS} )
924- message (STATUS "jemalloc configure: ${FLB_JEMALLOC_OPTIONS_LIST} " )
925-
926- # Link to Jemalloc as an external dependency
927- set (FLB_LIBJEMALLOC_PATH "${CMAKE_CURRENT_BINARY_DIR} /lib/libjemalloc_pic.a" )
928- ExternalProject_Add(jemalloc
929- SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} /lib/jemalloc-5.3.0
930- CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR} /lib/jemalloc-5.3.0/configure ${AUTOCONF_HOST_OPT} "${FLB_JEMALLOC_OPTIONS_LIST} " --prefix =<INSTALL_DIR>
931- CFLAGS=-std=gnu99\ -Wall\ -pipe\ -g3\ -O3\ -funroll-loops
932- BUILD_COMMAND ${EXTERNAL_BUILD_TOOL}
933- BUILD_BYPRODUCTS ${FLB_LIBJEMALLOC_PATH}
934- INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR} /
935- INSTALL_COMMAND ${EXTERNAL_BUILD_TOOL} install_lib_static install_include)
936- add_library (libjemalloc STATIC IMPORTED GLOBAL )
937- set_target_properties (libjemalloc PROPERTIES IMPORTED_LOCATION ${FLB_LIBJEMALLOC_PATH} )
938- add_dependencies (libjemalloc jemalloc)
939- include_directories ("${CMAKE_BINARY_DIR} /include/" )
950+ FLB_DEFINITION(FLB_HAVE_JEMALLOC)
940951else ()
941952 FLB_OPTION(FLB_JEMALLOC OFF )
942953endif ()
0 commit comments