|
| 1 | +include_guard(GLOBAL) |
| 2 | + |
| 3 | +option(USERVER_DOWNLOAD_PACKAGE_BOOST "Download and setup Boost if no library of matching version was found" |
| 4 | + ${USERVER_DOWNLOAD_PACKAGES} |
| 5 | +) |
| 6 | +option(USERVER_FORCE_DOWNLOAD_BOOST "Download Boost even if there is an installed system package" |
| 7 | + ${USERVER_FORCE_DOWNLOAD_PACKAGES} |
| 8 | +) |
| 9 | + |
| 10 | +set(BOOST_VERSION 1.89.0) |
| 11 | +set(BOOST_INCLUDE_LIBRARIES_FIND_PACKAGE |
| 12 | + atomic |
| 13 | + program_options |
| 14 | + filesystem |
| 15 | + regex |
| 16 | + locale |
| 17 | + iostreams |
| 18 | + context |
| 19 | + coroutine |
| 20 | +) |
| 21 | +set(BOOST_INCLUDE_LIBRARIES |
| 22 | + ${BOOST_INCLUDE_LIBRARIES_FIND_PACKAGE} |
| 23 | + coroutine2 |
| 24 | + stacktrace |
| 25 | + uuid |
| 26 | + lockfree |
| 27 | + endian |
| 28 | + assert |
| 29 | + predef |
| 30 | +) |
| 31 | +string(REGEX REPLACE ";" "\\\\\\\\;" BOOST_INCLUDE_LIBRARIES_LIST "${BOOST_INCLUDE_LIBRARIES}") |
| 32 | + |
| 33 | +if(NOT USERVER_FORCE_DOWNLOAD_BOOST AND NOT BOOST_CPM) |
| 34 | + if(USERVER_DOWNLOAD_PACKAGE_BOOST) |
| 35 | + set(MAYBE_REQUIRED) |
| 36 | + else() |
| 37 | + set(MAYBE_REQUIRED REQUIRED) |
| 38 | + endif() |
| 39 | + find_package( |
| 40 | + Boost ${MAYBE_REQUIRED} CONFIG |
| 41 | + COMPONENTS ${BOOST_INCLUDE_LIBRARIES_FIND_PACKAGE} |
| 42 | + OPTIONAL_COMPONENTS stacktrace_backtrace stacktrace_windbg |
| 43 | + ) |
| 44 | + |
| 45 | + if(Boost_FOUND) |
| 46 | + return() |
| 47 | + endif() |
| 48 | +endif() |
| 49 | + |
| 50 | +include(DownloadUsingCPM) |
| 51 | +set(BOOST_CPM TRUE CACHE BOOL "") |
| 52 | + |
| 53 | +cpmaddpackage( |
| 54 | + NAME Boost |
| 55 | + VERSION ${BOOST_VERSION} |
| 56 | + URL https://github.com/boostorg/boost/releases/download/boost-${BOOST_VERSION}/boost-${BOOST_VERSION}-cmake.tar.xz |
| 57 | + URL_HASH SHA256=67acec02d0d118b5de9eb441f5fb707b3a1cdd884be00ca24b9a73c995511f74 |
| 58 | + OPTIONS |
| 59 | + "BOOST_ENABLE_CMAKE ON" |
| 60 | + "BOOST_INCLUDE_LIBRARIES ${BOOST_INCLUDE_LIBRARIES_LIST}" |
| 61 | + "BOOST_SKIP_INSTALL_RULES ON" |
| 62 | + "BUILD_SHARED_LIBS OFF" |
| 63 | + "BOOST_RUNTIME_LINK static" |
| 64 | + "BUILD_TESTING OFF" |
| 65 | + "BOOST_LOCKFREE_BUILD_TESTS OFF" |
| 66 | + EXCLUDE_FROM_ALL |
| 67 | +) |
| 68 | + |
| 69 | +# We have fresh version of boost, DWCAS should work |
| 70 | +set(USERVER_IMPL_DWCAS_CHECKED TRUE CACHE INTERNAL "TRUE iff checked that DWCAS works") |
0 commit comments