diff --git a/.gitmodules b/.gitmodules index 07e4bb2b9c..7d5515f8c5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,9 +4,6 @@ [submodule "src/connector/hivemq-tdengine-extension"] path = src/connector/hivemq-tdengine-extension url = git@github.com:taosdata/hivemq-tdengine-extension.git -[submodule "deps/jemalloc"] - path = deps/jemalloc - url = https://github.com/jemalloc/jemalloc [submodule "deps/TSZ"] path = deps/TSZ url = https://github.com/taosdata/TSZ.git diff --git a/cmake/cmake.options b/cmake/cmake.options index 51d6f53048..8b33353632 100644 --- a/cmake/cmake.options +++ b/cmake/cmake.options @@ -84,6 +84,12 @@ ELSE () ENDIF () ENDIF () +option( + JEMALLOC_ENABLED + "If build with jemalloc" + OFF + ) + option( BUILD_SANITIZER "If build sanitizer" diff --git a/cmake/jemalloc_CMakeLists.txt.in b/cmake/jemalloc_CMakeLists.txt.in new file mode 100644 index 0000000000..5c5ac5c626 --- /dev/null +++ b/cmake/jemalloc_CMakeLists.txt.in @@ -0,0 +1,14 @@ + +# jemalloc +ExternalProject_Add(jemalloc + GIT_REPOSITORY https://github.com/jemalloc/jemalloc.git + GIT_TAG 5.3.0 + SOURCE_DIR "${TD_CONTRIB_DIR}/jemalloc" + BINARY_DIR "" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "" + GIT_SHALLOW true + GIT_PROGRESS true + ) diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index 1887ba5365..384cffc08c 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -27,6 +27,10 @@ else () cat("${TD_SUPPORT_DIR}/taosadapter_CMakeLists.txt.in" ${CONTRIB_TMP_FILE}) endif() +if(TD_LINUX_64 AND JEMALLOC_ENABLED) + cat("${TD_SUPPORT_DIR}/jemalloc_CMakeLists.txt.in" ${CONTRIB_TMP_FILE}) +endif() + # pthread if(${BUILD_PTHREAD}) cat("${TD_SUPPORT_DIR}/pthread_CMakeLists.txt.in" ${CONTRIB_TMP_FILE}) @@ -399,6 +403,18 @@ if(${BUILD_ADDR2LINE}) endif(NOT ${TD_WINDOWS}) endif(${BUILD_ADDR2LINE}) +# jemalloc +IF (TD_LINUX_64 AND JEMALLOC_ENABLED) + include(ExternalProject) + ExternalProject_Add(jemalloc + PREFIX "jemalloc" + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/jemalloc + BUILD_IN_SOURCE 1 + CONFIGURE_COMMAND ./autogen.sh COMMAND ./configure --prefix=${CMAKE_BINARY_DIR}/build/ + BUILD_COMMAND ${MAKE} + ) + INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/build/include) +ENDIF () # ================================================================================================ # Build test diff --git a/source/dnode/mgmt/CMakeLists.txt b/source/dnode/mgmt/CMakeLists.txt index 581686ba90..45bef7f98e 100644 --- a/source/dnode/mgmt/CMakeLists.txt +++ b/source/dnode/mgmt/CMakeLists.txt @@ -14,4 +14,7 @@ target_include_directories( taosd PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/node_mgmt/inc" ) +IF (TD_LINUX_64 AND JEMALLOC_ENABLED) + add_dependencies(taosd jemalloc) +ENDIF () target_link_libraries(taosd dnode) diff --git a/tools/shell/CMakeLists.txt b/tools/shell/CMakeLists.txt index 2dc5870c4a..488b623f89 100644 --- a/tools/shell/CMakeLists.txt +++ b/tools/shell/CMakeLists.txt @@ -24,4 +24,7 @@ target_include_directories( PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/inc" ) +IF (TD_LINUX_64 AND JEMALLOC_ENABLED) + add_dependencies(taosd jemalloc) +ENDIF () SET_TARGET_PROPERTIES(shell PROPERTIES OUTPUT_NAME taos)