Compare commits

..

7 Commits

Author SHA1 Message Date
jzmaddock
088b79a0ca Merge branch 'develop'
Fixed Conflicts:
	checks/Jamfile.v2
	checks/std/cpp_aggregate_bases_17.cpp
	checks/std/cpp_aggregate_nsdmi_14.cpp
	checks/std/cpp_alias_templates_11.cpp
	checks/std/cpp_aligned_new_17.cpp
	checks/std/cpp_attributes_11.cpp
	checks/std/cpp_binary_literals_14.cpp
	checks/std/cpp_capture_star_this_17.cpp
	checks/std/cpp_char8_t_20.cpp
	checks/std/cpp_conditional_explicit_20.cpp
	checks/std/cpp_constexpr_11.cpp
	checks/std/cpp_constexpr_14.cpp
	checks/std/cpp_constexpr_17.cpp
	checks/std/cpp_decltype_11.cpp
	checks/std/cpp_decltype_auto_14.cpp
	checks/std/cpp_deduction_guides_17.cpp
	checks/std/cpp_delegating_constructors_11.cpp
	checks/std/cpp_enumerator_attributes_17.cpp
	checks/std/cpp_exceptions_03.cpp
	checks/std/cpp_explicit_conversion_11.cpp
	checks/std/cpp_fold_expressions_17.cpp
	checks/std/cpp_generic_lambdas_14.cpp
	checks/std/cpp_guaranteed_copy_elision_17.cpp
	checks/std/cpp_hex_float_17.cpp
	checks/std/cpp_if_constexpr_17.cpp
	checks/std/cpp_impl_destroying_delete_20.cpp
	checks/std/cpp_impl_three_way_comparison_20.cpp
	checks/std/cpp_inheriting_constructors_11.cpp
	checks/std/cpp_inheriting_constructors_17.cpp
	checks/std/cpp_init_captures_14.cpp
	checks/std/cpp_initializer_lists_11.cpp
	checks/std/cpp_inline_variables_17.cpp
	checks/std/cpp_lambdas_11.cpp
	checks/std/cpp_lib_addressof_constexpr_17.cpp
	checks/std/cpp_lib_allocator_traits_is_always_equal_17.cpp
	checks/std/cpp_lib_any_17.cpp
	checks/std/cpp_lib_apply_17.cpp
	checks/std/cpp_lib_array_constexpr_17.cpp
	checks/std/cpp_lib_as_const_17.cpp
	checks/std/cpp_lib_atomic_is_always_lock_free_17.cpp
	checks/std/cpp_lib_atomic_ref_20.cpp
	checks/std/cpp_lib_bind_front_20.cpp
	checks/std/cpp_lib_bit_cast_20.cpp
	checks/std/cpp_lib_bool_constant_17.cpp
	checks/std/cpp_lib_boyer_moore_searcher_17.cpp
	checks/std/cpp_lib_byte_17.cpp
	checks/std/cpp_lib_char8_t_20.cpp
	checks/std/cpp_lib_chrono_17.cpp
	checks/std/cpp_lib_chrono_udls_14.cpp
	checks/std/cpp_lib_clamp_17.cpp
	checks/std/cpp_lib_complex_udls_14.cpp
	checks/std/cpp_lib_concepts_20.cpp
	checks/std/cpp_lib_constexpr_misc_20.cpp
	checks/std/cpp_lib_constexpr_swap_algorithms_20.cpp
	checks/std/cpp_lib_destroying_delete_20.cpp
	checks/std/cpp_lib_enable_shared_from_this_17.cpp
	checks/std/cpp_lib_erase_if_20.cpp
	checks/std/cpp_lib_exchange_function_14.cpp
	checks/std/cpp_lib_execution_17.cpp
	checks/std/cpp_lib_filesystem_17.cpp
	checks/std/cpp_lib_gcd_lcm_17.cpp
	checks/std/cpp_lib_generic_associative_lookup_14.cpp
	checks/std/cpp_lib_generic_unordered_lookup_20.cpp
	checks/std/cpp_lib_hardware_interference_size_17.cpp
	checks/std/cpp_lib_has_unique_object_representations_17.cpp
	checks/std/cpp_lib_hypot_17.cpp
	checks/std/cpp_lib_incomplete_container_elements_17.cpp
	checks/std/cpp_lib_integer_sequence_14.cpp
	checks/std/cpp_lib_integral_constant_callable_14.cpp
	checks/std/cpp_lib_invoke_17.cpp
	checks/std/cpp_lib_is_aggregate_17.cpp
	checks/std/cpp_lib_is_constant_evaluated_20.cpp
	checks/std/cpp_lib_is_final_14.cpp
	checks/std/cpp_lib_is_invocable_17.cpp
	checks/std/cpp_lib_is_null_pointer_14.cpp
	checks/std/cpp_lib_is_swappable_17.cpp
	checks/std/cpp_lib_launder_17.cpp
	checks/std/cpp_lib_list_remove_return_type_20.cpp
	checks/std/cpp_lib_logical_traits_17.cpp
	checks/std/cpp_lib_make_from_tuple_17.cpp
	checks/std/cpp_lib_make_reverse_iterator_14.cpp
	checks/std/cpp_lib_make_unique_14.cpp
	checks/std/cpp_lib_map_try_emplace_17.cpp
	checks/std/cpp_lib_math_special_functions_17.cpp
	checks/std/cpp_lib_memory_resource_17.cpp
	checks/std/cpp_lib_node_extract_17.cpp
	checks/std/cpp_lib_nonmember_container_access_17.cpp
	checks/std/cpp_lib_not_fn_17.cpp
	checks/std/cpp_lib_null_iterators_14.cpp
	checks/std/cpp_lib_optional_17.cpp
	checks/std/cpp_lib_parallel_algorithm_17.cpp
	checks/std/cpp_lib_quoted_string_io_14.cpp
	checks/std/cpp_lib_ranges_20.cpp
	checks/std/cpp_lib_raw_memory_algorithms_17.cpp
	checks/std/cpp_lib_result_of_sfinae_14.cpp
	checks/std/cpp_lib_robust_nonmodifying_seq_ops_14.cpp
	checks/std/cpp_lib_sample_17.cpp
	checks/std/cpp_lib_scoped_lock_17.cpp
	checks/std/cpp_lib_shared_mutex_17.cpp
	checks/std/cpp_lib_shared_ptr_arrays_17.cpp
	checks/std/cpp_lib_shared_ptr_weak_type_17.cpp
	checks/std/cpp_lib_shared_timed_mutex_14.cpp
	checks/std/cpp_lib_string_udls_14.cpp
	checks/std/cpp_lib_string_view_17.cpp
	checks/std/cpp_lib_three_way_comparison_20.cpp
	checks/std/cpp_lib_to_chars_17.cpp
	checks/std/cpp_lib_transformation_trait_aliases_14.cpp
	checks/std/cpp_lib_transparent_operators_14.cpp
	checks/std/cpp_lib_transparent_operators_17.cpp
	checks/std/cpp_lib_tuple_element_t_14.cpp
	checks/std/cpp_lib_tuples_by_type_14.cpp
	checks/std/cpp_lib_type_trait_variable_templates_17.cpp
	checks/std/cpp_lib_uncaught_exceptions_17.cpp
	checks/std/cpp_lib_unordered_map_try_emplace_17.cpp
	checks/std/cpp_lib_variant_17.cpp
	checks/std/cpp_lib_void_t_17.cpp
	checks/std/cpp_namespace_attributes_17.cpp
	checks/std/cpp_noexcept_function_type_17.cpp
	checks/std/cpp_nontype_template_args_17.cpp
	checks/std/cpp_nontype_template_parameter_auto_17.cpp
	checks/std/cpp_nontype_template_parameter_class_20.cpp
	checks/std/cpp_nsdmi_11.cpp
	checks/std/cpp_range_based_for_11.cpp
	checks/std/cpp_range_based_for_17.cpp
	checks/std/cpp_raw_strings_11.cpp
	checks/std/cpp_ref_qualifiers_11.cpp
	checks/std/cpp_return_type_deduction_14.cpp
	checks/std/cpp_rtti_03.cpp
	checks/std/cpp_rvalue_references_11.cpp
	checks/std/cpp_sized_deallocation_14.cpp
	checks/std/cpp_static_assert_11.cpp
	checks/std/cpp_static_assert_17.cpp
	checks/std/cpp_structured_bindings_17.cpp
	checks/std/cpp_template_template_args_17.cpp
	checks/std/cpp_threadsafe_static_init_11.cpp
	checks/std/cpp_unicode_characters_11.cpp
	checks/std/cpp_unicode_literals_11.cpp
	checks/std/cpp_user_defined_literals_11.cpp
	checks/std/cpp_variable_templates_14.cpp
	checks/std/cpp_variadic_templates_11.cpp
	checks/std/cpp_variadic_using_17.cpp
	checks/test_case.cpp
	doc/html/index.html
	include/boost/config/assert_cxx03.hpp
	include/boost/config/assert_cxx11.hpp
	include/boost/config/assert_cxx14.hpp
	include/boost/config/assert_cxx17.hpp
	include/boost/config/detail/cxx_composite.hpp
	test/all/Jamfile.v2
	test/config_info.cpp
	test/config_test.cpp
	tools/generate.cpp
2021-07-03 10:14:16 +01:00
Glen Fernandes
22fdaeeb2a Bump versions to 1.77 2021-04-17 00:00:42 -04:00
jzmaddock
aed3dd0727 Correct gcc-10 boost_has_hash. 2021-03-18 19:18:45 +00:00
jzmaddock
583b0023eb Correct spelling of BOOST_HAS_HASH in undef! 2021-03-18 19:18:37 +00:00
jzmaddock
f91a09a30f hash_set/hash_map no longer function from gcc-10 onwards. 2021-03-18 19:18:33 +00:00
jzmaddock
a61d754ccc Update boost_has_hash.ipp tests for multiset. 2021-03-18 19:18:30 +00:00
jzmaddock
2052ff0320 Add broad scope feature checks. 2021-03-18 19:17:18 +00:00
15 changed files with 73 additions and 154 deletions

View File

@@ -1481,12 +1481,6 @@ compiler version macro.
[[`BOOST_CLANG`][`<boost/config.hpp>`][
Defined to 1 if the compiler is the Clang compiler.
]]
[[`BOOST_CLANG_VERSION`][`<boost/config.hpp>`][
Defined to the version of the Clang compiler, usually
`__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__`. On
Apple Clang, has a best-effort value reflecting the upstream version, rather
than the Apple version.
]]
[[`BOOST_BORLANDC`][`<boost/config.hpp>`][
Defined to the value of __BORLANDC__ if the compiler is the Embarcadero
non-clang based compiler.

View File

@@ -0,0 +1,23 @@
// This file was automatically generated on Wed Mar 3 08:46:11 2021
// 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$
//
#include <boost/config.hpp>
#include <boost/config/assert_cxx17.hpp>
#ifdef BOOST_NO_CXX98_BINDERS
# error "Your compiler appears not to be fully C++98 compliant. Detected via defect macro BOOST_NO_CXX98_BINDERS."
#endif
#ifdef BOOST_NO_CXX98_FUNCTION_BASE
# error "Your compiler appears not to be fully C++98 compliant. Detected via defect macro BOOST_NO_CXX98_FUNCTION_BASE."
#endif
#ifdef BOOST_NO_CXX98_RANDOM_SHUFFLE
# error "Your compiler appears not to be fully C++98 compliant. Detected via defect macro BOOST_NO_CXX98_RANDOM_SHUFFLE."
#endif

View File

@@ -351,5 +351,3 @@
// Macro used to identify the Clang compiler.
#define BOOST_CLANG 1
// BOOST_CLANG_VERSION
#include <boost/config/compiler/clang_version.hpp>

View File

@@ -1,77 +0,0 @@
// Copyright 2021 Peter Dimov
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt)
#if !defined(__APPLE__)
# define BOOST_CLANG_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__)
#else
# define BOOST_CLANG_REPORTED_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__)
// https://en.wikipedia.org/wiki/Xcode#Toolchain_versions
# if BOOST_CLANG_REPORTED_VERSION >= 130000
# define BOOST_CLANG_VERSION 120000
# elif BOOST_CLANG_REPORTED_VERSION >= 120005
# define BOOST_CLANG_VERSION 110100
# elif BOOST_CLANG_REPORTED_VERSION >= 120000
# define BOOST_CLANG_VERSION 100000
# elif BOOST_CLANG_REPORTED_VERSION >= 110003
# define BOOST_CLANG_VERSION 90000
# elif BOOST_CLANG_REPORTED_VERSION >= 110000
# define BOOST_CLANG_VERSION 80000
# elif BOOST_CLANG_REPORTED_VERSION >= 100001
# define BOOST_CLANG_VERSION 70000
# elif BOOST_CLANG_REPORTED_VERSION >= 100000
# define BOOST_CLANG_VERSION 60001
# elif BOOST_CLANG_REPORTED_VERSION >= 90100
# define BOOST_CLANG_VERSION 50002
# elif BOOST_CLANG_REPORTED_VERSION >= 90000
# define BOOST_CLANG_VERSION 40000
# elif BOOST_CLANG_REPORTED_VERSION >= 80000
# define BOOST_CLANG_VERSION 30900
# elif BOOST_CLANG_REPORTED_VERSION >= 70300
# define BOOST_CLANG_VERSION 30800
# elif BOOST_CLANG_REPORTED_VERSION >= 70000
# define BOOST_CLANG_VERSION 30700
# elif BOOST_CLANG_REPORTED_VERSION >= 60100
# define BOOST_CLANG_VERSION 30600
# elif BOOST_CLANG_REPORTED_VERSION >= 60000
# define BOOST_CLANG_VERSION 30500
# elif BOOST_CLANG_REPORTED_VERSION >= 50100
# define BOOST_CLANG_VERSION 30400
# elif BOOST_CLANG_REPORTED_VERSION >= 50000
# define BOOST_CLANG_VERSION 30300
# elif BOOST_CLANG_REPORTED_VERSION >= 40200
# define BOOST_CLANG_VERSION 30200
# elif BOOST_CLANG_REPORTED_VERSION >= 30100
# define BOOST_CLANG_VERSION 30100
# elif BOOST_CLANG_REPORTED_VERSION >= 20100
# define BOOST_CLANG_VERSION 30000
# else
# define BOOST_CLANG_VERSION 20900
# endif
# undef BOOST_CLANG_REPORTED_VERSION
#endif

View File

@@ -323,10 +323,9 @@
# define BOOST_FALLTHROUGH __attribute__((fallthrough))
#endif
#if (__GNUC__ < 11) && defined(__MINGW32__) && !defined(__MINGW64__)
// thread_local was broken on mingw for all 32bit compiler releases prior to 11.x, see
#if defined(__MINGW32__) && !defined(__MINGW64__)
// Currently (March 2019) thread_local is broken on mingw for all current 32bit compiler releases, see
// https://sourceforge.net/p/mingw-w64/bugs/527/
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83562
// Not setting this causes program termination on thread exit.
#define BOOST_NO_CXX11_THREAD_LOCAL
#endif

View File

@@ -288,4 +288,3 @@
// Macro used to identify the Clang compiler.
#define BOOST_CLANG 1
#define BOOST_CLANG_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__)

View File

@@ -629,9 +629,6 @@ namespace std{ using ::type_info; }
// nvcc doesn't always parse __noinline__,
// see: https://svn.boost.org/trac/boost/ticket/9392
# define BOOST_NOINLINE __attribute__ ((noinline))
# elif defined(HIP_VERSION)
// See https://github.com/boostorg/config/issues/392
# define BOOST_NOINLINE __attribute__ ((noinline))
# else
# define BOOST_NOINLINE __attribute__ ((__noinline__))
# endif
@@ -1207,6 +1204,18 @@ namespace std{ using ::type_info; }
# define BOOST_CXX_VERSION __cplusplus
#endif
//
// Define composite agregate macros:
//
#include <boost/config/detail/cxx_composite.hpp>
//
// Define the std level that the compiler claims to support:
//
#ifndef BOOST_CXX_VERSION
# define BOOST_CXX_VERSION __cplusplus
#endif
//
// Finish off with checks for macros that are depricated / no longer supported,
// if any of these are set then it's very likely that much of Boost will no

View File

@@ -184,6 +184,16 @@
#endif
#if (BOOST_LIBSTDCXX_VERSION >= 100000) && defined(BOOST_HAS_HASH)
//
// hash_set/hash_map deprecated and have terminal bugs:
//
#undef BOOST_HAS_HASH
#undef BOOST_HAS_SET_HEADER
#undef BOOST_HAS_MAP_HEADER
#endif
#if (BOOST_LIBSTDCXX_VERSION < 50100)
// libstdc++ does not define this function as it's deprecated in C++11, but clang still looks for it,
// defining it here is a terrible cludge, but should get things working:

View File

@@ -192,11 +192,6 @@
#else
#define _COMPILER_VERSION_WORKAROUND_GUARD 0
#endif
#ifndef __clang_major__
#define __clang_major___WORKAROUND_GUARD 1
#else
#define __clang_major___WORKAROUND_GUARD 0
#endif
#ifndef _RWSTD_VER
#define _RWSTD_VER_WORKAROUND_GUARD 1
@@ -259,12 +254,6 @@
#else
#define BOOST_INTEL_WORKAROUND_GUARD 0
#endif
#ifndef BOOST_CLANG_VERSION
#define BOOST_CLANG_VERSION_WORKAROUND_GUARD 1
#else
#define BOOST_CLANG_VERSION_WORKAROUND_GUARD 0
#endif
// Always define to zero, if it's used it'll be defined my MPL:
#define BOOST_MPL_CFG_GCC_WORKAROUND_GUARD 0

View File

@@ -2,9 +2,9 @@
// 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)
#ifndef BOOST_WORKAROUND_DWA2002126_HPP
#define BOOST_WORKAROUND_DWA2002126_HPP
#ifndef WORKAROUND_DWA2002126_HPP
#define WORKAROUND_DWA2002126_HPP
#include <boost/config/workaround.hpp>
#endif // BOOST_WORKAROUND_DWA2002126_HPP
#endif // WORKAROUND_DWA2002126_HPP

View File

@@ -19,7 +19,7 @@
// BOOST_VERSION / 100 % 1000 is the minor version
// BOOST_VERSION / 100000 is the major version
#define BOOST_VERSION 107800
#define BOOST_VERSION 107700
//
// BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
@@ -27,6 +27,6 @@
// number, y is the minor version number, and z is the patch level if not 0.
// This is used by <config/auto_link.hpp> to select which library version to link to.
#define BOOST_LIB_VERSION "1_78"
#define BOOST_LIB_VERSION "1_77"
#endif

View File

@@ -32,8 +32,6 @@ exe has_pthread_lib : config_info.cpp pthread ;
explicit has_pthread_lib ;
exe has_rt_lib : config_info.cpp rt ;
explicit has_rt_lib ;
obj check_memory : check_memory.cpp ;
explicit check_memory ;
test-suite config
:
@@ -67,7 +65,6 @@ test-suite config
[ check-target-builds has_atomic_lib : <source>atomic ]
[ check-target-builds has_pthread_lib : <source>pthread ]
[ check-target-builds has_rt_lib : <source>rt ]
[ check-target-builds check_memory : : <build>no ]
: config_test_no_rtti
]
[ run config_test.cpp

View File

@@ -12,40 +12,32 @@
// macros and don't provide functions. Under C++ it's an error
// to provide the macros at all, but that's a separate issue.
#include <cctype>
#include <ctype.h>
namespace boost_no_ctype_functions {
extern "C" {
typedef int (* character_classify_function)(int);
}
void pass_function(character_classify_function)
{
}
int test()
{
using std::isalpha;
using std::isalnum;
using std::iscntrl;
using std::isdigit;
using std::isgraph;
using std::islower;
using std::isprint;
using std::ispunct;
using std::isspace;
using std::isupper;
using std::isxdigit;
int r = 0;
char c = 'a';
r |= (isalpha)(c);
r |= (isalnum)(c);
r |= (iscntrl)(c);
r |= (isdigit)(c);
r |= (isgraph)(c);
r |= (islower)(c);
r |= (isprint)(c);
r |= (ispunct)(c);
r |= (isspace)(c);
r |= (isupper)(c);
r |= (isxdigit)(c);
return r == 0 ? 1 : 0;
pass_function(isalpha);
pass_function(isalnum);
pass_function(iscntrl);
pass_function(isdigit);
pass_function(isgraph);
pass_function(islower);
pass_function(isprint);
pass_function(ispunct);
pass_function(isspace);
pass_function(isupper);
pass_function(isxdigit);
return 0;
}
}

View File

@@ -1,11 +0,0 @@
// (C) Copyright John Maddock 2021.
// 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)
//
// Quick santity check that <memory> is OK. It was broken for some old gcc versions and -fno-rtti
//
#include <memory>

View File

@@ -380,7 +380,6 @@ void print_compiler_macros()
PRINT_MACRO(__clang_minor__);
PRINT_MACRO(__clang_version__);
PRINT_MACRO(__clang_patchlevel__);
PRINT_MACRO(__apple_build_version__);
// misc compilers not covered so far:
PRINT_MACRO(__USLC__);
@@ -1269,8 +1268,6 @@ void print_boost_macros()
PRINT_MACRO(BOOST_INTEL);
PRINT_MACRO(BOOST_MSVC);
PRINT_MACRO(BOOST_GCC);
PRINT_MACRO(BOOST_CLANG);
PRINT_MACRO(BOOST_CLANG_VERSION);
PRINT_MACRO(BOOST_LIBSTDCXX_VERSION);
PRINT_MACRO(BOOST_STD_EXTENSION_NAMESPACE);
PRINT_MACRO(BOOST_UNREACHABLE_RETURN(0));