diff --git a/libs/boost/Makefile b/libs/boost/Makefile index 5c188bf1..04052dcb 100644 --- a/libs/boost/Makefile +++ b/libs/boost/Makefile @@ -11,13 +11,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=boost -PKG_VERSION:=1.73.0 -PKG_SOURCE_VERSION:=1_73_0 -PKG_RELEASE:=1 +PKG_VERSION:=1.75.0 +PKG_SOURCE_VERSION:=1_75_0 +PKG_RELEASE:=3 PKG_SOURCE:=$(PKG_NAME)_$(PKG_SOURCE_VERSION).tar.bz2 PKG_SOURCE_URL:=@SF/$(PKG_NAME)/$(PKG_NAME)/$(PKG_VERSION) https://dl.bintray.com/boostorg/release/$(PKG_VERSION)/source/ -PKG_HASH:=4eb3b8d442b426dc35346235c8733b5ae35ba431690e38c6a8263dce9fcbb402 +PKG_HASH:=953db31e016db7bb207f11432bef7df100516eeb746843fa0486a222e3fd49cb PKG_MAINTAINER:=Carlos M. Ferreira PKG_LICENSE:=BSL-1.0 @@ -32,7 +32,6 @@ PKG_BUILD_PARALLEL:=1 PKG_USE_MIPS16:=0 include $(INCLUDE_DIR)/package.mk -include $(INCLUDE_DIR)/nls.mk define Package/boost/Default SECTION:=libs @@ -43,7 +42,7 @@ define Package/boost/Default endef define Package/boost/description -This package provides the Boost v1.73.0 libraries. +This package provides the Boost v1.75.0 libraries. Boost is a set of free, peer-reviewed, portable C++ source libraries. This package provides the following run-time libraries: @@ -60,9 +59,11 @@ This package provides the following run-time libraries: - graph - - graph-parallel - iostreams - - locale (Requires kernel being compiled with full language support) + - json + - locale - log - math + - nowide - program_options - python3 - random @@ -76,10 +77,10 @@ This package provides the following run-time libraries: - wave There are many more header-only libraries supported by Boost. -See more at http://www.boost.org/doc/libs/1_72_0/ +See more at http://www.boost.org/doc/libs/1_75_0/ endef -PKG_BUILD_DEPENDS:=boost/host PACKAGE_python3:python3 +PKG_BUILD_DEPENDS:=boost/host include ../../lang/python/python3-version.mk BOOST_PYTHON3_VER=$(PYTHON3_VERSION) @@ -116,7 +117,7 @@ define Package/boost/config # Invisible config dependency config boost-context-exclude bool - default y if (TARGET_arc770 || TARGET_archs38 || TARGET_octeon || TARGET_octeontx) + default y if (TARGET_arc770 || TARGET_archs38) default n config boost-coroutine-exclude @@ -277,12 +278,10 @@ define Package/boost/config select PACKAGE_boost-graph default m if ALL - $(foreach lib,$(BOOST_LIBS), \ - config PACKAGE_boost-$(lib) + $(foreach lib,$(BOOST_LIBS), + config PACKAGE_boost-$(lib) prompt "Boost $(lib) $(if $(findstring python3,$(lib)),$(paren_left)v$(BOOST_PYTHON3_VER)$(paren_right) ,)library." default m if ALL - $(if $(findstring locale,$(lib)),depends on BUILD_NLS,)\ - $(if $(findstring python3,$(lib)),depends on PACKAGE_python3,)\ $(if $(findstring fiber,$(lib)),depends on !boost-fiber-exclude,)\ $(if $(findstring context,$(lib)),depends on !boost-context-exclude,) $(if $(findstring coroutine,$(lib)),depends on !boost-coroutine-exclude,) @@ -302,12 +301,17 @@ endef define Build/Configure endef +define Package/boost/Default/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/lib/libboost_$(2)*.so* $(1)/usr/lib/ +endef + # 1: short name # 2: dependencies on other boost libraries (short name) # 3: dependencies on other packages # 4: conditional/inward dependencies +# 5: dependencies compiled only when this package has been selected define DefineBoostLibrary - BOOST_DEPENDS+= +$(if $(4),$(4):boost-$(1),boost-$(1)) PKG_CONFIG_DEPENDS+= CONFIG_PACKAGE_boost-$(1) @@ -316,13 +320,17 @@ define DefineBoostLibrary define Package/boost-$(1) $(call Package/boost/Default) TITLE+= ($(1)) - DEPENDS+= $$(foreach lib,$(2),+boost-$$(lib)) $(3) $(if $(4),@$(4),) + DEPENDS+= $(foreach lib,$(2),+boost-$(lib)) $(3) $(if $(4),@$(4),) $(patsubst %,+PACKAGE_boost-$(1):%,$(5)) HIDDEN:=1 endef define Package/boost-$(1)/description This package contains the Boost $(1) library. endef + + define Package/boost-$(1)/install + $(if $(CONFIG_boost-static-libs),true,$(call Package/boost/Default/install,$$(1),$(1))) + endef endef $(eval $(call DefineBoostLibrary,atomic,system)) @@ -336,15 +344,17 @@ $(eval $(call DefineBoostLibrary,date_time)) $(eval $(call DefineBoostLibrary,fiber,coroutine filesystem,,!boost-fiber-exclude)) $(eval $(call DefineBoostLibrary,filesystem,system)) $(eval $(call DefineBoostLibrary,graph,regex)) -$(eval $(call DefineBoostLibrary,iostreams,,+zlib +liblzma +libbz2 +zstd)) -$(eval $(call DefineBoostLibrary,locale,system,$(ICONV_DEPENDS),BUILD_NLS)) +$(eval $(call DefineBoostLibrary,iostreams,,,,zlib liblzma libbz2 libzstd)) +$(eval $(call DefineBoostLibrary,json,container)) +$(eval $(call DefineBoostLibrary,locale,system chrono thread,,,icu)) $(eval $(call DefineBoostLibrary,log,system chrono date_time thread filesystem regex)) $(eval $(call DefineBoostLibrary,math)) #$(eval $(call DefineBoostLibrary,mpi,,)) # OpenMPI does no exist in OpenWRT at this time. +$(eval $(call DefineBoostLibrary,nowide)) $(eval $(call DefineBoostLibrary,program_options)) -$(eval $(call DefineBoostLibrary,python3,,,PACKAGE_python3)) +$(eval $(call DefineBoostLibrary,python3,,,,python3-base)) $(eval $(call DefineBoostLibrary,random,system)) -$(eval $(call DefineBoostLibrary,regex)) +$(eval $(call DefineBoostLibrary,regex,,,,icu)) $(eval $(call DefineBoostLibrary,serialization)) $(eval $(call DefineBoostLibrary,wserialization,serialization)) $(eval $(call DefineBoostLibrary,stacktrace)) @@ -367,17 +377,17 @@ define Host/Compile endef CONFIGURE_PREFIX:=$(PKG_INSTALL_DIR) -TARGET_LDFLAGS += -pthread -lrt +TARGET_LDFLAGS += -pthread -lrt -lstdc++ -Wl,--gc-sections,--as-needed,--print-gc-sections TARGET_CFLAGS += \ - $(if $(CONFIG_SOFT_FLOAT),-DBOOST_NO_FENV_H) -fPIC + $(if $(CONFIG_SOFT_FLOAT),-DBOOST_NO_FENV_H) -fPIC -ffunction-sections -fdata-sections -flto -EXTRA_CXXFLAGS += $(if $(CONFIG_GCC_USE_VERSION_5),-std=gnu++14,-std=gnu++17) +EXTRA_CXXFLAGS += $(if $(CONFIG_GCC_USE_VERSION_10),-std=gnu++20,$(if $(CONFIG_GCC_USE_VERSION_5),-std=gnu++14,-std=gnu++17)) ifneq ($(findstring mips,$(ARCH)),) BOOST_ABI = o32 ifneq ($(findstring 64,$(ARCH)),) - BOOST_ABI = o64 + BOOST_ABI = n64 endif else ifneq ($(findstring arm,$(ARCH)),) BOOST_ABI = aapcs @@ -426,8 +436,7 @@ define Build/Compile ) \ ) \ ) \ - $(if $(CONFIG_PACKAGE_boost-locale),boost.locale.iconv=on -sICONV_PATH=$(ICONV_PREFIX) boost.locale.posix=$(if $(USE_MUSL),on,off), \ - boost.locale.iconv=off) \ + $(if $(CONFIG_PACKAGE_boost-locale),boost.locale.std=off boost.locale.posix=off) \ \ $(if $(CONFIG_PACKAGE_boost-iostreams),-sNO_BZIP2=1 -sZLIB_INCLUDE=$(STAGING_DIR)/usr/include \ -sZLIB_LIBPATH=$(STAGING_DIR)/usr/lib) \ @@ -480,28 +489,16 @@ define Host/Install $(CP) $(HOST_BUILD_DIR)/tools/build/src/engine/b2 $(STAGING_DIR_HOSTPKG)/bin/ endef -define Package/boost/Default/install - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/lib/libboost_$(2)*.so* $(1)/usr/lib/ -endef - define Package/boost-test/install + $(if $(CONFIG_boost-static-libs),true, $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/lib/libboost_unit_test_framework*.so* $(1)/usr/lib/ - $(CP) $(PKG_INSTALL_DIR)/lib/libboost_prg_exec_monitor*.so* $(1)/usr/lib/ -endef - -define BuildBoostLibrary - define Package/boost-$(1)/install - $(call Package/boost/Default/install,$$(1),$(1)) - endef - - $$(eval $$(call BuildPackage,boost-$(1))) + $(CP) $(PKG_INSTALL_DIR)/lib/libboost_{unit_test_framework,prg_exec_monitor}*.so* $(1)/usr/lib/ + ) endef $(eval $(call HostBuild)) -$(foreach lib,$(BOOST_LIBS),$(eval $(call BuildBoostLibrary,$(lib)))) +$(foreach lib,$(BOOST_LIBS),$(eval $(call BuildPackage,boost-$(lib)))) $(eval $(call BuildPackage,boost-test)) $(eval $(call BuildPackage,boost-libs)) $(eval $(call BuildPackage,boost)) diff --git a/libs/boost/patches/001-uclibc-asio.patch b/libs/boost/patches/001-uclibc-asio.patch deleted file mode 100644 index 07efd130..00000000 --- a/libs/boost/patches/001-uclibc-asio.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 95d82acc57bb7d8bae431f7a6ce0707aac3ef33f Mon Sep 17 00:00:00 2001 -From: Rosen Penev -Date: Thu, 5 Sep 2019 19:41:13 -0700 -Subject: [PATCH] Use eventfd() function with uClibc - -The Boost eventfd code either directly makes the eventfd system call -using __NR_eventfd (when __GLIBC_MINOR is less than 8), or otherwise -uses the eventfd() function provided by the C library. - -However, since uClibc pretends to be glibc 2.2, the Boost eventfd code -directly uses the system call. While it works fine on most -architectures, it doesn't on ARC since __NR_eventfd is not defined on -this architecture. However, eventfd() is properly implemented. - -So, this patch adjusts the logic used by Boost to consider uClibc as a -C library providing the eventfd() function. - -Signed-off-by: Thomas Petazzoni -Signed-off-by: Rosen Penev ---- - a/boost/asio/detail/impl/eventfd_select_interrupter.ipp | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/boost/asio/detail/impl/eventfd_select_interrupter.ipp b/boost/asio/detail/impl/eventfd_select_interrupter.ipp -index 38d4b2a61..e16cc8b00 100644 ---- a/boost/asio/detail/impl/eventfd_select_interrupter.ipp -+++ b/boost/asio/detail/impl/eventfd_select_interrupter.ipp -@@ -23,11 +23,11 @@ - #include - #include - #include --#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 -+#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 2 - # include --#else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 -+#else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 2 - # include --#endif // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 -+#endif // __GLIBC__ == 2 && __GLIBC_MINOR__ < 2 - #include - #include - #include -@@ -46,14 +46,14 @@ eventfd_select_interrupter::eventfd_select_interrupter() - - void eventfd_select_interrupter::open_descriptors() - { --#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 -+#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 2 - write_descriptor_ = read_descriptor_ = syscall(__NR_eventfd, 0); - if (read_descriptor_ != -1) - { - ::fcntl(read_descriptor_, F_SETFL, O_NONBLOCK); - ::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC); - } --#else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 -+#else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 2 - # if defined(EFD_CLOEXEC) && defined(EFD_NONBLOCK) - write_descriptor_ = read_descriptor_ = - ::eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK); -@@ -70,7 +70,7 @@ void eventfd_select_interrupter::open_descriptors() - ::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC); - } - } --#endif // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8 -+#endif // __GLIBC__ == 2 && __GLIBC_MINOR__ < 2 - - if (read_descriptor_ == -1) - { diff --git a/libs/boost/patches/002-outcome-assert.patch b/libs/boost/patches/002-outcome-assert.patch deleted file mode 100644 index aa996fd6..00000000 --- a/libs/boost/patches/002-outcome-assert.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/boost/outcome/experimental/status-code/status_code_ptr.hpp 2020-04-28 09:23:14.792565200 +0100 -+++ b/boost/outcome/experimental/status-code/status_code_ptr.hpp 2020-04-28 09:24:34.311741000 +0100 -@@ -103,7 +103,7 @@ - #endif - virtual void _do_erased_copy(status_code &dst, const status_code &src, size_t /*unused*/) const override // NOLINT - { -- assert(dst.domain() == *this); -+ // Note that dst will not have its domain set - assert(src.domain() == *this); - auto &d = static_cast<_mycode &>(dst); // NOLINT - const auto &_s = static_cast(src); // NOLINT diff --git a/libs/boost/patches/003-beast-coroutines.patch b/libs/boost/patches/003-beast-coroutines.patch deleted file mode 100644 index 58ea5030..00000000 --- a/libs/boost/patches/003-beast-coroutines.patch +++ /dev/null @@ -1,1465 +0,0 @@ ---- a/boost/beast/core/detail/impl/read.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/core/detail/impl/read.hpp 2020-05-02 13:50:11.141761700 -0400 -@@ -214,7 +214,7 @@ - class AsyncReadStream, - class DynamicBuffer, - class CompletionCondition, -- class ReadHandler, -+ BOOST_BEAST_ASYNC_TPARAM2 ReadHandler, - class> - BOOST_BEAST_ASYNC_RESULT2(ReadHandler) - async_read( -diff -aruN a/boost/beast/core/detail/is_invocable.hpp b/boost/beast/core/detail/is_invocable.hpp ---- a/boost/beast/core/detail/is_invocable.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/core/detail/is_invocable.hpp 2020-05-02 13:50:11.141761700 -0400 -@@ -10,6 +10,8 @@ - #ifndef BOOST_BEAST_DETAIL_IS_INVOCABLE_HPP - #define BOOST_BEAST_DETAIL_IS_INVOCABLE_HPP - -+#include -+#include - #include - #include - -@@ -51,6 +53,26 @@ - }; - /** @} */ - -+template -+struct is_completion_token_for : std::false_type -+{ -+}; -+ -+struct any_initiation -+{ -+ template -+ void operator()(AnyArgs&&...); -+}; -+ -+template -+struct is_completion_token_for< -+ CompletionToken, R(Args...), boost::void_t( -+ any_initiation(), std::declval()) -+ )>> : std::true_type -+{ -+}; -+ - } // detail - } // beast - } // boost -diff -aruN a/boost/beast/core/detail/read.hpp b/boost/beast/core/detail/read.hpp ---- a/boost/beast/core/detail/read.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/core/detail/read.hpp 2020-05-02 13:50:11.142761711 -0400 -@@ -219,7 +219,7 @@ - class AsyncReadStream, - class DynamicBuffer, - class CompletionCondition, -- class ReadHandler -+ BOOST_BEAST_ASYNC_TPARAM2 ReadHandler - #if ! BOOST_BEAST_DOXYGEN - , class = typename std::enable_if< - is_async_read_stream::value && -diff -aruN a/boost/beast/core/detect_ssl.hpp b/boost/beast/core/detect_ssl.hpp ---- a/boost/beast/core/detect_ssl.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/core/detect_ssl.hpp 2020-05-02 13:50:11.143761722 -0400 -@@ -374,13 +374,13 @@ - void operator()( - DetectHandler&& h, - AsyncReadStream* s, // references are passed as pointers -- DynamicBuffer& b) -+ DynamicBuffer* b) - { - detect_ssl_op< - typename std::decay::type, - AsyncReadStream, - DynamicBuffer>( -- std::forward(h), *s, b); -+ std::forward(h), *s, *b); - } - }; - -@@ -439,7 +439,7 @@ - detail::run_detect_ssl_op{}, - token, - &stream, // pass the reference by pointer -- buffer); -+ &buffer); - } - - //] -diff -aruN a/boost/beast/core/impl/basic_stream.hpp b/boost/beast/core/impl/basic_stream.hpp ---- a/boost/beast/core/impl/basic_stream.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/core/impl/basic_stream.hpp 2020-05-02 13:50:11.144761733 -0400 -@@ -776,7 +776,7 @@ - //------------------------------------------------------------------------------ - - template --template -+template - BOOST_BEAST_ASYNC_RESULT1(ConnectHandler) - basic_stream:: - async_connect( -@@ -795,7 +795,7 @@ - template - template< - class EndpointSequence, -- class RangeConnectHandler, -+ BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, typename Protocol::endpoint)) RangeConnectHandler, - class> - BOOST_ASIO_INITFN_RESULT_TYPE(RangeConnectHandler,void(error_code, typename Protocol::endpoint)) - basic_stream:: -@@ -817,7 +817,7 @@ - template< - class EndpointSequence, - class ConnectCondition, -- class RangeConnectHandler, -+ BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, typename Protocol::endpoint)) RangeConnectHandler, - class> - BOOST_ASIO_INITFN_RESULT_TYPE(RangeConnectHandler,void (error_code, typename Protocol::endpoint)) - basic_stream:: -@@ -839,7 +839,7 @@ - template - template< - class Iterator, -- class IteratorConnectHandler> -+ BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, Iterator)) IteratorConnectHandler> - BOOST_ASIO_INITFN_RESULT_TYPE(IteratorConnectHandler,void (error_code, Iterator)) - basic_stream:: - async_connect( -@@ -860,7 +860,7 @@ - template< - class Iterator, - class ConnectCondition, -- class IteratorConnectHandler> -+ BOOST_ASIO_COMPLETION_TOKEN_FOR(void(error_code, Iterator)) IteratorConnectHandler> - BOOST_ASIO_INITFN_RESULT_TYPE(IteratorConnectHandler,void (error_code, Iterator)) - basic_stream:: - async_connect( -@@ -881,7 +881,7 @@ - //------------------------------------------------------------------------------ - - template --template -+template - BOOST_BEAST_ASYNC_RESULT2(ReadHandler) - basic_stream:: - async_read_some( -@@ -901,7 +901,7 @@ - } - - template --template -+template - BOOST_BEAST_ASYNC_RESULT2(WriteHandler) - basic_stream:: - async_write_some( -diff -aruN a/boost/beast/core/impl/buffered_read_stream.hpp b/boost/beast/core/impl/buffered_read_stream.hpp ---- a/boost/beast/core/impl/buffered_read_stream.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/core/impl/buffered_read_stream.hpp 2020-05-02 13:50:11.144761733 -0400 -@@ -110,7 +110,7 @@ - operator()( - ReadHandler&& h, - buffered_read_stream* s, -- Buffers const& b) -+ Buffers const* b) - { - // If you get an error on the following line it means - // that your handler does not meet the documented type -@@ -124,7 +124,7 @@ - read_op< - Buffers, - typename std::decay::type>( -- std::forward(h), *s, b); -+ std::forward(h), *s, *b); - } - }; - -@@ -141,7 +141,7 @@ - } - - template --template -+template - BOOST_BEAST_ASYNC_RESULT2(WriteHandler) - buffered_read_stream:: - async_write_some( -@@ -153,7 +153,7 @@ - static_assert(net::is_const_buffer_sequence< - ConstBufferSequence>::value, - "ConstBufferSequence type requirements not met"); -- static_assert(detail::is_invocable::value, - "WriteHandler type requirements not met"); - return next_layer_.async_write_some(buffers, -@@ -212,7 +212,7 @@ - } - - template --template -+template - BOOST_BEAST_ASYNC_RESULT2(ReadHandler) - buffered_read_stream:: - async_read_some( -@@ -233,7 +233,7 @@ - typename ops::run_read_op{}, - handler, - this, -- buffers); -+ &buffers); - } - - } // beast -diff -aruN a/boost/beast/core/impl/flat_stream.hpp b/boost/beast/core/impl/flat_stream.hpp ---- a/boost/beast/core/impl/flat_stream.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/core/impl/flat_stream.hpp 2020-05-02 13:50:11.145761743 -0400 -@@ -144,7 +144,7 @@ - template - template< - class MutableBufferSequence, -- class ReadHandler> -+ BOOST_BEAST_ASYNC_TPARAM2 ReadHandler> - BOOST_BEAST_ASYNC_RESULT2(ReadHandler) - flat_stream:: - async_read_some( -@@ -225,7 +225,7 @@ - template - template< - class ConstBufferSequence, -- class WriteHandler> -+ BOOST_BEAST_ASYNC_TPARAM2 WriteHandler> - BOOST_BEAST_ASYNC_RESULT2(WriteHandler) - flat_stream:: - async_write_some( -diff -aruN a/boost/beast/_experimental/http/impl/icy_stream.hpp b/boost/beast/_experimental/http/impl/icy_stream.hpp ---- a/boost/beast/_experimental/http/impl/icy_stream.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/_experimental/http/impl/icy_stream.hpp 2020-05-02 13:50:11.146761754 -0400 -@@ -259,7 +259,7 @@ - template - template< - class MutableBufferSequence, -- class ReadHandler> -+ BOOST_BEAST_ASYNC_TPARAM2 ReadHandler> - BOOST_BEAST_ASYNC_RESULT2(ReadHandler) - icy_stream:: - async_read_some( -@@ -311,7 +311,7 @@ - template - template< - class MutableBufferSequence, -- class WriteHandler> -+ BOOST_BEAST_ASYNC_TPARAM2 WriteHandler> - BOOST_BEAST_ASYNC_RESULT2(WriteHandler) - icy_stream:: - async_write_some( -diff -aruN a/boost/beast/_experimental/test/impl/stream.hpp b/boost/beast/_experimental/test/impl/stream.hpp ---- a/boost/beast/_experimental/test/impl/stream.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/_experimental/test/impl/stream.hpp 2020-05-02 13:50:11.147761765 -0400 -@@ -306,7 +306,7 @@ - return 0; - } - --template -+template - BOOST_BEAST_ASYNC_RESULT2(ReadHandler) - stream:: - async_read_some( -@@ -386,7 +386,7 @@ - return n; - } - --template -+template - BOOST_BEAST_ASYNC_RESULT2(WriteHandler) - stream:: - async_write_some( -diff -aruN a/boost/beast/http/field.hpp b/boost/beast/http/field.hpp ---- a/boost/beast/http/field.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/http/field.hpp 2020-05-02 13:50:11.149761786 -0400 -@@ -396,12 +396,9 @@ - string_to_field(string_view s); - - /// Write the text for a field name to an output stream. --inline -+BOOST_BEAST_DECL - std::ostream& --operator<<(std::ostream& os, field f) --{ -- return os << to_string(f); --} -+operator<<(std::ostream& os, field f); - - } // http - } // beast -diff -aruN a/boost/beast/http/impl/field.ipp b/boost/beast/http/impl/field.ipp ---- a/boost/beast/http/impl/field.ipp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/http/impl/field.ipp 2020-05-02 13:50:11.150761798 -0400 -@@ -11,10 +11,12 @@ - #define BOOST_BEAST_HTTP_IMPL_FIELD_IPP - - #include -+#include - #include - #include - #include --#include -+#include -+ - - namespace boost { - namespace beast { -@@ -565,6 +567,12 @@ - return detail::get_field_table().string_to_field(s); - } - -+std::ostream& -+operator<<(std::ostream& os, field f) -+{ -+ return os << to_string(f); -+} -+ - } // http - } // beast - } // boost -diff -aruN a/boost/beast/http/impl/file_body_win32.hpp b/boost/beast/http/impl/file_body_win32.hpp ---- a/boost/beast/http/impl/file_body_win32.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/http/impl/file_body_win32.hpp 2020-05-02 13:50:11.150761798 -0400 -@@ -597,7 +597,7 @@ - template< - class Protocol, class Executor, - bool isRequest, class Fields, -- class WriteHandler> -+ BOOST_BEAST_ASYNC_TPARAM2 WriteHandler> - BOOST_BEAST_ASYNC_RESULT2(WriteHandler) - async_write_some( - net::basic_stream_socket< -diff -aruN a/boost/beast/http/impl/read.hpp b/boost/beast/http/impl/read.hpp ---- a/boost/beast/http/impl/read.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/http/impl/read.hpp 2020-05-02 13:50:11.150761798 -0400 -@@ -304,7 +304,7 @@ - class AsyncReadStream, - class DynamicBuffer, - bool isRequest, -- class ReadHandler> -+ BOOST_BEAST_ASYNC_TPARAM2 ReadHandler> - BOOST_BEAST_ASYNC_RESULT2(ReadHandler) - async_read_some( - AsyncReadStream& stream, -@@ -373,7 +373,7 @@ - class AsyncReadStream, - class DynamicBuffer, - bool isRequest, -- class ReadHandler> -+ BOOST_BEAST_ASYNC_TPARAM2 ReadHandler> - BOOST_BEAST_ASYNC_RESULT2(ReadHandler) - async_read_header( - AsyncReadStream& stream, -@@ -443,7 +443,7 @@ - class AsyncReadStream, - class DynamicBuffer, - bool isRequest, -- class ReadHandler> -+ BOOST_BEAST_ASYNC_TPARAM2 ReadHandler> - BOOST_BEAST_ASYNC_RESULT2(ReadHandler) - async_read( - AsyncReadStream& stream, -@@ -531,7 +531,7 @@ - class AsyncReadStream, - class DynamicBuffer, - bool isRequest, class Body, class Allocator, -- class ReadHandler> -+ BOOST_BEAST_ASYNC_TPARAM2 ReadHandler> - BOOST_BEAST_ASYNC_RESULT2(ReadHandler) - async_read( - AsyncReadStream& stream, -diff -aruN a/boost/beast/http/impl/write.hpp b/boost/beast/http/impl/write.hpp ---- a/boost/beast/http/impl/write.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/http/impl/write.hpp 2020-05-02 13:50:11.150761798 -0400 -@@ -463,7 +463,7 @@ - template< - class AsyncWriteStream, - bool isRequest, class Body, class Fields, -- class WriteHandler> -+ BOOST_BEAST_ASYNC_TPARAM2 WriteHandler> - BOOST_BEAST_ASYNC_RESULT2(WriteHandler) - async_write_some_impl( - AsyncWriteStream& stream, -@@ -526,7 +526,7 @@ - template< - class AsyncWriteStream, - bool isRequest, class Body, class Fields, -- class WriteHandler> -+ BOOST_BEAST_ASYNC_TPARAM2 WriteHandler> - BOOST_BEAST_ASYNC_RESULT2(WriteHandler) - async_write_some( - AsyncWriteStream& stream, -@@ -608,7 +608,7 @@ - template< - class AsyncWriteStream, - bool isRequest, class Body, class Fields, -- class WriteHandler> -+ BOOST_BEAST_ASYNC_TPARAM2 WriteHandler> - BOOST_BEAST_ASYNC_RESULT2(WriteHandler) - async_write_header( - AsyncWriteStream& stream, -@@ -681,7 +681,7 @@ - template< - class AsyncWriteStream, - bool isRequest, class Body, class Fields, -- class WriteHandler> -+ BOOST_BEAST_ASYNC_TPARAM2 WriteHandler> - BOOST_BEAST_ASYNC_RESULT2(WriteHandler) - async_write( - AsyncWriteStream& stream, -@@ -801,7 +801,7 @@ - template< - class AsyncWriteStream, - bool isRequest, class Body, class Fields, -- class WriteHandler> -+ BOOST_BEAST_ASYNC_TPARAM2 WriteHandler> - BOOST_BEAST_ASYNC_RESULT2(WriteHandler) - async_write( - AsyncWriteStream& stream, -@@ -830,7 +830,7 @@ - template< - class AsyncWriteStream, - bool isRequest, class Body, class Fields, -- class WriteHandler> -+ BOOST_BEAST_ASYNC_TPARAM2 WriteHandler> - BOOST_BEAST_ASYNC_RESULT2(WriteHandler) - async_write( - AsyncWriteStream& stream, -diff -aruN a/boost/beast/http/span_body.hpp b/boost/beast/http/span_body.hpp ---- a/boost/beast/http/span_body.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/http/span_body.hpp 2020-05-02 13:50:11.151761808 -0400 -@@ -36,8 +36,10 @@ - struct span_body - { - private: -- static_assert(std::is_pod::value, -- "POD requirements not met"); -+ static_assert( -+ std::is_trivial::value && -+ std::is_standard_layout::value, -+ "POD requirements not met"); - - public: - /** The type of container used for the body -diff -aruN a/boost/beast/ssl/ssl_stream.hpp b/boost/beast/ssl/ssl_stream.hpp ---- a/boost/beast/ssl/ssl_stream.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/ssl/ssl_stream.hpp 2020-05-02 13:50:11.151761808 -0400 -@@ -555,7 +555,7 @@ - need to ensure that all data is written before the asynchronous operation - completes. - */ -- template -+ template - BOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler, void(boost::system::error_code, std::size_t)) - async_write_some(ConstBufferSequence const& buffers, - BOOST_ASIO_MOVE_ARG(WriteHandler) handler) -@@ -636,7 +636,7 @@ - if you need to ensure that the requested amount of data is read before - the asynchronous operation completes. - */ -- template -+ template - BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler, void(boost::system::error_code, std::size_t)) - async_read_some(MutableBufferSequence const& buffers, - BOOST_ASIO_MOVE_ARG(ReadHandler) handler) -diff -aruN a/boost/beast/version.hpp b/boost/beast/version.hpp ---- a/boost/beast/version.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/version.hpp 2020-05-02 13:50:11.151761808 -0400 -@@ -20,7 +20,7 @@ - This is a simple integer that is incremented by one every - time a set of code changes is merged to the develop branch. - */ --#define BOOST_BEAST_VERSION 290 -+#define BOOST_BEAST_VERSION 292 - - #define BOOST_BEAST_VERSION_STRING "Boost.Beast/" BOOST_STRINGIZE(BOOST_BEAST_VERSION) - -diff -aruN a/boost/beast/websocket/impl/accept.hpp b/boost/beast/websocket/impl/accept.hpp ---- a/boost/beast/websocket/impl/accept.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/websocket/impl/accept.hpp 2020-05-02 13:50:11.153761830 -0400 -@@ -542,7 +542,7 @@ - - template - template< -- class AcceptHandler> -+ BOOST_BEAST_ASYNC_TPARAM1 AcceptHandler> - BOOST_BEAST_ASYNC_RESULT1(AcceptHandler) - stream:: - async_accept( -@@ -564,7 +564,7 @@ - template - template< - class ResponseDecorator, -- class AcceptHandler> -+ BOOST_BEAST_ASYNC_TPARAM1 AcceptHandler> - BOOST_BEAST_ASYNC_RESULT1(AcceptHandler) - stream:: - async_accept_ex( -@@ -590,7 +590,7 @@ - template - template< - class ConstBufferSequence, -- class AcceptHandler> -+ BOOST_BEAST_ASYNC_TPARAM1 AcceptHandler> - BOOST_BEAST_ASYNC_RESULT1(AcceptHandler) - stream:: - async_accept( -@@ -621,7 +621,7 @@ - template< - class ConstBufferSequence, - class ResponseDecorator, -- class AcceptHandler> -+ BOOST_BEAST_ASYNC_TPARAM1 AcceptHandler> - BOOST_BEAST_ASYNC_RESULT1(AcceptHandler) - stream:: - async_accept_ex( -@@ -654,7 +654,7 @@ - template - template< - class Body, class Allocator, -- class AcceptHandler> -+ BOOST_BEAST_ASYNC_TPARAM1 AcceptHandler> - BOOST_BEAST_ASYNC_RESULT1(AcceptHandler) - stream:: - async_accept( -@@ -678,7 +678,7 @@ - template< - class Body, class Allocator, - class ResponseDecorator, -- class AcceptHandler> -+ BOOST_BEAST_ASYNC_TPARAM1 AcceptHandler> - BOOST_BEAST_ASYNC_RESULT1(AcceptHandler) - stream:: - async_accept_ex( -diff -aruN a/boost/beast/websocket/impl/close.hpp b/boost/beast/websocket/impl/close.hpp ---- a/boost/beast/websocket/impl/close.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/websocket/impl/close.hpp 2020-05-02 13:50:11.153761830 -0400 -@@ -382,7 +382,7 @@ - } - - template --template -+template - BOOST_BEAST_ASYNC_RESULT1(CloseHandler) - stream:: - async_close(close_reason const& cr, CloseHandler&& handler) -diff -aruN a/boost/beast/websocket/impl/handshake.hpp b/boost/beast/websocket/impl/handshake.hpp ---- a/boost/beast/websocket/impl/handshake.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/websocket/impl/handshake.hpp 2020-05-02 13:50:11.153761830 -0400 -@@ -268,7 +268,7 @@ - //------------------------------------------------------------------------------ - - template --template -+template - BOOST_BEAST_ASYNC_RESULT1(HandshakeHandler) - stream:: - async_handshake( -@@ -293,7 +293,7 @@ - } - - template --template -+template - BOOST_BEAST_ASYNC_RESULT1(HandshakeHandler) - stream:: - async_handshake( -diff -aruN a/boost/beast/websocket/impl/ping.hpp b/boost/beast/websocket/impl/ping.hpp ---- a/boost/beast/websocket/impl/ping.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/websocket/impl/ping.hpp 2020-05-02 13:50:11.153761830 -0400 -@@ -288,7 +288,7 @@ - } - - template --template -+template - BOOST_BEAST_ASYNC_RESULT1(WriteHandler) - stream:: - async_ping(ping_data const& payload, WriteHandler&& handler) -@@ -306,7 +306,7 @@ - } - - template --template -+template - BOOST_BEAST_ASYNC_RESULT1(WriteHandler) - stream:: - async_pong(ping_data const& payload, WriteHandler&& handler) -diff -aruN a/boost/beast/websocket/impl/read.hpp b/boost/beast/websocket/impl/read.hpp ---- a/boost/beast/websocket/impl/read.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/websocket/impl/read.hpp 2020-05-02 13:50:11.153761830 -0400 -@@ -804,7 +804,7 @@ - } - - template --template -+template - BOOST_BEAST_ASYNC_RESULT2(ReadHandler) - stream:: - async_read(DynamicBuffer& buffer, ReadHandler&& handler) -@@ -878,7 +878,7 @@ - } - - template --template -+template - BOOST_BEAST_ASYNC_RESULT2(ReadHandler) - stream:: - async_read_some( -@@ -1263,7 +1263,7 @@ - } - - template --template -+template - BOOST_BEAST_ASYNC_RESULT2(ReadHandler) - stream:: - async_read_some( -diff -aruN a/boost/beast/websocket/impl/write.hpp b/boost/beast/websocket/impl/write.hpp ---- a/boost/beast/websocket/impl/write.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/websocket/impl/write.hpp 2020-05-02 13:50:11.153761830 -0400 -@@ -700,7 +700,7 @@ - } - - template --template -+template - BOOST_BEAST_ASYNC_RESULT2(WriteHandler) - stream:: - async_write_some(bool fin, -@@ -756,7 +756,7 @@ - } - - template --template -+template - BOOST_BEAST_ASYNC_RESULT2(WriteHandler) - stream:: - async_write( -diff -aruN a/boost/beast/websocket/stream.hpp b/boost/beast/websocket/stream.hpp ---- a/boost/beast/websocket/stream.hpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/boost/beast/websocket/stream.hpp 2020-05-02 13:50:11.154761841 -0400 -@@ -2634,7 +2634,7 @@ - - template< - class ResponseDecorator, -- class AcceptHandler> -+ BOOST_BEAST_ASYNC_TPARAM1 AcceptHandler> - BOOST_BEAST_ASYNC_RESULT1(AcceptHandler) - async_accept_ex( - ResponseDecorator const& decorator, -@@ -2643,7 +2643,7 @@ - template< - class ConstBufferSequence, - class ResponseDecorator, -- class AcceptHandler> -+ BOOST_BEAST_ASYNC_TPARAM1 AcceptHandler> - BOOST_BEAST_ASYNC_RESULT1(AcceptHandler) - async_accept_ex( - ConstBufferSequence const& buffers, -@@ -2656,7 +2656,7 @@ - template< - class Body, class Allocator, - class ResponseDecorator, -- class AcceptHandler> -+ BOOST_BEAST_ASYNC_TPARAM1 AcceptHandler> - BOOST_BEAST_ASYNC_RESULT1(AcceptHandler) - async_accept_ex( - http::request -+ template - typename net::async_result::return_type - async_read(AsyncReadStream& stream, net::mutable_buffer buffer, ReadHandler&& handler) - { -diff -aruN a/libs/beast/test/beast/core/basic_stream.cpp b/libs/beast/test/beast/core/basic_stream.cpp ---- a/libs/beast/test/beast/core/basic_stream.cpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/libs/beast/test/beast/core/basic_stream.cpp 2020-05-02 13:51:02.470315892 -0400 -@@ -30,6 +30,13 @@ - #include - #include - -+#if BOOST_ASIO_HAS_CO_AWAIT -+#include -+#include -+#include -+#endif -+ -+ - namespace boost { - namespace beast { - -@@ -258,7 +265,7 @@ - { - string_view s_; - net::ip::tcp::socket socket_; -- -+ - public: - session( - string_view s, -@@ -1297,6 +1304,52 @@ - - //-------------------------------------------------------------------------- - -+#if BOOST_ASIO_HAS_CO_AWAIT -+ void testAwaitableCompilation( -+ basic_stream& stream, -+ net::mutable_buffer outbuf, -+ net::const_buffer inbuf, -+ net::ip::tcp::resolver::results_type resolve_results) -+ { -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ stream.async_read_some(outbuf, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ stream.async_write_some(inbuf, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ stream.async_connect( -+ resolve_results.begin(), -+ resolve_results.end(), -+ net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ stream.async_connect( -+ resolve_results, -+ net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ stream.async_connect( -+ resolve_results.begin()->endpoint(), -+ net::use_awaitable))>); -+ -+ auto comparison_function = [](error_code&, net::ip::tcp::endpoint) { return true; }; -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ stream.async_connect( -+ resolve_results.begin(), -+ resolve_results.end(), -+ comparison_function, -+ net::use_awaitable))>); -+ } -+#endif -+ - void - run() - { -@@ -1307,6 +1360,11 @@ - testMembers(); - testJavadocs(); - testIssue1589(); -+ -+#if BOOST_ASIO_HAS_CO_AWAIT -+ // test for compilation success only -+ boost::ignore_unused(&basic_stream_test::testAwaitableCompilation); -+#endif - } - }; - -diff -aruN a/libs/beast/test/beast/core/buffered_read_stream.cpp b/libs/beast/test/beast/core/buffered_read_stream.cpp ---- a/libs/beast/test/beast/core/buffered_read_stream.cpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/libs/beast/test/beast/core/buffered_read_stream.cpp 2020-05-02 13:51:02.470315892 -0400 -@@ -21,6 +21,9 @@ - #include - #include - #include -+#if BOOST_ASIO_HAS_CO_AWAIT -+#include -+#endif - - namespace boost { - namespace beast { -@@ -211,6 +214,22 @@ - } - }; - -+#if BOOST_ASIO_HAS_CO_AWAIT -+ void testAwaitableCompiles( -+ buffered_read_stream& stream, -+ net::mutable_buffer rxbuf, -+ net::const_buffer txbuf) -+ { -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ stream.async_read_some(rxbuf, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ stream.async_write_some(txbuf, net::use_awaitable))>); -+ } -+#endif -+ - void run() override - { - testSpecialMembers(); -@@ -221,6 +240,10 @@ - }); - - testAsyncLoop(); -+ -+#if BOOST_ASIO_HAS_CO_AWAIT -+ boost::ignore_unused(&buffered_read_stream_test::testAwaitableCompiles); -+#endif - } - }; - -diff -aruN a/libs/beast/test/beast/core/detect_ssl.cpp b/libs/beast/test/beast/core/detect_ssl.cpp ---- a/libs/beast/test/beast/core/detect_ssl.cpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/libs/beast/test/beast/core/detect_ssl.cpp 2020-05-02 13:51:02.470315892 -0400 -@@ -16,6 +16,11 @@ - #include - #include - #include -+#if BOOST_ASIO_HAS_CO_AWAIT -+#include -+#include -+#include -+#endif - namespace boost { - namespace beast { - -@@ -166,12 +171,25 @@ - } - } - -+#if BOOST_ASIO_HAS_CO_AWAIT -+ void testAwaitableCompiles(test::stream& stream, flat_buffer& b) -+ { -+ static_assert( -+ std::is_same_v< -+ net::awaitable, decltype( -+ async_detect_ssl(stream, b, net::use_awaitable))>); -+ } -+#endif -+ - void - run() override - { - testDetect(); - testRead(); - testAsyncRead(); -+#if BOOST_ASIO_HAS_CO_AWAIT -+ boost::ignore_unused(&detect_ssl_test::testAwaitableCompiles); -+#endif - } - }; - -diff -aruN a/libs/beast/test/beast/core/flat_stream.cpp b/libs/beast/test/beast/core/flat_stream.cpp ---- a/libs/beast/test/beast/core/flat_stream.cpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/libs/beast/test/beast/core/flat_stream.cpp 2020-05-02 13:51:02.471315902 -0400 -@@ -17,6 +17,9 @@ - #include - #include - #include -+#if BOOST_ASIO_HAS_CO_AWAIT -+#include -+#endif - - namespace boost { - namespace beast { -@@ -208,11 +211,30 @@ - check({1,2,3,4}, 3, 3, true); - } - -+#if BOOST_ASIO_HAS_CO_AWAIT -+ void testAwaitableCompiles( -+ flat_stream& stream, -+ net::mutable_buffer rxbuf, -+ net::const_buffer txbuf) -+ { -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ stream.async_read_some(rxbuf, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ stream.async_write_some(txbuf, net::use_awaitable))>); -+ } -+#endif -+ - void - run() override - { - testMembers(); - testSplit(); -+#if BOOST_ASIO_HAS_CO_AWAIT -+ boost::ignore_unused(&flat_stream_test::testAwaitableCompiles); -+#endif - } - }; - -diff -aruN a/libs/beast/test/beast/core/stream_traits.cpp b/libs/beast/test/beast/core/stream_traits.cpp ---- a/libs/beast/test/beast/core/stream_traits.cpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/libs/beast/test/beast/core/stream_traits.cpp 2020-05-02 13:51:02.471315902 -0400 -@@ -214,14 +214,14 @@ - struct async_read_stream - { - net::io_context::executor_type get_executor() noexcept; -- template -+ template - void async_read_some(MutableBufferSequence const&, ReadHandler&&); - }; - - struct async_write_stream - { - net::io_context::executor_type get_executor() noexcept; -- template -+ template - void async_write_some(ConstBufferSequence const&, WriteHandler&&); - }; - -@@ -232,9 +232,9 @@ - struct async_stream : async_read_stream, async_write_stream - { - net::io_context::executor_type get_executor() noexcept; -- template -+ template - void async_read_some(MutableBufferSequence const&, ReadHandler&&); -- template -+ template - void async_write_some(ConstBufferSequence const&, WriteHandler&&); - }; - -diff -aruN a/libs/beast/test/beast/http/CMakeLists.txt b/libs/beast/test/beast/http/CMakeLists.txt ---- a/libs/beast/test/beast/http/CMakeLists.txt 2020-04-22 09:34:50.000000000 -0400 -+++ b/libs/beast/test/beast/http/CMakeLists.txt 2020-05-02 13:51:02.472315914 -0400 -@@ -26,6 +26,7 @@ - empty_body.cpp - error.cpp - field.cpp -+ field_compiles.cpp - fields.cpp - file_body.cpp - message.cpp -diff -aruN a/libs/beast/test/beast/http/field_compiles.cpp b/libs/beast/test/beast/http/field_compiles.cpp ---- a/libs/beast/test/beast/http/field_compiles.cpp 1969-12-31 19:00:00.000000000 -0500 -+++ b/libs/beast/test/beast/http/field_compiles.cpp 2020-05-02 13:51:02.473315924 -0400 -@@ -0,0 +1,11 @@ -+// -+// Copyright (c) 2016-2019 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 -+// -+ -+// Test that header file is self-contained. -+#include -diff -aruN a/libs/beast/test/beast/http/Jamfile b/libs/beast/test/beast/http/Jamfile ---- a/libs/beast/test/beast/http/Jamfile 2020-04-22 09:34:50.000000000 -0400 -+++ b/libs/beast/test/beast/http/Jamfile 2020-05-02 13:51:02.472315914 -0400 -@@ -16,6 +16,7 @@ - dynamic_body.cpp - error.cpp - field.cpp -+ field_compiles.cpp - fields.cpp - file_body.cpp - message.cpp -diff -aruN a/libs/beast/test/beast/http/read.cpp b/libs/beast/test/beast/http/read.cpp ---- a/libs/beast/test/beast/http/read.cpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/libs/beast/test/beast/http/read.cpp 2020-05-02 13:51:02.472315914 -0400 -@@ -25,6 +25,9 @@ - #include - #include - #include -+#if BOOST_ASIO_HAS_CO_AWAIT -+#include -+#endif - - namespace boost { - namespace beast { -@@ -529,6 +532,49 @@ - } - } - -+#if BOOST_ASIO_HAS_CO_AWAIT -+ void testAwaitableCompiles( -+ test::stream& stream, -+ flat_buffer& dynbuf, -+ parser& request_parser, -+ request& request, -+ parser& response_parser, -+ response& response) -+ { -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ http::async_read(stream, dynbuf, request, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ http::async_read(stream, dynbuf, request_parser, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ http::async_read(stream, dynbuf, response, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ http::async_read(stream, dynbuf, response_parser, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ http::async_read_some(stream, dynbuf, request_parser, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ http::async_read_some(stream, dynbuf, response_parser, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ http::async_read_header(stream, dynbuf, request_parser, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ http::async_read_header(stream, dynbuf, response_parser, net::use_awaitable))>); -+ } -+#endif -+ - void - run() override - { -@@ -552,6 +598,9 @@ - testRegression430(); - testReadGrind(); - testAsioHandlerInvoke(); -+#if BOOST_ASIO_HAS_CO_AWAIT -+ boost::ignore_unused(&read_test::testAwaitableCompiles); -+#endif - } - }; - -diff -aruN a/libs/beast/test/beast/http/write.cpp b/libs/beast/test/beast/http/write.cpp ---- a/libs/beast/test/beast/http/write.cpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/libs/beast/test/beast/http/write.cpp 2020-05-02 13:51:02.473315924 -0400 -@@ -26,6 +26,9 @@ - #include - #include - #include -+#if BOOST_ASIO_HAS_CO_AWAIT -+#include -+#endif - - namespace boost { - namespace beast { -@@ -994,6 +997,59 @@ - } - } - -+#if BOOST_ASIO_HAS_CO_AWAIT -+ void testAwaitableCompiles( -+ test::stream& stream, -+ serializer& request_serializer, -+ request& req, -+ request const& creq, -+ serializer& response_serializer, -+ response& resp, -+ response const& cresp) -+ { -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ http::async_write(stream, request_serializer, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ http::async_write(stream, response_serializer, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ http::async_write(stream, req, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ http::async_write(stream, creq, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ http::async_write(stream, resp, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ http::async_write(stream, cresp, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ http::async_write_some(stream, request_serializer, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ http::async_write_some(stream, response_serializer, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ http::async_write_header(stream, request_serializer, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ http::async_write_header(stream, response_serializer, net::use_awaitable))>); -+ } -+#endif -+ -+ - void - run() override - { -@@ -1017,6 +1073,9 @@ - }); - testAsioHandlerInvoke(); - testBodyWriters(); -+#if BOOST_ASIO_HAS_CO_AWAIT -+ boost::ignore_unused(&write_test::testAwaitableCompiles); -+#endif - } - }; - -diff -aruN a/libs/beast/test/beast/websocket/accept.cpp b/libs/beast/test/beast/websocket/accept.cpp ---- a/libs/beast/test/beast/websocket/accept.cpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/libs/beast/test/beast/websocket/accept.cpp 2020-05-02 13:51:02.473315924 -0400 -@@ -14,7 +14,9 @@ - #include - #include - #include "test.hpp" -- -+#if BOOST_ASIO_HAS_CO_AWAIT -+#include -+#endif - namespace boost { - namespace beast { - namespace websocket { -@@ -810,6 +812,27 @@ - } - } - -+#if BOOST_ASIO_HAS_CO_AWAIT -+ void testAwaitableCompiles( -+ stream& s, -+ http::request& req, -+ net::mutable_buffer buf -+ ) -+ { -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ s.async_accept(net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ s.async_accept(req, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ s.async_accept(buf, net::use_awaitable))>); -+ } -+#endif -+ - void - run() override - { -@@ -820,6 +843,9 @@ - testInvalidInputs(); - testEndOfStream(); - testAsync(); -+#if BOOST_ASIO_HAS_CO_AWAIT -+ boost::ignore_unused(&accept_test::testAwaitableCompiles); -+#endif - } - }; - -diff -aruN a/libs/beast/test/beast/websocket/close.cpp b/libs/beast/test/beast/websocket/close.cpp ---- a/libs/beast/test/beast/websocket/close.cpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/libs/beast/test/beast/websocket/close.cpp 2020-05-02 13:51:02.473315924 -0400 -@@ -16,6 +16,9 @@ - - #include - #include -+#if BOOST_ASIO_HAS_CO_AWAIT -+#include -+#endif - - namespace boost { - namespace beast { -@@ -735,6 +738,15 @@ - } - }; - -+#if BOOST_ASIO_HAS_CO_AWAIT -+ void testAwaitableCompiles(stream& s, close_reason cr ) -+ { -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ s.async_close(cr, net::use_awaitable))>); -+ } -+#endif -+ - void - run() override - { -@@ -742,6 +754,9 @@ - testTimeout(); - testSuspend(); - testMoveOnly(); -+#if BOOST_ASIO_HAS_CO_AWAIT -+ boost::ignore_unused(&close_test::testAwaitableCompiles); -+#endif - } - }; - -diff -aruN a/libs/beast/test/beast/websocket/handshake.cpp b/libs/beast/test/beast/websocket/handshake.cpp ---- a/libs/beast/test/beast/websocket/handshake.cpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/libs/beast/test/beast/websocket/handshake.cpp 2020-05-02 13:51:02.473315924 -0400 -@@ -18,6 +18,9 @@ - #include - #include - #include -+#if BOOST_ASIO_HAS_CO_AWAIT -+#include -+#endif - - namespace boost { - namespace beast { -@@ -704,6 +707,23 @@ - } - } - -+#if BOOST_ASIO_HAS_CO_AWAIT -+ void testAwaitableCompiles( -+ stream& s, -+ std::string host, -+ std::string port, -+ response_type& resp) -+ { -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ s.async_handshake(host, port, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ s.async_handshake(resp, host, port, net::use_awaitable))>); -+ } -+#endif -+ - void - run() override - { -@@ -714,6 +734,9 @@ - testMoveOnly(); - testAsync(); - testIssue1460(); -+#if BOOST_ASIO_HAS_CO_AWAIT -+ boost::ignore_unused(&handshake_test::testAwaitableCompiles); -+#endif - } - }; - -diff -aruN a/libs/beast/test/beast/websocket/ping.cpp b/libs/beast/test/beast/websocket/ping.cpp ---- a/libs/beast/test/beast/websocket/ping.cpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/libs/beast/test/beast/websocket/ping.cpp 2020-05-02 13:51:02.474315935 -0400 -@@ -18,6 +18,10 @@ - #include - #include - -+#if BOOST_ASIO_HAS_CO_AWAIT -+#include -+#endif -+ - namespace boost { - namespace beast { - namespace websocket { -@@ -483,12 +487,30 @@ - } - }; - -+#if BOOST_ASIO_HAS_CO_AWAIT -+ void testAwaitableCompiles( -+ stream& s, -+ ping_data& pdat) -+ { -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ s.async_ping(pdat, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ s.async_pong(pdat, net::use_awaitable))>); -+ } -+#endif -+ - void - run() override - { - testPing(); - testSuspend(); - testMoveOnly(); -+#if BOOST_ASIO_HAS_CO_AWAIT -+ boost::ignore_unused(&ping_test::testAwaitableCompiles); -+#endif - } - }; - -diff -aruN a/libs/beast/test/beast/websocket/read2.cpp b/libs/beast/test/beast/websocket/read2.cpp ---- a/libs/beast/test/beast/websocket/read2.cpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/libs/beast/test/beast/websocket/read2.cpp 2020-05-02 13:51:02.474315935 -0400 -@@ -14,6 +14,10 @@ - - #include - -+#if BOOST_ASIO_HAS_CO_AWAIT -+#include -+#endif -+ - #include - #if BOOST_WORKAROUND(BOOST_GCC, < 80200) - #define BOOST_BEAST_SYMBOL_HIDDEN __attribute__ ((visibility("hidden"))) -@@ -673,10 +677,34 @@ - } - } - -+#if BOOST_ASIO_HAS_CO_AWAIT -+ void testAwaitableCompiles( -+ stream& s, -+ flat_buffer& dynbuf, -+ net::mutable_buffer buf, -+ std::size_t limit) -+ { -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ s.async_read(dynbuf, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ s.async_read_some(buf, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ s.async_read_some(dynbuf, limit, net::use_awaitable))>); -+ } -+#endif -+ - void - run() override - { - testRead(); -+#if BOOST_ASIO_HAS_CO_AWAIT -+ boost::ignore_unused(&read2_test::testAwaitableCompiles); -+#endif - } - }; - -diff -aruN a/libs/beast/test/beast/websocket/write.cpp b/libs/beast/test/beast/websocket/write.cpp ---- a/libs/beast/test/beast/websocket/write.cpp 2020-04-22 09:34:50.000000000 -0400 -+++ b/libs/beast/test/beast/websocket/write.cpp 2020-05-02 13:51:02.474315935 -0400 -@@ -13,6 +13,10 @@ - #include - #include - -+#if BOOST_ASIO_HAS_CO_AWAIT -+#include -+#endif -+ - #include "test.hpp" - - namespace boost { -@@ -716,6 +720,22 @@ - BEAST_EXPECT(n1 < n0 + s.size()); - } - -+#if BOOST_ASIO_HAS_CO_AWAIT -+ void testAwaitableCompiles( -+ stream& s, -+ net::mutable_buffer buf, -+ bool fin) -+ { -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ s.async_write(buf, net::use_awaitable))>); -+ -+ static_assert(std::is_same_v< -+ net::awaitable, decltype( -+ s.async_write_some(fin, buf, net::use_awaitable))>); -+ } -+#endif -+ - void - run() override - { -@@ -726,6 +746,9 @@ - testMoveOnly(); - testIssue300(); - testIssue1666(); -+#if BOOST_ASIO_HAS_CO_AWAIT -+ boost::ignore_unused(&write_test::testAwaitableCompiles); -+#endif - } - }; - diff --git a/libs/boost/patches/010-mips64.patch b/libs/boost/patches/010-mips64.patch new file mode 100644 index 00000000..513e206b --- /dev/null +++ b/libs/boost/patches/010-mips64.patch @@ -0,0 +1,70 @@ +--- a/libs/context/src/asm/jump_mips64_n64_elf_gas.S ++++ b/libs/context/src/asm/jump_mips64_n64_elf_gas.S +@@ -67,7 +67,7 @@ jump_fcontext: + sd $ra, 144($sp) # save RA + sd $ra, 152($sp) # save RA as PC + +- ++#if defined(__mips_hard_float) + s.d $f24, 0($sp) # save F24 + s.d $f25, 8($sp) # save F25 + s.d $f26, 16($sp) # save F26 +@@ -76,6 +76,7 @@ jump_fcontext: + s.d $f29, 40($sp) # save F29 + s.d $f30, 48($sp) # save F30 + s.d $f31, 56($sp) # save F31 ++#endif + + # store SP (pointing to old context-data) in v0 as return + move $v0, $sp +@@ -83,6 +84,7 @@ jump_fcontext: + # get SP (pointing to new context-data) from a0 param + move $sp, $a0 + ++#if defined(__mips_hard_float) + l.d $f24, 0($sp) # restore F24 + l.d $f25, 8($sp) # restore F25 + l.d $f26, 16($sp) # restore F26 +@@ -91,6 +93,7 @@ jump_fcontext: + l.d $f29, 40($sp) # restore F29 + l.d $f30, 48($sp) # restore F30 + l.d $f31, 56($sp) # restore F31 ++#endif + + ld $s0, 64($sp) # restore S0 + ld $s1, 72($sp) # restore S1 +--- a/libs/context/src/asm/ontop_mips64_n64_elf_gas.S ++++ b/libs/context/src/asm/ontop_mips64_n64_elf_gas.S +@@ -67,7 +67,7 @@ ontop_fcontext: + sd $ra, 144($sp) # save RA + sd $ra, 152($sp) # save RA as PC + +- ++#if defined(__mips_hard_float) + s.d $f24, 0($sp) # save F24 + s.d $f25, 8($sp) # save F25 + s.d $f26, 16($sp) # save F26 +@@ -76,6 +76,7 @@ ontop_fcontext: + s.d $f29, 40($sp) # save F29 + s.d $f30, 48($sp) # save F30 + s.d $f31, 56($sp) # save F31 ++#endif + + # store SP (pointing to context-data) in t0 + move $t0, $sp +@@ -83,6 +84,7 @@ ontop_fcontext: + # restore SP (pointing to context-data) from a0 + move $sp, $a0 + ++#if defined(__mips_hard_float) + l.d $f24, 0($sp) # restore F24 + l.d $f25, 8($sp) # restore F25 + l.d $f26, 16($sp) # restore F26 +@@ -91,6 +93,7 @@ ontop_fcontext: + l.d $f29, 40($sp) # restore F29 + l.d $f30, 48($sp) # restore F30 + l.d $f31, 56($sp) # restore F31 ++#endif + + ld $s0, 64($sp) # restore S0 + ld $s1, 72($sp) # restore S1 diff --git a/libs/boost/patches/020-mips64-fiber.patch b/libs/boost/patches/020-mips64-fiber.patch new file mode 100644 index 00000000..10d46d88 --- /dev/null +++ b/libs/boost/patches/020-mips64-fiber.patch @@ -0,0 +1,11 @@ +--- a/boost/fiber/detail/cpu_relax.hpp ++++ b/boost/fiber/detail/cpu_relax.hpp +@@ -47,7 +47,7 @@ namespace detail { + # else + # define cpu_relax() asm volatile ("nop" ::: "memory"); + # endif +-#elif BOOST_ARCH_MIPS && (__mips_isa_rev > 1) ++#elif BOOST_ARCH_MIPS && (((__mips_isa_rev > 1) && defined(__mips32)) || ((__mips_isa_rev > 2) && defined(__mips64))) + # define cpu_relax() asm volatile ("pause" ::: "memory"); + #elif BOOST_ARCH_PPC + // http://code.metager.de/source/xref/gnu/glibc/sysdeps/powerpc/sys/platform/ppc.h