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