未验证 提交 fd7c2554 编写于 作者: X XuanYang-cn 提交者: GitHub

Optimize download & compile of mysqlpp (#3337)

* runable mysqlpp
Signed-off-by: Nyangxuan <xuan.yang@zilliz.com>

* rm not using comments
Signed-off-by: Nyangxuan <xuan.yang@zilliz.com>

* fix format
Signed-off-by: Nyangxuan <xuan.yang@zilliz.com>
Co-authored-by: Nyangxuan <xuan.yang@zilliz.com>
上级 81791fc8
......@@ -11,7 +11,6 @@
set(MILVUS_THIRDPARTY_DEPENDENCIES
MySQLPP
Prometheus
SQLite
fiu
......@@ -28,9 +27,7 @@ foreach (DEPENDENCY ${MILVUS_THIRDPARTY_DEPENDENCIES})
endforeach ()
macro(build_dependency DEPENDENCY_NAME)
if ("${DEPENDENCY_NAME}" STREQUAL "MySQLPP")
build_mysqlpp()
elseif ("${DEPENDENCY_NAME}" STREQUAL "Prometheus")
if ("${DEPENDENCY_NAME}" STREQUAL "Prometheus")
build_prometheus()
elseif ("${DEPENDENCY_NAME}" STREQUAL "SQLite")
build_sqlite()
......@@ -210,12 +207,6 @@ foreach (_VERSION_ENTRY ${TOOLCHAIN_VERSIONS_TXT})
endforeach ()
if (DEFINED ENV{MILVUS_MYSQLPP_URL})
set(MYSQLPP_SOURCE_URL "$ENV{MILVUS_MYSQLPP_URL}")
else ()
set(MYSQLPP_SOURCE_URL "https://tangentsoft.com/mysqlpp/releases/mysql++-${MYSQLPP_VERSION}.tar.gz")
endif ()
if (DEFINED ENV{MILVUS_PROMETHEUS_URL})
set(PROMETHEUS_SOURCE_URL "$ENV{PROMETHEUS_OPENBLAS_URL}")
else ()
......@@ -250,60 +241,6 @@ else ()
set(AWS_SOURCE_URL "https://github.com/aws/aws-sdk-cpp/archive/${AWS_VERSION}.tar.gz")
endif ()
# ----------------------------------------------------------------------
# MySQL++
macro(build_mysqlpp)
message(STATUS "Building MySQL++-${MYSQLPP_VERSION} from source")
set(MYSQLPP_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/mysqlpp_ep-prefix/src/mysqlpp_ep")
set(MYSQLPP_INCLUDE_DIR "${MYSQLPP_PREFIX}/include")
set(MYSQLPP_SHARED_LIB
"${MYSQLPP_PREFIX}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}mysqlpp${CMAKE_SHARED_LIBRARY_SUFFIX}")
set(MYSQLPP_CONFIGURE_ARGS
"--prefix=${MYSQLPP_PREFIX}"
"--enable-thread-check"
"CFLAGS=${EP_C_FLAGS}"
"CXXFLAGS=${EP_CXX_FLAGS}"
"LDFLAGS=-pthread")
ExternalProject_Add(mysqlpp_ep
URL
${MYSQLPP_SOURCE_URL}
${EP_LOG_OPTIONS}
URL_MD5
"cda38b5ecc0117de91f7c42292dd1e79"
CONFIGURE_COMMAND
"./configure"
${MYSQLPP_CONFIGURE_ARGS}
BUILD_COMMAND
${MAKE} ${MAKE_BUILD_ARGS}
BUILD_IN_SOURCE
1
BUILD_BYPRODUCTS
${MYSQLPP_SHARED_LIB})
file(MAKE_DIRECTORY "${MYSQLPP_INCLUDE_DIR}")
add_library(mysqlpp SHARED IMPORTED)
set_target_properties(
mysqlpp
PROPERTIES
IMPORTED_LOCATION "${MYSQLPP_SHARED_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${MYSQLPP_INCLUDE_DIR}")
add_dependencies(mysqlpp mysqlpp_ep)
endmacro()
if (MILVUS_WITH_MYSQLPP)
resolve_dependency(MySQLPP)
get_target_property(MYSQLPP_INCLUDE_DIR mysqlpp INTERFACE_INCLUDE_DIRECTORIES)
include_directories(SYSTEM "${MYSQLPP_INCLUDE_DIR}")
link_directories(SYSTEM ${MYSQLPP_PREFIX}/lib)
endif ()
# ----------------------------------------------------------------------
# Prometheus
......
......@@ -106,9 +106,6 @@ target_link_libraries( milvus_server PRIVATE ${SERVER_LIBS} )
install( TARGETS milvus_server DESTINATION bin )
install( FILES
${CMAKE_BINARY_DIR}/mysqlpp_ep-prefix/src/mysqlpp_ep/lib/${CMAKE_SHARED_LIBRARY_PREFIX}mysqlpp${CMAKE_SHARED_LIBRARY_SUFFIX}
${CMAKE_BINARY_DIR}/mysqlpp_ep-prefix/src/mysqlpp_ep/lib/${CMAKE_SHARED_LIBRARY_PREFIX}mysqlpp${CMAKE_SHARED_LIBRARY_SUFFIX}.3
${CMAKE_BINARY_DIR}/mysqlpp_ep-prefix/src/mysqlpp_ep/lib/${CMAKE_SHARED_LIBRARY_PREFIX}mysqlpp${CMAKE_SHARED_LIBRARY_SUFFIX}.3.2.4
${CMAKE_BINARY_DIR}/fiu_ep-prefix/src/fiu_ep/lib/${CMAKE_SHARED_LIBRARY_PREFIX}fiu${CMAKE_SHARED_LIBRARY_SUFFIX}
${CMAKE_BINARY_DIR}/fiu_ep-prefix/src/fiu_ep/lib/${CMAKE_SHARED_LIBRARY_PREFIX}fiu${CMAKE_SHARED_LIBRARY_SUFFIX}.0
${CMAKE_BINARY_DIR}/fiu_ep-prefix/src/fiu_ep/lib/${CMAKE_SHARED_LIBRARY_PREFIX}fiu${CMAKE_SHARED_LIBRARY_SUFFIX}.1.00
......
......@@ -59,3 +59,8 @@ endif()
if ( ENABLE_CPU_PROFILING )
add_subdirectory( profilers )
endif ()
# ****************************** Thirdparty mysqlpp ***************************************
if ( MILVUS_WITH_MYSQLPP )
add_subdirectory( mysqlpp )
endif ()
......@@ -13,9 +13,10 @@
if ( DEFINED ENV{MILVUS_CRC32C_URL} )
set( CRC32C_SOURCE_URL "$ENV{MILVUS_CRC32C_URL}" )
else()
set( CRC32C_SOURCE_URL "https://github.com/google/crc32c/archive/${CRC32C_VERSION}.zip" )
endif()
set( CRC32C_SOURCE_URL
"https://github.com/google/crc32c/archive/${CRC32C_VERSION}.zip")
message( STATUS "Building crc32c-master from source" )
FetchContent_Declare(
crc32c
......@@ -29,11 +30,10 @@ FetchContent_GetProperties( crc32c )
if ( NOT crc32c_POPULATED )
FetchContent_Populate( crc32c )
set (CRC32C_BUILD_TESTS CACHE BOOL OFF FORCE)
set (CRC32C_BUILD_BENCHMARKS CACHE BOOL OFF FORCE)
set (CRC32C_USE_GLOG CACHE BOOL OFF FORCE)
add_subdirectory( ${crc32c_SOURCE_DIR}
${crc32c_BINARY_DIR}
EXCLUDE_FROM_ALL )
endif()
\ No newline at end of file
set( CRC32C_BUILD_TESTS CACHE BOOL OFF FORCE )
set( CRC32C_BUILD_BENCHMARKS CACHE BOOL OFF FORCE )
set( CRC32C_USE_GLOG CACHE BOOL OFF FORCE )
add_subdirectory( ${crc32c_SOURCE_DIR}
${crc32c_BINARY_DIR}
EXCLUDE_FROM_ALL )
endif()
#-------------------------------------------------------------------------------
# Copyright (C) 2019-2020 Zilliz. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software distributed under the License
# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
# or implied. See the License for the specific language governing permissions and limitations under the License.
#-------------------------------------------------------------------------------
if ( DEFINED ENV{MILVUS_MYSQLPP_URL} )
set( MYSQLPP_SOURCE_URL "$ENV{MILVUS_MYSQLPP_URL}" )
else ()
set( MYSQLPP_SOURCE_URL "https://tangentsoft.com/mysqlpp/releases/mysql++-${MYSQLPP_VERSION}.tar.gz" )
endif ()
macro( build_mysqlpp )
message( STATUS "Building MySQL++-${MYSQLPP_VERSION} from source" )
ExternalProject_Add(
mysqlpp_ep
PREFIX ${CMAKE_BINARY_DIR}/3rdparty_download/mysqlpp-subbuild
DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/3rdparty_download/download
INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}
URL ${MYSQLPP_SOURCE_URL}
URL_MD5 "cda38b5ecc0117de91f7c42292dd1e79"
CONFIGURE_COMMAND <SOURCE_DIR>/configure
"--prefix=<INSTALL_DIR>"
"--enable-thread-check"
"CFLAGS=${EP_C_FLAGS}"
"CXXFLAGS=${EP_CXX_FLAGS}"
"LDFLAGS=-pthread"
"cc=${CCACHE_FOUND} ${CMAKE_C_COMPILER}"
"cxx=${CCACHE_FOUND} ${CMAKE_CXX_COMPILER}"
BUILD_COMMAND ${MAKE} ${MAKE_BUILD_ARGS}
INSTALL_COMMAND ${MAKE} install
BUILD_IN_SOURCE 1
${EP_LOG_OPTIONS} )
ExternalProject_Get_Property( mysqlpp_ep INSTALL_DIR )
if( NOT IS_DIRECTORY ${INSTALL_DIR}/include )
file( MAKE_DIRECTORY "${INSTALL_DIR}/include" )
endif()
add_library(mysqlpp SHARED IMPORTED)
set_target_properties( mysqlpp
PROPERTIES
IMPORTED_GLOBAL TRUE
IMPORTED_LOCATION ${INSTALL_DIR}/lib/libmysqlpp.so
INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include )
add_dependencies(mysqlpp mysqlpp_ep)
endmacro()
build_mysqlpp()
install( FILES ${INSTALL_DIR}/lib/libmysqlpp.so
${INSTALL_DIR}/lib/libmysqlpp.so.3
${INSTALL_DIR}/lib/libmysqlpp.so.3.2.4
DESTINATION lib )
......@@ -42,8 +42,8 @@ macro( build_libunwind )
"--prefix=<INSTALL_DIR>"
"--quiet"
"--disable-tests"
"cc=${CCACHE_FOUND} {CMAKE_C_COMPILER}"
"cxx=${CCACHE_FOUND} {CMAKE_CXX_COMPILER}"
"cc=${CCACHE_FOUND} ${CMAKE_C_COMPILER}"
"cxx=${CCACHE_FOUND} ${CMAKE_CXX_COMPILER}"
BUILD_COMMAND ${MAKE} ${MAKE_BUILD_ARGS}
INSTALL_COMMAND ${MAKE} install
${EP_LOG_OPTIONS} )
......@@ -78,8 +78,8 @@ macro( build_gperftools )
CONFIGURE_COMMAND <SOURCE_DIR>/configure
"--prefix=<INSTALL_DIR>"
"--quiet"
"cc=${CCACHE_FOUND} {CMAKE_C_COMPILER}"
"cxx=${CCACHE_FOUND} {CMAKE_CXX_COMPILER}"
"cc=${CCACHE_FOUND} ${CMAKE_C_COMPILER}"
"cxx=${CCACHE_FOUND} ${CMAKE_CXX_COMPILER}"
BUILD_COMMAND ${MAKE} ${MAKE_BUILD_ARGS}
INSTALL_COMMAND ${MAKE} install
${EP_LOG_OPTIONS} )
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册