diff options
Diffstat (limited to 'community/rippled/boost-1.69.patch')
-rw-r--r-- | community/rippled/boost-1.69.patch | 1276 |
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> |