aboutsummaryrefslogtreecommitdiffstats
path: root/community/rippled/boost-1.69.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/rippled/boost-1.69.patch')
-rw-r--r--community/rippled/boost-1.69.patch1276
1 files changed, 0 insertions, 1276 deletions
diff --git a/community/rippled/boost-1.69.patch b/community/rippled/boost-1.69.patch
deleted file mode 100644
index f3894fd6e8..0000000000
--- a/community/rippled/boost-1.69.patch
+++ /dev/null
@@ -1,1276 +0,0 @@
-From 9695fd44bae802e6ad9a6f9a2011e4693e2e5ac4 Mon Sep 17 00:00:00 2001
-From: seelabs <scott.determan@yahoo.com>
-Date: Wed, 12 Dec 2018 10:06:45 -0500
-Subject: [PATCH] Support boost 1.69
-
----
- Builds/CMake/FindBoost.cmake | 669 +++++++++---------
- .../container/detail/aged_ordered_container.h | 34 +-
- .../detail/aged_unordered_container.h | 32 +-
- .../detail/empty_base_optimization.h | 98 +++
- src/ripple/server/impl/BaseWSPeer.h | 18 +-
- 5 files changed, 497 insertions(+), 354 deletions(-)
- create mode 100644 src/ripple/beast/container/detail/empty_base_optimization.h
-
-diff --git a/Builds/CMake/FindBoost.cmake b/Builds/CMake/FindBoost.cmake
-index 8ad1481fe4..ce307fad7f 100644
---- a/Builds/CMake/FindBoost.cmake
-+++ b/Builds/CMake/FindBoost.cmake
-@@ -1,237 +1,242 @@
- # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
- # file Copyright.txt or https://cmake.org/licensing for details.
-
--#.rst:
--# FindBoost
--# ---------
--#
--# Find Boost include dirs and libraries
--#
--# Use this module by invoking find_package with the form::
--#
--# find_package(Boost
--# [version] [EXACT] # Minimum or EXACT version e.g. 1.67.0
--# [REQUIRED] # Fail with error if Boost is not found
--# [COMPONENTS <libs>...] # Boost libraries by their canonical name
--# # e.g. "date_time" for "libboost_date_time"
--# [OPTIONAL_COMPONENTS <libs>...]
--# # Optional Boost libraries by their canonical name)
--# ) # e.g. "date_time" for "libboost_date_time"
--#
--# This module finds headers and requested component libraries OR a CMake
--# package configuration file provided by a "Boost CMake" build. For the
--# latter case skip to the "Boost CMake" section below. For the former
--# case results are reported in variables::
--#
--# Boost_FOUND - True if headers and requested libraries were found
--# Boost_INCLUDE_DIRS - Boost include directories
--# Boost_LIBRARY_DIRS - Link directories for Boost libraries
--# Boost_LIBRARIES - Boost component libraries to be linked
--# Boost_<C>_FOUND - True if component <C> was found (<C> is upper-case)
--# Boost_<C>_LIBRARY - Libraries to link for component <C> (may include
--# target_link_libraries debug/optimized keywords)
--# Boost_VERSION - BOOST_VERSION value from boost/version.hpp
--# Boost_LIB_VERSION - Version string appended to library filenames
--# Boost_MAJOR_VERSION - Boost major version number (X in X.y.z)
--# Boost_MINOR_VERSION - Boost minor version number (Y in x.Y.z)
--# Boost_SUBMINOR_VERSION - Boost subminor version number (Z in x.y.Z)
--# Boost_LIB_DIAGNOSTIC_DEFINITIONS (Windows)
--# - Pass to add_definitions() to have diagnostic
--# information about Boost's automatic linking
--# displayed during compilation
--#
--# Note that Boost Python components require a Python version suffix
--# (Boost 1.67 and later), e.g. ``python36`` or ``python27`` for the
--# versions built against Python 3.6 and 2.7, respectively. This also
--# applies to additional components using Python including
--# ``mpi_python`` and ``numpy``. Earlier Boost releases may use
--# distribution-specific suffixes such as ``2``, ``3`` or ``2.7``.
--# These may also be used as suffixes, but note that they are not
--# portable.
--#
--# This module reads hints about search locations from variables::
--#
--# BOOST_ROOT - Preferred installation prefix
--# (or BOOSTROOT)
--# BOOST_INCLUDEDIR - Preferred include directory e.g. <prefix>/include
--# BOOST_LIBRARYDIR - Preferred library directory e.g. <prefix>/lib
--# Boost_NO_SYSTEM_PATHS - Set to ON to disable searching in locations not
--# specified by these hint variables. Default is OFF.
--# Boost_ADDITIONAL_VERSIONS
--# - List of Boost versions not known to this module
--# (Boost install locations may contain the version)
--#
--# and saves search results persistently in CMake cache entries::
--#
--# Boost_INCLUDE_DIR - Directory containing Boost headers
--# Boost_LIBRARY_DIR_RELEASE - Directory containing release Boost libraries
--# Boost_LIBRARY_DIR_DEBUG - Directory containing debug Boost libraries
--# Boost_<C>_LIBRARY_DEBUG - Component <C> library debug variant
--# Boost_<C>_LIBRARY_RELEASE - Component <C> library release variant
--#
--# The following :prop_tgt:`IMPORTED` targets are also defined::
--#
--# Boost::boost - Target for header-only dependencies
--# (Boost include directory)
--# Boost::<C> - Target for specific component dependency
--# (shared or static library); <C> is lower-
--# case
--# Boost::diagnostic_definitions - interface target to enable diagnostic
--# information about Boost's automatic linking
--# during compilation (adds BOOST_LIB_DIAGNOSTIC)
--# Boost::disable_autolinking - interface target to disable automatic
--# linking with MSVC (adds BOOST_ALL_NO_LIB)
--# Boost::dynamic_linking - interface target to enable dynamic linking
--# linking with MSVC (adds BOOST_ALL_DYN_LINK)
--#
--# Implicit dependencies such as Boost::filesystem requiring
--# Boost::system will be automatically detected and satisfied, even
--# if system is not specified when using find_package and if
--# Boost::system is not added to target_link_libraries. If using
--# Boost::thread, then Threads::Threads will also be added automatically.
--#
--# It is important to note that the imported targets behave differently
--# than variables created by this module: multiple calls to
--# find_package(Boost) in the same directory or sub-directories with
--# different options (e.g. static or shared) will not override the
--# values of the targets created by the first call.
--#
--# Users may set these hints or results as cache entries. Projects
--# should not read these entries directly but instead use the above
--# result variables. Note that some hint names start in upper-case
--# "BOOST". One may specify these as environment variables if they are
--# not specified as CMake variables or cache entries.
--#
--# This module first searches for the Boost header files using the above
--# hint variables (excluding BOOST_LIBRARYDIR) and saves the result in
--# Boost_INCLUDE_DIR. Then it searches for requested component libraries
--# using the above hints (excluding BOOST_INCLUDEDIR and
--# Boost_ADDITIONAL_VERSIONS), "lib" directories near Boost_INCLUDE_DIR,
--# and the library name configuration settings below. It saves the
--# library directories in Boost_LIBRARY_DIR_DEBUG and
--# Boost_LIBRARY_DIR_RELEASE and individual library
--# locations in Boost_<C>_LIBRARY_DEBUG and Boost_<C>_LIBRARY_RELEASE.
--# When one changes settings used by previous searches in the same build
--# tree (excluding environment variables) this module discards previous
--# search results affected by the changes and searches again.
--#
--# Boost libraries come in many variants encoded in their file name.
--# Users or projects may tell this module which variant to find by
--# setting variables::
--#
--# Boost_USE_DEBUG_LIBS - Set to ON or OFF to specify whether to search
--# and use the debug libraries. Default is ON.
--# Boost_USE_RELEASE_LIBS - Set to ON or OFF to specify whether to search
--# and use the release libraries. Default is ON.
--# Boost_USE_MULTITHREADED - Set to OFF to use the non-multithreaded
--# libraries ('mt' tag). Default is ON.
--# Boost_USE_STATIC_LIBS - Set to ON to force the use of the static
--# libraries. Default is OFF.
--# Boost_USE_STATIC_RUNTIME - Set to ON or OFF to specify whether to use
--# libraries linked statically to the C++ runtime
--# ('s' tag). Default is platform dependent.
--# Boost_USE_DEBUG_RUNTIME - Set to ON or OFF to specify whether to use
--# libraries linked to the MS debug C++ runtime
--# ('g' tag). Default is ON.
--# Boost_USE_DEBUG_PYTHON - Set to ON to use libraries compiled with a
--# debug Python build ('y' tag). Default is OFF.
--# Boost_USE_STLPORT - Set to ON to use libraries compiled with
--# STLPort ('p' tag). Default is OFF.
--# Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS
--# - Set to ON to use libraries compiled with
--# STLPort deprecated "native iostreams"
--# ('n' tag). Default is OFF.
--# Boost_COMPILER - Set to the compiler-specific library suffix
--# (e.g. "-gcc43"). Default is auto-computed
--# for the C++ compiler in use. A list may be
--# used if multiple compatible suffixes should
--# be tested for, in decreasing order of
--# preference.
--# Boost_THREADAPI - Suffix for "thread" component library name,
--# such as "pthread" or "win32". Names with
--# and without this suffix will both be tried.
--# Boost_NAMESPACE - Alternate namespace used to build boost with
--# e.g. if set to "myboost", will search for
--# myboost_thread instead of boost_thread.
--#
--# Other variables one may set to control this module are::
--#
--# Boost_DEBUG - Set to ON to enable debug output from FindBoost.
--# Please enable this before filing any bug report.
--# Boost_DETAILED_FAILURE_MSG
--# - Set to ON to add detailed information to the
--# failure message even when the REQUIRED option
--# is not given to the find_package call.
--# Boost_REALPATH - Set to ON to resolve symlinks for discovered
--# libraries to assist with packaging. For example,
--# the "system" component library may be resolved to
--# "/usr/lib/libboost_system.so.1.67.0" instead of
--# "/usr/lib/libboost_system.so". This does not
--# affect linking and should not be enabled unless
--# the user needs this information.
--# Boost_LIBRARY_DIR - Default value for Boost_LIBRARY_DIR_RELEASE and
--# Boost_LIBRARY_DIR_DEBUG.
--#
--# On Visual Studio and Borland compilers Boost headers request automatic
--# linking to corresponding libraries. This requires matching libraries
--# to be linked explicitly or available in the link library search path.
--# In this case setting Boost_USE_STATIC_LIBS to OFF may not achieve
--# dynamic linking. Boost automatic linking typically requests static
--# libraries with a few exceptions (such as Boost.Python). Use::
--#
--# add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINITIONS})
--#
--# to ask Boost to report information about automatic linking requests.
--#
--# Example to find Boost headers only::
--#
--# find_package(Boost 1.36.0)
--# if(Boost_FOUND)
--# include_directories(${Boost_INCLUDE_DIRS})
--# add_executable(foo foo.cc)
--# endif()
--#
--# Example to find Boost libraries and use imported targets::
--#
--# find_package(Boost 1.56 REQUIRED COMPONENTS
--# date_time filesystem iostreams)
--# add_executable(foo foo.cc)
--# target_link_libraries(foo Boost::date_time Boost::filesystem
--# Boost::iostreams)
--#
--# Example to find Boost Python 3.6 libraries and use imported targets::
--#
--# find_package(Boost 1.67 REQUIRED COMPONENTS
--# python36 numpy36)
--# add_executable(foo foo.cc)
--# target_link_libraries(foo Boost::python36 Boost::numpy36)
--#
--# Example to find Boost headers and some *static* (release only) libraries::
--#
--# set(Boost_USE_STATIC_LIBS ON) # only find static libs
--# set(Boost_USE_DEBUG_LIBS OFF) # ignore debug libs and
--# set(Boost_USE_RELEASE_LIBS ON) # only find release libs
--# set(Boost_USE_MULTITHREADED ON)
--# set(Boost_USE_STATIC_RUNTIME OFF)
--# find_package(Boost 1.66.0 COMPONENTS date_time filesystem system ...)
--# if(Boost_FOUND)
--# include_directories(${Boost_INCLUDE_DIRS})
--# add_executable(foo foo.cc)
--# target_link_libraries(foo ${Boost_LIBRARIES})
--# endif()
--#
--# Boost CMake
--# ^^^^^^^^^^^
--#
--# If Boost was built using the boost-cmake project it provides a package
--# configuration file for use with find_package's Config mode. This
--# module looks for the package configuration file called
--# BoostConfig.cmake or boost-config.cmake and stores the result in cache
--# entry "Boost_DIR". If found, the package configuration file is loaded
--# and this module returns with no further action. See documentation of
--# the Boost CMake package configuration for details on what it provides.
--#
--# Set Boost_NO_BOOST_CMAKE to ON to disable the search for boost-cmake.
-+#[=======================================================================[.rst:
-+FindBoost
-+---------
-+
-+Find Boost include dirs and libraries
-+
-+Use this module by invoking find_package with the form::
-+
-+ find_package(Boost
-+ [version] [EXACT] # Minimum or EXACT version e.g. 1.67.0
-+ [REQUIRED] # Fail with error if Boost is not found
-+ [COMPONENTS <libs>...] # Boost libraries by their canonical name
-+ # e.g. "date_time" for "libboost_date_time"
-+ [OPTIONAL_COMPONENTS <libs>...]
-+ # Optional Boost libraries by their canonical name)
-+ ) # e.g. "date_time" for "libboost_date_time"
-+
-+This module finds headers and requested component libraries OR a CMake
-+package configuration file provided by a "Boost CMake" build. For the
-+latter case skip to the "Boost CMake" section below. For the former
-+case results are reported in variables::
-+
-+ Boost_FOUND - True if headers and requested libraries were found
-+ Boost_INCLUDE_DIRS - Boost include directories
-+ Boost_LIBRARY_DIRS - Link directories for Boost libraries
-+ Boost_LIBRARIES - Boost component libraries to be linked
-+ Boost_<C>_FOUND - True if component <C> was found (<C> is upper-case)
-+ Boost_<C>_LIBRARY - Libraries to link for component <C> (may include
-+ target_link_libraries debug/optimized keywords)
-+ Boost_VERSION - BOOST_VERSION value from boost/version.hpp
-+ Boost_LIB_VERSION - Version string appended to library filenames
-+ Boost_MAJOR_VERSION - Boost major version number (X in X.y.z)
-+ Boost_MINOR_VERSION - Boost minor version number (Y in x.Y.z)
-+ Boost_SUBMINOR_VERSION - Boost subminor version number (Z in x.y.Z)
-+ Boost_VERSION_STRING - Boost version number in x.y.z format
-+ Boost_LIB_DIAGNOSTIC_DEFINITIONS (Windows)
-+ - Pass to add_definitions() to have diagnostic
-+ information about Boost's automatic linking
-+ displayed during compilation
-+
-+Note that Boost Python components require a Python version suffix
-+(Boost 1.67 and later), e.g. ``python36`` or ``python27`` for the
-+versions built against Python 3.6 and 2.7, respectively. This also
-+applies to additional components using Python including
-+``mpi_python`` and ``numpy``. Earlier Boost releases may use
-+distribution-specific suffixes such as ``2``, ``3`` or ``2.7``.
-+These may also be used as suffixes, but note that they are not
-+portable.
-+
-+This module reads hints about search locations from variables::
-+
-+ BOOST_ROOT - Preferred installation prefix
-+ (or BOOSTROOT)
-+ BOOST_INCLUDEDIR - Preferred include directory e.g. <prefix>/include
-+ BOOST_LIBRARYDIR - Preferred library directory e.g. <prefix>/lib
-+ Boost_NO_SYSTEM_PATHS - Set to ON to disable searching in locations not
-+ specified by these hint variables. Default is OFF.
-+ Boost_ADDITIONAL_VERSIONS
-+ - List of Boost versions not known to this module
-+ (Boost install locations may contain the version)
-+
-+and saves search results persistently in CMake cache entries::
-+
-+ Boost_INCLUDE_DIR - Directory containing Boost headers
-+ Boost_LIBRARY_DIR_RELEASE - Directory containing release Boost libraries
-+ Boost_LIBRARY_DIR_DEBUG - Directory containing debug Boost libraries
-+ Boost_<C>_LIBRARY_DEBUG - Component <C> library debug variant
-+ Boost_<C>_LIBRARY_RELEASE - Component <C> library release variant
-+
-+The following :prop_tgt:`IMPORTED` targets are also defined::
-+
-+ Boost::boost - Target for header-only dependencies
-+ (Boost include directory)
-+ Boost::<C> - Target for specific component dependency
-+ (shared or static library); <C> is lower-
-+ case
-+ Boost::diagnostic_definitions - interface target to enable diagnostic
-+ information about Boost's automatic linking
-+ during compilation (adds BOOST_LIB_DIAGNOSTIC)
-+ Boost::disable_autolinking - interface target to disable automatic
-+ linking with MSVC (adds BOOST_ALL_NO_LIB)
-+ Boost::dynamic_linking - interface target to enable dynamic linking
-+ linking with MSVC (adds BOOST_ALL_DYN_LINK)
-+
-+Implicit dependencies such as Boost::filesystem requiring
-+Boost::system will be automatically detected and satisfied, even
-+if system is not specified when using find_package and if
-+Boost::system is not added to target_link_libraries. If using
-+Boost::thread, then Threads::Threads will also be added automatically.
-+
-+It is important to note that the imported targets behave differently
-+than variables created by this module: multiple calls to
-+find_package(Boost) in the same directory or sub-directories with
-+different options (e.g. static or shared) will not override the
-+values of the targets created by the first call.
-+
-+Users may set these hints or results as cache entries. Projects
-+should not read these entries directly but instead use the above
-+result variables. Note that some hint names start in upper-case
-+"BOOST". One may specify these as environment variables if they are
-+not specified as CMake variables or cache entries.
-+
-+This module first searches for the Boost header files using the above
-+hint variables (excluding BOOST_LIBRARYDIR) and saves the result in
-+Boost_INCLUDE_DIR. Then it searches for requested component libraries
-+using the above hints (excluding BOOST_INCLUDEDIR and
-+Boost_ADDITIONAL_VERSIONS), "lib" directories near Boost_INCLUDE_DIR,
-+and the library name configuration settings below. It saves the
-+library directories in Boost_LIBRARY_DIR_DEBUG and
-+Boost_LIBRARY_DIR_RELEASE and individual library
-+locations in Boost_<C>_LIBRARY_DEBUG and Boost_<C>_LIBRARY_RELEASE.
-+When one changes settings used by previous searches in the same build
-+tree (excluding environment variables) this module discards previous
-+search results affected by the changes and searches again.
-+
-+Boost libraries come in many variants encoded in their file name.
-+Users or projects may tell this module which variant to find by
-+setting variables::
-+
-+ Boost_USE_DEBUG_LIBS - Set to ON or OFF to specify whether to search
-+ and use the debug libraries. Default is ON.
-+ Boost_USE_RELEASE_LIBS - Set to ON or OFF to specify whether to search
-+ and use the release libraries. Default is ON.
-+ Boost_USE_MULTITHREADED - Set to OFF to use the non-multithreaded
-+ libraries ('mt' tag). Default is ON.
-+ Boost_USE_STATIC_LIBS - Set to ON to force the use of the static
-+ libraries. Default is OFF.
-+ Boost_USE_STATIC_RUNTIME - Set to ON or OFF to specify whether to use
-+ libraries linked statically to the C++ runtime
-+ ('s' tag). Default is platform dependent.
-+ Boost_USE_DEBUG_RUNTIME - Set to ON or OFF to specify whether to use
-+ libraries linked to the MS debug C++ runtime
-+ ('g' tag). Default is ON.
-+ Boost_USE_DEBUG_PYTHON - Set to ON to use libraries compiled with a
-+ debug Python build ('y' tag). Default is OFF.
-+ Boost_USE_STLPORT - Set to ON to use libraries compiled with
-+ STLPort ('p' tag). Default is OFF.
-+ Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS
-+ - Set to ON to use libraries compiled with
-+ STLPort deprecated "native iostreams"
-+ ('n' tag). Default is OFF.
-+ Boost_COMPILER - Set to the compiler-specific library suffix
-+ (e.g. "-gcc43"). Default is auto-computed
-+ for the C++ compiler in use. A list may be
-+ used if multiple compatible suffixes should
-+ be tested for, in decreasing order of
-+ preference.
-+ Boost_ARCHITECTURE - Set to the architecture-specific library suffix
-+ (e.g. "-x64"). Default is auto-computed for the
-+ C++ compiler in use.
-+ Boost_THREADAPI - Suffix for "thread" component library name,
-+ such as "pthread" or "win32". Names with
-+ and without this suffix will both be tried.
-+ Boost_NAMESPACE - Alternate namespace used to build boost with
-+ e.g. if set to "myboost", will search for
-+ myboost_thread instead of boost_thread.
-+
-+Other variables one may set to control this module are::
-+
-+ Boost_DEBUG - Set to ON to enable debug output from FindBoost.
-+ Please enable this before filing any bug report.
-+ Boost_DETAILED_FAILURE_MSG
-+ - Set to ON to add detailed information to the
-+ failure message even when the REQUIRED option
-+ is not given to the find_package call.
-+ Boost_REALPATH - Set to ON to resolve symlinks for discovered
-+ libraries to assist with packaging. For example,
-+ the "system" component library may be resolved to
-+ "/usr/lib/libboost_system.so.1.67.0" instead of
-+ "/usr/lib/libboost_system.so". This does not
-+ affect linking and should not be enabled unless
-+ the user needs this information.
-+ Boost_LIBRARY_DIR - Default value for Boost_LIBRARY_DIR_RELEASE and
-+ Boost_LIBRARY_DIR_DEBUG.
-+
-+On Visual Studio and Borland compilers Boost headers request automatic
-+linking to corresponding libraries. This requires matching libraries
-+to be linked explicitly or available in the link library search path.
-+In this case setting Boost_USE_STATIC_LIBS to OFF may not achieve
-+dynamic linking. Boost automatic linking typically requests static
-+libraries with a few exceptions (such as Boost.Python). Use::
-+
-+ add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINITIONS})
-+
-+to ask Boost to report information about automatic linking requests.
-+
-+Example to find Boost headers only::
-+
-+ find_package(Boost 1.36.0)
-+ if(Boost_FOUND)
-+ include_directories(${Boost_INCLUDE_DIRS})
-+ add_executable(foo foo.cc)
-+ endif()
-+
-+Example to find Boost libraries and use imported targets::
-+
-+ find_package(Boost 1.56 REQUIRED COMPONENTS
-+ date_time filesystem iostreams)
-+ add_executable(foo foo.cc)
-+ target_link_libraries(foo Boost::date_time Boost::filesystem
-+ Boost::iostreams)
-+
-+Example to find Boost Python 3.6 libraries and use imported targets::
-+
-+ find_package(Boost 1.67 REQUIRED COMPONENTS
-+ python36 numpy36)
-+ add_executable(foo foo.cc)
-+ target_link_libraries(foo Boost::python36 Boost::numpy36)
-+
-+Example to find Boost headers and some *static* (release only) libraries::
-+
-+ set(Boost_USE_STATIC_LIBS ON) # only find static libs
-+ set(Boost_USE_DEBUG_LIBS OFF) # ignore debug libs and
-+ set(Boost_USE_RELEASE_LIBS ON) # only find release libs
-+ set(Boost_USE_MULTITHREADED ON)
-+ set(Boost_USE_STATIC_RUNTIME OFF)
-+ find_package(Boost 1.66.0 COMPONENTS date_time filesystem system ...)
-+ if(Boost_FOUND)
-+ include_directories(${Boost_INCLUDE_DIRS})
-+ add_executable(foo foo.cc)
-+ target_link_libraries(foo ${Boost_LIBRARIES})
-+ endif()
-+
-+Boost CMake
-+^^^^^^^^^^^
-+
-+If Boost was built using the boost-cmake project it provides a package
-+configuration file for use with find_package's Config mode. This
-+module looks for the package configuration file called
-+BoostConfig.cmake or boost-config.cmake and stores the result in cache
-+entry "Boost_DIR". If found, the package configuration file is loaded
-+and this module returns with no further action. See documentation of
-+the Boost CMake package configuration for details on what it provides.
-+
-+Set Boost_NO_BOOST_CMAKE to ON to disable the search for boost-cmake.
-+#]=======================================================================]
-
- # Save project's policies
- cmake_policy(PUSH)
-@@ -406,15 +411,18 @@ endmacro()
-
- #-------------------------------------------------------------------------------
-
--#
--# Runs compiler with "-dumpversion" and parses major/minor
--# version with a regex.
--#
--function(_Boost_COMPILER_DUMPVERSION _OUTPUT_VERSION)
-- string(REGEX REPLACE "([0-9]+)\\.([0-9]+)(\\.[0-9]+)?" "\\1\\2"
-- _boost_COMPILER_VERSION ${CMAKE_CXX_COMPILER_VERSION})
-+# Convert CMAKE_CXX_COMPILER_VERSION to boost compiler suffix version.
-+function(_Boost_COMPILER_DUMPVERSION _OUTPUT_VERSION _OUTPUT_VERSION_MAJOR _OUTPUT_VERSION_MINOR)
-+ string(REGEX REPLACE "([0-9]+)\\.([0-9]+)(\\.[0-9]+)?" "\\1"
-+ _boost_COMPILER_VERSION_MAJOR "${CMAKE_CXX_COMPILER_VERSION}")
-+ string(REGEX REPLACE "([0-9]+)\\.([0-9]+)(\\.[0-9]+)?" "\\2"
-+ _boost_COMPILER_VERSION_MINOR "${CMAKE_CXX_COMPILER_VERSION}")
-+
-+ set(_boost_COMPILER_VERSION "${_boost_COMPILER_VERSION_MAJOR}${_boost_COMPILER_VERSION_MINOR}")
-
- set(${_OUTPUT_VERSION} ${_boost_COMPILER_VERSION} PARENT_SCOPE)
-+ set(${_OUTPUT_VERSION_MAJOR} ${_boost_COMPILER_VERSION_MAJOR} PARENT_SCOPE)
-+ set(${_OUTPUT_VERSION_MINOR} ${_boost_COMPILER_VERSION_MINOR} PARENT_SCOPE)
- endfunction()
-
- #
-@@ -458,28 +466,10 @@ function(_Boost_GUESS_COMPILER_PREFIX _ret)
- elseif (GHSMULTI)
- set(_boost_COMPILER "-ghs")
- elseif("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC")
-- #[========================================================[
-- NOTE: newer versions of FindBoost from kitware
-- change this version check to use MSVC_TOOLSET_VERSION.
-- That variable only exists in make 3.12 or greater, so
-- until all envs (including bundled visual studio) have
-- this min version of cmake, stick with this
-- CMAKE_CXX_COMPILER_VERSION check
-- #]========================================================]
-- if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.10)
-+ if(MSVC_TOOLSET_VERSION GREATER_EQUAL 141)
- set(_boost_COMPILER "-vc141;-vc140")
-- elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19)
-- set(_boost_COMPILER "-vc140")
-- elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18)
-- set(_boost_COMPILER "-vc120")
-- elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 17)
-- set(_boost_COMPILER "-vc110")
-- elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16)
-- set(_boost_COMPILER "-vc100")
-- elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15)
-- set(_boost_COMPILER "-vc90")
-- elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 14)
-- set(_boost_COMPILER "-vc80")
-+ elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 80)
-+ set(_boost_COMPILER "-vc${MSVC_TOOLSET_VERSION}")
- elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13.10)
- set(_boost_COMPILER "-vc71")
- elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13) # Good luck!
-@@ -497,25 +487,35 @@ function(_Boost_GUESS_COMPILER_PREFIX _ret)
- if(${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION} VERSION_LESS 1.34)
- set(_boost_COMPILER "-mgw") # no GCC version encoding prior to 1.34
- else()
-- _Boost_COMPILER_DUMPVERSION(_boost_COMPILER_VERSION)
-+ _Boost_COMPILER_DUMPVERSION(_boost_COMPILER_VERSION _boost_COMPILER_VERSION_MAJOR _boost_COMPILER_VERSION_MINOR)
- set(_boost_COMPILER "-mgw${_boost_COMPILER_VERSION}")
- endif()
- elseif (UNIX)
-- if (CMAKE_COMPILER_IS_GNUCXX)
-+ _Boost_COMPILER_DUMPVERSION(_boost_COMPILER_VERSION _boost_COMPILER_VERSION_MAJOR _boost_COMPILER_VERSION_MINOR)
-+ if(NOT Boost_VERSION VERSION_LESS 106900)
-+ # From GCC 5 and clang 4, versioning changes and minor becomes patch.
-+ # For those compilers, patch is exclude from compiler tag in Boost 1.69+ library naming.
-+ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND _boost_COMPILER_VERSION_MAJOR VERSION_GREATER 4)
-+ set(_boost_COMPILER_VERSION "${_boost_COMPILER_VERSION_MAJOR}")
-+ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND _boost_COMPILER_VERSION_MAJOR VERSION_GREATER 3)
-+ set(_boost_COMPILER_VERSION "${_boost_COMPILER_VERSION_MAJOR}")
-+ endif()
-+ endif()
-+
-+ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
- if(${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION} VERSION_LESS 1.34)
- set(_boost_COMPILER "-gcc") # no GCC version encoding prior to 1.34
- else()
-- _Boost_COMPILER_DUMPVERSION(_boost_COMPILER_VERSION)
- # Determine which version of GCC we have.
- if(APPLE)
- if(Boost_MINOR_VERSION)
- if(${Boost_MINOR_VERSION} GREATER 35)
- # In Boost 1.36.0 and newer, the mangled compiler name used
-- # on Mac OS X/Darwin is "xgcc".
-+ # on macOS/Darwin is "xgcc".
- set(_boost_COMPILER "-xgcc${_boost_COMPILER_VERSION}")
- else()
- # In Boost <= 1.35.0, there is no mangled compiler name for
-- # the Mac OS X/Darwin version of GCC.
-+ # the macOS/Darwin version of GCC.
- set(_boost_COMPILER "")
- endif()
- else()
-@@ -527,7 +527,10 @@ function(_Boost_GUESS_COMPILER_PREFIX _ret)
- set(_boost_COMPILER "-gcc${_boost_COMPILER_VERSION}")
- endif()
- endif()
-- endif ()
-+ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
-+ # TODO: Find out any Boost version constraints vs clang support.
-+ set(_boost_COMPILER "-clang${_boost_COMPILER_VERSION}")
-+ endif()
- else()
- # TODO at least Boost_DEBUG here?
- set(_boost_COMPILER "")
-@@ -591,7 +594,7 @@ function(_Boost_COMPONENT_DEPENDENCIES component _ret)
- endif()
-
- set(_Boost_IMPORTED_TARGETS TRUE)
-- if(Boost_VERSION VERSION_LESS 103300)
-+ if(Boost_VERSION AND Boost_VERSION VERSION_LESS 103300)
- message(WARNING "Imported targets and dependency information not available for Boost version ${Boost_VERSION} (all versions older than 1.33)")
- set(_Boost_IMPORTED_TARGETS FALSE)
- elseif(NOT Boost_VERSION VERSION_LESS 103300 AND Boost_VERSION VERSION_LESS 103500)
-@@ -841,27 +844,41 @@ function(_Boost_COMPONENT_DEPENDENCIES component _ret)
- set(_Boost_TIMER_DEPENDENCIES chrono system)
- set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
- set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
-+ elseif(NOT Boost_VERSION VERSION_LESS 106800 AND Boost_VERSION VERSION_LESS 106900)
-+ set(_Boost_CHRONO_DEPENDENCIES system)
-+ set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time)
-+ set(_Boost_CONTRACT_DEPENDENCIES thread chrono system date_time)
-+ set(_Boost_COROUTINE_DEPENDENCIES context system)
-+ set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time)
-+ set(_Boost_FILESYSTEM_DEPENDENCIES system)
-+ set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-+ set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic)
-+ set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
-+ set(_Boost_MPI_DEPENDENCIES serialization)
-+ set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
-+ set(_Boost_NUMPY_DEPENDENCIES python${component_python_version})
-+ set(_Boost_RANDOM_DEPENDENCIES system)
-+ set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
-+ set(_Boost_TIMER_DEPENDENCIES chrono system)
-+ set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
-+ set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
- else()
-- if(NOT Boost_VERSION VERSION_LESS 106800)
-- set(_Boost_CHRONO_DEPENDENCIES system)
-- set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time)
-- set(_Boost_CONTRACT_DEPENDENCIES thread chrono system date_time)
-- set(_Boost_COROUTINE_DEPENDENCIES context system)
-- set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time)
-- set(_Boost_FILESYSTEM_DEPENDENCIES system)
-+ if(NOT Boost_VERSION VERSION_LESS 106900)
-+ set(_Boost_CONTRACT_DEPENDENCIES thread chrono date_time)
-+ set(_Boost_COROUTINE_DEPENDENCIES context)
-+ set(_Boost_FIBER_DEPENDENCIES context)
- set(_Boost_IOSTREAMS_DEPENDENCIES regex)
-- set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic)
-+ set(_Boost_LOG_DEPENDENCIES date_time log_setup filesystem thread regex chrono atomic)
- set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
- set(_Boost_MPI_DEPENDENCIES serialization)
- set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization)
- set(_Boost_NUMPY_DEPENDENCIES python${component_python_version})
-- set(_Boost_RANDOM_DEPENDENCIES system)
-- set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
-+ set(_Boost_THREAD_DEPENDENCIES chrono date_time atomic)
- set(_Boost_TIMER_DEPENDENCIES chrono system)
-- set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
-+ set(_Boost_WAVE_DEPENDENCIES filesystem serialization thread chrono date_time atomic)
- set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
- endif()
-- if(NOT Boost_VERSION VERSION_LESS 106900)
-+ if(NOT Boost_VERSION VERSION_LESS 107000)
- message(WARNING "New Boost version may have incorrect or missing dependencies and imported targets")
- endif()
- endif()
-@@ -899,7 +916,11 @@ function(_Boost_COMPONENT_HEADERS component _hdrs)
- set(_Boost_CHRONO_HEADERS "boost/chrono.hpp")
- set(_Boost_CONTAINER_HEADERS "boost/container/container_fwd.hpp")
- set(_Boost_CONTRACT_HEADERS "boost/contract.hpp")
-- set(_Boost_CONTEXT_HEADERS "boost/context/detail/fcontext.hpp")
-+ if(Boost_VERSION VERSION_LESS 106100)
-+ set(_Boost_CONTEXT_HEADERS "boost/context/all.hpp")
-+ else()
-+ set(_Boost_CONTEXT_HEADERS "boost/context/detail/fcontext.hpp")
-+ endif()
- set(_Boost_COROUTINE_HEADERS "boost/coroutine/all.hpp")
- set(_Boost_DATE_TIME_HEADERS "boost/date_time/date.hpp")
- set(_Boost_EXCEPTION_HEADERS "boost/exception/exception.hpp")
-@@ -928,6 +949,12 @@ function(_Boost_COMPONENT_HEADERS component _hdrs)
- set(_Boost_REGEX_HEADERS "boost/regex.hpp")
- set(_Boost_SERIALIZATION_HEADERS "boost/serialization/serialization.hpp")
- set(_Boost_SIGNALS_HEADERS "boost/signals.hpp")
-+ set(_Boost_STACKTRACE_ADDR2LINE_HEADERS "boost/stacktrace.hpp")
-+ set(_Boost_STACKTRACE_BACKTRACE_HEADERS "boost/stacktrace.hpp")
-+ set(_Boost_STACKTRACE_BASIC_HEADERS "boost/stacktrace.hpp")
-+ set(_Boost_STACKTRACE_NOOP_HEADERS "boost/stacktrace.hpp")
-+ set(_Boost_STACKTRACE_WINDBG_CACHED_HEADERS "boost/stacktrace.hpp")
-+ set(_Boost_STACKTRACE_WINDBG_HEADERS "boost/stacktrace.hpp")
- set(_Boost_SYSTEM_HEADERS "boost/system/config.hpp")
- set(_Boost_TEST_EXEC_MONITOR_HEADERS "boost/test/test_exec_monitor.hpp")
- set(_Boost_THREAD_HEADERS "boost/thread.hpp")
-@@ -1036,21 +1063,12 @@ function(_Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS component
- else()
- set(_arch_suffix 32)
- endif()
-- if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.10)
-+ if(MSVC_TOOLSET_VERSION GREATER_EQUAL 141)
- list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-14.1)
- list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-14.0)
-- elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19)
-- list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-14.0)
-- elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18)
-- list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-12.0)
-- elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 17)
-- list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-11.0)
-- elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16)
-- list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-10.0)
-- elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15)
-- list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-9.0)
-- elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 14)
-- list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-8.0)
-+ elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 80)
-+ math(EXPR _toolset_major_version "${MSVC_TOOLSET_VERSION} / 10")
-+ list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-${_toolset_major_version}.0)
- endif()
- set(${componentlibvar} ${${componentlibvar}} PARENT_SCOPE)
- endif()
-@@ -1108,6 +1126,7 @@ else()
- # _Boost_COMPONENT_HEADERS. See the instructions at the top of
- # _Boost_COMPONENT_DEPENDENCIES.
- set(_Boost_KNOWN_VERSIONS ${Boost_ADDITIONAL_VERSIONS}
-+ "1.69.0" "1.69"
- "1.68.0" "1.68" "1.67.0" "1.67" "1.66.0" "1.66" "1.65.1" "1.65.0" "1.65"
- "1.64.0" "1.64" "1.63.0" "1.63" "1.62.0" "1.62" "1.61.0" "1.61" "1.60.0" "1.60"
- "1.59.0" "1.59" "1.58.0" "1.58" "1.57.0" "1.57" "1.56.0" "1.56" "1.55.0" "1.55"
-@@ -1265,7 +1284,7 @@ if(NOT Boost_INCLUDE_DIR)
- list(APPEND _boost_INCLUDE_SEARCH_DIRS NO_CMAKE_SYSTEM_PATH NO_SYSTEM_ENVIRONMENT_PATH)
- else()
- if("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC")
-- foreach(ver ${_Boost_KNOWN_VERSIONS})
-+ foreach(ver ${_boost_TEST_VERSIONS})
- string(REPLACE "." "_" ver "${ver}")
- list(APPEND _boost_INCLUDE_SEARCH_DIRS PATHS "C:/local/boost_${ver}")
- endforeach()
-@@ -1350,6 +1369,7 @@ if(Boost_INCLUDE_DIR)
- math(EXPR Boost_MAJOR_VERSION "${Boost_VERSION} / 100000")
- math(EXPR Boost_MINOR_VERSION "${Boost_VERSION} / 100 % 1000")
- math(EXPR Boost_SUBMINOR_VERSION "${Boost_VERSION} % 100")
-+ set(Boost_VERSION_STRING "${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}")
-
- string(APPEND Boost_ERROR_REASON
- "Boost version: ${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}\nBoost include path: ${Boost_INCLUDE_DIR}")
-@@ -1409,6 +1429,13 @@ if ( NOT Boost_NAMESPACE )
- set(Boost_NAMESPACE "boost")
- endif()
-
-+if(Boost_DEBUG)
-+ message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
-+ "Boost_LIB_PREFIX = ${Boost_LIB_PREFIX}")
-+ message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
-+ "Boost_NAMESPACE = ${Boost_NAMESPACE}")
-+endif()
-+
- # ------------------------------------------------------------------------
- # Suffix initialization and compiler suffix detection.
- # ------------------------------------------------------------------------
-@@ -1501,27 +1528,35 @@ endif()
- # -x86 Architecture and address model tag
- # First character is the architecture, then word-size, either 32 or 64
- # Only used in 'versioned' layout, added in Boost 1.66.0
--set(_boost_ARCHITECTURE_TAG "")
--# {CMAKE_CXX_COMPILER_ARCHITECTURE_ID} is not currently set for all compilers
--if(NOT "x${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "x" AND NOT Boost_VERSION VERSION_LESS 106600)
-- string(APPEND _boost_ARCHITECTURE_TAG "-")
-- # This needs to be kept in-sync with the section of CMakePlatformId.h.in
-- # inside 'defined(_WIN32) && defined(_MSC_VER)'
-- if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "IA64")
-- string(APPEND _boost_ARCHITECTURE_TAG "i")
-- elseif(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "X86"
-- OR CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "x64")
-- string(APPEND _boost_ARCHITECTURE_TAG "x")
-- elseif(CMAKE_CXX_COMPILER_ARCHITECTURE_ID MATCHES "^ARM")
-- string(APPEND _boost_ARCHITECTURE_TAG "a")
-- elseif(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "MIPS")
-- string(APPEND _boost_ARCHITECTURE_TAG "m")
-- endif()
--
-- if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-- string(APPEND _boost_ARCHITECTURE_TAG "64")
-- else()
-- string(APPEND _boost_ARCHITECTURE_TAG "32")
-+if(DEFINED Boost_ARCHITECTURE)
-+ set(_boost_ARCHITECTURE_TAG "${Boost_ARCHITECTURE}")
-+ if(Boost_DEBUG)
-+ message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] "
-+ "using user-specified Boost_ARCHITECTURE = ${_boost_ARCHITECTURE_TAG}")
-+ endif()
-+else()
-+ set(_boost_ARCHITECTURE_TAG "")
-+ # {CMAKE_CXX_COMPILER_ARCHITECTURE_ID} is not currently set for all compilers
-+ if(NOT "x${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "x" AND NOT Boost_VERSION VERSION_LESS 106600)
-+ string(APPEND _boost_ARCHITECTURE_TAG "-")
-+ # This needs to be kept in-sync with the section of CMakePlatformId.h.in
-+ # inside 'defined(_WIN32) && defined(_MSC_VER)'
-+ if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "IA64")
-+ string(APPEND _boost_ARCHITECTURE_TAG "i")
-+ elseif(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "X86"
-+ OR CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "x64")
-+ string(APPEND _boost_ARCHITECTURE_TAG "x")
-+ elseif(CMAKE_CXX_COMPILER_ARCHITECTURE_ID MATCHES "^ARM")
-+ string(APPEND _boost_ARCHITECTURE_TAG "a")
-+ elseif(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "MIPS")
-+ string(APPEND _boost_ARCHITECTURE_TAG "m")
-+ endif()
-+
-+ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-+ string(APPEND _boost_ARCHITECTURE_TAG "64")
-+ else()
-+ string(APPEND _boost_ARCHITECTURE_TAG "32")
-+ endif()
- endif()
- endif()
-
-@@ -1576,7 +1611,7 @@ foreach(c DEBUG RELEASE)
- if( Boost_NO_SYSTEM_PATHS )
- list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} NO_CMAKE_SYSTEM_PATH NO_SYSTEM_ENVIRONMENT_PATH)
- else()
-- foreach(ver ${_Boost_KNOWN_VERSIONS})
-+ foreach(ver ${_boost_TEST_VERSIONS})
- string(REPLACE "." "_" ver "${ver}")
- _Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS(_boost_LIBRARY_SEARCH_DIRS_${c} "C:/local/boost_${ver}")
- endforeach()
-@@ -1763,6 +1798,7 @@ foreach(COMPONENT ${Boost_FIND_COMPONENTS})
- list(APPEND _boost_RELEASE_NAMES
- ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION}
- ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}
-+ ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}
- ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component} )
- if(_boost_STATIC_RUNTIME_WORKAROUND)
- set(_boost_RELEASE_STATIC_ABI_TAG "-s${_boost_RELEASE_ABI_TAG}")
-@@ -2064,6 +2100,9 @@ if(Boost_FOUND)
- message (STATUS " ${COMPONENT}")
- endif()
- list(APPEND Boost_LIBRARIES ${Boost_${UPPERCOMPONENT}_LIBRARY})
-+ if(COMPONENT STREQUAL "thread")
-+ list(APPEND Boost_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
-+ endif()
- endif()
- endforeach()
- else()
-diff --git a/src/ripple/beast/container/detail/aged_ordered_container.h b/src/ripple/beast/container/detail/aged_ordered_container.h
-index 13483040ff..201c04b72d 100644
---- a/src/ripple/beast/container/detail/aged_ordered_container.h
-+++ b/src/ripple/beast/container/detail/aged_ordered_container.h
-@@ -22,9 +22,9 @@
-
- #include <ripple/beast/container/detail/aged_container_iterator.h>
- #include <ripple/beast/container/detail/aged_associative_container.h>
-+#include <ripple/beast/container/detail/empty_base_optimization.h>
- #include <ripple/beast/container/aged_container.h>
- #include <ripple/beast/clock/abstract_clock.h>
--#include <boost/beast/core/detail/empty_base_optimization.hpp>
- #include <boost/intrusive/list.hpp>
- #include <boost/intrusive/set.hpp>
- #include <boost/version.hpp>
-@@ -162,7 +162,7 @@ class aged_ordered_container
-
- // VFALCO TODO This should only be enabled for maps.
- class pair_value_compare
-- : public boost::beast::detail::empty_base_optimization <Compare>
-+ : public beast::detail::empty_base_optimization <Compare>
- #ifdef _LIBCPP_VERSION
- , public std::binary_function <value_type, value_type, bool>
- #endif
-@@ -184,7 +184,7 @@ class aged_ordered_container
- }
-
- pair_value_compare (pair_value_compare const& other)
-- : boost::beast::detail::empty_base_optimization <Compare> (other)
-+ : beast::detail::empty_base_optimization <Compare> (other)
- {
- }
-
-@@ -192,7 +192,7 @@ class aged_ordered_container
- friend aged_ordered_container;
-
- pair_value_compare (Compare const& compare)
-- : boost::beast::detail::empty_base_optimization <Compare> (compare)
-+ : beast::detail::empty_base_optimization <Compare> (compare)
- {
- }
- };
-@@ -200,7 +200,7 @@ class aged_ordered_container
- // Compares value_type against element, used in insert_check
- // VFALCO TODO hoist to remove template argument dependencies
- class KeyValueCompare
-- : public boost::beast::detail::empty_base_optimization <Compare>
-+ : public beast::detail::empty_base_optimization <Compare>
- #ifdef _LIBCPP_VERSION
- , public std::binary_function <Key, element, bool>
- #endif
-@@ -215,7 +215,7 @@ class aged_ordered_container
- KeyValueCompare () = default;
-
- KeyValueCompare (Compare const& compare)
-- : boost::beast::detail::empty_base_optimization <Compare> (compare)
-+ : beast::detail::empty_base_optimization <Compare> (compare)
- {
- }
-
-@@ -252,12 +252,12 @@ class aged_ordered_container
-
- Compare& compare()
- {
-- return boost::beast::detail::empty_base_optimization <Compare>::member();
-+ return beast::detail::empty_base_optimization <Compare>::member();
- }
-
- Compare const& compare() const
- {
-- return boost::beast::detail::empty_base_optimization <Compare>::member();
-+ return beast::detail::empty_base_optimization <Compare>::member();
- }
- };
-
-@@ -283,7 +283,7 @@ class aged_ordered_container
-
- class config_t
- : private KeyValueCompare
-- , public boost::beast::detail::empty_base_optimization <ElementAllocator>
-+ , public beast::detail::empty_base_optimization <ElementAllocator>
- {
- public:
- explicit config_t (
-@@ -303,7 +303,7 @@ class aged_ordered_container
- config_t (
- clock_type& clock_,
- Allocator const& alloc_)
-- : boost::beast::detail::empty_base_optimization <ElementAllocator> (alloc_)
-+ : beast::detail::empty_base_optimization <ElementAllocator> (alloc_)
- , clock (clock_)
- {
- }
-@@ -313,14 +313,14 @@ class aged_ordered_container
- Compare const& comp,
- Allocator const& alloc_)
- : KeyValueCompare (comp)
-- , boost::beast::detail::empty_base_optimization <ElementAllocator> (alloc_)
-+ , beast::detail::empty_base_optimization <ElementAllocator> (alloc_)
- , clock (clock_)
- {
- }
-
- config_t (config_t const& other)
- : KeyValueCompare (other.key_compare())
-- , boost::beast::detail::empty_base_optimization <ElementAllocator> (
-+ , beast::detail::empty_base_optimization <ElementAllocator> (
- ElementAllocatorTraits::
- select_on_container_copy_construction (
- other.alloc()))
-@@ -330,14 +330,14 @@ class aged_ordered_container
-
- config_t (config_t const& other, Allocator const& alloc)
- : KeyValueCompare (other.key_compare())
-- , boost::beast::detail::empty_base_optimization <ElementAllocator> (alloc)
-+ , beast::detail::empty_base_optimization <ElementAllocator> (alloc)
- , clock (other.clock)
- {
- }
-
- config_t (config_t&& other)
- : KeyValueCompare (std::move (other.key_compare()))
-- , boost::beast::detail::empty_base_optimization <ElementAllocator> (
-+ , beast::detail::empty_base_optimization <ElementAllocator> (
- std::move (other))
- , clock (other.clock)
- {
-@@ -345,7 +345,7 @@ class aged_ordered_container
-
- config_t (config_t&& other, Allocator const& alloc)
- : KeyValueCompare (std::move (other.key_compare()))
-- , boost::beast::detail::empty_base_optimization <ElementAllocator> (alloc)
-+ , beast::detail::empty_base_optimization <ElementAllocator> (alloc)
- , clock (other.clock)
- {
- }
-@@ -391,13 +391,13 @@ class aged_ordered_container
-
- ElementAllocator& alloc()
- {
-- return boost::beast::detail::empty_base_optimization <
-+ return beast::detail::empty_base_optimization <
- ElementAllocator>::member();
- }
-
- ElementAllocator const& alloc() const
- {
-- return boost::beast::detail::empty_base_optimization <
-+ return beast::detail::empty_base_optimization <
- ElementAllocator>::member();
- }
-
-diff --git a/src/ripple/beast/container/detail/aged_unordered_container.h b/src/ripple/beast/container/detail/aged_unordered_container.h
-index 024ef9a70b..271045ee47 100644
---- a/src/ripple/beast/container/detail/aged_unordered_container.h
-+++ b/src/ripple/beast/container/detail/aged_unordered_container.h
-@@ -22,9 +22,9 @@
-
- #include <ripple/beast/container/detail/aged_container_iterator.h>
- #include <ripple/beast/container/detail/aged_associative_container.h>
-+#include <ripple/beast/container/detail/empty_base_optimization.h>
- #include <ripple/beast/container/aged_container.h>
- #include <ripple/beast/clock/abstract_clock.h>
--#include <boost/beast/core/detail/empty_base_optimization.hpp>
- #include <boost/intrusive/list.hpp>
- #include <boost/intrusive/unordered_set.hpp>
- #include <algorithm>
-@@ -163,7 +163,7 @@ class aged_unordered_container
-
- // VFALCO TODO hoist to remove template argument dependencies
- class ValueHash
-- : private boost::beast::detail::empty_base_optimization <Hash>
-+ : private beast::detail::empty_base_optimization <Hash>
- #ifdef _LIBCPP_VERSION
- , public std::unary_function <element, std::size_t>
- #endif
-@@ -179,7 +179,7 @@ class aged_unordered_container
- }
-
- ValueHash (Hash const& hash)
-- : boost::beast::detail::empty_base_optimization <Hash> (hash)
-+ : beast::detail::empty_base_optimization <Hash> (hash)
- {
- }
-
-@@ -202,7 +202,7 @@ class aged_unordered_container
- // Compares value_type against element, used in find/insert_check
- // VFALCO TODO hoist to remove template argument dependencies
- class KeyValueEqual
-- : private boost::beast::detail::empty_base_optimization <KeyEqual>
-+ : private beast::detail::empty_base_optimization <KeyEqual>
- #ifdef _LIBCPP_VERSION
- , public std::binary_function <Key, element, bool>
- #endif
-@@ -219,7 +219,7 @@ class aged_unordered_container
- }
-
- KeyValueEqual (KeyEqual const& keyEqual)
-- : boost::beast::detail::empty_base_optimization <KeyEqual> (keyEqual)
-+ : beast::detail::empty_base_optimization <KeyEqual> (keyEqual)
- {
- }
-
-@@ -300,7 +300,7 @@ class aged_unordered_container
- class config_t
- : private ValueHash
- , private KeyValueEqual
-- , private boost::beast::detail::empty_base_optimization <ElementAllocator>
-+ , private beast::detail::empty_base_optimization <ElementAllocator>
- {
- public:
- explicit config_t (
-@@ -328,7 +328,7 @@ class aged_unordered_container
- config_t (
- clock_type& clock_,
- Allocator const& alloc_)
-- : boost::beast::detail::empty_base_optimization <ElementAllocator> (alloc_)
-+ : beast::detail::empty_base_optimization <ElementAllocator> (alloc_)
- , clock (clock_)
- {
- }
-@@ -348,7 +348,7 @@ class aged_unordered_container
- Hash const& hash,
- Allocator const& alloc_)
- : ValueHash (hash)
-- , boost::beast::detail::empty_base_optimization <ElementAllocator> (alloc_)
-+ , beast::detail::empty_base_optimization <ElementAllocator> (alloc_)
- , clock (clock_)
- {
- }
-@@ -358,7 +358,7 @@ class aged_unordered_container
- KeyEqual const& keyEqual,
- Allocator const& alloc_)
- : KeyValueEqual (keyEqual)
-- , boost::beast::detail::empty_base_optimization <ElementAllocator> (alloc_)
-+ , beast::detail::empty_base_optimization <ElementAllocator> (alloc_)
- , clock (clock_)
- {
- }
-@@ -370,7 +370,7 @@ class aged_unordered_container
- Allocator const& alloc_)
- : ValueHash (hash)
- , KeyValueEqual (keyEqual)
-- , boost::beast::detail::empty_base_optimization <ElementAllocator> (alloc_)
-+ , beast::detail::empty_base_optimization <ElementAllocator> (alloc_)
- , clock (clock_)
- {
- }
-@@ -378,7 +378,7 @@ class aged_unordered_container
- config_t (config_t const& other)
- : ValueHash (other.hash_function())
- , KeyValueEqual (other.key_eq())
-- , boost::beast::detail::empty_base_optimization <ElementAllocator> (
-+ , beast::detail::empty_base_optimization <ElementAllocator> (
- ElementAllocatorTraits::
- select_on_container_copy_construction (
- other.alloc()))
-@@ -389,7 +389,7 @@ class aged_unordered_container
- config_t (config_t const& other, Allocator const& alloc)
- : ValueHash (other.hash_function())
- , KeyValueEqual (other.key_eq())
-- , boost::beast::detail::empty_base_optimization <ElementAllocator> (alloc)
-+ , beast::detail::empty_base_optimization <ElementAllocator> (alloc)
- , clock (other.clock)
- {
- }
-@@ -397,7 +397,7 @@ class aged_unordered_container
- config_t (config_t&& other)
- : ValueHash (std::move (other.hash_function()))
- , KeyValueEqual (std::move (other.key_eq()))
-- , boost::beast::detail::empty_base_optimization <ElementAllocator> (
-+ , beast::detail::empty_base_optimization <ElementAllocator> (
- std::move (other.alloc()))
- , clock (other.clock)
- {
-@@ -406,7 +406,7 @@ class aged_unordered_container
- config_t (config_t&& other, Allocator const& alloc)
- : ValueHash (std::move (other.hash_function()))
- , KeyValueEqual (std::move (other.key_eq()))
-- , boost::beast::detail::empty_base_optimization <ElementAllocator> (alloc)
-+ , beast::detail::empty_base_optimization <ElementAllocator> (alloc)
- , clock (other.clock)
- {
- }
-@@ -471,13 +471,13 @@ class aged_unordered_container
-
- ElementAllocator& alloc()
- {
-- return boost::beast::detail::empty_base_optimization <
-+ return beast::detail::empty_base_optimization <
- ElementAllocator>::member();
- }
-
- ElementAllocator const& alloc() const
- {
-- return boost::beast::detail::empty_base_optimization <
-+ return beast::detail::empty_base_optimization <
- ElementAllocator>::member();
- }
-
-diff --git a/src/ripple/beast/container/detail/empty_base_optimization.h b/src/ripple/beast/container/detail/empty_base_optimization.h
-new file mode 100644
-index 0000000000..3b1acb99b1
---- /dev/null
-+++ b/src/ripple/beast/container/detail/empty_base_optimization.h
-@@ -0,0 +1,98 @@
-+//
-+// Copyright (c) 2016-2017 Vinnie Falco (vinnie dot falco at gmail dot com)
-+//
-+// Distributed under the Boost Software License, Version 1.0. (See accompanying
-+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-+//
-+// Official repository: https://github.com/boostorg/beast
-+//
-+
-+#ifndef BEAST_CONTAINER_DETAIL_EMPTY_BASE_OPTIMIZATION_H_INCLUDED
-+#define BEAST_CONTAINER_DETAIL_EMPTY_BASE_OPTIMIZATION_H_INCLUDED
-+
-+#include <boost/type_traits/is_final.hpp>
-+#include <type_traits>
-+#include <utility>
-+
-+namespace beast {
-+namespace detail {
-+
-+template<class T>
-+struct is_empty_base_optimization_derived
-+ : std::integral_constant<bool,
-+ std::is_empty<T>::value &&
-+ ! boost::is_final<T>::value>
-+{
-+};
-+
-+template<class T, int UniqueID = 0,
-+ bool isDerived =
-+ is_empty_base_optimization_derived<T>::value>
-+class empty_base_optimization : private T
-+{
-+public:
-+ empty_base_optimization() = default;
-+ empty_base_optimization(empty_base_optimization&&) = default;
-+ empty_base_optimization(empty_base_optimization const&) = default;
-+ empty_base_optimization& operator=(empty_base_optimization&&) = default;
-+ empty_base_optimization& operator=(empty_base_optimization const&) = default;
-+
-+ template<class Arg1, class... ArgN>
-+ explicit
-+ empty_base_optimization(Arg1&& arg1, ArgN&&... argn)
-+ : T(std::forward<Arg1>(arg1),
-+ std::forward<ArgN>(argn)...)
-+ {
-+ }
-+
-+ T& member() noexcept
-+ {
-+ return *this;
-+ }
-+
-+ T const& member() const noexcept
-+ {
-+ return *this;
-+ }
-+};
-+
-+//------------------------------------------------------------------------------
-+
-+template<
-+ class T,
-+ int UniqueID
-+>
-+class empty_base_optimization <T, UniqueID, false>
-+{
-+ T t_;
-+
-+public:
-+ empty_base_optimization() = default;
-+ empty_base_optimization(empty_base_optimization&&) = default;
-+ empty_base_optimization(empty_base_optimization const&) = default;
-+ empty_base_optimization& operator=(empty_base_optimization&&) = default;
-+ empty_base_optimization& operator=(empty_base_optimization const&) = default;
-+
-+ template<class Arg1, class... ArgN>
-+ explicit
-+ empty_base_optimization(Arg1&& arg1, ArgN&&... argn)
-+ : t_(std::forward<Arg1>(arg1),
-+ std::forward<ArgN>(argn)...)
-+ {
-+ }
-+
-+ T& member() noexcept
-+ {
-+ return t_;
-+ }
-+
-+ T const& member() const noexcept
-+ {
-+ return t_;
-+ }
-+};
-+
-+} // detail
-+} // beast
-+
-+#endif
-diff --git a/src/ripple/server/impl/BaseWSPeer.h b/src/ripple/server/impl/BaseWSPeer.h
-index c4fc9b79dc..301d78ace3 100644
---- a/src/ripple/server/impl/BaseWSPeer.h
-+++ b/src/ripple/server/impl/BaseWSPeer.h
-@@ -291,14 +291,20 @@ on_write(error_code const& ec)
- start_timer();
- if(! result.first)
- impl().ws_.async_write_some(
-- result.first, result.second, strand_.wrap(std::bind(
-- &BaseWSPeer::on_write, impl().shared_from_this(),
-- std::placeholders::_1)));
-+ static_cast<bool>(result.first),
-+ result.second,
-+ strand_.wrap(std::bind(
-+ &BaseWSPeer::on_write,
-+ impl().shared_from_this(),
-+ std::placeholders::_1)));
- else
- impl().ws_.async_write_some(
-- result.first, result.second, strand_.wrap(std::bind(
-- &BaseWSPeer::on_write_fin, impl().shared_from_this(),
-- std::placeholders::_1)));
-+ static_cast<bool>(result.first),
-+ result.second,
-+ strand_.wrap(std::bind(
-+ &BaseWSPeer::on_write_fin,
-+ impl().shared_from_this(),
-+ std::placeholders::_1)));
- }
-
- template<class Handler, class Impl>