From 2241c9770e98667adbadc00f320d53073d23576a Mon Sep 17 00:00:00 2001 From: cyberslack_lee Date: Mon, 17 Jul 2023 12:31:33 +0800 Subject: [PATCH] [cmake] add rocksdb third party cache new (#54646) * fix * fix * fix * fix --- cmake/external/rocksdb.cmake | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/cmake/external/rocksdb.cmake b/cmake/external/rocksdb.cmake index f08eb4c15a0..69a5c240cc5 100644 --- a/cmake/external/rocksdb.cmake +++ b/cmake/external/rocksdb.cmake @@ -16,6 +16,9 @@ include(ExternalProject) # find_package(jemalloc REQUIRED) +set(ROCKSDB_SOURCE_DIR ${PADDLE_SOURCE_DIR}/third_party/rocksdb) +set(ROCKSDB_TAG 6.19.fb) + set(JEMALLOC_INCLUDE_DIR ${THIRD_PARTY_PATH}/install/jemalloc/include) set(JEMALLOC_LIBRARIES ${THIRD_PARTY_PATH}/install/jemalloc/lib/libjemalloc_pic.a) @@ -48,6 +51,29 @@ set(ROCKSDB_CMAKE_C_FLAGS ) include_directories(${ROCKSDB_INCLUDE_DIR}) +file(GLOB ROCKSDB_SOURCE_FILE_LIST ${ROCKSDB_SOURCE_DIR}) +list(LENGTH ROCKSDB_SOURCE_FILE_LIST RES_LEN) +if(RES_LEN EQUAL 0) + execute_process( + COMMAND ${GIT_EXECUTABLE} clone -b ${ROCKSDB_TAG} + "https://github.com/Thunderbrook/rocksdb" ${ROCKSDB_SOURCE_DIR}) +else() + # check git tag + execute_process( + COMMAND ${GIT_EXECUTABLE} describe --abbrev=6 --always --tags + OUTPUT_VARIABLE VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET + WORKING_DIRECTORY ${ROCKSDB_SOURCE_DIR}) + if(NOT ${VERSION} STREQUAL ${ROCKSDB_TAG}) + file(REMOVE_RECURSE ${ROCKSDB_PREFIX_DIR}) + file(REMOVE_RECURSE ${ROCKSDB_INSTALL_DIR}) + message( + WARNING "rocksdb version is not ${VERSION}, checkout to ${ROCKSDB_TAG}") + execute_process(COMMAND ${GIT_EXECUTABLE} checkout ${ROCKSDB_TAG} + WORKING_DIRECTORY ${ROCKSDB_SOURCE_DIR}) + endif() +endif() + set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -pthread -Wl,--no-as-needed -ldl -lrt -lz") if(WITH_ARM) @@ -63,8 +89,7 @@ ExternalProject_Add( extern_rocksdb ${EXTERNAL_PROJECT_LOG_ARGS} PREFIX ${ROCKSDB_PREFIX_DIR} - GIT_REPOSITORY "https://github.com/Thunderbrook/rocksdb" - GIT_TAG 6.19.fb + SOURCE_DIR ${ROCKSDB_SOURCE_DIR} UPDATE_COMMAND "" PATCH_COMMAND ${ROCKSDB_PATCH_COMMAND} CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} @@ -81,10 +106,9 @@ ExternalProject_Add( -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} INSTALL_COMMAND mkdir -p ${ROCKSDB_INSTALL_DIR}/lib/ && cp - ${ROCKSDB_PREFIX_DIR}/src/extern_rocksdb/librocksdb.a ${ROCKSDB_LIBRARIES} - && cp -r ${ROCKSDB_PREFIX_DIR}/src/extern_rocksdb/include + ${ROCKSDB_PREFIX_DIR}/src/extern_rocksdb-build/librocksdb.a + ${ROCKSDB_LIBRARIES} && cp -r ${ROCKSDB_SOURCE_DIR}/include ${ROCKSDB_INSTALL_DIR}/ - BUILD_IN_SOURCE 1 BUILD_BYPRODUCTS ${ROCKSDB_LIBRARIES}) add_library(rocksdb STATIC IMPORTED GLOBAL) -- GitLab