Add support for modular build structure. (#2905)

* Use beast exclusive valgrind feature.

* Make the library modular usable.

* Switch to library requirements instead of source. As source puts extra source in install targets.

* Add Beast root dir for includes. As some tests refer to files relative to that.

* Replace relative docca refs with project based.

* Avoid mtuliple openssl configurations.

* Always declare openssl. If it's empty and duplicate it will be ignored.

* Add missing import-search for cconfig/predef checks.

* Add requires-b2 check to top-level build file.

* Bump B2 require to 5.2

* Update copyright dates.

* Move inter-lib dependencies to a project variable and into the build targets.

* Update build deps.

* Update build deps.

* The http/client/body example uses the source header from json instead of the linked library.
This commit is contained in:
René Ferdinand Rivera Morell
2024-09-01 02:56:02 -05:00
committed by GitHub
parent aefc564fa7
commit 2bda7870fe
11 changed files with 203 additions and 152 deletions

74
build.jam Normal file
View File

@@ -0,0 +1,74 @@
# Copyright René Ferdinand Rivera Morell 2023-2024
# 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)
require-b2 5.2 ;
import feature ;
constant boost_dependencies :
/boost/asio//boost_asio
/boost/assert//boost_assert
/boost/bind//boost_bind
/boost/config//boost_config
/boost/container//boost_container
/boost/container_hash//boost_container_hash
/boost/core//boost_core
/boost/endian//boost_endian
/boost/intrusive//boost_intrusive
/boost/logic//boost_logic
/boost/mp11//boost_mp11
/boost/optional//boost_optional
/boost/preprocessor//boost_preprocessor
/boost/smart_ptr//boost_smart_ptr
/boost/static_assert//boost_static_assert
/boost/static_string//boost_static_string
/boost/system//boost_system
/boost/throw_exception//boost_throw_exception
/boost/type_index//boost_type_index
/boost/type_traits//boost_type_traits
/boost/winapi//boost_winapi ;
project /boost/beast
: common-requirements
<include>include
;
explicit
[ alias boost_beast : build//boost_beast ]
[ alias boost_beast_asio : build//boost_beast_asio ]
[ alias boost_beast_asio_ssl : build//boost_beast_asio_ssl ]
[ alias all : boost_beast boost_beast_asio boost_beast_asio_ssl example test ]
# Old-style targets. Remove once the rest of Beast changes.
[ alias lib-beast : boost_beast ]
[ alias lib-asio : boost_beast_asio ]
[ alias lib-asio-ssl : boost_beast_asio_ssl ]
;
call-if : boost-library beast
: install boost_beast boost_beast_asio boost_beast_asio_ssl
;
feature.feature boost.beast.allow-deprecated : on off : propagated ;
feature.feature boost.beast.separate-compilation : on off : propagated ;
feature.feature boost.beast.valgrind : on off : optional propagated ;
variant beast_coverage
: debug
: <cxxflags>"-msse4.2 --coverage"
<linkflags>"--coverage"
;
variant beast_valgrind
: release
: <boost.beast.valgrind>on
;
variant beast_ubasan
: release
: <cxxflags>"-msse4.2 -funsigned-char -fno-omit-frame-pointer -fsanitize=address,undefined -fno-sanitize-recover=address,undefined -fsanitize-blacklist=libs/beast/tools/blacklist.supp"
<linkflags>"-fsanitize=address,undefined"
<define>BOOST_USE_ASAN=1
;