diff --git a/cpp/CHANGELOG.md b/cpp/CHANGELOG.md index 29539d929b..609cdded6a 100644 --- a/cpp/CHANGELOG.md +++ b/cpp/CHANGELOG.md @@ -17,6 +17,7 @@ Please mark all change in change log and use the ticket from JIRA. - MS-66 - Support time range query - MS-68 - Remove rocksdb from third-party - MS-70 - cmake: remove redundant libs in src +- MS-71 - cmake: fix faiss dependency ## Task diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index a1b78571f8..779876cbf7 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -38,6 +38,40 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.h.macro ${CMAKE_CURRENT_SOURC project(megasearch VERSION "${MEGASEARCH_VERSION}") project(vecwise_engine LANGUAGES CUDA CXX) +# Ensure that a default make is set +if("${MAKE}" STREQUAL "") + if(NOT MSVC) + find_program(MAKE make) + endif() +endif() + +set(GCC_VERSION 5.3.0) +set(GCC_DIR "${CMAKE_CURRENT_BINARY_DIR}/gcc") +set(GCC_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/gcc/gcc_build") +set(GCC_TAR_NAME "${GCC_BUILD_DIR}/gcc-${GCC_VERSION}.tar.gz") +if (NOT EXISTS ${GCC_TAR_NAME}) + file(MAKE_DIRECTORY ${GCC_BUILD_DIR}) + file(DOWNLOAD http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-${GCC_VERSION}/${GCC_TAR_NAME} + ${GCC_TAR_NAME}) + message(STATUS "Building GCC-${GCC_VERSION} from source") + execute_process( + COMMAND + "${CMAKE_COMMAND} -E tar -xf ${GCC_TAR_NAME}" + COMMAND + "./configure --prefix=${GCC_DIR} --with-local-prefix=${GCC_DIR} + --enable-languages=cxx,fortran + --enable-checking=release + --disable-bootstrap" + COMMAND + "${MAKE} -j4" + COMMAND + "${MAKE} install" + RESULT_VARIABLE _status + #OUTPUT_QUIET + #ERROR_QUIET + WORKING_DIRECTORY ${GCC_BUILD_DIR}) +endif () + set(MEGASEARCH_VERSION_MAJOR "${megasearch_VERSION_MAJOR}") set(MEGASEARCH_VERSION_MINOR "${megasearch_VERSION_MINOR}") set(MEGASEARCH_VERSION_PATCH "${megasearch_VERSION_PATCH}") diff --git a/cpp/cmake/ThirdPartyPackages.cmake b/cpp/cmake/ThirdPartyPackages.cmake index f42c279a8d..af062642fa 100644 --- a/cpp/cmake/ThirdPartyPackages.cmake +++ b/cpp/cmake/ThirdPartyPackages.cmake @@ -716,17 +716,23 @@ macro(build_faiss) ${FAISS_STATIC_LIB}) # DEPENDS # ${faiss_dependencies}) - ExternalProject_Add_StepDependencies(faiss_ep build openblas_ep) - ExternalProject_Add_StepDependencies(faiss_ep build lapack_ep) + + ExternalProject_Add_StepDependencies(faiss_ep build openblas_ep lapack_ep) file(MAKE_DIRECTORY "${FAISS_INCLUDE_DIR}") add_library(faiss STATIC IMPORTED) set_target_properties( faiss PROPERTIES IMPORTED_LOCATION "${FAISS_STATIC_LIB}" - INTERFACE_INCLUDE_DIRECTORIES "${FAISS_INCLUDE_DIR}") + INTERFACE_INCLUDE_DIRECTORIES "${FAISS_INCLUDE_DIR}" + INTERFACE_LINK_LIBRARIES "openblas;lapack" ) add_dependencies(faiss faiss_ep) + #add_dependencies(faiss openblas_ep) + #add_dependencies(faiss lapack_ep) + #target_link_libraries(faiss ${OPENBLAS_PREFIX}/lib) + #target_link_libraries(faiss ${LAPACK_PREFIX}/lib) + endmacro() if(MEGASEARCH_WITH_FAISS)