set(Boost_USE_STATIC_LIBS ${PROJECT_STATIC_LINK}) if(PROJECT_ENABLE_BOOST) add_definitions(-DPROJECT_ENABLE_BOOST) if(PROJECT_ENABLE_LIBBITCOIN_SYSTEM) set(BOOST_MAJOR_VERSION ${BOOST2_MAJOR_VERSION}) set(BOOST_MINOR_VERSION ${BOOST2_MINOR_VERSION}) set(BOOST_PATCH_VERSION ${BOOST2_PATCH_VERSION}) endif() set(BOOST_ROOT ${PROJECT_EXTERNAL_BUILD_ROOT}) set(BOOST_INCLUDE_DIR ${BOOST_ROOT}/include/boost-${BOOST_MINOR_VERSION}_${BOOST_MINOR_VERSION}) set(PROJECT_EXTERNAL_CMAKE_FLAGS ${PROJECT_EXTERNAL_CMAKE_FLAGS} -DBUILD_SHARED_LIBS=${PROJECT_BUILD_SHARED_LIBS} -DBOOST_INCLUDE_DIR=${BOOST_INCLUDE_DIR} -DBOOST_ROOT=${BOOST_ROOT} ) if(PROJECT_BUILD) find_package(Boost ${BOOST_MAJOR_VERSION}.${BOOST_MINOR_VERSION}.${BOOST_PATCH_VERSION} EXACT REQUIRED COMPONENTS atomic chrono date_time filesystem iostreams locale log log_setup program_options random regex serialization system thread wserialization ) include_directories(BEFORE SYSTEM ${Boost_INCLUDE_DIRS} ) link_libraries( ${Boost_LIBRARIES} ) elseif(NOT PROJECT_IS_MINGW OR CMAKE_HOST_WIN32) if(PROJECT_CMAKE_BUILD_TYPE STREQUAL "Debug") set(BOOST_BUILD_TYPE_LOWER debug) else() set(BOOST_BUILD_TYPE_LOWER release) endif() if(PROJECT_IS_ARM64) set(BOOST_ARCH arm) else() set(BOOST_ARCH x86) endif() if(PROJECT_STATIC_LINK) set(BOOST_LINK static) else() set(BOOST_LINK "static,shared") endif() set(BOOST_BUILD_ARGS --openssldir=$ENV{OPENSSL_ROOT_DIR} --prefix=${PROJECT_EXTERNAL_BUILD_ROOT} address-model=64 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=${BOOST_LINK} linkflags=-std=c++${CMAKE_CXX_STANDARD} threading=multi variant=${BOOST_BUILD_TYPE_LOWER} ) if(PROJECT_ENABLE_LIBBITCOIN_SYSTEM) set(BOOST_URL_HASH SHA256=7bd7ddceec1a1dfdcbdb3e609b60d01739c38390a5f956385a12f3122049f0ca) else() set(BOOST_URL_HASH SHA256=be0d91732d5b0cc6fbb275c7939974457e79b54d6f07ce2e3dfdd68bef883b0b) endif() ExternalProject_Add(boost_project PREFIX external URL ${PROJECT_3RD_PARTY_DIR}/boost_${BOOST_MAJOR_VERSION}_${BOOST_MINOR_VERSION}_${BOOST_PATCH_VERSION}.tar.gz URL_HASH ${BOOST_URL_HASH} BUILD_IN_SOURCE 1 LIST_SEPARATOR | CONFIGURE_COMMAND ./bootstrap.sh --with-libraries=atomic,chrono,date_time,filesystem,iostreams,locale,log,program_options,random,regex,serialization,system,test,thread BUILD_COMMAND ./b2 -j1 ${BOOST_BUILD_ARGS} INSTALL_COMMAND ./b2 -j1 ${BOOST_BUILD_ARGS} install ) set(PROJECT_DEPENDENCIES ${PROJECT_DEPENDENCIES} boost_project ) endif() endif()