Files
haikuports/dev-libs/boost/patches/boost1.83-1.83.0.patchset
2025-07-21 14:26:43 +00:00

576 lines
18 KiB
Plaintext

From d67537c286805c1c71d11221559d1034e8b90520 Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@gmail.com>
Date: Sat, 6 Aug 2016 22:27:19 +0200
Subject: Import changes from 1.55.0: buildtools
diff --git a/tools/build/src/engine/jam.h b/tools/build/src/engine/jam.h
index e1b76cb..4e2003e 100644
--- a/tools/build/src/engine/jam.h
+++ b/tools/build/src/engine/jam.h
@@ -163,6 +163,11 @@
#define OS_BEOS
#define NO_VFORK
#endif
+#ifdef __HAIKU__
+ #define unix
+ #define OSMINOR "OS=HAIKU"
+ #define OS_HAIKU
+#endif
#ifdef __bsdi__
#define OSMINOR "OS=BSDI"
#define OS_BSDI
--
2.48.1
From d74be3163a92ca1023201dbaee6095995329025b Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@gmail.com>
Date: Sat, 6 Aug 2016 22:27:41 +0200
Subject: Import changes from 1.55.0: sourcecode
diff --git a/boost/thread/detail/platform.hpp b/boost/thread/detail/platform.hpp
index 172a601..c706e40 100644
--- a/boost/thread/detail/platform.hpp
+++ b/boost/thread/detail/platform.hpp
@@ -34,7 +34,7 @@
#if ! defined BOOST_THREAD_WIN32
# define BOOST_THREAD_WIN32
#endif
-#elif defined(__BEOS__)
+#elif defined(__BEOS__) || defined(__HAIKU__)
# define BOOST_THREAD_BEOS
#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
# define BOOST_THREAD_MACOS
--
2.48.1
From 5dfe695b0e0dd4ce028c45780bf7be663435b4db Mon Sep 17 00:00:00 2001
From: Begasus <begasus@gmail.com>
Date: Thu, 24 Aug 2023 15:59:20 +0200
Subject: Fix macro seeing , as args on gcc8
diff --git a/boost/json/impl/array.hpp b/boost/json/impl/array.hpp
index b5e75ff..393568c 100644
--- a/boost/json/impl/array.hpp
+++ b/boost/json/impl/array.hpp
@@ -142,9 +142,9 @@ array(
std::move(sp),
iter_cat<InputIt>{})
{
- BOOST_STATIC_ASSERT(
+ BOOST_STATIC_ASSERT((
std::is_constructible<value,
- decltype(*first)>::value);
+ decltype(*first)>::value));
}
//----------------------------------------------------------
@@ -161,9 +161,9 @@ insert(
InputIt first, InputIt last) ->
iterator
{
- BOOST_STATIC_ASSERT(
+ BOOST_STATIC_ASSERT((
std::is_constructible<value,
- decltype(*first)>::value);
+ decltype(*first)>::value));
return insert(pos, first, last,
iter_cat<InputIt>{});
}
diff --git a/boost/json/storage_ptr.hpp b/boost/json/storage_ptr.hpp
index 085498b..9f886bd 100644
--- a/boost/json/storage_ptr.hpp
+++ b/boost/json/storage_ptr.hpp
@@ -493,9 +493,9 @@ make_shared_resource(Args&&... args)
{
// If this generates an error, it means that
// `T` is not a memory resource.
- BOOST_STATIC_ASSERT(
+ BOOST_STATIC_ASSERT((
std::is_base_of<
- memory_resource, U>::value);
+ memory_resource, U>::value));
return storage_ptr(new
detail::shared_resource_impl<U>(
std::forward<Args>(args)...));
diff --git a/boost/json/value_from.hpp b/boost/json/value_from.hpp
index 2166987..3c5ebae 100644
--- a/boost/json/value_from.hpp
+++ b/boost/json/value_from.hpp
@@ -84,8 +84,8 @@ value_from(
value& jv)
{
using bare_T = detail::remove_cvref<T>;
- BOOST_STATIC_ASSERT(detail::conversion_round_trips<
- Context, bare_T, detail::value_from_conversion>::value);
+ BOOST_STATIC_ASSERT((detail::conversion_round_trips<
+ Context, bare_T, detail::value_from_conversion>::value));
using cat = detail::value_from_category<Context, bare_T>;
detail::value_from_impl( cat(), jv, std::forward<T>(t), ctx );
}
diff --git a/boost/json/value_to.hpp b/boost/json/value_to.hpp
index 8787193..4c5215e 100644
--- a/boost/json/value_to.hpp
+++ b/boost/json/value_to.hpp
@@ -90,8 +90,8 @@ value_to( value const& jv, Context const& ctx )
{
BOOST_STATIC_ASSERT(! std::is_reference<T>::value);
using bare_T = detail::remove_cvref<T>;
- BOOST_STATIC_ASSERT(detail::conversion_round_trips<
- Context, bare_T, detail::value_to_conversion>::value);
+ BOOST_STATIC_ASSERT((detail::conversion_round_trips<
+ Context, bare_T, detail::value_to_conversion>::value));
using cat = detail::value_to_category<Context, bare_T>;
return detail::value_to_impl( cat(), value_to_tag<bare_T>(), jv, ctx );
}
@@ -224,8 +224,8 @@ try_value_to( value const& jv, Context const& ctx )
{
BOOST_STATIC_ASSERT(! std::is_reference<T>::value);
using bare_T = detail::remove_cvref<T>;
- BOOST_STATIC_ASSERT(detail::conversion_round_trips<
- Context, bare_T, detail::value_to_conversion>::value);
+ BOOST_STATIC_ASSERT((detail::conversion_round_trips<
+ Context, bare_T, detail::value_to_conversion>::value));
using cat = detail::value_to_category<Context, bare_T>;
return detail::value_to_impl(
cat(), try_value_to_tag<bare_T>(), jv, ctx );
diff --git a/boost/url/detail/any_params_iter.hpp b/boost/url/detail/any_params_iter.hpp
index 0adeec2..0ae1995 100644
--- a/boost/url/detail/any_params_iter.hpp
+++ b/boost/url/detail/any_params_iter.hpp
@@ -172,11 +172,11 @@ struct params_iter
: any_params_iter
, private params_iter_base
{
- BOOST_STATIC_ASSERT(
+ BOOST_STATIC_ASSERT((
std::is_convertible<
typename std::iterator_traits<
FwdIt>::reference,
- param_view>::value);
+ param_view>::value));
params_iter(
FwdIt first,
@@ -281,11 +281,11 @@ struct params_encoded_iter
: any_params_iter
, private params_encoded_iter_base
{
- BOOST_STATIC_ASSERT(
+ BOOST_STATIC_ASSERT((
std::is_convertible<
typename std::iterator_traits<
FwdIt>::reference,
- param_view>::value);
+ param_view>::value));
params_encoded_iter(
FwdIt first,
diff --git a/boost/url/detail/any_segments_iter.hpp b/boost/url/detail/any_segments_iter.hpp
index 25cc808..2cd9545 100644
--- a/boost/url/detail/any_segments_iter.hpp
+++ b/boost/url/detail/any_segments_iter.hpp
@@ -120,11 +120,11 @@ struct segments_iter
: any_segments_iter
, segments_iter_base
{
- BOOST_STATIC_ASSERT(
+ BOOST_STATIC_ASSERT((
std::is_convertible<
typename std::iterator_traits<
FwdIt>::reference,
- core::string_view>::value);
+ core::string_view>::value));
segments_iter(
FwdIt first,
@@ -234,11 +234,11 @@ struct segments_encoded_iter
: public any_segments_iter
, public segments_encoded_iter_base
{
- BOOST_STATIC_ASSERT(
+ BOOST_STATIC_ASSERT((
std::is_convertible<
typename std::iterator_traits<
FwdIt>::reference,
- core::string_view>::value);
+ core::string_view>::value));
segments_encoded_iter(
FwdIt first,
--
2.48.1
From dd9a29e480767bebe37d412fd4051827e1f514d8 Mon Sep 17 00:00:00 2001
From: Begasus <begasus@gmail.com>
Date: Fri, 25 Aug 2023 10:15:17 +0200
Subject: Add auto_index binary to tools
diff --git a/tools/Jamfile.v2 b/tools/Jamfile.v2
index e1391c7..a580eb1 100644
--- a/tools/Jamfile.v2
+++ b/tools/Jamfile.v2
@@ -18,6 +18,7 @@ project
;
TOOLS =
+ auto_index/build//auto_index
bcp//bcp
inspect/build//inspect
quickbook//quickbook
--
2.48.1
From 13c8c4af1e6a134e2eb7678551e15f6dfccefba8 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Sat, 14 Oct 2017 11:47:09 +0200
Subject: Haiku needs bsd and _BSD_SOURCE.
diff --git a/tools/build/src/engine/build.sh b/tools/build/src/engine/build.sh
index b2036f4..64c2cf0 100755
--- a/tools/build/src/engine/build.sh
+++ b/tools/build/src/engine/build.sh
@@ -325,6 +325,22 @@ case "${B2_TOOLSET}" in
CXX_VERSION_OPT=${CXX_VERSION_OPT:---version}
B2_CXXFLAGS_RELEASE="-O2 -s"
B2_CXXFLAGS_DEBUG="-O0 -g"
+
+ CXX=${CXX:=g++}
+ # Check whether it's MinGW GCC, which has Windows headers and none of POSIX ones.
+ machine=$(${CXX} -dumpmachine 2>/dev/null)
+ if [ $? -ne 0 ]; then
+ echo "B2_TOOLSET is gcc, but the 'gcc' command cannot be executed."
+ echo "Make sure 'gcc' is in PATH, or use a different toolset."
+ exit 1
+ fi
+ case $machine in
+ *haiku*)
+ B2_CXX="${CXX} -x c++ -std=c++17"
+ B2_CXXFLAGS_RELEASE="-O2 -s -D_DEFAULT_SOURCE -lbsd"
+ B2_CXXFLAGS_DEBUG="-O0 -g"
+ ;;
+ esac
;;
intel-*)
--
2.48.1
From d10f03b33d7188e33da7ea05721d8cb2ca40bbb9 Mon Sep 17 00:00:00 2001
From: Begasus <begasus@gmail.com>
Date: Sun, 27 Aug 2023 19:13:24 +0200
Subject: Fix missing functions to build libboost_locale
diff --git a/boost/config/platform/haiku.hpp b/boost/config/platform/haiku.hpp
index 04244c5..e22ac4f 100644
--- a/boost/config/platform/haiku.hpp
+++ b/boost/config/platform/haiku.hpp
@@ -16,11 +16,6 @@
# define BOOST_HAS_THREADS
#endif
-#define BOOST_NO_CXX11_HDR_TYPE_TRAITS
-#define BOOST_NO_CXX11_ATOMIC_SMART_PTR
-#define BOOST_NO_CXX11_STATIC_ASSERT
-#define BOOST_NO_CXX11_VARIADIC_MACROS
-
//
// thread API's not auto detected:
//
--
2.48.1
From 195778387e48eccaa85e7255291317a91cc8eae2 Mon Sep 17 00:00:00 2001
From: Begasus <begasus@gmail.com>
Date: Mon, 28 Aug 2023 18:08:06 +0200
Subject: Fix building the tests
diff --git a/libs/uuid/test/Jamfile.v2 b/libs/uuid/test/Jamfile.v2
index c74658d..926e0f7 100644
--- a/libs/uuid/test/Jamfile.v2
+++ b/libs/uuid/test/Jamfile.v2
@@ -65,12 +65,12 @@ rule test_all
all_rules += [ compile compile/decl_header.cpp :
<define>"BOOST_UUID_TEST_HEADER=uuid.hpp"
<define>"BOOST_UUID_NO_TYPE_TRAITS"
- <dependency>../include/boost/uuid/uuid.hpp :
+ <dependency>$(BOOST_ROOT)/boost/uuid/uuid.hpp :
compile_uuid_no_type_traits ] ;
all_rules += [ compile compile/decl_header.cpp :
<define>"BOOST_UUID_TEST_HEADER=uuid.hpp"
<define>"BOOST_UUID_NO_SIMD"
- <dependency>../include/boost/uuid/uuid.hpp :
+ <dependency>$(BOOST_ROOT)/boost/uuid/uuid.hpp :
compile_uuid_no_simd ] ;
# ECHO All rules: $(all_rules) ;
--
2.48.1
From fac9e79662c375ab0d41e0e0dca7c55d8f733bcf Mon Sep 17 00:00:00 2001
From: Begasus <begasus@gmail.com>
Date: Tue, 12 Sep 2023 20:18:37 +0200
Subject: Haiku currently doesn't have cfsetspeed
diff --git a/boost/asio/impl/serial_port_base.ipp b/boost/asio/impl/serial_port_base.ipp
index 4e786d4..fa1f973 100644
--- a/boost/asio/impl/serial_port_base.ipp
+++ b/boost/asio/impl/serial_port_base.ipp
@@ -114,7 +114,8 @@ BOOST_ASIO_SYNC_OP_VOID serial_port_base::baud_rate::store(
ec = boost::asio::error::invalid_argument;
BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
-# if defined(_BSD_SOURCE) || defined(_DEFAULT_SOURCE)
+# if defined(_BSD_SOURCE) || defined(_DEFAULT_SOURCE) && !defined(__HAIKU__)
+// TODO re-enable this for Haiku once cfsetspeed is implemented (#18220)
::cfsetspeed(&storage, baud);
# else
::cfsetispeed(&storage, baud);
--
2.48.1
From 63bf5a538ba70746ee7d3569391a3e493b4d6386 Mon Sep 17 00:00:00 2001
From: Peter Dimov <pdimov@gmail.com>
Date: Sun, 3 Sep 2023 17:55:50 +0300
Subject: Support fn.contains(f) where f is a function. Fixes #46.
diff --git a/boost/function/function_base.hpp b/boost/function/function_base.hpp
index 5693e11..00c7ce8 100644
--- a/boost/function/function_base.hpp
+++ b/boost/function/function_base.hpp
@@ -25,6 +25,7 @@
#include <boost/type_traits/alignment_of.hpp>
#include <boost/type_traits/enable_if.hpp>
#include <boost/type_traits/integral_constant.hpp>
+#include <boost/type_traits/is_function.hpp>
#include <boost/assert.hpp>
#include <boost/config.hpp>
#include <boost/config/workaround.hpp>
@@ -652,7 +653,8 @@ public:
}
template<typename F>
- bool contains(const F& f) const
+ typename boost::enable_if_< !boost::is_function<F>::value, bool >::type
+ contains(const F& f) const
{
if (const F* fp = this->template target<F>())
{
@@ -662,6 +664,19 @@ public:
}
}
+ template<typename Fn>
+ typename boost::enable_if_< boost::is_function<Fn>::value, bool >::type
+ contains(Fn& f) const
+ {
+ typedef Fn* F;
+ if (const F* fp = this->template target<F>())
+ {
+ return function_equal(*fp, &f);
+ } else {
+ return false;
+ }
+ }
+
#if defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ <= 3
// GCC 3.3 and newer cannot copy with the global operator==, due to
// problems with instantiation of function return types before it
diff --git a/libs/function/test/Jamfile.v2 b/libs/function/test/Jamfile.v2
index 15d401e..7be87a1 100644
--- a/libs/function/test/Jamfile.v2
+++ b/libs/function/test/Jamfile.v2
@@ -90,3 +90,6 @@ run fn_eq_bind_test.cpp ;
# /usr/include/c++/4.4/bits/shared_ptr.h:146: error: cannot use typeid with -fno-rtti
run contains_test.cpp : : : <rtti>off <toolset>gcc-4.4,<cxxstd>0x:<build>no : contains_test_no_rtti ;
run contains2_test.cpp : : : <rtti>off <toolset>gcc-4.4,<cxxstd>0x:<build>no : contains2_test_no_rtti ;
+
+run contains3_test.cpp ;
+run contains3_test.cpp : : : <rtti>off <toolset>gcc-4.4,<cxxstd>0x:<build>no : contains3_test_no_rtti ;
diff --git a/libs/function/test/contains3_test.cpp b/libs/function/test/contains3_test.cpp
new file mode 100644
index 0000000..e6130bb
--- /dev/null
+++ b/libs/function/test/contains3_test.cpp
@@ -0,0 +1,33 @@
+// Copyright 2023 Peter Dimov
+// Distributed under the Boost Software License, Version 1.0.
+// https://www.boost.org/LICENSE_1_0.txt
+
+#include <boost/function.hpp>
+#include <boost/core/lightweight_test.hpp>
+
+static int f()
+{
+ return 1;
+}
+
+static int g()
+{
+ return 2;
+}
+
+int main()
+{
+ {
+ boost::function<int()> fn;
+ BOOST_TEST( !fn.contains( f ) );
+ BOOST_TEST( !fn.contains( g ) );
+ }
+
+ {
+ boost::function<int()> fn( f );
+ BOOST_TEST( fn.contains( f ) );
+ BOOST_TEST( !fn.contains( g ) );
+ }
+
+ return boost::report_errors();
+}
--
2.48.1
From a0ebefade9e36e570e5d561f69df407bc030e4cb Mon Sep 17 00:00:00 2001
From: Conrad Poelman <cpgithub@stellarscience.com>
Date: Mon, 3 Aug 2020 18:35:35 -0400
Subject: Remove deprecated inheritance from std::iterator
diff --git a/boost/numeric/ublas/detail/iterator.hpp b/boost/numeric/ublas/detail/iterator.hpp
index 1723a30..3f5cae8 100644
--- a/boost/numeric/ublas/detail/iterator.hpp
+++ b/boost/numeric/ublas/detail/iterator.hpp
@@ -107,8 +107,12 @@ namespace boost { namespace numeric { namespace ublas {
* via the post increment operator.
*/
template<class IC, class I, class T>
- struct forward_iterator_base:
- public std::iterator<IC, T> {
+ struct forward_iterator_base {
+ typedef IC iterator_category;
+ typedef T value_type;
+ typedef std::ptrdiff_t difference_type;
+ typedef T* pointer;
+ typedef T& reference;
typedef I derived_iterator_type;
typedef T derived_value_type;
@@ -145,9 +149,13 @@ namespace boost { namespace numeric { namespace ublas {
* via the post increment and post decrement operator.
*/
template<class IC, class I, class T>
- struct bidirectional_iterator_base:
- public std::iterator<IC, T> {
- typedef I derived_iterator_type;
+ struct forward_iterator_base {
+ typedef IC iterator_category;
+ typedef T value_type;
+ typedef std::ptrdiff_t difference_type;
+ typedef T* pointer;
+ typedef T& reference;
+ typedef I derived_iterator_type;
typedef T derived_value_type;
// Arithmetic
@@ -200,8 +208,12 @@ namespace boost { namespace numeric { namespace ublas {
*/
template<class IC, class I, class T, class D = std::ptrdiff_t>
// ISSUE the default for D seems rather dangerous as it can easily be (silently) incorrect
- struct random_access_iterator_base:
- public std::iterator<IC, T> {
+ struct forward_iterator_base {
+ typedef IC iterator_category;
+ typedef T value_type;
+ typedef std::ptrdiff_t difference_type;
+ typedef T* pointer;
+ typedef T& reference;
typedef I derived_iterator_type;
typedef T derived_value_type;
typedef D derived_difference_type;
--
2.48.1
From d06397672de6ae62bb6a25ca8f3bd45ce0089318 Mon Sep 17 00:00:00 2001
From: Schrijvers Luc <begasus@gmail.com>
Date: Sat, 6 Jul 2024 17:27:48 +0200
Subject: build fix for sourcetrail
diff --git a/boost/process/detail/posix/is_running.hpp b/boost/process/detail/posix/is_running.hpp
index 0f86b44..99a13dc 100644
--- a/boost/process/detail/posix/is_running.hpp
+++ b/boost/process/detail/posix/is_running.hpp
@@ -17,10 +17,12 @@ namespace boost { namespace process { namespace detail { namespace posix {
// This bit arrangement of status codes is not guaranteed by POSIX, but (according to comments in
// the glibc <bits/waitstatus.h> header) is the same across systems in practice.
constexpr int still_active = 0x017f;
+#if !defined(__HAIKU__)
static_assert(WIFSTOPPED(still_active), "Expected still_active to indicate WIFSTOPPED");
static_assert(!WIFEXITED(still_active), "Expected still_active to not indicate WIFEXITED");
static_assert(!WIFSIGNALED(still_active), "Expected still_active to not indicate WIFSIGNALED");
static_assert(!WIFCONTINUED(still_active), "Expected still_active to not indicate WIFCONTINUED");
+#endif
inline bool is_running(int code)
{
--
2.48.1
From 57b2677816fb96f6fa6be8503849921caee92a6d Mon Sep 17 00:00:00 2001
From: Oscar Lesta <oscar.lesta@gmail.com>
Date: Fri, 20 Dec 2024 22:32:12 -0300
Subject: Fix build issue related to dirent->d_name[].
diff --git a/libs/filesystem/src/directory.cpp b/libs/filesystem/src/directory.cpp
index f769f8f..132cf2a 100644
--- a/libs/filesystem/src/directory.cpp
+++ b/libs/filesystem/src/directory.cpp
@@ -202,8 +202,13 @@ inline std::size_t get_path_max()
#endif
}
+#ifdef __HAIKU__
+ if ((max + 1) < NAME_MAX)
+ max = NAME_MAX - 1;
+#else
if ((max + 1) < sizeof(dirent().d_name))
max = sizeof(dirent().d_name) - 1;
+#endif
return max;
}
@@ -365,7 +370,11 @@ error_code dir_itr_create(boost::intrusive_ptr< detail::dir_itr_imp >& imp, fs::
// buffer that is enough for PATH_MAX as the directory name. Still, this doesn't guarantee there won't be
// a buffer overrun. The readdir_r API is fundamentally flawed and we should avoid it as much as possible
// in favor of readdir.
+#ifdef __HAIKU__
+ extra_size = (NAME_MAX) + path_max() + 1u; // + 1 for "\0"
+#else
extra_size = (sizeof(dirent) - sizeof(dirent().d_name)) + path_max() + 1u; // + 1 for "\0"
+#endif
}
}
#endif // defined(BOOST_FILESYSTEM_USE_READDIR_R)
--
2.48.1