Skip to content

Commit a5e435d

Browse files
Add support for modular build structure. (#426)
* Make the library modular usable. * Switch to library requirements instead of source. As source puts extra source in install targets. * Remove uses of BOOST_ROOT in Jamfiles. * Add missing NO_LIB usage requirements. * Add missing import-search for cconfig/predef checks. * Add requires-b2 check to top-level build file. * Bump B2 require to 5.2 * Change all <source> references to <library>. * Update copyright dates. * Move inter-lib dependencies to a project variable and into the build targets. * Add included target to mirror build//* targets. * Add missing import-search. * Change Boost Test build refs to work with both old and modular test lib targets. * Update build deps. * Update UBSAN CI run --------- Co-authored-by: Matt Borland <[email protected]>
1 parent e4e7f74 commit a5e435d

File tree

8 files changed

+161
-105
lines changed

8 files changed

+161
-105
lines changed

.github/workflows/ci.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,13 +110,13 @@ jobs:
110110
install:
111111
- g++-12-multilib
112112
- name: UBSAN
113-
toolset: gcc-12
114-
cxxstd: "17"
113+
toolset: gcc-13
114+
cxxstd: "11"
115115
address_model: 64
116116
ubsan: 1
117-
os: ubuntu-22.04
117+
os: ubuntu-24.04
118118
install:
119-
- g++-12-multilib
119+
- g++-13-multilib
120120

121121
# Linux, clang
122122
- toolset: clang

Jamfile.v2

Lines changed: 0 additions & 9 deletions
This file was deleted.

build.jam

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# Copyright René Ferdinand Rivera Morell 2023-2024
2+
# Distributed under the Boost Software License, Version 1.0.
3+
# (See accompanying file LICENSE_1_0.txt or copy at
4+
# http://www.boost.org/LICENSE_1_0.txt)
5+
6+
require-b2 5.2 ;
7+
8+
constant boost_dependencies :
9+
/boost/algorithm//boost_algorithm
10+
/boost/assert//boost_assert
11+
/boost/bind//boost_bind
12+
/boost/config//boost_config
13+
/boost/core//boost_core
14+
/boost/detail//boost_detail
15+
/boost/exception//boost_exception
16+
/boost/function//boost_function
17+
/boost/io//boost_io
18+
/boost/iterator//boost_iterator
19+
/boost/mpl//boost_mpl
20+
/boost/numeric_conversion//boost_numeric_conversion
21+
/boost/optional//boost_optional
22+
/boost/preprocessor//boost_preprocessor
23+
/boost/smart_ptr//boost_smart_ptr
24+
/boost/static_assert//boost_static_assert
25+
/boost/type_traits//boost_type_traits
26+
/boost/utility//boost_utility ;
27+
28+
project /boost/test
29+
: common-requirements
30+
<include>include
31+
;
32+
33+
explicit
34+
[ alias boost_test : : : : <library>$(boost_dependencies) ]
35+
[ alias boost_prg_exec_monitor : build//boost_prg_exec_monitor ]
36+
[ alias boost_test_exec_monitor : build//boost_test_exec_monitor ]
37+
[ alias boost_unit_test_framework : build//boost_unit_test_framework ]
38+
[ alias prg_exec_monitor : boost_prg_exec_monitor ]
39+
[ alias test_exec_monitor : boost_test_exec_monitor ]
40+
[ alias unit_test_framework : boost_unit_test_framework ]
41+
[ alias boost_included_prg_exec_monitor : : : : <library>$(boost_dependencies) ]
42+
[ alias boost_included_test_exec_monitor : : : : <library>$(boost_dependencies) ]
43+
[ alias boost_included_unit_test_framework : : : : <library>$(boost_dependencies) ]
44+
[ alias included : : : : <library>$(boost_dependencies) ]
45+
[ alias included_prg_exec_monitor : boost_included_prg_exec_monitor ]
46+
[ alias included_test_exec_monitor : boost_included_test_exec_monitor ]
47+
[ alias included_unit_test_framework : boost_included_unit_test_framework ]
48+
[ alias all : example test
49+
boost_prg_exec_monitor
50+
boost_test_exec_monitor
51+
boost_unit_test_framework ]
52+
;
53+
54+
call-if : boost-library test
55+
: install
56+
boost_prg_exec_monitor
57+
boost_test_exec_monitor
58+
boost_unit_test_framework
59+
;
60+

build/Jamfile.v2

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@
66

77
import os ;
88

9-
import ../../predef/tools/check/predef
9+
import-search /boost/predef/tools/check ;
10+
import predef
1011
: check
1112
: predef-check ;
1213

13-
project boost/test
14+
project
1415
: source-location ../src
16+
: common-requirements <library>$(boost_dependencies)
1517
: requirements <link>shared:<define>BOOST_TEST_DYN_LINK=1
1618
<toolset>borland:<cxxflags>-w-8080
1719
<target-os>cygwin:<define>_POSIX_C_SOURCE=200112L
@@ -26,7 +28,7 @@ project boost/test
2628
# <warnings-as-errors>on
2729

2830
: usage-requirements
29-
<define>BOOST_TEST_NO_AUTO_LINK=1
31+
<define>BOOST_TEST_NO_LIB=1
3032
# Disable Warning about boost::noncopyable not being exported
3133
<link>shared,<toolset>msvc:<cxxflags>-wd4275
3234
;
@@ -113,7 +115,3 @@ lib boost_unit_test_framework
113115
alias minimal ;
114116

115117
alias included ;
116-
117-
boost-install boost_prg_exec_monitor
118-
boost_test_exec_monitor
119-
boost_unit_test_framework ;

doc/Jamfile.v2

Lines changed: 54 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -14,80 +14,82 @@ using boostbook ;
1414

1515
import doxygen ;
1616

17+
path-constant TEST_ROOT : .. ;
18+
1719
doxygen doxygen_reference_generated_doc
1820
:
19-
$(BOOST_ROOT)/libs/test/include/boost/test/debug_config.hpp
20-
$(BOOST_ROOT)/libs/test/include/boost/test/detail/global_typedef.hpp
21-
$(BOOST_ROOT)/libs/test/include/boost/test/debug.hpp
22-
$(BOOST_ROOT)/libs/test/include/boost/test/execution_monitor.hpp
23-
$(BOOST_ROOT)/libs/test/include/boost/test/framework.hpp
24-
$(BOOST_ROOT)/libs/test/include/boost/test/tools/assertion_result.hpp
25-
$(BOOST_ROOT)/libs/test/include/boost/test/unit_test.hpp
26-
$(BOOST_ROOT)/libs/test/include/boost/test/tree/observer.hpp
21+
$(TEST_ROOT)/include/boost/test/debug_config.hpp
22+
$(TEST_ROOT)/include/boost/test/detail/global_typedef.hpp
23+
$(TEST_ROOT)/include/boost/test/debug.hpp
24+
$(TEST_ROOT)/include/boost/test/execution_monitor.hpp
25+
$(TEST_ROOT)/include/boost/test/framework.hpp
26+
$(TEST_ROOT)/include/boost/test/tools/assertion_result.hpp
27+
$(TEST_ROOT)/include/boost/test/unit_test.hpp
28+
$(TEST_ROOT)/include/boost/test/tree/observer.hpp
2729

2830
# logs and formatters
29-
$(BOOST_ROOT)/libs/test/include/boost/test/unit_test_log.hpp
30-
$(BOOST_ROOT)/libs/test/include/boost/test/output/xml_log_formatter.hpp
31-
$(BOOST_ROOT)/libs/test/include/boost/test/output/plain_report_formatter.hpp
32-
$(BOOST_ROOT)/libs/test/include/boost/test/output/compiler_log_formatter.hpp
31+
$(TEST_ROOT)/include/boost/test/unit_test_log.hpp
32+
$(TEST_ROOT)/include/boost/test/output/xml_log_formatter.hpp
33+
$(TEST_ROOT)/include/boost/test/output/plain_report_formatter.hpp
34+
$(TEST_ROOT)/include/boost/test/output/compiler_log_formatter.hpp
3335

3436
# reports
35-
$(BOOST_ROOT)/libs/test/include/boost/test/output/xml_report_formatter.hpp
36-
$(BOOST_ROOT)/libs/test/include/boost/test/unit_test_log_formatter.hpp
37-
$(BOOST_ROOT)/libs/test/include/boost/test/results_reporter.hpp
38-
$(BOOST_ROOT)/libs/test/include/boost/test/results_collector.hpp
37+
$(TEST_ROOT)/include/boost/test/output/xml_report_formatter.hpp
38+
$(TEST_ROOT)/include/boost/test/unit_test_log_formatter.hpp
39+
$(TEST_ROOT)/include/boost/test/results_reporter.hpp
40+
$(TEST_ROOT)/include/boost/test/results_collector.hpp
3941

4042
# progress monitor
41-
$(BOOST_ROOT)/libs/test/include/boost/test/progress_monitor.hpp
43+
$(TEST_ROOT)/include/boost/test/progress_monitor.hpp
4244

4345
# test cases and suites
44-
$(BOOST_ROOT)/libs/test/include/boost/test/tree/test_unit.hpp
45-
$(BOOST_ROOT)/libs/test/include/boost/test/parameterized_test.hpp
46+
$(TEST_ROOT)/include/boost/test/tree/test_unit.hpp
47+
$(TEST_ROOT)/include/boost/test/parameterized_test.hpp
4648

4749
# execution monitor source files
48-
$(BOOST_ROOT)/libs/test/include/boost/test/execution_monitor.hpp
50+
$(TEST_ROOT)/include/boost/test/execution_monitor.hpp
4951

5052
# output test stream
51-
$(BOOST_ROOT)/libs/test/include/boost/test/tools/output_test_stream.hpp
53+
$(TEST_ROOT)/include/boost/test/tools/output_test_stream.hpp
5254

5355
# datasets
54-
$(BOOST_ROOT)/libs/test/include/boost/test/data/monomorphic/fwd.hpp
55-
$(BOOST_ROOT)/libs/test/include/boost/test/data/test_case.hpp
56-
$(BOOST_ROOT)/libs/test/include/boost/test/data/for_each_sample.hpp
57-
$(BOOST_ROOT)/libs/test/include/boost/test/data/size.hpp
58-
$(BOOST_ROOT)/libs/test/include/boost/test/data/monomorphic/delayed.hpp
59-
$(BOOST_ROOT)/libs/test/include/boost/test/data/monomorphic/initializer_list.hpp
60-
$(BOOST_ROOT)/libs/test/include/boost/test/data/monomorphic/array.hpp
61-
$(BOOST_ROOT)/libs/test/include/boost/test/data/monomorphic/collection.hpp
62-
$(BOOST_ROOT)/libs/test/include/boost/test/data/monomorphic/generate.hpp
63-
64-
65-
$(BOOST_ROOT)/libs/test/include/boost/test/data/monomorphic/grid.hpp
66-
$(BOOST_ROOT)/libs/test/include/boost/test/data/monomorphic/join.hpp
67-
$(BOOST_ROOT)/libs/test/include/boost/test/data/monomorphic/singleton.hpp
68-
$(BOOST_ROOT)/libs/test/include/boost/test/data/monomorphic/zip.hpp
56+
$(TEST_ROOT)/include/boost/test/data/monomorphic/fwd.hpp
57+
$(TEST_ROOT)/include/boost/test/data/test_case.hpp
58+
$(TEST_ROOT)/include/boost/test/data/for_each_sample.hpp
59+
$(TEST_ROOT)/include/boost/test/data/size.hpp
60+
$(TEST_ROOT)/include/boost/test/data/monomorphic/delayed.hpp
61+
$(TEST_ROOT)/include/boost/test/data/monomorphic/initializer_list.hpp
62+
$(TEST_ROOT)/include/boost/test/data/monomorphic/array.hpp
63+
$(TEST_ROOT)/include/boost/test/data/monomorphic/collection.hpp
64+
$(TEST_ROOT)/include/boost/test/data/monomorphic/generate.hpp
65+
66+
67+
$(TEST_ROOT)/include/boost/test/data/monomorphic/grid.hpp
68+
$(TEST_ROOT)/include/boost/test/data/monomorphic/join.hpp
69+
$(TEST_ROOT)/include/boost/test/data/monomorphic/singleton.hpp
70+
$(TEST_ROOT)/include/boost/test/data/monomorphic/zip.hpp
6971

7072
# datasets generators
71-
$(BOOST_ROOT)/libs/test/include/boost/test/data/config.hpp
72-
$(BOOST_ROOT)/libs/test/include/boost/test/data/monomorphic/generators.hpp
73-
$(BOOST_ROOT)/libs/test/include/boost/test/data/monomorphic/generators/keywords.hpp
74-
$(BOOST_ROOT)/libs/test/include/boost/test/data/monomorphic/generators/random.hpp
75-
$(BOOST_ROOT)/libs/test/include/boost/test/data/monomorphic/generators/xrange.hpp
73+
$(TEST_ROOT)/include/boost/test/data/config.hpp
74+
$(TEST_ROOT)/include/boost/test/data/monomorphic/generators.hpp
75+
$(TEST_ROOT)/include/boost/test/data/monomorphic/generators/keywords.hpp
76+
$(TEST_ROOT)/include/boost/test/data/monomorphic/generators/random.hpp
77+
$(TEST_ROOT)/include/boost/test/data/monomorphic/generators/xrange.hpp
7678

7779
# utils
78-
$(BOOST_ROOT)/libs/test/include/boost/test/utils/algorithm.hpp
79-
$(BOOST_ROOT)/libs/test/include/boost/test/utils/named_params.hpp
80-
$(BOOST_ROOT)/libs/test/include/boost/test/tools/floating_point_comparison.hpp
81-
$(BOOST_ROOT)/libs/test/include/boost/test/utils/is_forward_iterable.hpp
80+
$(TEST_ROOT)/include/boost/test/utils/algorithm.hpp
81+
$(TEST_ROOT)/include/boost/test/utils/named_params.hpp
82+
$(TEST_ROOT)/include/boost/test/tools/floating_point_comparison.hpp
83+
$(TEST_ROOT)/include/boost/test/utils/is_forward_iterable.hpp
8284

8385
# BOOST_TEST related functions
84-
$(BOOST_ROOT)/libs/test/include/boost/test/tools/detail/bitwise_manip.hpp
85-
$(BOOST_ROOT)/libs/test/include/boost/test/tools/detail/lexicographic_manip.hpp
86-
$(BOOST_ROOT)/libs/test/include/boost/test/tools/detail/per_element_manip.hpp
87-
$(BOOST_ROOT)/libs/test/include/boost/test/tools/detail/tolerance_manip.hpp
86+
$(TEST_ROOT)/include/boost/test/tools/detail/bitwise_manip.hpp
87+
$(TEST_ROOT)/include/boost/test/tools/detail/lexicographic_manip.hpp
88+
$(TEST_ROOT)/include/boost/test/tools/detail/per_element_manip.hpp
89+
$(TEST_ROOT)/include/boost/test/tools/detail/tolerance_manip.hpp
8890

8991
# others
90-
$(BOOST_ROOT)/libs/test/include/boost/test/unit_test_parameters.hpp
92+
$(TEST_ROOT)/include/boost/test/unit_test_parameters.hpp
9193
:
9294
<doxygen:param>EXTRACT_ALL=YES
9395
<doxygen:param>"PREDEFINED=\"BOOST_TEST_DECL=\" \\
@@ -102,8 +104,8 @@ doxygen doxygen_reference_generated_doc
102104
<doxygen:param>MACRO_EXPANSION=YES
103105
<doxygen:param>EXPAND_ONLY_PREDEF=YES
104106
<doxygen:param>SEARCH_INCLUDES=YES
105-
<doxygen:param>INCLUDE_PATH=$(BOOST_ROOT)/libs/test/include
106-
<doxygen:param>EXAMPLE_PATH=$(BOOST_ROOT)/libs/test/doc/examples
107+
<doxygen:param>INCLUDE_PATH=$(TEST_ROOT)/include
108+
<doxygen:param>EXAMPLE_PATH=$(TEST_ROOT)/doc/examples
107109
<doxygen:param>BRIEF_MEMBER_DESC=YES
108110
<doxygen:param>REPEAT_BRIEF=YES
109111
<doxygen:param>ALWAYS_DETAILED_SEC=YES

example/Jamfile.v2

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ import testing ;
1111
import os ;
1212

1313
# requirements
14-
import ../../config/checks/config : requires ;
14+
import-search /boost/config/checks ;
15+
import config : requires ;
1516

1617
local HAS_UBSAN = "NO_UBSAN" ; # need to defined something
1718
if [ os.environ UBSAN ]
@@ -22,21 +23,22 @@ if [ os.environ UBSAN ]
2223
ECHO $(HAS_UBSAN:J) ;
2324

2425
# Project
25-
project boost/test-examples
26+
project
2627
:
2728
: requirements
29+
<library>/boost/test//boost_test
2830
<toolset>clang:<cxxflags>-Wno-c99-extensions <define>$(HAS_UBSAN:J)
2931
;
3032

3133
# Define aliases for the needed libs to get shorter names
3234
alias prg_exec_monitor
3335
: # sources
34-
/boost//prg_exec_monitor
36+
/boost/test//boost_prg_exec_monitor
3537
;
3638

3739
alias unit_test_framework
3840
: # sources
39-
/boost//unit_test_framework
41+
/boost/test//boost_unit_test_framework
4042
;
4143

4244
# make aliases explicit so the libraries will only be built when requested
@@ -60,7 +62,7 @@ alias boost_test_examples
6062
[ run unit_test_example_08.cpp unit_test_framework ]
6163
[ run unit_test_example_09_1.cpp
6264
unit_test_example_09_2.cpp unit_test_framework ]
63-
[ run-fail unit_test_example_10.cpp unit_test_framework/<link>static ]
65+
[ run-fail unit_test_example_10.cpp unit_test_framework/<link>static : : : <library>/boost/lexical_cast//boost_lexical_cast ]
6466
[ run-fail unit_test_example_11.cpp unit_test_framework/<link>static ]
6567
[ link unit_test_example_12.cpp unit_test_framework/<link>static ]
6668
[ run unit_test_example_13.cpp ]

0 commit comments

Comments
 (0)