diff --git a/internal/core/CMakeLists.txt b/internal/core/CMakeLists.txt index fa565d2fec..0b3afbe556 100644 --- a/internal/core/CMakeLists.txt +++ b/internal/core/CMakeLists.txt @@ -84,6 +84,7 @@ set( CMAKE_INSTALL_RPATH "/usr/lib" "${CMAKE_INSTALL_PREFIX}/lib" "${CMAKE_INSTA set( CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE ) # **************************** Dependencies **************************** +list( APPEND CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR}/conan ) include( ${CMAKE_BINARY_DIR}/conan/conanbuildinfo.cmake ) set( CONAN_DISABLE_CHECK_COMPILER ON ) conan_basic_setup( KEEP_RPATHS ) diff --git a/internal/core/conanfile.py b/internal/core/conanfile.py index 0aa7e0024b..c822e6c7e5 100644 --- a/internal/core/conanfile.py +++ b/internal/core/conanfile.py @@ -22,7 +22,7 @@ class MilvusConan(ConanFile): "libcurl/7.86.0", ) - generators = "cmake" + generators = ("cmake", "cmake_find_package") default_options = { "rocksdb:shared": True, "arrow:parquet": True, diff --git a/internal/core/thirdparty/knowhere/CMakeLists.txt b/internal/core/thirdparty/knowhere/CMakeLists.txt index 3cd1db5b84..47c9699212 100644 --- a/internal/core/thirdparty/knowhere/CMakeLists.txt +++ b/internal/core/thirdparty/knowhere/CMakeLists.txt @@ -11,90 +11,48 @@ # or implied. See the License for the specific language governing permissions and limitations under the License. #------------------------------------------------------------------------------- -set( KNOWHERE_VERSION v1.3.6 ) +set( KNOWHERE_SOURCE_VER v1.3.6 ) set( KNOWHERE_SOURCE_MD5 "e711e204a3a6c4918352d464c0b87793") if ( DEFINED ENV{MILVUS_KNOWHERE_URL} ) set( KNOWHERE_SOURCE_URL "$ENV{MILVUS_KNOWHERE_URL}" ) else () set( KNOWHERE_SOURCE_URL - "https://github.com/milvus-io/knowhere/archive/refs/tags/${KNOWHERE_VERSION}.tar.gz" ) + "https://github.com/milvus-io/knowhere/archive/refs/tags/${KNOWHERE_SOURCE_VER}.tar.gz" ) endif () -macro(build_knowhere) - message(STATUS "Building knowhere-${KNOWHERE_VERSION} from source") - set (KNOWHERE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}) +message(STATUS "Building knowhere-${KNOWHERE_SOURCE_VER} from source") +message(STATUS ${CMAKE_BUILD_TYPE}) - message(STATUS ${CMAKE_BUILD_TYPE}) - set(KNOWHERE_CMAKE_ARGS - ${EP_COMMON_CMAKE_ARGS} - -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - -DCMAKE_INSTALL_PREFIX=${KNOWHERE_INSTALL_PREFIX} - -DCMAKE_PREFIX_PATH=${CONAN_BOOST_ROOT} - ) - - if ( BUILD_DISK_ANN STREQUAL "ON" ) - set(KNOWHERE_CMAKE_ARGS - ${KNOWHERE_CMAKE_ARGS} - -DKNOWHERE_WITH_DISKANN=true) - else () - set(KNOWHERE_CMAKE_ARGS - ${KNOWHERE_CMAKE_ARGS} - -DKNOWHERE_WITH_DISKANN=false) - endif () - - externalproject_add(knowhere_ep - # GIT_REPOSITORY "https://github.com/milvus-io/knowhere.git" - # GIT_TAG main - URL ${KNOWHERE_SOURCE_URL} - URL_MD5 ${KNOWHERE_SOURCE_MD5} - CMAKE_ARGS ${KNOWHERE_CMAKE_ARGS} - BUILD_COMMAND ${MAKE} ${MAKE_BUILD_ARGS} - PREFIX ${CMAKE_BINARY_DIR}/3rdparty_download/knowhere-subbuild - BINARY_DIR knowhere-bin - INSTALL_DIR ${KNOWHERE_INSTALL_PREFIX} - ) - - ExternalProject_Get_Property(knowhere_ep INSTALL_DIR) - message(STATUS ${INSTALL_DIR}) - - if( NOT IS_DIRECTORY ${INSTALL_DIR}/include ) - file( MAKE_DIRECTORY "${INSTALL_DIR}/include" ) - endif() - - add_library(knowhere SHARED IMPORTED) - - if (MSYS) - set_target_properties( knowhere - PROPERTIES - IMPORTED_GLOBAL TRUE - IMPORTED_IMPLIB ${INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}knowhere${CMAKE_SHARED_LIBRARY_SUFFIX}.a - INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/${CMAKE_INSTALL_INCLUDEDIR}) - else () - set_target_properties( knowhere - PROPERTIES - IMPORTED_GLOBAL TRUE - IMPORTED_LOCATION ${INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}knowhere${CMAKE_SHARED_LIBRARY_SUFFIX} - INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/${CMAKE_INSTALL_INCLUDEDIR}) - endif () - - add_dependencies(knowhere knowhere_ep) -endmacro() - -set(KNOWHERE_SOURCE "AUTO") -if (KNOWHERE_SOURCE STREQUAL "AUTO") - find_package(knowhere) - message(STATUS "knowhere libraries: ${KNOWHERE_LIBRARIES}") - message(STATUS "knowhere found: ${KNOWHERE_FOUND}") - - if (KNOWHERE_FOUND) - add_library(knowhere) - else() - build_knowhere() - endif() -elseif (KNOWHERE_SOURCE STREQUAL "BUNDLED") - build_knowhere() -elseif (KNOWHERE_SOURCE STREQUAL "SYSTEM") - find_package(knowhere REQUIRED) - add_library(knowhere) +if ( BUILD_DISK_ANN STREQUAL "ON" ) + set(KNOWHERE_WITH_DISKANN ON CACHE BOOL "" FORCE ) +else () + set(KNOWHERE_WITH_DISKANN OFF CACHE BOOL "" FORCE ) endif () + +# BUILD_UNIT_TEST OFF will only affect knowhere +set( CMAKE_PREFIX_PATH ${CONAN_BOOST_ROOT} ) +set( BUILD_UNIT_TEST OFF ) +FetchContent_Declare( + knowhere + # GIT_REPOSITORY "https://github.com/milvus-io/knowhere.git" + # GIT_TAG main + URL ${KNOWHERE_SOURCE_URL} + URL_MD5 ${KNOWHERE_SOURCE_MD5} + SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/knowhere-src + BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/knowhere-build + DOWNLOAD_DIR ${THIRDPARTY_DOWNLOAD_PATH} ) + +FetchContent_GetProperties( knowhere ) +if ( NOT knowhere_POPULATED ) + FetchContent_Populate( knowhere ) + + # Adding the following target: + # knowhere + add_subdirectory( ${knowhere_SOURCE_DIR} + ${knowhere_BINARY_DIR} ) +endif() + +# get prometheus COMPILE_OPTIONS +get_property( var DIRECTORY "${knowhere_SOURCE_DIR}" PROPERTY COMPILE_OPTIONS ) +message( STATUS "knowhere src compile options: ${var}" )