From d67537c286805c1c71d11221559d1034e8b90520 Mon Sep 17 00:00:00 2001 From: Adrien Destugues 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 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 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{}) { - BOOST_STATIC_ASSERT( + BOOST_STATIC_ASSERT(( std::is_constructible::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)); return insert(pos, first, last, iter_cat{}); } 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( std::forward(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; - 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; detail::value_from_impl( cat(), jv, std::forward(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::value); using bare_T = detail::remove_cvref; - 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; return detail::value_to_impl( cat(), value_to_tag(), jv, ctx ); } @@ -224,8 +224,8 @@ try_value_to( value const& jv, Context const& ctx ) { BOOST_STATIC_ASSERT(! std::is_reference::value); using bare_T = detail::remove_cvref; - 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; return detail::value_to_impl( cat(), try_value_to_tag(), 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 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 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 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 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 : "BOOST_UUID_TEST_HEADER=uuid.hpp" "BOOST_UUID_NO_TYPE_TRAITS" - ../include/boost/uuid/uuid.hpp : + $(BOOST_ROOT)/boost/uuid/uuid.hpp : compile_uuid_no_type_traits ] ; all_rules += [ compile compile/decl_header.cpp : "BOOST_UUID_TEST_HEADER=uuid.hpp" "BOOST_UUID_NO_SIMD" - ../include/boost/uuid/uuid.hpp : + $(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 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 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 #include #include +#include #include #include #include @@ -652,7 +653,8 @@ public: } template - bool contains(const F& f) const + typename boost::enable_if_< !boost::is_function::value, bool >::type + contains(const F& f) const { if (const F* fp = this->template target()) { @@ -662,6 +664,19 @@ public: } } + template + typename boost::enable_if_< boost::is_function::value, bool >::type + contains(Fn& f) const + { + typedef Fn* F; + if (const F* fp = this->template target()) + { + 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 : : : off gcc-4.4,0x:no : contains_test_no_rtti ; run contains2_test.cpp : : : off gcc-4.4,0x:no : contains2_test_no_rtti ; + +run contains3_test.cpp ; +run contains3_test.cpp : : : off gcc-4.4,0x: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 +#include + +static int f() +{ + return 1; +} + +static int g() +{ + return 2; +} + +int main() +{ + { + boost::function fn; + BOOST_TEST( !fn.contains( f ) ); + BOOST_TEST( !fn.contains( g ) ); + } + + { + boost::function 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 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 - struct forward_iterator_base: - public std::iterator { + 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 - struct bidirectional_iterator_base: - public std::iterator { - 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 // ISSUE the default for D seems rather dangerous as it can easily be (silently) incorrect - struct random_access_iterator_base: - public std::iterator { + 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 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 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 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