diff --git a/.github/workflows/slow.yml b/.github/workflows/slow.yml index 68755972..ccb08d37 100644 --- a/.github/workflows/slow.yml +++ b/.github/workflows/slow.yml @@ -15,7 +15,7 @@ concurrency: cancel-in-progress: true env: - B2_OPTS: -q -j2 warnings-as-errors=on + B2_OPTS: -q -j2 warnings-as-errors=on cxxflags=-Wno-unused-parameter cxxflags=-Wno-uninitialized UBSAN_OPTIONS: print_stacktrace=1 LSAN_OPTIONS: verbosity=1:log_threads=1 ASAN_OPTIONS: detect_leaks=1:detect_stack_use_after_return=1 @@ -46,31 +46,7 @@ jobs: cd libs/histogram ../../b2 $B2_OPTS cxxstd=17 test//all - gcc7: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v4 - - uses: egor-tensin/setup-gcc@v1 - with: - version: 7 - - name: Fetch Boost superproject - run: | - cd .. - git clone -b $GITHUB_BASE_REF --depth 5 https://github.com/boostorg/boost.git - cd boost - mv -f $GITHUB_WORKSPACE/* libs/histogram - git submodule update --init --depth 5 tools/build tools/boostdep - git submodule update --init --depth 5 libs/format - python tools/boostdep/depinst/depinst.py --git_args "--depth 5 --jobs 3" histogram - mv -f * $GITHUB_WORKSPACE - - name: Prepare b2 - run: ./bootstrap.sh - - name: Test cxxstd=14 (warnings ignored) - run: | - cd libs/histogram - ../../b2 -q -j2 toolset=gcc-7 cxxstd=14 test//all examples - - gcc10: + gcc: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -89,9 +65,9 @@ jobs: - name: Test cxxstd=20 -O3 -funsafe-math-optimizations run: | cd libs/histogram - ../../b2 $B2_OPTS toolset=gcc-10 cxxstd=20 cxxflags="-O3 -funsafe-math-optimizations" test//all examples + ../../b2 $B2_OPTS toolset=gcc cxxstd=20 cxxflags="-O3 -funsafe-math-optimizations" test//all examples - clang14: + clang: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -109,4 +85,4 @@ jobs: - name: Test cxxstd=17 ubsan asan run: | cd libs/histogram - ../../b2 $B2_OPTS toolset=clang-14 cxxstd=17 variant=histogram_ubasan test//all + ../../b2 $B2_OPTS toolset=clang cxxstd=17 variant=histogram_ubasan test//all diff --git a/.gitignore b/.gitignore index 922f7f45..08538ab4 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,5 @@ tools/codecov coverage-report .cache venv -.pytest_cache \ No newline at end of file +.pytest_cache +!*.jam diff --git a/Jamfile b/Jamfile deleted file mode 100644 index de6e5312..00000000 --- a/Jamfile +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright Mateusz Loskot 2018 -# Copyright Klemens David Morgenstern, Hans P. Dembinski 2016-2017 -# -# Use, modification and distribution is subject to 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) - -# Special builds for Boost Histogram: -# -# Generate coverage data: b2 cxxstd=latest coverage=on test//all -# Test without exceptions and rtti: b2 cxxstd=latest exception-handling=off rtti=off test//minimal -# Test with sanitizers: b2 toolset=clang cxxstd=latest histogram_ubasan test - -import common ; - -project - : requirements - /boost//headers - $(BOOST_ROOT) - clang:"-pedantic -Wextra -Wsign-compare -Wstrict-aliasing -fstrict-aliasing -Wvexing-parse -Wfloat-conversion -fvisibility=hidden -fvisibility-inlines-hidden" - darwin:"-pedantic -Wextra -Wsign-compare -Wstrict-aliasing -fstrict-aliasing -Wvexing-parse -Wfloat-conversion -fvisibility=hidden -fvisibility-inlines-hidden" - gcc:"-pedantic -Wextra -Wsign-compare -Wstrict-aliasing -fstrict-aliasing -Wfloat-conversion -fvisibility=hidden -fvisibility-inlines-hidden" - msvc:"/bigobj" - intel-win:"/bigobj" - : default-build - all - ; - -path-constant THIS_PATH : . ; - -# only works with clang because of -fsanitize-blacklist -variant histogram_ubasan : debug : - "-fno-omit-frame-pointer -O0 -fno-inline -fsanitize=address,leak,undefined -fno-sanitize-recover=all -fsanitize-blacklist=$(THIS_PATH)/tools/blacklist.supp" - "-fsanitize=address,leak,undefined" - ; - -build-project test ; -build-project examples ; diff --git a/build.jam b/build.jam new file mode 100644 index 00000000..27567156 --- /dev/null +++ b/build.jam @@ -0,0 +1,51 @@ +# Copyright René Ferdinand Rivera Morell 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 ; + +# Special builds for Boost Histogram: +# +# Generate coverage data: b2 cxxstd=latest coverage=on test//all +# Test without exceptions and rtti: b2 cxxstd=latest exception-handling=off rtti=off test//minimal +# Test with sanitizers: b2 toolset=clang cxxstd=latest histogram_ubasan test + +constant boost_dependencies : + /boost/config//boost_config + /boost/core//boost_core + /boost/math//boost_math_tr1 + /boost/mp11//boost_mp11 + /boost/serialization//boost_serialization + /boost/throw_exception//boost_throw_exception + /boost/variant2//boost_variant2 ; + +project /boost/histogram + : requirements + clang:"-Wsign-compare -Wstrict-aliasing -fstrict-aliasing -Wvexing-parse -Wfloat-conversion" + darwin:"-Wsign-compare -Wstrict-aliasing -fstrict-aliasing -Wvexing-parse -Wfloat-conversion" + gcc:"-Wsign-compare -Wstrict-aliasing -fstrict-aliasing -Wfloat-conversion" + msvc:"/bigobj" + intel-win:"/bigobj" + hidden + : default-build + extra + ; + +explicit + [ alias boost_histogram : : : + : include $(boost_dependencies) ] + [ alias all : boost_histogram test examples ] + ; + +call-if : boost-library histogram + ; + +path-constant THIS_PATH : . ; + +# only works with clang because of -fsanitize-blacklist +variant histogram_ubasan : debug : + "-fno-omit-frame-pointer -O0 -fno-inline -fsanitize=address,leak,undefined -fno-sanitize-recover=all -fsanitize-blacklist=$(THIS_PATH)/tools/blacklist.supp" + "-fsanitize=address,leak,undefined" + ; + diff --git a/doc/Jamfile b/doc/Jamfile index 261e3083..61087d41 100644 --- a/doc/Jamfile +++ b/doc/Jamfile @@ -18,12 +18,12 @@ path-constant THIS_PATH : . ; doxygen reference : - $(THIS_PATH)/../../../boost/histogram.hpp - [ glob $(THIS_PATH)/../../../boost/histogram/*.hpp ] - [ glob $(THIS_PATH)/../../../boost/histogram/accumulators/*.hpp ] - [ glob $(THIS_PATH)/../../../boost/histogram/algorithm/*.hpp ] - [ glob $(THIS_PATH)/../../../boost/histogram/axis/*.hpp ] - [ glob $(THIS_PATH)/../../../boost/histogram/utility/*.hpp ] + $(THIS_PATH)/../include/boost/histogram.hpp + [ glob $(THIS_PATH)/../include/boost/histogram/*.hpp ] + [ glob $(THIS_PATH)/../include/boost/histogram/accumulators/*.hpp ] + [ glob $(THIS_PATH)/../include/boost/histogram/algorithm/*.hpp ] + [ glob $(THIS_PATH)/../include/boost/histogram/axis/*.hpp ] + [ glob $(THIS_PATH)/../include/boost/histogram/utility/*.hpp ] : QUIET=YES WARNINGS=YES diff --git a/examples/Jamfile b/examples/Jamfile index e1b85e0e..367158c4 100644 --- a/examples/Jamfile +++ b/examples/Jamfile @@ -5,15 +5,21 @@ # Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) +require-b2 5.0.1 ; + +import-search /boost/config/checks ; + import testing ; -import ../../config/checks/config : requires ; +import config : requires ; project : requirements + /boost/histogram//boost_histogram [ requires cxx14_constexpr cxx14_decltype_auto cxx14_generic_lambdas cxx14_return_type_deduction cxx11_user_defined_literals # list could go on... ] + /boost/format//boost_format ; alias cxx14 : diff --git a/test/Jamfile b/test/Jamfile index 6cebf317..7a01a13f 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -6,11 +6,15 @@ # Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) +require-b2 5.0.1 ; + +import-search /boost/config/checks ; + import python ; import os ; import regex ; import testing ; -import ../../config/checks/config : requires ; +import config : requires ; if ! [ python.configured ] { @@ -21,6 +25,7 @@ path-constant THIS_PATH : . ; project : requirements + /boost/histogram//boost_histogram [ requires cxx14_constexpr cxx14_decltype_auto cxx14_generic_lambdas cxx14_return_type_deduction cxx11_user_defined_literals # list could go on... @@ -149,9 +154,9 @@ alias math : [ run utility_jeffreys_interval_test.cpp ] : off ; -alias accumulators : [ run boost_accumulators_support_test.cpp ] : off ; +alias accumulators : [ run boost_accumulators_support_test.cpp : : : /boost/accumulators//boost_accumulators ] : off ; alias range : [ run boost_range_support_test.cpp ] : off ; -alias units : [ run boost_units_support_test.cpp ] : off ; +alias units : [ run boost_units_support_test.cpp : : : /boost/units//boost_units ] : off ; alias serialization : [ run accumulators_serialization_test.cpp libserial : $(THIS_PATH) ] [ run detail_array_wrapper_serialization_test.cpp libserial ]