• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2016-2017 Klemens David Morgenstern
2# Copyright 2018 Mateusz Loskot <mateusz@loskot.net>
3# Copyright 2018-2019 Hans Dembinski
4#
5# Use, modification and distribution is subject to the Boost Software License,
6# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
7# http://www.boost.org/LICENSE_1_0.txt)
8
9import python ;
10import os ;
11import regex ;
12import testing ;
13import ../../config/checks/config : requires ;
14
15if ! [ python.configured ]
16{
17    using python ;
18}
19
20path-constant THIS_PATH : . ;
21
22project
23    : requirements
24    [ requires
25      cxx14_constexpr cxx14_decltype_auto cxx14_generic_lambdas cxx14_return_type_deduction cxx11_user_defined_literals
26      # list could go on...
27    ]
28    ;
29
30# Check consistency of build systems
31testing.make-test run-pyd : check_build_system.py :
32    <dependency>Jamfile <dependency>CMakeLists.txt ;
33
34# Verify One Definition Rule by linking two object files which include everything
35testing.make-test run-pyd : check_odr_test.py : <dependency>odr_test.cpp ;
36alias odr :
37    [ link odr_main_test.cpp odr_test.cpp ]
38    : <warnings>off
39    ;
40
41alias cxx14 :
42    [ run accumulators_count_test.cpp ]
43    [ run accumulators_mean_test.cpp ]
44    [ run accumulators_sum_test.cpp : : :
45      # make sure sum accumulator works even with -ffast-math and optimizations
46      <toolset>gcc:<cxxflags>"-O3 -ffast-math"
47      <toolset>clang:<cxxflags>"-O3 -ffast-math" ]
48    [ run accumulators_thread_safe_test.cpp ]
49    [ run accumulators_weighted_mean_test.cpp ]
50    [ run accumulators_weighted_sum_test.cpp ]
51    [ run algorithm_project_test.cpp ]
52    [ run algorithm_reduce_test.cpp ]
53    [ run algorithm_sum_test.cpp ]
54    [ run algorithm_empty_test.cpp ]
55    [ run axis_boolean_test.cpp ]
56    [ run axis_category_test.cpp ]
57    [ run axis_integer_test.cpp ]
58    [ run axis_option_test.cpp ]
59    [ run axis_regular_test.cpp ]
60    [ run axis_traits_test.cpp ]
61    [ run axis_variable_test.cpp ]
62    [ run axis_variant_test.cpp ]
63    [ run detail_accumulator_traits_test.cpp ]
64    [ run detail_argument_traits_test.cpp ]
65    [ run detail_args_type_test.cpp ]
66    [ run detail_axes_test.cpp ]
67    [ run detail_convert_integer_test.cpp ]
68    [ run detail_detect_test.cpp ]
69    [ run detail_limits_test.cpp ]
70    [ run detail_make_default_test.cpp ]
71    [ run detail_misc_test.cpp ]
72    [ run detail_iterator_adaptor_test.cpp ]
73    [ run detail_large_int_test.cpp ]
74    [ run detail_operators_test.cpp ]
75    [ run detail_relaxed_equal_test.cpp ]
76    [ run detail_replace_type_test.cpp ]
77    [ run detail_safe_comparison_test.cpp ]
78    [ run detail_static_if_test.cpp ]
79    [ run detail_tuple_slice_test.cpp ]
80    [ run histogram_custom_axis_test.cpp ]
81    [ run histogram_dynamic_test.cpp ]
82    [ run histogram_fill_test.cpp ]
83    [ run histogram_growing_test.cpp ]
84    [ run histogram_mixed_test.cpp ]
85    [ run histogram_operators_test.cpp ]
86    [ run histogram_ostream_test.cpp ]
87    [ run histogram_test.cpp ]
88    [ run indexed_test.cpp ]
89    [ run storage_adaptor_test.cpp ]
90    [ run unlimited_storage_test.cpp ]
91    [ run utility_test.cpp ]
92    ;
93
94alias cxx17 :
95    [ run deduction_guides_test.cpp ] :
96    [ requires cpp_deduction_guides ]
97    ;
98
99# check that useful error messages are produced when library is used incorrectly
100alias failure :
101    [ compile-fail axis_category_fail0.cpp ]
102    [ compile-fail axis_category_fail1.cpp ]
103    [ compile-fail axis_category_fail2.cpp ]
104    [ compile-fail axis_integer_fail0.cpp ]
105    [ compile-fail axis_integer_fail1.cpp ]
106    [ compile-fail axis_integer_fail2.cpp ]
107    [ compile-fail axis_integer_fail3.cpp ]
108    [ compile-fail axis_integer_fail4.cpp ]
109    [ compile-fail axis_regular_fail0.cpp ]
110    [ compile-fail axis_regular_fail1.cpp ]
111    [ compile-fail axis_variable_fail0.cpp ]
112    [ compile-fail axis_variable_fail1.cpp ]
113    [ compile-fail make_histogram_fail0.cpp ]
114    [ compile-fail make_histogram_fail1.cpp ]
115    [ compile-fail histogram_fail0.cpp ]
116    [ compile-fail histogram_fail1.cpp ]
117    [ compile-fail histogram_fail2.cpp ]
118    [ compile-fail histogram_fail3.cpp ]
119    [ compile-fail histogram_fail4.cpp ]
120    ;
121
122alias threading :
123    [ run histogram_threaded_test.cpp ]
124    [ run storage_adaptor_threaded_test.cpp ]
125    :
126    <threading>multi
127    ;
128
129# warnings are off for these other boost libraries, which tend to be not warning-free
130alias accumulators : [ run boost_accumulators_support_test.cpp ] : <warnings>off ;
131alias range : [ run boost_range_support_test.cpp ] : <warnings>off ;
132alias units : [ run boost_units_support_test.cpp ] : <warnings>off ;
133alias serialization :
134    [ run accumulators_serialization_test.cpp libserial : $(THIS_PATH) ]
135    [ run detail_array_wrapper_serialization_test.cpp libserial ]
136    [ run axis_variant_serialization_test.cpp libserial : $(THIS_PATH) ]
137    [ run histogram_serialization_test.cpp libserial : $(THIS_PATH) ]
138    [ run storage_adaptor_serialization_test.cpp libserial : $(THIS_PATH) ]
139    [ run unlimited_storage_serialization_test.cpp libserial : $(THIS_PATH) ]
140    : <warnings>off
141    ;
142
143alias libserial :
144    /boost/serialization//boost_serialization
145    :
146    <link>static <warnings>off <rtti>on
147    ;
148
149# for builds without optional boost dependencies
150alias minimal : cxx14 cxx17 failure threading ;
151
152# all tests
153alias all : minimal odr accumulators range units serialization ;
154
155# all except "failure", because it is distracting during development
156alias develop : cxx14 cxx17 threading odr accumulators range units serialization ;
157
158explicit minimal ;
159explicit all ;
160explicit odr ;
161explicit cxx14 ;
162explicit cxx17 ;
163explicit failure ;
164explicit threading ;
165explicit accumulators ;
166explicit range ;
167explicit units ;
168explicit serialization ;
169explicit libserial ;
170