if (MINGW) include_directories(SYSTEM /mingw/include/boost-${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}) set(Boost_LIBRARIES /mingw64/lib/libboost_system.a /mingw64/lib/libboost_atomic.a /mingw64/lib/libboost_chrono.a /mingw64/lib/libboost_date_time.a /mingw64/lib/libboost_filesystem.a /mingw64/lib/libboost_random.a /mingw64/lib/libboost_regex.a /mingw64/lib/libboost_serialization.a /mingw64/lib/libboost_thread.a ) else() set(BOOST_VERSION ${BOOST_MAJOR_VERSION}.${BOOST_MINOR_VERSION}.${BOOST_PATCH_VERSION}) set(BOOST_VERSION2 ${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}_${BOOST_PATCH_VERSION}) set(BOOST_PROJECT_NAME boost_${BOOST_VERSION}) set(BOOST_BUILD_ROOT ${EXTERNAL_BUILD_ROOT}/builds/${BOOST_PROJECT_NAME}) set(BOOST_ADDRESS_MODEL 64) set(BOOST_DOWNLOAD_URL https://boostorg.jfrog.io/artifactory/main/release/${BOOST_VERSION}/source/boost_${BOOST_VERSION2}.tar.gz) if (IS_CLANG_COMPILER) set(BOOST_TOOLSET --with-toolset=clang) else () set(BOOST_OPENSSL_DIR "--openssldir=${EXTERNAL_BUILD_ROOT}") endif() if (IS_ARM64) set (BOOST_ARCH arm) else() set (BOOST_ARCH x86) endif() set (BOOST_COMMON_ARGS ${BOOST_OPENSSL_DIR} --prefix=${EXTERNAL_BUILD_ROOT} address-model=${BOOST_ADDRESS_MODEL} architecture=${BOOST_ARCH} cxxflags=-std=c++${CMAKE_CXX_STANDARD} cxxstd=${CMAKE_CXX_STANDARD} define=BOOST_ASIO_HAS_STD_STRING_VIEW define=BOOST_SYSTEM_NO_DEPRECATED link=static linkflags=-std=c++${CMAKE_CXX_STANDARD} threading=multi variant=${CMAKE_BUILD_TYPE_LOWER} -sZLIB_BINARY=zlibstatic${DEBUG_EXTRA} -sZLIB_LIBPATH="${EXTERNAL_BUILD_ROOT}/lib" -sZLIB_INCLUDE="${EXTERNAL_BUILD_ROOT}/include" ) ExternalProject_Add(boost_project DOWNLOAD_NO_PROGRESS 1 URL ${BOOST_DOWNLOAD_URL} PREFIX ${BOOST_BUILD_ROOT} BUILD_IN_SOURCE 1 CONFIGURE_COMMAND cp -f ${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/user-config.jam . && ./bootstrap.sh ${BOOST_TOOLSET} ${BOOST_TARGET_OS} --with-libraries=atomic,chrono,date_time,filesystem,random,regex,serialization,system,thread BUILD_COMMAND ./b2 ${BOOST_COMMON_ARGS} ${BOOST_TARGET_OS} INSTALL_COMMAND ./b2 ${BOOST_COMMON_ARGS} ${BOOST_TARGET_OS} install ) add_dependencies(boost_project openssl_project) add_dependencies(boost_project zlib_project) if (CMAKE_HOST_WIN32) include_directories(SYSTEM ${EXTERNAL_BUILD_ROOT}/include/boost-${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}) endif() set(Boost_LIBRARIES libboost_system.a libboost_atomic.a libboost_chrono.a libboost_date_time.a libboost_filesystem.a libboost_random.a libboost_regex.a libboost_serialization.a libboost_thread.a ) endif()