summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEd Tanous <edtanous@google.com>2021-10-10 02:10:52 +0300
committerEd Tanous <ed@tanous.net>2021-10-27 20:45:19 +0300
commit2107fe1809bf71cd72bdaf21e432d96b3dccc630 (patch)
tree5b6fc932f409e1329fb088118828a87aa5de323a
parent92409d0e6bd0e5839836ae92b4a74f4dee603074 (diff)
downloadbmcweb-2107fe1809bf71cd72bdaf21e432d96b3dccc630.tar.xz
Enable beast separate compilation
This commit enables separate compilation for asio and beast. Details on how this option works are here: https://www.boost.org/doc/libs/1_77_0/doc/html/boost_asio/using.html This allows separating out the build of the boost components from the rest of the components, which should decrease our intermediate build times in the future as we start breaking things up better. Tested: Code builds. Signed-off-by: Ed Tanous <edtanous@google.com> Change-Id: I1614bb4ccddebcf1d4858112a25a870378497ecc
-rw-r--r--meson.build12
-rw-r--r--src/boost_asio.cpp1
-rw-r--r--src/boost_asio_ssl.cpp1
-rw-r--r--src/boost_beast.cpp45
4 files changed, 57 insertions, 2 deletions
diff --git a/meson.build b/meson.build
index 29308f61c6..9618203874 100644
--- a/meson.build
+++ b/meson.build
@@ -259,6 +259,8 @@ cxx.get_supported_arguments([
'-DBOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT',
'-DBOOST_ASIO_DISABLE_THREADS',
'-DBOOST_BEAST_USE_STD_STRING_VIEW',
+ '-DBOOST_BEAST_SEPARATE_COMPILATION',
+ '-DBOOST_ASIO_SEPARATE_COMPILATION',
'-DBOOST_ERROR_CODE_HEADER_ONLY',
'-DBOOST_SYSTEM_NO_DEPRECATED',
'-DBOOST_ASIO_NO_DEPRECATED',
@@ -348,7 +350,10 @@ srcfiles_bmcweb = [
'src/webserver_main.cpp',
'redfish-core/src/error_messages.cpp',
'redfish-core/src/utils/json_utils.cpp',
- 'src/boost_url.cpp'
+ 'src/boost_url.cpp',
+ 'src/boost_beast.cpp',
+ 'src/boost_asio.cpp',
+ 'src/boost_asio_ssl.cpp',
]
srcfiles_unittest = [
@@ -423,7 +428,10 @@ if(get_option('tests').enabled())
testname = src_test.split('/')[-1].split('.')[0]
test(testname,executable(testname,
[src_test,
- 'src/boost_url.cpp'],
+ 'src/boost_url.cpp',
+ 'src/boost_beast.cpp',
+ 'src/boost_asio.cpp',
+ 'src/boost_asio_ssl.cpp',],
include_directories : incdir,
install_dir: bindir,
dependencies: [
diff --git a/src/boost_asio.cpp b/src/boost_asio.cpp
new file mode 100644
index 0000000000..eb3b7262c3
--- /dev/null
+++ b/src/boost_asio.cpp
@@ -0,0 +1 @@
+#include <boost/asio/impl/src.hpp> \ No newline at end of file
diff --git a/src/boost_asio_ssl.cpp b/src/boost_asio_ssl.cpp
new file mode 100644
index 0000000000..cb6377da31
--- /dev/null
+++ b/src/boost_asio_ssl.cpp
@@ -0,0 +1 @@
+#include <boost/asio/ssl/impl/src.hpp> \ No newline at end of file
diff --git a/src/boost_beast.cpp b/src/boost_beast.cpp
new file mode 100644
index 0000000000..0c275a63b1
--- /dev/null
+++ b/src/boost_beast.cpp
@@ -0,0 +1,45 @@
+/*
+TODO(ed) This file is largely copied from boost/beast/src.hpp
+Unfortuately the test streams don't compile with -fno-rtti at the moment, so
+those files are commented out
+*/
+
+#define BOOST_BEAST_SOURCE
+
+#include <boost/beast/core/detail/config.hpp>
+
+#include <boost/beast/_experimental/test/impl/error.ipp>
+#include <boost/beast/_experimental/test/impl/fail_count.ipp>
+//#include <boost/beast/_experimental/test/impl/stream.ipp>
+//#include <boost/beast/_experimental/test/detail/stream_state.ipp>
+
+#include <boost/beast/core/detail/base64.ipp>
+#include <boost/beast/core/detail/impl/temporary_buffer.ipp>
+#include <boost/beast/core/detail/sha1.ipp>
+#include <boost/beast/core/impl/error.ipp>
+#include <boost/beast/core/impl/file_posix.ipp>
+#include <boost/beast/core/impl/file_stdio.ipp>
+#include <boost/beast/core/impl/file_win32.ipp>
+#include <boost/beast/core/impl/flat_static_buffer.ipp>
+#include <boost/beast/core/impl/saved_handler.ipp>
+#include <boost/beast/core/impl/static_buffer.ipp>
+#include <boost/beast/core/impl/string.ipp>
+#include <boost/beast/http/detail/basic_parser.ipp>
+#include <boost/beast/http/detail/rfc7230.ipp>
+#include <boost/beast/http/impl/basic_parser.ipp>
+#include <boost/beast/http/impl/error.ipp>
+#include <boost/beast/http/impl/field.ipp>
+#include <boost/beast/http/impl/fields.ipp>
+#include <boost/beast/http/impl/rfc7230.ipp>
+#include <boost/beast/http/impl/status.ipp>
+#include <boost/beast/http/impl/verb.ipp>
+#include <boost/beast/websocket/detail/hybi13.ipp>
+#include <boost/beast/websocket/detail/mask.ipp>
+#include <boost/beast/websocket/detail/pmd_extension.ipp>
+#include <boost/beast/websocket/detail/prng.ipp>
+#include <boost/beast/websocket/detail/service.ipp>
+#include <boost/beast/websocket/detail/utf8_checker.ipp>
+#include <boost/beast/websocket/impl/error.ipp>
+#include <boost/beast/zlib/detail/deflate_stream.ipp>
+#include <boost/beast/zlib/detail/inflate_stream.ipp>
+#include <boost/beast/zlib/impl/error.ipp>