diff --git a/CMakeLists.txt b/CMakeLists.txt index ca8542fbf..e79a38349 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -214,11 +214,12 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-register") endif() +MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-deprecated-copy" DEBUG RELEASE RELWITHDEBINFO MINSIZEREL) MY_CHECK_AND_SET_COMPILER_FLAG("-Werror -Wall") SET (ENGINE_LDFLAGS "-Wl,--no-as-needed -Wl,--add-needed") SET (ENGINE_DT_LIB datatypes) -SET (ENGINE_COMMON_LIBS messageqcpp loggingcpp configcpp idbboot ${Boost_LIBRARIES} xml2 pthread rt libmysql_client ${ENGINE_DT_LIB}) +SET (ENGINE_COMMON_LIBS messageqcpp loggingcpp configcpp idbboot Boost::thread xml2 pthread rt libmysql_client ${ENGINE_DT_LIB}) SET (ENGINE_OAM_LIBS oamcpp) SET (ENGINE_BRM_LIBS brm idbdatafile cacheutils rwlock ${ENGINE_OAM_LIBS} ${ENGINE_COMMON_LIBS}) SET (ENGINE_EXEC_LIBS joblist execplan windowfunction joiner rowgroup funcexp udfsdk regr dataconvert common compress querystats querytele thrift threadpool ${ENGINE_BRM_LIBS}) @@ -317,7 +318,7 @@ SET (ENGINE_UTILS_UDFSDK_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/utils/udfsdk" SET (ENGINE_DEFAULT_INCLUDES ${CMAKE_CURRENT_BINARY_DIR} "." "../" "../../" ${SERVER_BUILD_INCLUDE_DIR}) -SET (ENGINE_COMMON_INCLUDES ${ENGINE_DEFAULT_INCLUDES} ${Boost_INCLUDE_DIR} ${LIBXML2_INCLUDE_DIR} ${ENGINE_UTILS_MESSAGEQCPP_INCLUDE} ${ENGINE_WE_SHARED_INCLUDE} ${ENGINE_UTILS_IDBDATAFILE_INCLUDE} ${ENGINE_UTILS_LOGGINGCPP_INCLUDE} ${ENGINE_UTILS_CONFIGCPP_INCLUDE} ${ENGINE_UTILS_COMPRESS_INCLUDE} ${ENGINE_VERSIONING_BRM_INCLUDE} ${ENGINE_UTILS_ROWGROUP_INCLUDE} ${ENGINE_UTILS_COMMON_INCLUDE} ${ENGINE_UTILS_DATACONVERT_INCLUDE} ${ENGINE_UTILS_RWLOCK_INCLUDE} ${ENGINE_UTILS_FUNCEXP_INCLUDE} ${ENGINE_OAMAPPS_ALARMMANAGER_INCLUDE} ${ENGINE_UTILS_INCLUDE} ${ENGINE_OAM_OAMCPP_INCLUDE} ${ENGINE_DBCON_DDLPKGPROC_INCLUDE} ${ENGINE_DBCON_DDLPKG_INCLUDE} ${ENGINE_DBCON_EXECPLAN_INCLUDE} ${ENGINE_UTILS_STARTUP_INCLUDE} ${ENGINE_DBCON_JOBLIST_INCLUDE} ${ENGINE_WE_WRAPPER_INCLUDE} ${ENGINE_WE_SERVER_INCLUDE} ${ENGINE_DBCON_DMLPKG_INCLUDE} ${ENGINE_WE_CLIENT_INCLUDE} ${ENGINE_DBCON_DMLPKGPROC_INCLUDE} ${ENGINE_UTILS_CACHEUTILS_INCLUDE} ${ENGINE_UTILS_MYSQLCL_INCLUDE} ${ENGINE_UTILS_QUERYTELE_INCLUDE} ${ENGINE_UTILS_THRIFT_INCLUDE} ${ENGINE_UTILS_JOINER_INCLUDE} ${ENGINE_UTILS_THREADPOOL_INCLUDE} ${ENGINE_UTILS_BATCHLDR_INCLUDE} ${ENGINE_UTILS_DDLCLEANUP_INCLUDE} ${ENGINE_UTILS_QUERYSTATS_INCLUDE} ${ENGINE_WE_CONFIGCPP_INCLUDE} ${ENGINE_SERVER_SQL_INCLUDE} ${ENGINE_SERVER_INCLUDE_INCLUDE} ${ENGINE_SERVER_PCRE_INCLUDE} ${ENGINE_SERVER_WSREP_API_INCLUDE} ${ENGINE_SERVER_WSREP_INCLUDE} ${ENGINE_UTILS_UDFSDK_INCLUDE} ${ENGINE_UTILS_LIBMYSQL_CL_INCLUDE} ${ENGINE_DATATYPES_INCLUDE}) +SET (ENGINE_COMMON_INCLUDES ${ENGINE_DEFAULT_INCLUDES} ${Boost_INCLUDE_DIRS} ${LIBXML2_INCLUDE_DIR} ${ENGINE_UTILS_MESSAGEQCPP_INCLUDE} ${ENGINE_WE_SHARED_INCLUDE} ${ENGINE_UTILS_IDBDATAFILE_INCLUDE} ${ENGINE_UTILS_LOGGINGCPP_INCLUDE} ${ENGINE_UTILS_CONFIGCPP_INCLUDE} ${ENGINE_UTILS_COMPRESS_INCLUDE} ${ENGINE_VERSIONING_BRM_INCLUDE} ${ENGINE_UTILS_ROWGROUP_INCLUDE} ${ENGINE_UTILS_COMMON_INCLUDE} ${ENGINE_UTILS_DATACONVERT_INCLUDE} ${ENGINE_UTILS_RWLOCK_INCLUDE} ${ENGINE_UTILS_FUNCEXP_INCLUDE} ${ENGINE_OAMAPPS_ALARMMANAGER_INCLUDE} ${ENGINE_UTILS_INCLUDE} ${ENGINE_OAM_OAMCPP_INCLUDE} ${ENGINE_DBCON_DDLPKGPROC_INCLUDE} ${ENGINE_DBCON_DDLPKG_INCLUDE} ${ENGINE_DBCON_EXECPLAN_INCLUDE} ${ENGINE_UTILS_STARTUP_INCLUDE} ${ENGINE_DBCON_JOBLIST_INCLUDE} ${ENGINE_WE_WRAPPER_INCLUDE} ${ENGINE_WE_SERVER_INCLUDE} ${ENGINE_DBCON_DMLPKG_INCLUDE} ${ENGINE_WE_CLIENT_INCLUDE} ${ENGINE_DBCON_DMLPKGPROC_INCLUDE} ${ENGINE_UTILS_CACHEUTILS_INCLUDE} ${ENGINE_UTILS_MYSQLCL_INCLUDE} ${ENGINE_UTILS_QUERYTELE_INCLUDE} ${ENGINE_UTILS_THRIFT_INCLUDE} ${ENGINE_UTILS_JOINER_INCLUDE} ${ENGINE_UTILS_THREADPOOL_INCLUDE} ${ENGINE_UTILS_BATCHLDR_INCLUDE} ${ENGINE_UTILS_DDLCLEANUP_INCLUDE} ${ENGINE_UTILS_QUERYSTATS_INCLUDE} ${ENGINE_WE_CONFIGCPP_INCLUDE} ${ENGINE_SERVER_SQL_INCLUDE} ${ENGINE_SERVER_INCLUDE_INCLUDE} ${ENGINE_SERVER_PCRE_INCLUDE} ${ENGINE_SERVER_WSREP_API_INCLUDE} ${ENGINE_SERVER_WSREP_INCLUDE} ${ENGINE_UTILS_UDFSDK_INCLUDE} ${ENGINE_UTILS_LIBMYSQL_CL_INCLUDE} ${ENGINE_DATATYPES_INCLUDE}) ADD_SUBDIRECTORY(dbcon/mysql) IF(NOT TARGET columnstore) diff --git a/cmake/boost.CMakeLists.txt.in b/cmake/boost.CMakeLists.txt.in deleted file mode 100644 index 899c31152..000000000 --- a/cmake/boost.CMakeLists.txt.in +++ /dev/null @@ -1,32 +0,0 @@ -cmake_minimum_required(VERSION @CMAKE_VERSION@) -project (BoostExternal) -include(ExternalProject) - -if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") - set(_toolset "gcc") -elseif(CMAKE_CXX_COMPILER_ID MATCHES ".*Clang") - set(_toolset "clang") -elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel") - set(_toolset "intel-linux") -endif() - -set(INSTALL_LOCATION ${CMAKE_BINARY_DIR}/boost-lib) - -set(_cxxargs "-fPIC -DBOOST_NO_AUTO_PTR -fvisibility=default") -set(_b2args cxxflags=${_cxxargs};cflags=-fPIC;threading=multi; toolset=${_toolset} --without-python;--prefix=${INSTALL_LOCATION}) - -ExternalProject_Add(external_boost - PREFIX boost - URL https://boostorg.jfrog.io/artifactory/main/release/1.79.0/source/boost_1_79_0.tar.bz2 - URL_HASH SHA256=475d589d51a7f8b3ba2ba4eda022b170e562ca3b760ee922c146b6c65856ef39 - CONFIGURE_COMMAND ./bootstrap.sh - UPDATE_COMMAND "" - BUILD_COMMAND ./b2 -q ${_b2args} - LOG_BUILD TRUE - BUILD_IN_SOURCE TRUE - INSTALL_COMMAND ./b2 -q install ${_b2args} - LOG_INSTALL TRUE -) - -unset(_b2args) -unset(_toolset) diff --git a/cmake/boost.cmake b/cmake/boost.cmake index 25ca5c3fb..ada42a73d 100644 --- a/cmake/boost.cmake +++ b/cmake/boost.cmake @@ -1,44 +1,41 @@ +include(ExternalProject) -# boost super build (see superbuild.md) - - -configure_file(${CMAKE_CURRENT_LIST_DIR}/boost.CMakeLists.txt.in ${CMAKE_CURRENT_BINARY_DIR}/.boost/CMakeLists.txt @ONLY) -SET(BOOST_ROOT ${CMAKE_CURRENT_BINARY_DIR}/.boost/boost-lib) - -message ("-- External: Configuring Boost") -execute_process( - COMMAND ${CMAKE_COMMAND} . - -G "${CMAKE_GENERATOR}" - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/.boost - RESULT_VARIABLE _exec_ret -) - -if(${_exec_ret}) - message(FATAL_ERROR "Error ${_exec_ret} configuring boost dependency.") +if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") + set(_toolset "gcc") +elseif(CMAKE_CXX_COMPILER_ID MATCHES ".*Clang") + set(_toolset "clang") +elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel") + set(_toolset "intel-linux") endif() -message ("-- External: Building Boost") -execute_process( - COMMAND ${CMAKE_COMMAND} --build . - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/.boost - RESULT_VARIABLE _exec_ret +set(INSTALL_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/.boost/boost-lib) +SET(Boost_INCLUDE_DIRS "${INSTALL_LOCATION}/include") +SET(Boost_LIBRARY_DIRS "${INSTALL_LOCATION}/lib") +LINK_DIRECTORIES("${Boost_LIBRARY_DIRS}") + +set(_cxxargs "-fPIC -DBOOST_NO_AUTO_PTR -fvisibility=default") +set(_b2args cxxflags=${_cxxargs};cflags=-fPIC;threading=multi; toolset=${_toolset} --without-python;--prefix=${INSTALL_LOCATION}) + +FOREACH(name chrono filesystem program_options regex system thread) + SET(lib boost_${name}) + ADD_LIBRARY(${lib} STATIC IMPORTED GLOBAL) + ADD_LIBRARY(Boost::${name} ALIAS ${lib}) + ADD_DEPENDENCIES(${lib} external_boost) + SET (loc "${Boost_LIBRARY_DIRS}/${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX}") + SET(byproducts ${byproducts} BUILD_BYPRODUCTS ${loc}) + SET_TARGET_PROPERTIES(${lib} PROPERTIES IMPORTED_LOCATION ${loc}) +ENDFOREACH() + +ExternalProject_Add(external_boost + PREFIX .boost + URL https://boostorg.jfrog.io/artifactory/main/release/1.79.0/source/boost_1_79_0.tar.bz2 + URL_HASH SHA256=475d589d51a7f8b3ba2ba4eda022b170e562ca3b760ee922c146b6c65856ef39 + CONFIGURE_COMMAND ./bootstrap.sh + UPDATE_COMMAND "" + BUILD_COMMAND ./b2 -q ${_b2args} + BUILD_IN_SOURCE TRUE + INSTALL_COMMAND ./b2 -q install ${_b2args} + LOG_BUILD TRUE + LOG_INSTALL TRUE + ${byproducts} ) - -if(${_exec_ret}) - message(FATAL_ERROR "Error ${_exec_ret} building boost dependency: ${_exec_ret}") -endif() - -unset(_exec_ret) - - -message("Boost installed localy at ${BOOST_ROOT}") - - -SET(Boost_USE_STATIC_LIBS ON) -FIND_PACKAGE(Boost 1.78.0 COMPONENTS system filesystem thread regex date_time chrono atomic) -IF (NOT Boost_FOUND) - MESSAGE_ONCE(CS_NO_BOOST "Required Boost libraries not found!") - return() -ENDIF() diff --git a/datatypes/CMakeLists.txt b/datatypes/CMakeLists.txt index c74eaf7fc..fe8fa7142 100644 --- a/datatypes/CMakeLists.txt +++ b/datatypes/CMakeLists.txt @@ -5,6 +5,7 @@ set(datatypes_LIB_SRCS mcs_decimal.cpp) add_library(datatypes SHARED ${datatypes_LIB_SRCS}) +add_dependencies(datatypes external_boost) install(TARGETS datatypes DESTINATION ${ENGINE_LIBDIR} COMPONENT columnstore-engine) diff --git a/utils/compress/CMakeLists.txt b/utils/compress/CMakeLists.txt index 8337e7273..0e04d3cc5 100644 --- a/utils/compress/CMakeLists.txt +++ b/utils/compress/CMakeLists.txt @@ -12,6 +12,7 @@ set(compress_LIB_SRCS add_definitions(-DNDEBUG) add_library(compress SHARED ${compress_LIB_SRCS}) +add_dependencies(compress loggingcpp external_boost) target_link_libraries(compress ${SNAPPY_LIBRARIES}) IF(HAVE_LZ4) diff --git a/utils/loggingcpp/CMakeLists.txt b/utils/loggingcpp/CMakeLists.txt index c4573c0b2..c217775ac 100644 --- a/utils/loggingcpp/CMakeLists.txt +++ b/utils/loggingcpp/CMakeLists.txt @@ -29,6 +29,7 @@ add_library(loggingcpp SHARED ${CMAKE_CURRENT_BINARY_DIR}/messageids.h ${CMAKE_CURRENT_BINARY_DIR}/errorids.h ) +add_dependencies(loggingcpp external_boost) install(TARGETS loggingcpp DESTINATION ${ENGINE_LIBDIR} COMPONENT columnstore-engine) diff --git a/utils/querytele/CMakeLists.txt b/utils/querytele/CMakeLists.txt index f4792192b..ae70df9bc 100644 --- a/utils/querytele/CMakeLists.txt +++ b/utils/querytele/CMakeLists.txt @@ -13,6 +13,7 @@ set(querytele_LIB_SRCS queryteleprotoimpl.cpp) add_library(querytele SHARED ${querytele_LIB_SRCS}) +add_dependencies(querytele external_boost) install(TARGETS querytele DESTINATION ${ENGINE_LIBDIR} COMPONENT columnstore-engine) diff --git a/utils/rwlock/CMakeLists.txt b/utils/rwlock/CMakeLists.txt index c764067de..c4e401c7f 100644 --- a/utils/rwlock/CMakeLists.txt +++ b/utils/rwlock/CMakeLists.txt @@ -8,6 +8,7 @@ include_directories( ${ENGINE_COMMON_INCLUDES} ) set(rwlock_LIB_SRCS rwlock.cpp rwlock_local.cpp) add_library(rwlock SHARED ${rwlock_LIB_SRCS}) +add_dependencies(rwlock external_boost) install(TARGETS rwlock DESTINATION ${ENGINE_LIBDIR} COMPONENT columnstore-engine) diff --git a/utils/startup/CMakeLists.txt b/utils/startup/CMakeLists.txt index 7d384487a..26d65e580 100644 --- a/utils/startup/CMakeLists.txt +++ b/utils/startup/CMakeLists.txt @@ -4,6 +4,7 @@ include_directories( ${ENGINE_COMMON_INCLUDES} ) ADD_DEFINITIONS(-fPIC -DPIC) add_library(idbboot STATIC installdir.cpp) +add_dependencies(idbboot external_boost) INSTALL(TARGETS idbboot DESTINATION ${ENGINE_LIBDIR}) diff --git a/utils/thrift/CMakeLists.txt b/utils/thrift/CMakeLists.txt index 709590478..a4e33cd9c 100644 --- a/utils/thrift/CMakeLists.txt +++ b/utils/thrift/CMakeLists.txt @@ -15,6 +15,7 @@ set(thrift_LIB_SRCS add_definitions(-DTHRIFT_SQUELCH_CONSOLE_OUTPUT) add_library(thrift SHARED ${thrift_LIB_SRCS}) +add_dependencies(thrift external_boost) install(TARGETS thrift DESTINATION ${ENGINE_LIBDIR} COMPONENT columnstore-engine)