未验证 提交 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 @@ ...@@ -11,7 +11,6 @@
set(MILVUS_THIRDPARTY_DEPENDENCIES set(MILVUS_THIRDPARTY_DEPENDENCIES
MySQLPP
Prometheus Prometheus
SQLite SQLite
fiu fiu
...@@ -28,9 +27,7 @@ foreach (DEPENDENCY ${MILVUS_THIRDPARTY_DEPENDENCIES}) ...@@ -28,9 +27,7 @@ foreach (DEPENDENCY ${MILVUS_THIRDPARTY_DEPENDENCIES})
endforeach () endforeach ()
macro(build_dependency DEPENDENCY_NAME) macro(build_dependency DEPENDENCY_NAME)
if ("${DEPENDENCY_NAME}" STREQUAL "MySQLPP") if ("${DEPENDENCY_NAME}" STREQUAL "Prometheus")
build_mysqlpp()
elseif ("${DEPENDENCY_NAME}" STREQUAL "Prometheus")
build_prometheus() build_prometheus()
elseif ("${DEPENDENCY_NAME}" STREQUAL "SQLite") elseif ("${DEPENDENCY_NAME}" STREQUAL "SQLite")
build_sqlite() build_sqlite()
...@@ -210,12 +207,6 @@ foreach (_VERSION_ENTRY ${TOOLCHAIN_VERSIONS_TXT}) ...@@ -210,12 +207,6 @@ foreach (_VERSION_ENTRY ${TOOLCHAIN_VERSIONS_TXT})
endforeach () 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}) if (DEFINED ENV{MILVUS_PROMETHEUS_URL})
set(PROMETHEUS_SOURCE_URL "$ENV{PROMETHEUS_OPENBLAS_URL}") set(PROMETHEUS_SOURCE_URL "$ENV{PROMETHEUS_OPENBLAS_URL}")
else () else ()
...@@ -250,60 +241,6 @@ else () ...@@ -250,60 +241,6 @@ else ()
set(AWS_SOURCE_URL "https://github.com/aws/aws-sdk-cpp/archive/${AWS_VERSION}.tar.gz") set(AWS_SOURCE_URL "https://github.com/aws/aws-sdk-cpp/archive/${AWS_VERSION}.tar.gz")
endif () 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 # Prometheus
......
...@@ -106,9 +106,6 @@ target_link_libraries( milvus_server PRIVATE ${SERVER_LIBS} ) ...@@ -106,9 +106,6 @@ target_link_libraries( milvus_server PRIVATE ${SERVER_LIBS} )
install( TARGETS milvus_server DESTINATION bin ) install( TARGETS milvus_server DESTINATION bin )
install( FILES 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}
${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}.0
${CMAKE_BINARY_DIR}/fiu_ep-prefix/src/fiu_ep/lib/${CMAKE_SHARED_LIBRARY_PREFIX}fiu${CMAKE_SHARED_LIBRARY_SUFFIX}.1.00 ${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() ...@@ -59,3 +59,8 @@ endif()
if ( ENABLE_CPU_PROFILING ) if ( ENABLE_CPU_PROFILING )
add_subdirectory( profilers ) add_subdirectory( profilers )
endif () endif ()
# ****************************** Thirdparty mysqlpp ***************************************
if ( MILVUS_WITH_MYSQLPP )
add_subdirectory( mysqlpp )
endif ()
...@@ -13,9 +13,10 @@ ...@@ -13,9 +13,10 @@
if ( DEFINED ENV{MILVUS_CRC32C_URL} ) if ( DEFINED ENV{MILVUS_CRC32C_URL} )
set( CRC32C_SOURCE_URL "$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() endif()
set( CRC32C_SOURCE_URL
"https://github.com/google/crc32c/archive/${CRC32C_VERSION}.zip")
message( STATUS "Building crc32c-master from source" ) message( STATUS "Building crc32c-master from source" )
FetchContent_Declare( FetchContent_Declare(
crc32c crc32c
...@@ -29,11 +30,10 @@ FetchContent_GetProperties( crc32c ) ...@@ -29,11 +30,10 @@ FetchContent_GetProperties( crc32c )
if ( NOT crc32c_POPULATED ) if ( NOT crc32c_POPULATED )
FetchContent_Populate( crc32c ) FetchContent_Populate( crc32c )
set (CRC32C_BUILD_TESTS CACHE BOOL OFF FORCE) set( CRC32C_BUILD_TESTS CACHE BOOL OFF FORCE )
set (CRC32C_BUILD_BENCHMARKS CACHE BOOL OFF FORCE) set( CRC32C_BUILD_BENCHMARKS CACHE BOOL OFF FORCE )
set (CRC32C_USE_GLOG CACHE BOOL OFF FORCE) set( CRC32C_USE_GLOG CACHE BOOL OFF FORCE )
add_subdirectory( ${crc32c_SOURCE_DIR} add_subdirectory( ${crc32c_SOURCE_DIR}
${crc32c_BINARY_DIR} ${crc32c_BINARY_DIR}
EXCLUDE_FROM_ALL ) EXCLUDE_FROM_ALL )
endif()
endif()
\ No newline at end of file
#-------------------------------------------------------------------------------
# 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 ) ...@@ -42,8 +42,8 @@ macro( build_libunwind )
"--prefix=<INSTALL_DIR>" "--prefix=<INSTALL_DIR>"
"--quiet" "--quiet"
"--disable-tests" "--disable-tests"
"cc=${CCACHE_FOUND} {CMAKE_C_COMPILER}" "cc=${CCACHE_FOUND} ${CMAKE_C_COMPILER}"
"cxx=${CCACHE_FOUND} {CMAKE_CXX_COMPILER}" "cxx=${CCACHE_FOUND} ${CMAKE_CXX_COMPILER}"
BUILD_COMMAND ${MAKE} ${MAKE_BUILD_ARGS} BUILD_COMMAND ${MAKE} ${MAKE_BUILD_ARGS}
INSTALL_COMMAND ${MAKE} install INSTALL_COMMAND ${MAKE} install
${EP_LOG_OPTIONS} ) ${EP_LOG_OPTIONS} )
...@@ -78,8 +78,8 @@ macro( build_gperftools ) ...@@ -78,8 +78,8 @@ macro( build_gperftools )
CONFIGURE_COMMAND <SOURCE_DIR>/configure CONFIGURE_COMMAND <SOURCE_DIR>/configure
"--prefix=<INSTALL_DIR>" "--prefix=<INSTALL_DIR>"
"--quiet" "--quiet"
"cc=${CCACHE_FOUND} {CMAKE_C_COMPILER}" "cc=${CCACHE_FOUND} ${CMAKE_C_COMPILER}"
"cxx=${CCACHE_FOUND} {CMAKE_CXX_COMPILER}" "cxx=${CCACHE_FOUND} ${CMAKE_CXX_COMPILER}"
BUILD_COMMAND ${MAKE} ${MAKE_BUILD_ARGS} BUILD_COMMAND ${MAKE} ${MAKE_BUILD_ARGS}
INSTALL_COMMAND ${MAKE} install INSTALL_COMMAND ${MAKE} install
${EP_LOG_OPTIONS} ) ${EP_LOG_OPTIONS} )
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册