diff --git a/.gitignore b/.gitignore index d1f85955f..3ed72171a 100644 --- a/.gitignore +++ b/.gitignore @@ -176,3 +176,4 @@ mariadb-columnstore-regression-test/ build/Testing/ tests/*\[1\]_tests.cmake tests/*\[1\]_include.cmake +.boost diff --git a/CMakeLists.txt b/CMakeLists.txt index a2fcc7954..ca8542fbf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -95,12 +95,7 @@ SET (ENGINE_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}) INCLUDE(columnstore_version) INCLUDE(misc) - -FIND_PACKAGE(Boost 1.53.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() +INCLUDE(boost) FIND_PACKAGE(BISON) IF (NOT BISON_FOUND) diff --git a/cmake/boost.CMakeLists.txt.in b/cmake/boost.CMakeLists.txt.in index 5df75c405..fa7c975fe 100644 --- a/cmake/boost.CMakeLists.txt.in +++ b/cmake/boost.CMakeLists.txt.in @@ -1,33 +1,33 @@ -cmake_minimum_required(VERSION @CMAKE_VERSION@) - -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(_b2args link=shared;threading=multi;variant=release;toolset=${_toolset};--with-system;--with-filesystem;--with-thread;--with-regex;--with-date_time) - -ExternalProject_Add(boost - PREFIX build - URL https://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.zip - URL_HASH SHA256=ae85620e810b87a03e1acf8bbf0d4ad87c0cf7040cf6a4e1d8958488ebe42e7e - DOWNLOAD_NO_PROGRESS TRUE - UPDATE_COMMAND "" - CONFIGURE_COMMAND /bootstrap.sh - --with-toolset=${_toolset} - --prefix=${CMAKE_CURRENT_SOURCE_DIR}/../boost - --with-libraries=system,filesystem,thread,regex,date_time - BUILD_COMMAND /b2 -q ${_b2args} - LOG_BUILD TRUE - BUILD_IN_SOURCE TRUE - INSTALL_COMMAND /b2 -q install ${_b2args} - LOG_INSTALL TRUE -) - -unset(_b2args) +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(boost + PREFIX build + GIT_REPOSITORY https://github.com/boostorg/boost.git + GIT_TAG boost-1.78.0 + DOWNLOAD_NO_PROGRESS TRUE + UPDATE_COMMAND "" + CONFIGURE_COMMAND /bootstrap.sh + 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) \ No newline at end of file diff --git a/cmake/boost.cmake b/cmake/boost.cmake index ae129287d..25ca5c3fb 100644 --- a/cmake/boost.cmake +++ b/cmake/boost.cmake @@ -3,9 +3,11 @@ 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} . + COMMAND ${CMAKE_COMMAND} . -G "${CMAKE_GENERATOR}" -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} @@ -17,6 +19,7 @@ if(${_exec_ret}) message(FATAL_ERROR "Error ${_exec_ret} configuring boost dependency.") endif() +message ("-- External: Building Boost") execute_process( COMMAND ${CMAKE_COMMAND} --build . WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/.boost @@ -29,6 +32,13 @@ endif() unset(_exec_ret) -set(BOOST_ROOT ${CMAKE_CURRENT_BINARY_DIR}/boost) -find_package(Boost 1.55.0 REQUIRED COMPONENTS system filesystem thread regex date_time) +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/storage-manager/CMakeLists.txt b/storage-manager/CMakeLists.txt index cd71417b8..695d02d03 100755 --- a/storage-manager/CMakeLists.txt +++ b/storage-manager/CMakeLists.txt @@ -3,7 +3,7 @@ project(storagemanager) include_directories(include ${CMAKE_BINARY_DIR}/include ${ENGINE_UTILS_COMMON_INCLUDE} ${S3API_DIR}) -set(storagemanager_SRCS +set(storagemanager_SRCS src/AppendTask.cpp src/ClientRequestProcessor.cpp src/ListDirectoryTask.cpp @@ -62,12 +62,12 @@ set(CMAKE_INSTALL_RPATH $ORIGIN $ORIGIN/../lib) add_library(storagemanager SHARED ${storagemanager_SRCS}) add_dependencies(storagemanager marias3) target_compile_definitions(storagemanager PUBLIC BOOST_NO_CXX11_SCOPED_ENUMS) -target_link_libraries(storagemanager boost_chrono boost_system boost_thread boost_filesystem boost_regex pthread ${S3API_DEPS}) -set_property(TARGET storagemanager PROPERTY CXX_STANDARD 11) +target_link_libraries(storagemanager Boost::chrono Boost::system Boost::thread Boost::filesystem Boost::regex pthread ${S3API_DEPS}) +set_property(TARGET storagemanager PROPERTY CXX_STANDARD 20) add_executable(StorageManager src/main.cpp) target_link_libraries(StorageManager storagemanager) -set_property(TARGET StorageManager PROPERTY CXX_STANDARD 11) +set_property(TARGET StorageManager PROPERTY CXX_STANDARD 20) set(TMPDIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) @@ -75,7 +75,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) add_executable(unit_tests src/unit_tests.cpp) target_compile_definitions(unit_tests PUBLIC BOOST_NO_CXX11_SCOPED_ENUMS) target_link_libraries(unit_tests storagemanager) -set_property(TARGET unit_tests PROPERTY CXX_STANDARD 11) +set_property(TARGET unit_tests PROPERTY CXX_STANDARD 20) add_executable(testS3Connection src/testS3Connection.cpp) target_compile_definitions(testS3Connection PUBLIC BOOST_NO_CXX11_SCOPED_ENUMS) @@ -96,10 +96,10 @@ add_custom_command( ${CMAKE_CURRENT_BINARY_DIR}/test_data # COMMAND ${CMAKE_COMMAND} -E copy # ../bin/unit_tests # what is putting our bins in ../bin? -# ${CMAKE_CURRENT_BINARY_DIR} +# ${CMAKE_CURRENT_BINARY_DIR} ) -# The includes and lib linkages required to link against cloudio ... +# The includes and lib linkages required to link against cloudio ... # pretty crazy. When lib dependencies are eventually config'd right, # change this to only include and link against cloudio. include_directories(${ENGINE_SRC_DIR}/utils/cloudio ${ENGINE_COMMON_INCLUDES}) @@ -141,12 +141,12 @@ install(TARGETS StorageManager smcat smput smls smrm testS3Connection COMPONENT columnstore-engine ) -install(FILES storagemanager.cnf +install(FILES storagemanager.cnf DESTINATION ${ENGINE_SYSCONFDIR}/columnstore COMPONENT columnstore-engine ) -install(FILES storagemanager.cnf +install(FILES storagemanager.cnf RENAME storagemanager.cnf.example DESTINATION ${ENGINE_SYSCONFDIR}/columnstore COMPONENT columnstore-engine diff --git a/tools/rebuildEM/CMakeLists.txt b/tools/rebuildEM/CMakeLists.txt index 54bd14e6b..5d27c2f00 100644 --- a/tools/rebuildEM/CMakeLists.txt +++ b/tools/rebuildEM/CMakeLists.txt @@ -2,5 +2,5 @@ include_directories(${ENGINE_COMMON_INCLUDES}) set(rebuildEM_SRCS main.cpp rebuildEM.cpp) add_executable(mcsRebuildEM ${rebuildEM_SRCS}) -target_link_libraries(mcsRebuildEM ${ENGINE_LDFLAGS} ${ENGINE_WRITE_LIBS} ${MARIADB_CLIENT_LIBS} boost_filesystem boost_system) +target_link_libraries(mcsRebuildEM ${ENGINE_LDFLAGS} ${ENGINE_WRITE_LIBS} ${MARIADB_CLIENT_LIBS} Boost::system Boost::filesystem) install(TARGETS mcsRebuildEM DESTINATION ${ENGINE_BINDIR} COMPONENT columnstore-engine) diff --git a/utils/common/CMakeLists.txt b/utils/common/CMakeLists.txt index 17d78d476..59e072ec1 100644 --- a/utils/common/CMakeLists.txt +++ b/utils/common/CMakeLists.txt @@ -16,7 +16,7 @@ set(common_LIB_SRCS add_library(common SHARED ${common_LIB_SRCS}) -target_link_libraries(common boost_filesystem) +target_link_libraries(common Boost::filesystem) add_dependencies(common loggingcpp) diff --git a/utils/idbdatafile/CMakeLists.txt b/utils/idbdatafile/CMakeLists.txt index c51cc60fb..a4b62074f 100644 --- a/utils/idbdatafile/CMakeLists.txt +++ b/utils/idbdatafile/CMakeLists.txt @@ -15,7 +15,7 @@ set(idbdatafile_LIB_SRCS add_library(idbdatafile SHARED ${idbdatafile_LIB_SRCS}) -target_link_libraries(idbdatafile ${NETSNMP_LIBRARIES} ${ENGINE_OAM_LIBS}) +target_link_libraries(idbdatafile ${NETSNMP_LIBRARIES} ${ENGINE_OAM_LIBS} Boost::filesystem Boost::system) target_compile_definitions(idbdatafile PUBLIC BOOST_NO_CXX11_SCOPED_ENUMS) diff --git a/utils/joiner/joinpartition.cpp b/utils/joiner/joinpartition.cpp index c31932046..c1f6fff18 100644 --- a/utils/joiner/joinpartition.cpp +++ b/utils/joiner/joinpartition.cpp @@ -155,7 +155,6 @@ JoinPartition::JoinPartition(const JoinPartition& jp, bool splitMode) , nextSmallOffset(0) , nextLargeOffset(0) { - boost::posix_time::ptime t; ostringstream os; fileMode = true; diff --git a/utils/threadpool/CMakeLists.txt b/utils/threadpool/CMakeLists.txt index d20887ed6..519ba3b5c 100644 --- a/utils/threadpool/CMakeLists.txt +++ b/utils/threadpool/CMakeLists.txt @@ -9,5 +9,6 @@ set(threadpool_LIB_SRCS weightedthreadpool.cpp threadpool.cpp prioritythreadpool add_library(threadpool SHARED ${threadpool_LIB_SRCS}) add_dependencies(threadpool loggingcpp) +target_link_libraries(threadpool Boost::chrono) install(TARGETS threadpool DESTINATION ${ENGINE_LIBDIR} COMPONENT columnstore-engine)