Compare commits

...

12 Commits

Author SHA1 Message Date
Peter Dimov
06357e16d0 Merge branch 'feature/gha' into develop 2021-01-20 00:50:53 +02:00
Peter Dimov
10ab375aef Merge pull request #40 from eldiener/develop
[skip ci] Add "cxxstd" json field
2021-01-20 00:46:13 +02:00
Peter Dimov
37a1fa3f6a Add .github/workflows 2021-01-20 00:38:48 +02:00
Edward Diener
a2f088db05 [skip ci] Add "cxxstd" json field. The "cxxstd" json field is being added to each Boost library's meta json information for libraries in order to specify the minumum C++ standard compilation level. The value of this field matches one of the values for 'cxxstd' in Boost.Build. The purpose of doing this is to provide information for the Boost website documentation for each library which will specify the minimum C++ standard compilation that an end-user must employ in order to use the particular library. This will aid end-users who want to know if they can successfully use a Boost library based on their C++ compiler's compilation level, without having to search the library's documentation to find this out. 2021-01-19 17:15:01 -05:00
Peter Dimov
c197ec934e Update maintainer e-mail 2020-12-12 01:02:38 +02:00
Peter Dimov
8b1a23033d Add cxxstd=latest to msvc-14.2 2020-11-14 21:41:46 +02:00
Peter Dimov
fc28657f34 Use address-model=32 for msvc-9.0,10.0,11.0 2020-11-14 21:36:16 +02:00
Peter Dimov
52c8fd15d1 Update Travis 2020-09-10 17:28:39 +03:00
Peter Dimov
4841cbf475 Restrict clang-win to 64 bit to avoid mspdbcore.dll error 2020-03-28 05:03:12 +02:00
Peter Dimov
b07c2efef5 Add msvc-14.2, clang-win to Appveyor 2020-03-28 04:32:38 +02:00
Peter Dimov
1aa3e8c8d7 Merge pull request #38 from Romain-Geissler-1A/develop
Avoid -Wmaybe-uninitialized warnings in gcc (issue #27).
2020-03-28 03:45:44 +02:00
Romain Geissler
7c90434317 Avoid -Wmaybe-uninitialized warnings in gcc (issue #27). 2020-03-27 20:57:36 +00:00
5 changed files with 285 additions and 32 deletions

201
.github/workflows/ci.yml vendored Normal file
View File

@@ -0,0 +1,201 @@
name: CI
on:
pull_request:
push:
branches:
- master
- develop
- feature/**
env:
UBSAN_OPTIONS: print_stacktrace=1
jobs:
posix:
strategy:
fail-fast: false
matrix:
include:
- toolset: gcc-4.7
cxxstd: "03,11"
os: ubuntu-16.04
install: g++-4.7
- toolset: gcc-4.8
cxxstd: "03,11"
os: ubuntu-16.04
install: g++-4.8
- toolset: gcc-4.9
cxxstd: "03,11"
os: ubuntu-16.04
install: g++-4.9
- toolset: gcc-5
cxxstd: "03,11,14,1z"
os: ubuntu-16.04
- toolset: gcc-6
cxxstd: "03,11,14,1z"
os: ubuntu-16.04
install: g++-6
- toolset: gcc-7
cxxstd: "03,11,14,17"
os: ubuntu-18.04
- toolset: gcc-8
cxxstd: "03,11,14,17,2a"
os: ubuntu-18.04
- toolset: gcc-9
cxxstd: "03,11,14,17,2a"
os: ubuntu-18.04
- toolset: gcc-10
cxxstd: "03,11,14,17,2a"
os: ubuntu-18.04
- toolset: clang
compiler: clang++-3.5
cxxstd: "03,11,14"
os: ubuntu-16.04
install: clang-3.5
- toolset: clang
compiler: clang++-3.6
cxxstd: "03,11,14"
os: ubuntu-16.04
install: clang-3.6
- toolset: clang
compiler: clang++-3.7
cxxstd: "03,11,14"
os: ubuntu-16.04
install: clang-3.7
- toolset: clang
compiler: clang++-3.8
cxxstd: "03,11,14"
os: ubuntu-16.04
install: clang-3.8
- toolset: clang
compiler: clang++-3.9
cxxstd: "03,11,14"
os: ubuntu-16.04
install: clang-3.9
- toolset: clang
compiler: clang++-4.0
cxxstd: "03,11,14"
os: ubuntu-16.04
install: clang-4.0
- toolset: clang
compiler: clang++-5.0
cxxstd: "03,11,14,1z"
os: ubuntu-16.04
install: clang-5.0
- toolset: clang
compiler: clang++-6.0
cxxstd: "03,11,14,17"
os: ubuntu-18.04
- toolset: clang
compiler: clang++-7
cxxstd: "03,11,14,17"
os: ubuntu-18.04
install: clang-7
- toolset: clang
compiler: clang++-8
cxxstd: "03,11,14,17,2a"
os: ubuntu-20.04
- toolset: clang
compiler: clang++-9
cxxstd: "03,11,14,17,2a"
os: ubuntu-20.04
- toolset: clang
compiler: clang++-10
cxxstd: "03,11,14,17,2a"
os: ubuntu-20.04
- toolset: clang
cxxstd: "03,11,14,17,2a"
os: macos-10.15
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v2
- name: Install packages
if: matrix.install
run: sudo apt install ${{matrix.install}}
- name: Setup Boost
run: |
echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY
LIBRARY=${GITHUB_REPOSITORY#*/}
echo LIBRARY: $LIBRARY
echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV
echo GITHUB_BASE_REF: $GITHUB_BASE_REF
echo GITHUB_REF: $GITHUB_REF
REF=${GITHUB_BASE_REF:-$GITHUB_REF}
REF=${REF#refs/heads/}
echo REF: $REF
BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true
echo BOOST_BRANCH: $BOOST_BRANCH
cd ..
git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY
./bootstrap.sh
./b2 -d0 headers
- name: Create user-config.jam
if: matrix.compiler
run: |
echo "using ${{matrix.toolset}} : : ${{matrix.compiler}} ;" > ~/user-config.jam
- name: Run tests
run: |
cd ../boost-root
./b2 -j3 libs/$LIBRARY/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} variant=debug,release
windows:
strategy:
fail-fast: false
matrix:
include:
- toolset: msvc-14.1
cxxstd: "14,17,latest"
addrmd: 32,64
os: windows-2016
- toolset: msvc-14.2
cxxstd: "14,17,latest"
addrmd: 32,64
os: windows-2019
- toolset: gcc
cxxstd: "03,11,14,17,2a"
addrmd: 64
os: windows-2019
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v2
- name: Setup Boost
shell: cmd
run: |
echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY%
for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi
echo LIBRARY: %LIBRARY%
echo LIBRARY=%LIBRARY%>>%GITHUB_ENV%
echo GITHUB_BASE_REF: %GITHUB_BASE_REF%
echo GITHUB_REF: %GITHUB_REF%
if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF%
set BOOST_BRANCH=develop
for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master
echo BOOST_BRANCH: %BOOST_BRANCH%
cd ..
git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
cd boost-root
xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\
git submodule update --init tools/boostdep
python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY%
cmd /c bootstrap
b2 -d0 headers
- name: Run tests
shell: cmd
run: |
cd ../boost-root
b2 -j3 libs/%LIBRARY%/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} address-model=${{matrix.addrmd}} variant=debug,release

View File

@@ -4,9 +4,7 @@
language: cpp language: cpp
sudo: false dist: xenial
dist: trusty
branches: branches:
only: only:
@@ -24,10 +22,6 @@ matrix:
- env: BOGUS_JOB=true - env: BOGUS_JOB=true
include: include:
- os: linux
compiler: g++
env: TOOLSET=gcc CXXSTD=03,11
- os: linux - os: linux
compiler: g++-4.4 compiler: g++-4.4
env: TOOLSET=gcc CXXSTD=98,0x env: TOOLSET=gcc CXXSTD=98,0x
@@ -128,20 +122,28 @@ matrix:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
- os: linux - os: linux
compiler: g++-7 dist: bionic
env: UBSAN=1 TOOLSET=gcc CXXSTD=03,11,14,17 UBSAN_OPTIONS=print_stacktrace=1 LINKFLAGS=-fuse-ld=gold compiler: g++-10
env: TOOLSET=gcc CXXSTD=03,11,14,17,2a
addons: addons:
apt: apt:
packages: packages:
- g++-7 - g++-10
sources: sources:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
- os: linux - os: linux
compiler: clang++ compiler: g++-9
env: TOOLSET=clang CXXSTD=03,11 env: UBSAN=1 TOOLSET=gcc CXXSTD=03,11,14,17,2a UBSAN_OPTIONS=print_stacktrace=1 LINKFLAGS=-fuse-ld=gold
addons:
apt:
packages:
- g++-9
sources:
- ubuntu-toolchain-r-test
- os: linux - os: linux
dist: trusty
compiler: /usr/bin/clang++ compiler: /usr/bin/clang++
env: TOOLSET=clang CXXSTD=03,11 env: TOOLSET=clang CXXSTD=03,11
addons: addons:
@@ -150,6 +152,7 @@ matrix:
- clang-3.3 - clang-3.3
- os: linux - os: linux
dist: trusty
compiler: /usr/bin/clang++ compiler: /usr/bin/clang++
env: TOOLSET=clang CXXSTD=03,11 env: TOOLSET=clang CXXSTD=03,11
addons: addons:
@@ -164,10 +167,8 @@ matrix:
apt: apt:
packages: packages:
- clang-3.5 - clang-3.5
- libstdc++-4.9-dev
sources: sources:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.5
- os: linux - os: linux
compiler: clang++-3.6 compiler: clang++-3.6
@@ -178,7 +179,6 @@ matrix:
- clang-3.6 - clang-3.6
sources: sources:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.6
- os: linux - os: linux
compiler: clang++-3.7 compiler: clang++-3.7
@@ -189,7 +189,6 @@ matrix:
- clang-3.7 - clang-3.7
sources: sources:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.7
- os: linux - os: linux
compiler: clang++-3.8 compiler: clang++-3.8
@@ -198,10 +197,8 @@ matrix:
apt: apt:
packages: packages:
- clang-3.8 - clang-3.8
- libstdc++-4.9-dev
sources: sources:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.8
- os: linux - os: linux
compiler: clang++-3.9 compiler: clang++-3.9
@@ -210,10 +207,8 @@ matrix:
apt: apt:
packages: packages:
- clang-3.9 - clang-3.9
- libstdc++-4.9-dev
sources: sources:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.9
- os: linux - os: linux
compiler: clang++-4.0 compiler: clang++-4.0
@@ -224,7 +219,6 @@ matrix:
- clang-4.0 - clang-4.0
sources: sources:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
- llvm-toolchain-trusty-4.0
- os: linux - os: linux
compiler: clang++-5.0 compiler: clang++-5.0
@@ -235,7 +229,6 @@ matrix:
- clang-5.0 - clang-5.0
sources: sources:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
- llvm-toolchain-trusty-5.0
- os: linux - os: linux
compiler: clang++-6.0 compiler: clang++-6.0
@@ -246,7 +239,6 @@ matrix:
- clang-6.0 - clang-6.0
sources: sources:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
- llvm-toolchain-trusty-6.0
- os: linux - os: linux
compiler: clang++-7 compiler: clang++-7
@@ -257,7 +249,7 @@ matrix:
- clang-7 - clang-7
sources: sources:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
- llvm-toolchain-trusty-7 - llvm-toolchain-xenial-7
- os: linux - os: linux
compiler: clang++-8 compiler: clang++-8
@@ -268,7 +260,33 @@ matrix:
- clang-8 - clang-8
sources: sources:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
- llvm-toolchain-trusty-8 - llvm-toolchain-xenial-8
- os: linux
dist: xenial
compiler: clang++-9
env: TOOLSET=clang CXXSTD=03,11,14,17,2a
addons:
apt:
packages:
- clang-9
sources:
- ubuntu-toolchain-r-test
- sourceline: 'deb https://apt.llvm.org/xenial/ llvm-toolchain-xenial-9 main'
key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
- os: linux
dist: xenial
compiler: clang++-10
env: TOOLSET=clang CXXSTD=03,11,14,17,2a
addons:
apt:
packages:
- clang-10
sources:
- ubuntu-toolchain-r-test
- sourceline: 'deb https://apt.llvm.org/xenial/ llvm-toolchain-xenial-10 main'
key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
- os: linux - os: linux
compiler: clang++-8 compiler: clang++-8
@@ -279,9 +297,10 @@ matrix:
- clang-8 - clang-8
sources: sources:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
- llvm-toolchain-trusty-8 - llvm-toolchain-xenial-8
- os: linux - os: linux
dist: trusty
compiler: clang++-libc++ compiler: clang++-libc++
env: TOOLSET=clang CXXSTD=03,11,14,1z env: TOOLSET=clang CXXSTD=03,11,14,1z
addons: addons:
@@ -290,6 +309,7 @@ matrix:
- libc++-dev - libc++-dev
- os: linux - os: linux
dist: trusty
compiler: clang++-libc++ compiler: clang++-libc++
env: UBSAN=1 TOOLSET=clang CXXSTD=03,11,14,1z UBSAN_OPTIONS=print_stacktrace=1 env: UBSAN=1 TOOLSET=clang CXXSTD=03,11,14,1z UBSAN_OPTIONS=print_stacktrace=1
addons: addons:
@@ -301,6 +321,10 @@ matrix:
compiler: clang++ compiler: clang++
env: TOOLSET=clang CXXSTD=03,11,14,1z env: TOOLSET=clang CXXSTD=03,11,14,1z
- os: osx
compiler: clang++
env: UBSAN=1 TOOLSET=clang CXXSTD=03,11,14,1z UBSAN_OPTIONS=print_stacktrace=1
install: install:
- BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true - BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true
- cd .. - cd ..

View File

@@ -16,6 +16,7 @@ environment:
matrix: matrix:
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
TOOLSET: msvc-9.0,msvc-10.0,msvc-11.0 TOOLSET: msvc-9.0,msvc-10.0,msvc-11.0
ADDRMD: 32
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
TOOLSET: msvc-12.0,msvc-14.0 TOOLSET: msvc-12.0,msvc-14.0
ADDRMD: 32,64 ADDRMD: 32,64
@@ -23,6 +24,14 @@ environment:
TOOLSET: msvc-14.1 TOOLSET: msvc-14.1
CXXSTD: 14,17 CXXSTD: 14,17
ADDRMD: 32,64 ADDRMD: 32,64
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
TOOLSET: clang-win
CXXSTD: 14,17
ADDRMD: 64
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
TOOLSET: msvc-14.2
CXXSTD: 14,17,latest
ADDRMD: 32,64
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
ADDPATH: C:\cygwin\bin; ADDPATH: C:\cygwin\bin;
TOOLSET: gcc TOOLSET: gcc

View File

@@ -898,11 +898,20 @@ namespace boost {
{ {
if (!f.empty()) { if (!f.empty()) {
this->vtable = f.vtable; this->vtable = f.vtable;
if (this->has_trivial_copy_and_destroy()) if (this->has_trivial_copy_and_destroy()) {
// Don't operate on storage directly since union type doesn't relax // Don't operate on storage directly since union type doesn't relax
// strict aliasing rules, despite of having member char type. // strict aliasing rules, despite of having member char type.
# if defined(BOOST_GCC) && (BOOST_GCC >= 40700)
# pragma GCC diagnostic push
// This warning is technically correct, but we don't want to pay the price for initializing
// just to silence a warning: https://github.com/boostorg/function/issues/27
# pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
# endif
std::memcpy(this->functor.data, f.functor.data, sizeof(boost::detail::function::function_buffer)); std::memcpy(this->functor.data, f.functor.data, sizeof(boost::detail::function::function_buffer));
else # if defined(BOOST_GCC) && (BOOST_GCC >= 40700)
# pragma GCC diagnostic pop
# endif
} else
get_vtable()->base.manager(f.functor, this->functor, get_vtable()->base.manager(f.functor, this->functor,
boost::detail::function::clone_functor_tag); boost::detail::function::clone_functor_tag);
} }
@@ -987,11 +996,20 @@ namespace boost {
BOOST_TRY { BOOST_TRY {
if (!f.empty()) { if (!f.empty()) {
this->vtable = f.vtable; this->vtable = f.vtable;
if (this->has_trivial_copy_and_destroy()) if (this->has_trivial_copy_and_destroy()) {
// Don't operate on storage directly since union type doesn't relax // Don't operate on storage directly since union type doesn't relax
// strict aliasing rules, despite of having member char type. // strict aliasing rules, despite of having member char type.
# if defined(BOOST_GCC) && (BOOST_GCC >= 40700)
# pragma GCC diagnostic push
// This warning is technically correct, but we don't want to pay the price for initializing
// just to silence a warning: https://github.com/boostorg/function/issues/27
# pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
# endif
std::memcpy(this->functor.data, f.functor.data, sizeof(this->functor.data)); std::memcpy(this->functor.data, f.functor.data, sizeof(this->functor.data));
else # if defined(BOOST_GCC) && (BOOST_GCC >= 40700)
# pragma GCC diagnostic pop
# endif
} else
get_vtable()->base.manager(f.functor, this->functor, get_vtable()->base.manager(f.functor, this->functor,
boost::detail::function::move_functor_tag); boost::detail::function::move_functor_tag);
f.vtable = 0; f.vtable = 0;

View File

@@ -13,6 +13,7 @@
"Programming" "Programming"
], ],
"maintainers": [ "maintainers": [
"Peter Dimov <pdimov -at- pdimov.com>" "Peter Dimov <pdimov -at- gmail.com>"
] ],
"cxxstd": "03"
} }