From 8c102bcaa7c5ea5822424817fbc4a8cef98056c7 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 16 May 2017 13:10:36 +0100 Subject: [PATCH 01/28] Add initial travis CI file. --- .travis.yml | 327 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 327 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..4bd1d334 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,327 @@ +# Copyright 2016, 2017 Peter Dimov +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt) + +language: cpp + +sudo: false + +python: "2.7" + +os: + - linux + - osx + +branches: + only: + - master + - develop + +env: + matrix: + - BOGUS_JOB=true + +matrix: + + exclude: + - env: BOGUS_JOB=true + + include: + - os: linux + env: TOOLSET=gcc COMPILER=g++ CXXSTD=c++03 + + - os: linux + env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=c++03 + addons: + apt: + packages: + - g++-4.7 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=c++11 + addons: + apt: + packages: + - g++-4.7 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=c++03 + addons: + apt: + packages: + - g++-4.8 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=c++11 + addons: + apt: + packages: + - g++-4.8 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=c++03 + addons: + apt: + packages: + - g++-4.9 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=c++11 + addons: + apt: + packages: + - g++-4.9 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=c++03 + addons: + apt: + packages: + - g++-5 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=c++11 + addons: + apt: + packages: + - g++-5 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=c++14 + addons: + apt: + packages: + - g++-5 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++03 + addons: + apt: + packages: + - g++-6 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++11 + addons: + apt: + packages: + - g++-6 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++14 + addons: + apt: + packages: + - g++-6 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=c++1z + addons: + apt: + packages: + - g++-6 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 + + - os: linux + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=c++03 + addons: + apt: + packages: + - clang-3.5 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.5 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=c++11 + addons: + apt: + packages: + - clang-3.5 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.5 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=c++03 + addons: + apt: + packages: + - clang-3.6 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.6 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=c++11 + addons: + apt: + packages: + - clang-3.6 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.6 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=c++03 + addons: + apt: + packages: + - clang-3.7 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.7 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=c++11 + addons: + apt: + packages: + - clang-3.7 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.7 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++03 + addons: + apt: + packages: + - clang-3.8 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.8 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++11 + addons: + apt: + packages: + - clang-3.8 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.8 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++14 + addons: + apt: + packages: + - clang-3.8 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.8 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=c++1z + addons: + apt: + packages: + - clang-3.8 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.8 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=c++03 + addons: + apt: + packages: + - clang-3.9 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.9 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=c++11 + addons: + apt: + packages: + - clang-3.9 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.9 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=c++14 + addons: + apt: + packages: + - clang-3.9 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.9 + + - os: linux + env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=c++1z + addons: + apt: + packages: + - clang-3.9 + sources: + - ubuntu-toolchain-r-test + - llvm-toolchain-precise-3.9 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z + +install: + - cd .. + - git clone -b $TRAVIS_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root + - cd boost-root + - git submodule update --init tools/build + - git submodule update --init libs/config + - git submodule update --init tools/boostdep + - cp -r $TRAVIS_BUILD_DIR/* libs/config + - python tools/boostdep/depinst/depinst.py config + - ./bootstrap.sh + - ./b2 headers + +script: + - |- + echo "using $TOOLSET : : $COMPILER : -std=$CXXSTD ;" > ~/user-config.jam + - ./b2 libs/config/test toolset=$TOOLSET + +notifications: + email: + on_success: always From 118c432e746725cf031eae5549fd6f8a8e445855 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 18 May 2017 19:39:25 +0100 Subject: [PATCH 02/28] Add initial travis.yml file. --- .travis.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4bd1d334..2fa39176 100644 --- a/.travis.yml +++ b/.travis.yml @@ -311,9 +311,7 @@ install: - cd boost-root - git submodule update --init tools/build - git submodule update --init libs/config - - git submodule update --init tools/boostdep - cp -r $TRAVIS_BUILD_DIR/* libs/config - - python tools/boostdep/depinst/depinst.py config - ./bootstrap.sh - ./b2 headers From bc966c41ad4fdc7560517f72f6bbac869d54ce9e Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 18 May 2017 19:43:19 +0100 Subject: [PATCH 03/28] Fix missing dependencies in travis build. --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index 2fa39176..4bd1d334 100644 --- a/.travis.yml +++ b/.travis.yml @@ -311,7 +311,9 @@ install: - cd boost-root - git submodule update --init tools/build - git submodule update --init libs/config + - git submodule update --init tools/boostdep - cp -r $TRAVIS_BUILD_DIR/* libs/config + - python tools/boostdep/depinst/depinst.py config - ./bootstrap.sh - ./b2 headers From 7398ea79552752800dcfa575d047937a2918188f Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 19 May 2017 08:18:17 +0100 Subject: [PATCH 04/28] Add diagnostic information to travis build. --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 4bd1d334..73e2fdf9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -316,6 +316,7 @@ install: - python tools/boostdep/depinst/depinst.py config - ./bootstrap.sh - ./b2 headers + - $TOOLSET -std=$CXXSTD -I. -O3 libs/config/config_info.cpp -o config_info && ./config_info script: - |- From 2a15c53fbb36298d45ed579473a9335b6bc9be7e Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 19 May 2017 08:26:21 +0100 Subject: [PATCH 05/28] Correct path to config_info.cpp in travis file. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 73e2fdf9..49785345 100644 --- a/.travis.yml +++ b/.travis.yml @@ -316,7 +316,7 @@ install: - python tools/boostdep/depinst/depinst.py config - ./bootstrap.sh - ./b2 headers - - $TOOLSET -std=$CXXSTD -I. -O3 libs/config/config_info.cpp -o config_info && ./config_info + - $TOOLSET -std=$CXXSTD -I. -O3 libs/config/test/config_info.cpp -o config_info && ./config_info script: - |- From fd5d37f6df784dc01b0dd112e8271b8ab29842cb Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 19 May 2017 08:37:45 +0100 Subject: [PATCH 06/28] Another attempt to fix travis.yml --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 49785345..0d5d2fd5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -316,7 +316,7 @@ install: - python tools/boostdep/depinst/depinst.py config - ./bootstrap.sh - ./b2 headers - - $TOOLSET -std=$CXXSTD -I. -O3 libs/config/test/config_info.cpp -o config_info && ./config_info + - $COMPILER -std=$CXXSTD -I. -O3 libs/config/test/config_info.cpp -o config_info && ./config_info script: - |- From 6d7592091cadca10edd6a8fa61c35f59bd4451e5 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 19 May 2017 13:38:02 +0100 Subject: [PATCH 07/28] When using clang + libstdC++ not all C++11 features are necessarily available --- include/boost/config/stdlib/libstdcpp3.hpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 14dca142..91ecccba 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -148,6 +148,19 @@ // defining it here is a terrible cludge, but should get things working: extern "C" char *gets (char *__s); #endif +// +// clang is unable to parse some GCC headers, add those workarounds here: +// +#if BOOST_LIBSTDCXX_VERSION < 50000 +# define BOOST_NO_CXX11_HDR_REGEX +#endif +// +// GCC 4.7.x has no __cxa_thread_atexit which +// thread_local objects require for cleanup: +// +#if BOOST_LIBSTDCXX_VERSION < 40800 +# define BOOST_NO_CXX11_THREAD_LOCAL +#endif // // GCC 4.8 and 9 add working versions of and respectively. From 15a0c119a13938bd00b99273e6fb876ff019c688 Mon Sep 17 00:00:00 2001 From: Daniela Engert Date: Fri, 19 May 2017 15:02:41 +0200 Subject: [PATCH 08/28] The library implementations in MSVC 14.0 and 14.1 have both version number V6.50:0009, and therefore _CPPLIB_VER defined to 650. But the library in 14.0 does *not* have std::apply whereas the one in 14.1 *does*. Signed-off-by: Daniela Engert --- include/boost/config/stdlib/dinkumware.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index 86fa7fe6..ba1d9b0b 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -163,7 +163,7 @@ #endif // C++17 features -#if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0) +#if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(BOOST_MSVC) || (BOOST_MSVC < 1910) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0) # define BOOST_NO_CXX17_STD_APPLY #endif #if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) From 40f4e6ed2f3310acf1f13b26945b22dfdcfda6c4 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 19 May 2017 18:11:29 +0100 Subject: [PATCH 09/28] Disable for older clang versions. --- include/boost/config/stdlib/libstdcpp3.hpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 91ecccba..152435fc 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -161,6 +161,15 @@ extern "C" char *gets (char *__s); #if BOOST_LIBSTDCXX_VERSION < 40800 # define BOOST_NO_CXX11_THREAD_LOCAL #endif +// +// Early clang versions can handle , not exactly sure which versions +// but certainly up to clang-3.4 and gcc-4.6: +// +#if (__clang_major__ < 3) || ((__clang_major__ == 3) && (__clang_minor__ < 5)) +# if BOOST_LIBSTDCXX_VERSION < 50000 +# define BOOST_NO_CXX11_HDR_CHRONO +# endif +#endif // // GCC 4.8 and 9 add working versions of and respectively. From 32318e41aaeb4cb2548a83cd259fa4651ae6f44c Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Fri, 19 May 2017 18:11:56 +0100 Subject: [PATCH 10/28] Add clang detection macros to config_info.cpp. --- test/config_info.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/config_info.cpp b/test/config_info.cpp index 7f401181..46412cf1 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -313,6 +313,13 @@ void print_compiler_macros() PRINT_MACRO(_FASTMD); PRINT_MACRO(_MAXVL); + // clang options: + PRINT_MACRO(__clang__); + PRINT_MACRO(__clang_major__); + PRINT_MACRO(__clang_minor__); + PRINT_MACRO(__clang_version__); + PRINT_MACRO(__clang_patchlevel__); + // misc compilers not covered so far: PRINT_MACRO(__USLC__); PRINT_MACRO(__DECCXX); From 219c351cb495aed4a993234d0d51da9927736f1e Mon Sep 17 00:00:00 2001 From: Glen Fernandes Date: Wed, 17 May 2017 01:07:18 -0400 Subject: [PATCH 11/28] Add BOOST_NO_CXX11_POINTER_TRAITS --- checks/Jamfile.v2 | 3 +- checks/test_case.cpp | 7 +++- doc/macro_reference.qbk | 2 ++ include/boost/config/stdlib/dinkumware.hpp | 7 ++++ include/boost/config/stdlib/libcomo.hpp | 1 + include/boost/config/stdlib/libcpp.hpp | 2 ++ include/boost/config/stdlib/libstdcpp3.hpp | 1 + include/boost/config/stdlib/modena.hpp | 1 + include/boost/config/stdlib/msl.hpp | 1 + include/boost/config/stdlib/roguewave.hpp | 1 + include/boost/config/stdlib/sgi.hpp | 1 + include/boost/config/stdlib/stlport.hpp | 1 + include/boost/config/stdlib/vacpp.hpp | 1 + include/boost/config/stdlib/xlcpp_zos.hpp | 1 + test/all/Jamfile.v2 | 5 ++- test/boost_no_cxx11_pointer_traits.ipp | 37 ++++++++++++++++++++++ test/config_info.cpp | 2 ++ test/config_test.cpp | 12 ++++++- test/no_cxx11_pointer_traits_fail.cpp | 37 ++++++++++++++++++++++ test/no_cxx11_pointer_traits_pass.cpp | 37 ++++++++++++++++++++++ 20 files changed, 156 insertions(+), 4 deletions(-) create mode 100644 test/boost_no_cxx11_pointer_traits.ipp create mode 100644 test/no_cxx11_pointer_traits_fail.cpp create mode 100644 test/no_cxx11_pointer_traits_pass.cpp diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2 index adcd0c02..a6842bfc 100644 --- a/checks/Jamfile.v2 +++ b/checks/Jamfile.v2 @@ -1,6 +1,6 @@ # # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Mon Apr 17 18:35:54 2017 +# This file was automatically generated on Wed May 17 01:29:40 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -107,6 +107,7 @@ obj cxx11_hdr_unordered_set : test_case.cpp : TEST_BOOST_NO_CXX11_HDR_UN obj cxx11_inline_namespaces : test_case.cpp : TEST_BOOST_NO_CXX11_INLINE_NAMESPACES ; obj cxx11_non_public_defaulted_functions : test_case.cpp : TEST_BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS ; obj cxx11_numeric_limits : test_case.cpp : TEST_BOOST_NO_CXX11_NUMERIC_LIMITS ; +obj cxx11_pointer_traits : test_case.cpp : TEST_BOOST_NO_CXX11_POINTER_TRAITS ; obj cxx11_ref_qualifiers : test_case.cpp : TEST_BOOST_NO_CXX11_REF_QUALIFIERS ; obj cxx11_sfinae_expr : test_case.cpp : TEST_BOOST_NO_CXX11_SFINAE_EXPR ; obj cxx11_smart_ptr : test_case.cpp : TEST_BOOST_NO_CXX11_SMART_PTR ; diff --git a/checks/test_case.cpp b/checks/test_case.cpp index 6689d1d7..c44e06d3 100644 --- a/checks/test_case.cpp +++ b/checks/test_case.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Mon Apr 17 18:35:54 2017 +// This file was automatically generated on Wed May 17 01:29:40 2017 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -491,6 +491,11 @@ # error "Defect macro BOOST_NO_CXX11_NUMERIC_LIMITS is defined." # endif #endif +#ifdef TEST_BOOST_NO_CXX11_POINTER_TRAITS +# ifdef BOOST_NO_CXX11_POINTER_TRAITS +# error "Defect macro BOOST_NO_CXX11_POINTER_TRAITS is defined." +# endif +#endif #ifdef TEST_BOOST_NO_CXX11_REF_QUALIFIERS # ifdef BOOST_NO_CXX11_REF_QUALIFIERS # error "Defect macro BOOST_NO_CXX11_REF_QUALIFIERS is defined." diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 6e981225..a0d51e89 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -680,6 +680,8 @@ compilers implementing an early draft of the C++11 standard (in particular, inco [[`BOOST_NO_CXX11_NUMERIC_LIMITS`][The standard library `` header does not support the C++11 version of `numeric_limits`. ]] +[[`BOOST_NO_CXX11_POINTER_TRAITS`][The standard library does not provide a +C++11 version of `std::pointer_traits` in .]] [[`BOOST_NO_CXX11_RANGE_BASED_FOR`][The compiler does not support range-based for statements. ]] diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index 86fa7fe6..1689f0b0 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -147,6 +147,13 @@ # define BOOST_NO_CXX11_STD_ALIGN #endif +// Before 650 std::pointer_traits has a broken rebind template +#if !defined(_CPPLIB_VER) || _CPPLIB_VER < 650 +# define BOOST_NO_CXX11_POINTER_TRAITS +#elif defined(BOOST_MSVC) && BOOST_MSVC < 1910 +# define BOOST_NO_CXX11_POINTER_TRAITS +#endif + #if defined(__has_include) #if !__has_include() # define BOOST_NO_CXX14_HDR_SHARED_MUTEX diff --git a/include/boost/config/stdlib/libcomo.hpp b/include/boost/config/stdlib/libcomo.hpp index e3fc627f..ce83f082 100644 --- a/include/boost/config/stdlib/libcomo.hpp +++ b/include/boost/config/stdlib/libcomo.hpp @@ -55,6 +55,7 @@ # define BOOST_NO_CXX11_HDR_UNORDERED_SET # define BOOST_NO_CXX11_NUMERIC_LIMITS # define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_POINTER_TRAITS # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp index 2eea9997..b3a2fd01 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -29,6 +29,7 @@ // aliases since members rebind_alloc and rebind_traits require it. #if defined(_LIBCPP_HAS_NO_TEMPLATE_ALIASES) # define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_POINTER_TRAITS #endif #if __cplusplus < 201103 @@ -53,6 +54,7 @@ # define BOOST_NO_CXX11_HDR_UNORDERED_SET # define BOOST_NO_CXX11_NUMERIC_LIMITS # define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_POINTER_TRAITS # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL # define BOOST_NO_CXX11_STD_ALIGN diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 14dca142..baa93172 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -231,6 +231,7 @@ extern "C" char *gets (char *__s); // so 4.7.0 is the first truly conforming one. # define BOOST_NO_CXX11_HDR_CHRONO # define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_POINTER_TRAITS #endif // C++0x features in GCC 4.8.0 and later // diff --git a/include/boost/config/stdlib/modena.hpp b/include/boost/config/stdlib/modena.hpp index fa4a8187..98bdc3fb 100644 --- a/include/boost/config/stdlib/modena.hpp +++ b/include/boost/config/stdlib/modena.hpp @@ -44,6 +44,7 @@ # define BOOST_NO_CXX11_HDR_UNORDERED_SET # define BOOST_NO_CXX11_NUMERIC_LIMITS # define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_POINTER_TRAITS # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL diff --git a/include/boost/config/stdlib/msl.hpp b/include/boost/config/stdlib/msl.hpp index 96c1b0d5..9606a9ae 100644 --- a/include/boost/config/stdlib/msl.hpp +++ b/include/boost/config/stdlib/msl.hpp @@ -68,6 +68,7 @@ # define BOOST_NO_CXX11_HDR_UNORDERED_SET # define BOOST_NO_CXX11_NUMERIC_LIMITS # define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_POINTER_TRAITS # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL diff --git a/include/boost/config/stdlib/roguewave.hpp b/include/boost/config/stdlib/roguewave.hpp index 437d38d9..380d0ff3 100644 --- a/include/boost/config/stdlib/roguewave.hpp +++ b/include/boost/config/stdlib/roguewave.hpp @@ -180,6 +180,7 @@ # define BOOST_NO_CXX11_HDR_UNORDERED_SET # define BOOST_NO_CXX11_NUMERIC_LIMITS # define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_POINTER_TRAITS # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL diff --git a/include/boost/config/stdlib/sgi.hpp b/include/boost/config/stdlib/sgi.hpp index 8d2f849f..5016ff62 100644 --- a/include/boost/config/stdlib/sgi.hpp +++ b/include/boost/config/stdlib/sgi.hpp @@ -138,6 +138,7 @@ # define BOOST_NO_CXX11_HDR_UNORDERED_SET # define BOOST_NO_CXX11_NUMERIC_LIMITS # define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_POINTER_TRAITS # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp index 518f9efd..81e6ccf0 100644 --- a/include/boost/config/stdlib/stlport.hpp +++ b/include/boost/config/stdlib/stlport.hpp @@ -228,6 +228,7 @@ namespace boost { using std::min; using std::max; } # define BOOST_NO_CXX11_HDR_UNORDERED_SET # define BOOST_NO_CXX11_NUMERIC_LIMITS # define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_POINTER_TRAITS # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL diff --git a/include/boost/config/stdlib/vacpp.hpp b/include/boost/config/stdlib/vacpp.hpp index f9afef63..c159af25 100644 --- a/include/boost/config/stdlib/vacpp.hpp +++ b/include/boost/config/stdlib/vacpp.hpp @@ -44,6 +44,7 @@ # define BOOST_NO_CXX11_HDR_UNORDERED_SET # define BOOST_NO_CXX11_NUMERIC_LIMITS # define BOOST_NO_CXX11_ALLOCATOR +# define BOOST_NO_CXX11_POINTER_TRAITS # define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_HDR_FUNCTIONAL diff --git a/include/boost/config/stdlib/xlcpp_zos.hpp b/include/boost/config/stdlib/xlcpp_zos.hpp index 35cca6e9..dce40f50 100644 --- a/include/boost/config/stdlib/xlcpp_zos.hpp +++ b/include/boost/config/stdlib/xlcpp_zos.hpp @@ -31,6 +31,7 @@ #define BOOST_NO_CXX11_ATOMIC_SMART_PTR #define BOOST_NO_CXX11_NUMERIC_LIMITS #define BOOST_NO_CXX11_ALLOCATOR +#define BOOST_NO_CXX11_POINTER_TRAITS #define BOOST_NO_CXX11_HDR_FUNCTIONAL #define BOOST_NO_CXX11_HDR_UNORDERED_SET #define BOOST_NO_CXX11_HDR_UNORDERED_MAP diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index f99040be..db1f5a1c 100644 --- a/test/all/Jamfile.v2 +++ b/test/all/Jamfile.v2 @@ -1,7 +1,7 @@ # # Regression test Jamfile for boost configuration setup. # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Mon Apr 17 18:35:54 2017 +# This file was automatically generated on Wed May 17 01:29:40 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -310,6 +310,9 @@ test-suite "BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS" : test-suite "BOOST_NO_CXX11_NUMERIC_LIMITS" : [ run ../no_cxx11_numeric_limits_pass.cpp ] [ compile-fail ../no_cxx11_numeric_limits_fail.cpp ] ; +test-suite "BOOST_NO_CXX11_POINTER_TRAITS" : +[ run ../no_cxx11_pointer_traits_pass.cpp ] +[ compile-fail ../no_cxx11_pointer_traits_fail.cpp ] ; test-suite "BOOST_NO_CXX11_REF_QUALIFIERS" : [ run ../no_cxx11_ref_qualifiers_pass.cpp ] [ compile-fail ../no_cxx11_ref_qualifiers_fail.cpp ] ; diff --git a/test/boost_no_cxx11_pointer_traits.ipp b/test/boost_no_cxx11_pointer_traits.ipp new file mode 100644 index 00000000..d7223f32 --- /dev/null +++ b/test/boost_no_cxx11_pointer_traits.ipp @@ -0,0 +1,37 @@ +/* +Copyright 2017 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt or copy at +http://www.boost.org/LICENSE_1_0.txt) +*/ + +// MACRO: BOOST_NO_CXX11_POINTER_TRAITS +// TITLE: C++11 lacks a correct std::pointer_traits +// DESCRIPTION: The standard library lacks a working std::pointer_traits. + +#include + +namespace boost_no_cxx11_pointer_traits { + +template +struct pointer { + template + using rebind = pointer; +}; + +template +struct result { }; + +template<> +struct result > { + static const int value = 0; +}; + +int test() +{ + return result >::rebind >::value; +} + +} /* boost_no_cxx11_pointer_traits */ diff --git a/test/config_info.cpp b/test/config_info.cpp index 7f401181..b467d5ab 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1048,6 +1048,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS); PRINT_MACRO(BOOST_NO_CXX11_NULLPTR); PRINT_MACRO(BOOST_NO_CXX11_NUMERIC_LIMITS); + PRINT_MACRO(BOOST_NO_CXX11_POINTER_TRAITS); PRINT_MACRO(BOOST_NO_CXX11_RANGE_BASED_FOR); PRINT_MACRO(BOOST_NO_CXX11_RAW_LITERALS); PRINT_MACRO(BOOST_NO_CXX11_REF_QUALIFIERS); @@ -1163,6 +1164,7 @@ void print_boost_macros() + // END GENERATED BLOCK diff --git a/test/config_test.cpp b/test/config_test.cpp index d94a438d..176902d1 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Mon Apr 17 18:35:54 2017 +// This file was automatically generated on Wed May 17 01:29:40 2017 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -237,6 +237,11 @@ namespace boost_no_cxx11_non_public_defaulted_functions = empty_boost; #else namespace boost_no_cxx11_numeric_limits = empty_boost; #endif +#ifndef BOOST_NO_CXX11_POINTER_TRAITS +#include "boost_no_cxx11_pointer_traits.ipp" +#else +namespace boost_no_cxx11_pointer_traits = empty_boost; +#endif #ifndef BOOST_NO_CXX11_REF_QUALIFIERS #include "boost_no_cxx11_ref_qualifiers.ipp" #else @@ -1521,6 +1526,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_CXX11_NUMERIC_LIMITS at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_cxx11_pointer_traits::test()) + { + std::cerr << "Failed test for BOOST_NO_CXX11_POINTER_TRAITS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_cxx11_ref_qualifiers::test()) { std::cerr << "Failed test for BOOST_NO_CXX11_REF_QUALIFIERS at: " << __FILE__ << ":" << __LINE__ << std::endl; diff --git a/test/no_cxx11_pointer_traits_fail.cpp b/test/no_cxx11_pointer_traits_fail.cpp new file mode 100644 index 00000000..59b881bb --- /dev/null +++ b/test/no_cxx11_pointer_traits_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Wed May 17 01:29:39 2017 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// Use, modification and distribution are 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id$ +// + + +// Test file for macro BOOST_NO_CXX11_POINTER_TRAITS +// This file should not compile, if it does then +// BOOST_NO_CXX11_POINTER_TRAITS should not be defined. +// See file boost_no_cxx11_pointer_traits.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include "test.hpp" + +#ifdef BOOST_NO_CXX11_POINTER_TRAITS +#include "boost_no_cxx11_pointer_traits.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx11_pointer_traits::test(); +} + diff --git a/test/no_cxx11_pointer_traits_pass.cpp b/test/no_cxx11_pointer_traits_pass.cpp new file mode 100644 index 00000000..071041b4 --- /dev/null +++ b/test/no_cxx11_pointer_traits_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Wed May 17 01:29:39 2017 +// by libs/config/tools/generate.cpp +// Copyright John Maddock 2002-4. +// Use, modification and distribution are 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) + +// See http://www.boost.org/libs/config for the most recent version.// +// Revision $Id$ +// + + +// Test file for macro BOOST_NO_CXX11_POINTER_TRAITS +// This file should compile, if it does not then +// BOOST_NO_CXX11_POINTER_TRAITS should be defined. +// See file boost_no_cxx11_pointer_traits.ipp for details + +// Must not have BOOST_ASSERT_CONFIG set; it defeats +// the objective of this file: +#ifdef BOOST_ASSERT_CONFIG +# undef BOOST_ASSERT_CONFIG +#endif + +#include +#include "test.hpp" + +#ifndef BOOST_NO_CXX11_POINTER_TRAITS +#include "boost_no_cxx11_pointer_traits.ipp" +#else +namespace boost_no_cxx11_pointer_traits = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_cxx11_pointer_traits::test(); +} + From cd396b619a781bc20f8b5c691076cc669344ef02 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 19 May 2017 19:18:40 +0100 Subject: [PATCH 12/28] Clang 3.x can't parse from gcc-4.6 and earlier. --- include/boost/config/stdlib/libstdcpp3.hpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 152435fc..5299c98c 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -163,10 +163,13 @@ extern "C" char *gets (char *__s); #endif // // Early clang versions can handle , not exactly sure which versions -// but certainly up to clang-3.4 and gcc-4.6: +// but certainly up to clang-3.8 and gcc-4.6: // -#if (__clang_major__ < 3) || ((__clang_major__ == 3) && (__clang_minor__ < 5)) -# if BOOST_LIBSTDCXX_VERSION < 50000 +#if (__clang_major__ < 5) +# if BOOST_LIBSTDCXX_VERSION < 40800 +# define BOOST_NO_CXX11_HDR_FUTURE +# define BOOST_NO_CXX11_HDR_MUTEX +# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE # define BOOST_NO_CXX11_HDR_CHRONO # endif #endif From 0df7552f38cc059defa4189d7a36101925559eb8 Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Fri, 19 May 2017 12:22:13 -0600 Subject: [PATCH 13/28] define BOOST_NO_AUTO_PTR when building with libc++ and C++17 New libc++ versions remove `std::auto_ptr` when building as C++17, unless the magic tag `_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR` is defined. Tell the rest of Boost that there's no `auto_ptr` in that case. --- include/boost/config/stdlib/libcpp.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp index 2eea9997..e6b494c1 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -91,6 +91,9 @@ #if (_LIBCPP_VERSION < 4000) || (__cplusplus <= 201402L) # define BOOST_NO_CXX17_STD_APPLY #endif +#if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR) +# define BOOST_NO_AUTO_PTR +#endif #if (_LIBCPP_VERSION <= 1101) && !defined(BOOST_NO_CXX11_THREAD_LOCAL) // This is a bit of a sledgehammer, because really it's just libc++abi that has no From eec62a11626f9125d9778194ca6353a0c21908f6 Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Fri, 19 May 2017 12:38:14 -0600 Subject: [PATCH 14/28] Update boost_has_nl_types_h.ipp clang 5 complains that comparing a `nl_catd` to an integer is not allowed. ./boost_has_nl_types_h.ipp:20:11: error: ordered comparison between pointer and zero ('nl_catd' (aka '__nl_cat_d *') and 'int') if(cat >= 0) catclose(cat); --- test/boost_has_nl_types_h.ipp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/boost_has_nl_types_h.ipp b/test/boost_has_nl_types_h.ipp index 9126adbf..e23f0a21 100644 --- a/test/boost_has_nl_types_h.ipp +++ b/test/boost_has_nl_types_h.ipp @@ -17,7 +17,7 @@ namespace boost_has_nl_types_h{ int test() { nl_catd cat = catopen("foo", 0); - if(cat >= 0) catclose(cat); + if(cat != (nl_catd)-1) catclose(cat); return 0; } From 4a02ac84e2f3f6cafa25e428fbe3863fdc47fffd Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sat, 20 May 2017 10:53:25 +0100 Subject: [PATCH 15/28] More travis improvements: Output config_info built from b2. Add more XCode versions to the test matrix. --- .travis.yml | 117 ++++++++++++++++++++++++++++++++++++++++++++++-- test/Jamfile.v2 | 4 ++ 2 files changed, 118 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0d5d2fd5..de8c0181 100644 --- a/.travis.yml +++ b/.travis.yml @@ -147,6 +147,33 @@ matrix: sources: - ubuntu-toolchain-r-test + - os: linux + env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=c++11 + addons: + apt: + packages: + - g++-7 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=c++14 + addons: + apt: + packages: + - g++-7 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=c++1z + addons: + apt: + packages: + - g++-7 + sources: + - ubuntu-toolchain-r-test + - os: linux env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 @@ -295,15 +322,99 @@ matrix: - os: osx env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 + osx_image: xcode8.3 - os: osx env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 + osx_image: xcode8.3 - os: osx env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14 + osx_image: xcode8.3 - os: osx env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z + osx_image: xcode8.3 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 + osx_image: xcode8.2 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 + osx_image: xcode8.2 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14 + osx_image: xcode8.2 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z + osx_image: xcode8.1 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 + osx_image: xcode8.1 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 + osx_image: xcode8.1 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14 + osx_image: xcode8.1 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z + osx_image: xcode8.1 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 + osx_image: xcode8.0 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 + osx_image: xcode8.0 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14 + osx_image: xcode8.0 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z + osx_image: xcode8.0 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 + osx_image: xcode7.3 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 + osx_image: xcode7.3 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14 + osx_image: xcode7.3 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z + osx_image: xcode7.3 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 + osx_image: xcode6.4 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++11 + osx_image: xcode6.4 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++14 + osx_image: xcode6.4 + + - os: osx + env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++1z + osx_image: xcode6.4 install: - cd .. @@ -316,12 +427,12 @@ install: - python tools/boostdep/depinst/depinst.py config - ./bootstrap.sh - ./b2 headers - - $COMPILER -std=$CXXSTD -I. -O3 libs/config/test/config_info.cpp -o config_info && ./config_info - + script: - |- echo "using $TOOLSET : : $COMPILER : -std=$CXXSTD ;" > ~/user-config.jam - - ./b2 libs/config/test toolset=$TOOLSET + - (cd libs/config/test && ../../../b2 config_info_travis_install msvc && ./config_info_travis) + - ./b2 -j3 libs/config/test toolset=$TOOLSET notifications: email: diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 2f6a122a..aa8383c6 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -104,3 +104,7 @@ obj has_clang_implicit_fallthrough : cmd_line_check.cpp : explicit has_clang_implicit_fallthrough ; +exe config_info_travis : config_info.cpp ; +install config_info_travis_install : config_info_travis : . ; +explicit config_info_travis_install ; +explicit config_info_travis ; From ee93e3802223229cf6a1d419d52a4f67685ea354 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sat, 20 May 2017 17:59:33 +0100 Subject: [PATCH 16/28] More travis fixes: Fix compiler name in config_info output generation. Remove g++7 tests: apparently it's not supported yet. --- .travis.yml | 29 +---------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/.travis.yml b/.travis.yml index de8c0181..11e03535 100644 --- a/.travis.yml +++ b/.travis.yml @@ -147,33 +147,6 @@ matrix: sources: - ubuntu-toolchain-r-test - - os: linux - env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=c++11 - addons: - apt: - packages: - - g++-7 - sources: - - ubuntu-toolchain-r-test - - - os: linux - env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=c++14 - addons: - apt: - packages: - - g++-7 - sources: - - ubuntu-toolchain-r-test - - - os: linux - env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=c++1z - addons: - apt: - packages: - - g++-7 - sources: - - ubuntu-toolchain-r-test - - os: linux env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 @@ -431,7 +404,7 @@ install: script: - |- echo "using $TOOLSET : : $COMPILER : -std=$CXXSTD ;" > ~/user-config.jam - - (cd libs/config/test && ../../../b2 config_info_travis_install msvc && ./config_info_travis) + - (cd libs/config/test && ../../../b2 config_info_travis_install toolset=$TOOLSET && ./config_info_travis) - ./b2 -j3 libs/config/test toolset=$TOOLSET notifications: From 493e3ba9de5d8405ebe1a255963fd85700dcbe27 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 21 May 2017 09:33:14 +0100 Subject: [PATCH 17/28] We should have at least one set of tests that enable GNU extensions. --- .travis.yml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/.travis.yml b/.travis.yml index 11e03535..80947ceb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -147,6 +147,42 @@ matrix: sources: - ubuntu-toolchain-r-test + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=gnu++03 + addons: + apt: + packages: + - g++-6 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=gnu++11 + addons: + apt: + packages: + - g++-6 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=gnu++14 + addons: + apt: + packages: + - g++-6 + sources: + - ubuntu-toolchain-r-test + + - os: linux + env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=gnu++1z + addons: + apt: + packages: + - g++-6 + sources: + - ubuntu-toolchain-r-test + - os: linux env: TOOLSET=clang COMPILER=clang++ CXXSTD=c++03 From 63b39e275846896083ab11721b5aae5c806bdcbc Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Sun, 21 May 2017 11:41:04 +0100 Subject: [PATCH 18/28] Enhance thread_local tests. Try to reproduce issues: https://github.com/libbitcoin/libbitcoin/issues/733#issuecomment-301652210 https://github.com/boostorg/multiprecision/issues/20 --- test/boost_no_cxx11_thread_local.ipp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/test/boost_no_cxx11_thread_local.ipp b/test/boost_no_cxx11_thread_local.ipp index 795ee746..caaed978 100644 --- a/test/boost_no_cxx11_thread_local.ipp +++ b/test/boost_no_cxx11_thread_local.ipp @@ -14,10 +14,22 @@ namespace boost_no_cxx11_thread_local{ +template +int check_local(int n) +{ + static thread_local T s(n, ' '); + static thread_local int size = s.size(); + if(size != n) + { + s = T(n, ' '); + size = n; + } + return size; +} + int test() { - static thread_local std::string local("hello"); - return 0; + return check_local(5) == 5 ? 0 : 1; } } From 15fb8c47f8599a3e150aa1de04d4940e84ed4fcd Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 23 May 2017 19:04:55 +0100 Subject: [PATCH 19/28] Add first tentative appveyor.yml file. --- appveyor.yml | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 appveyor.yml diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 00000000..4e9d807b --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,43 @@ +# Copyright 2016 Peter Dimov +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt) + +version: 1.0.{build}-{branch} + +shallow_clone: true + +branches: + only: + - master + - develop + +platform: + - x86 + - x64 + +matrix: + - TOOLSET: msvc-9.0 + - TOOLSET: msvc-10.0 + - TOOLSET: msvc-11.0 + - TOOLSET: msvc-12.0 + - TOOLSET: msvc-14.0 + +install: + - cd .. + - git clone -b %APPVEYOR_REPO_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root + - cd boost-root + - git submodule update --init tools/build + - git submodule update --init libs/config + - git submodule update --init tools/boostdep + - xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\config + - python tools/boostdep/depinst/depinst.py config + - bootstrap + - b2 headers + +build: off + +test_script: + - cd libs/config/test + - ..\..\..\b2 config_info_travis_install toolset=%TOOLSET% + - config_info.exe + - ..\..\..\b2 -j3 toolset=%TOOLSET% From da36b699fcf015bccc742619396eb47e7777e0a2 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 23 May 2017 19:06:54 +0100 Subject: [PATCH 20/28] Try again with appveyor.yml --- appveyor.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 4e9d807b..8365a53a 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,12 +15,13 @@ platform: - x86 - x64 -matrix: - - TOOLSET: msvc-9.0 - - TOOLSET: msvc-10.0 - - TOOLSET: msvc-11.0 - - TOOLSET: msvc-12.0 - - TOOLSET: msvc-14.0 +environment: + matrix: + - TOOLSET: msvc-9.0 + - TOOLSET: msvc-10.0 + - TOOLSET: msvc-11.0 + - TOOLSET: msvc-12.0 + - TOOLSET: msvc-14.0 install: - cd .. From 3651139cc156fa687d19da2c3e07d08eb426380e Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 23 May 2017 19:16:06 +0100 Subject: [PATCH 21/28] Simplify appveyor.yml directory usage. --- appveyor.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 8365a53a..4d4e0751 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -25,12 +25,10 @@ environment: install: - cd .. - - git clone -b %APPVEYOR_REPO_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root - - cd boost-root + - git clone -b %APPVEYOR_REPO_BRANCH% --depth 1 https://github.com/boostorg/boost.git . - git submodule update --init tools/build - git submodule update --init libs/config - git submodule update --init tools/boostdep - - xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\config - python tools/boostdep/depinst/depinst.py config - bootstrap - b2 headers From c6d2300f07c3c2d4e88055f448a64acd0339f3f0 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 23 May 2017 19:18:12 +0100 Subject: [PATCH 22/28] appveyor.yml: try again with simplified directory structure. --- appveyor.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 4d4e0751..6e9287d8 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -25,7 +25,8 @@ environment: install: - cd .. - - git clone -b %APPVEYOR_REPO_BRANCH% --depth 1 https://github.com/boostorg/boost.git . + - git clone -b %APPVEYOR_REPO_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root + - cd boost-root - git submodule update --init tools/build - git submodule update --init libs/config - git submodule update --init tools/boostdep @@ -36,7 +37,7 @@ install: build: off test_script: - - cd libs/config/test + - cd boost-root\libs\config\test - ..\..\..\b2 config_info_travis_install toolset=%TOOLSET% - config_info.exe - ..\..\..\b2 -j3 toolset=%TOOLSET% From 2e38c1cded9c601a7270c63c7d052f159cc33e85 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 23 May 2017 19:36:36 +0100 Subject: [PATCH 23/28] appveyor.yml: still can't get the directories quite right - try again with some debugging. --- appveyor.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 6e9287d8..a689a865 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -33,11 +33,14 @@ install: - python tools/boostdep/depinst/depinst.py config - bootstrap - b2 headers + - dir build: off test_script: - - cd boost-root\libs\config\test + - dir + - dir %APPVEYOR_BUILD_FOLDER% + - cd %APPVEYOR_BUILD_FOLDER%\libs\config\test - ..\..\..\b2 config_info_travis_install toolset=%TOOLSET% - config_info.exe - ..\..\..\b2 -j3 toolset=%TOOLSET% From 1f83bcb56a5f4f7ad2c287f6e10cef73b6d20031 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 23 May 2017 19:52:30 +0100 Subject: [PATCH 24/28] appveyor.yml: correct directories now that we can see where they are. --- appveyor.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index a689a865..514f4389 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -39,8 +39,7 @@ build: off test_script: - dir - - dir %APPVEYOR_BUILD_FOLDER% - - cd %APPVEYOR_BUILD_FOLDER%\libs\config\test + - cd libs\config\test - ..\..\..\b2 config_info_travis_install toolset=%TOOLSET% - config_info.exe - ..\..\..\b2 -j3 toolset=%TOOLSET% From d0d8da882360ef687c71333e2be573bd8c761945 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Wed, 24 May 2017 08:32:19 +0100 Subject: [PATCH 25/28] appveyor.yml: Fix config_info name. --- appveyor.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index 514f4389..39438fc1 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -41,5 +41,6 @@ test_script: - dir - cd libs\config\test - ..\..\..\b2 config_info_travis_install toolset=%TOOLSET% - - config_info.exe + - dir + - config_info_travis - ..\..\..\b2 -j3 toolset=%TOOLSET% From e41b4e22acea193aa18d0626c3fe9c93bc9eee63 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Wed, 24 May 2017 18:02:43 +0100 Subject: [PATCH 26/28] Jamfile needs to import testing module. --- test/Jamfile.v2 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index aa8383c6..29d52e4d 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -8,6 +8,8 @@ # the template defined in options_v2.jam. # +import testing ; + project : requirements gcc:-Wno-deprecated-declarations From 4af206ea53eba7fe2ab4fd3904cd3009d2e28452 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 25 May 2017 08:47:08 +0100 Subject: [PATCH 27/28] Appveyor: try enabling msvc-14.1, and add address-model to matrix. --- appveyor.yml | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 39438fc1..a7ae0faf 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -12,16 +12,22 @@ branches: - develop platform: - - x86 - x64 environment: matrix: - - TOOLSET: msvc-9.0 - - TOOLSET: msvc-10.0 - - TOOLSET: msvc-11.0 - - TOOLSET: msvc-12.0 - - TOOLSET: msvc-14.0 + - ARGS: --toolset=msvc-9.0 address-model=32 + - ARGS: --toolset=msvc-10.0 address-model=32 + - ARGS: --toolset=msvc-11.0 address-model=32 + - ARGS: --toolset=msvc-12.0 address-model=32 + - ARGS: --toolset=msvc-14.0 address-model=32 + - ARGS: --toolset=msvc-14.1 address-model=32 + - ARGS: --toolset=msvc-9.0 address-model=64 + - ARGS: --toolset=msvc-10.0 address-model=64 + - ARGS: --toolset=msvc-11.0 address-model=64 + - ARGS: --toolset=msvc-12.0 address-model=64 + - ARGS: --toolset=msvc-14.0 address-model=64 + - ARGS: --toolset=msvc-14.1 address-model=64 install: - cd .. @@ -40,7 +46,7 @@ build: off test_script: - dir - cd libs\config\test - - ..\..\..\b2 config_info_travis_install toolset=%TOOLSET% + - ..\..\..\b2 config_info_travis_install %ARGS% - dir - config_info_travis - - ..\..\..\b2 -j3 toolset=%TOOLSET% + - ..\..\..\b2 -j3 %ARGS% From 9f39b329fb2f178f38b7598ca2bf25e796815a75 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Thu, 25 May 2017 12:25:40 +0100 Subject: [PATCH 28/28] Appveyor: remove test matrix entities that can not currently be built. --- appveyor.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index a7ae0faf..d953963b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -21,13 +21,8 @@ environment: - ARGS: --toolset=msvc-11.0 address-model=32 - ARGS: --toolset=msvc-12.0 address-model=32 - ARGS: --toolset=msvc-14.0 address-model=32 - - ARGS: --toolset=msvc-14.1 address-model=32 - - ARGS: --toolset=msvc-9.0 address-model=64 - - ARGS: --toolset=msvc-10.0 address-model=64 - - ARGS: --toolset=msvc-11.0 address-model=64 - ARGS: --toolset=msvc-12.0 address-model=64 - ARGS: --toolset=msvc-14.0 address-model=64 - - ARGS: --toolset=msvc-14.1 address-model=64 install: - cd ..