1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-30 19:23:07 +03:00
* build boost during build phase, not during configure

* add dependency for generated header files errorids.h messageids.h

see 7e868bc588

* set explicit dependencies on external_boost for #include's

* clang-14 compatibility fix
This commit is contained in:
Sergei Golubchik
2022-08-13 06:18:30 +02:00
committed by GitHub
parent 35f0f7bf0a
commit dee50318ad
10 changed files with 47 additions and 74 deletions

View File

@ -214,11 +214,12 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-register") MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-register")
endif() endif()
MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-deprecated-copy" DEBUG RELEASE RELWITHDEBINFO MINSIZEREL)
MY_CHECK_AND_SET_COMPILER_FLAG("-Werror -Wall") MY_CHECK_AND_SET_COMPILER_FLAG("-Werror -Wall")
SET (ENGINE_LDFLAGS "-Wl,--no-as-needed -Wl,--add-needed") SET (ENGINE_LDFLAGS "-Wl,--no-as-needed -Wl,--add-needed")
SET (ENGINE_DT_LIB datatypes) 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_OAM_LIBS oamcpp)
SET (ENGINE_BRM_LIBS brm idbdatafile cacheutils rwlock ${ENGINE_OAM_LIBS} ${ENGINE_COMMON_LIBS}) 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}) 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_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) ADD_SUBDIRECTORY(dbcon/mysql)
IF(NOT TARGET columnstore) IF(NOT TARGET columnstore)

View File

@ -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)

View File

@ -1,44 +1,41 @@
include(ExternalProject)
# boost super build (see superbuild.md) if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
set(_toolset "gcc")
elseif(CMAKE_CXX_COMPILER_ID MATCHES ".*Clang")
configure_file(${CMAKE_CURRENT_LIST_DIR}/boost.CMakeLists.txt.in ${CMAKE_CURRENT_BINARY_DIR}/.boost/CMakeLists.txt @ONLY) set(_toolset "clang")
SET(BOOST_ROOT ${CMAKE_CURRENT_BINARY_DIR}/.boost/boost-lib) elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
set(_toolset "intel-linux")
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.")
endif() endif()
message ("-- External: Building Boost") set(INSTALL_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/.boost/boost-lib)
execute_process( SET(Boost_INCLUDE_DIRS "${INSTALL_LOCATION}/include")
COMMAND ${CMAKE_COMMAND} --build . SET(Boost_LIBRARY_DIRS "${INSTALL_LOCATION}/lib")
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/.boost LINK_DIRECTORIES("${Boost_LIBRARY_DIRS}")
RESULT_VARIABLE _exec_ret
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()

View File

@ -5,6 +5,7 @@ set(datatypes_LIB_SRCS
mcs_decimal.cpp) mcs_decimal.cpp)
add_library(datatypes SHARED ${datatypes_LIB_SRCS}) add_library(datatypes SHARED ${datatypes_LIB_SRCS})
add_dependencies(datatypes external_boost)
install(TARGETS datatypes DESTINATION ${ENGINE_LIBDIR} COMPONENT columnstore-engine) install(TARGETS datatypes DESTINATION ${ENGINE_LIBDIR} COMPONENT columnstore-engine)

View File

@ -12,6 +12,7 @@ set(compress_LIB_SRCS
add_definitions(-DNDEBUG) add_definitions(-DNDEBUG)
add_library(compress SHARED ${compress_LIB_SRCS}) add_library(compress SHARED ${compress_LIB_SRCS})
add_dependencies(compress loggingcpp external_boost)
target_link_libraries(compress ${SNAPPY_LIBRARIES}) target_link_libraries(compress ${SNAPPY_LIBRARIES})
IF(HAVE_LZ4) IF(HAVE_LZ4)

View File

@ -29,6 +29,7 @@ add_library(loggingcpp SHARED
${CMAKE_CURRENT_BINARY_DIR}/messageids.h ${CMAKE_CURRENT_BINARY_DIR}/messageids.h
${CMAKE_CURRENT_BINARY_DIR}/errorids.h ${CMAKE_CURRENT_BINARY_DIR}/errorids.h
) )
add_dependencies(loggingcpp external_boost)
install(TARGETS loggingcpp DESTINATION ${ENGINE_LIBDIR} COMPONENT columnstore-engine) install(TARGETS loggingcpp DESTINATION ${ENGINE_LIBDIR} COMPONENT columnstore-engine)

View File

@ -13,6 +13,7 @@ set(querytele_LIB_SRCS
queryteleprotoimpl.cpp) queryteleprotoimpl.cpp)
add_library(querytele SHARED ${querytele_LIB_SRCS}) add_library(querytele SHARED ${querytele_LIB_SRCS})
add_dependencies(querytele external_boost)
install(TARGETS querytele DESTINATION ${ENGINE_LIBDIR} COMPONENT columnstore-engine) install(TARGETS querytele DESTINATION ${ENGINE_LIBDIR} COMPONENT columnstore-engine)

View File

@ -8,6 +8,7 @@ include_directories( ${ENGINE_COMMON_INCLUDES} )
set(rwlock_LIB_SRCS rwlock.cpp rwlock_local.cpp) set(rwlock_LIB_SRCS rwlock.cpp rwlock_local.cpp)
add_library(rwlock SHARED ${rwlock_LIB_SRCS}) add_library(rwlock SHARED ${rwlock_LIB_SRCS})
add_dependencies(rwlock external_boost)
install(TARGETS rwlock DESTINATION ${ENGINE_LIBDIR} COMPONENT columnstore-engine) install(TARGETS rwlock DESTINATION ${ENGINE_LIBDIR} COMPONENT columnstore-engine)

View File

@ -4,6 +4,7 @@ include_directories( ${ENGINE_COMMON_INCLUDES} )
ADD_DEFINITIONS(-fPIC -DPIC) ADD_DEFINITIONS(-fPIC -DPIC)
add_library(idbboot STATIC installdir.cpp) add_library(idbboot STATIC installdir.cpp)
add_dependencies(idbboot external_boost)
INSTALL(TARGETS idbboot DESTINATION ${ENGINE_LIBDIR}) INSTALL(TARGETS idbboot DESTINATION ${ENGINE_LIBDIR})

View File

@ -15,6 +15,7 @@ set(thrift_LIB_SRCS
add_definitions(-DTHRIFT_SQUELCH_CONSOLE_OUTPUT) add_definitions(-DTHRIFT_SQUELCH_CONSOLE_OUTPUT)
add_library(thrift SHARED ${thrift_LIB_SRCS}) add_library(thrift SHARED ${thrift_LIB_SRCS})
add_dependencies(thrift external_boost)
install(TARGETS thrift DESTINATION ${ENGINE_LIBDIR} COMPONENT columnstore-engine) install(TARGETS thrift DESTINATION ${ENGINE_LIBDIR} COMPONENT columnstore-engine)