diff --git a/.gitignore b/.gitignore index cc2b16af..9d84f9e6 100644 --- a/.gitignore +++ b/.gitignore @@ -60,6 +60,8 @@ venv/ **/knowhere/swigknowhere.py wheelhouse/* +**/thirdparty/cardinal + *.bin CMakeUserPresets.json diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index c5b2e0fa..00000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "thirdparty/cardinal"] - path = thirdparty/cardinal - url = https://github.com/zilliztech/cardinal.git diff --git a/CMakeLists.txt b/CMakeLists.txt index d03b86d5..90bcda21 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -113,9 +113,10 @@ knowhere_file_glob(GLOB_RECURSE KNOWHERE_SRCS src/common/*.cc src/index/*.cc set(KNOWHERE_LINKER_LIBS "") + if(WITH_CARDINAL) add_definitions(-DKNOWHERE_WITH_CARDINAL) - include(thirdparty/cardinal/know/libcardinal.cmake) + include(cmake/libs/libcardinal.cmake) endif() if(WITH_DISKANN) diff --git a/cmake/libs/libcardinal.cmake b/cmake/libs/libcardinal.cmake new file mode 100644 index 00000000..b5201785 --- /dev/null +++ b/cmake/libs/libcardinal.cmake @@ -0,0 +1,30 @@ +set(CARDINAL_VERSION master) +set(CARDINAL_REPO_URL "https://github.com/zilliztech/cardinal.git") + +set(CARDINAL_REPO_DIR "${CMAKE_SOURCE_DIR}/thirdparty/cardinal") + +message(STATUS "Build Cardinal-${CARDINAL_VERSION}") + +if (NOT EXISTS "${CARDINAL_REPO_DIR}/.git") + execute_process(COMMAND git clone ${CARDINAL_REPO_URL} ${CARDINAL_REPO_DIR} + RESULT_VARIABLE CARDINAL_CLONE_RESULT + OUTPUT_VARIABLE CARDINAL_CLONE_OUTPUT + ERROR_VARIABLE CARDINAL_CLONE_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE) + if (NOT CARDINAL_CLONE_RESULT EQUAL "0") + message(FATAL_ERROR "Failed to clone cardinal: ${CARDINAL_CLONE_ERROR}") + else() + execute_process(COMMAND git -C ${CARDINAL_REPO_DIR} checkout ${CARDINAL_VERSION} + RESULT_VARIABLE CARDINAL_CHECKOUT_RESULT + OUTPUT_VARIABLE CARDINAL_CHECKOUT_OUTPUT + ERROR_VARIABLE CARDINAL_CHECKOUT_ERROR + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE) + if (NOT CARDINAL_CHECKOUT_RESULT EQUAL "0") + message(FATAL_ERROR "Failed to checkout cardinal: ${CARDINAL_CHECKOUT_ERROR}") + endif() + endif() +endif() + +include(${CARDINAL_REPO_DIR}/know/libcardinal.cmake) diff --git a/thirdparty/cardinal b/thirdparty/cardinal deleted file mode 160000 index a60b0007..00000000 --- a/thirdparty/cardinal +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a60b000718973476c59e977e9650b8525b8df684