1From f44a417e60b61bca55986c0eb146b466f5570606 Mon Sep 17 00:00:00 2001
2From: Adrien Destugues <pulkomandy@gmail.com>
3Date: Sat, 6 Aug 2016 22:27:19 +0200
4Subject: Import changes from 1.55.0: buildtools
5
6
7diff --git a/tools/build/src/engine/boehm_gc/include/gc_config_macros.h b/tools/build/src/engine/boehm_gc/include/gc_config_macros.h
8index 762162a..723b4c3 100644
9--- a/tools/build/src/engine/boehm_gc/include/gc_config_macros.h
10+++ b/tools/build/src/engine/boehm_gc/include/gc_config_macros.h
11@@ -62,7 +62,7 @@
12 
13 # if defined(GC_SOLARIS_THREADS) || defined(GC_FREEBSD_THREADS) || \
14 	defined(GC_IRIX_THREADS) || defined(GC_LINUX_THREADS) || \
15-	defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS) || \
16+	defined(GC_HPUX_THREADS) || defined(GC_OSF1_THREADS) || defined(GC_HAIKU_THREADS) || \
17 	defined(GC_DGUX386_THREADS) || defined(GC_DARWIN_THREADS) || \
18         defined(GC_AIX_THREADS) || defined(GC_NETBSD_THREADS) || \
19         (defined(GC_WIN32_THREADS) && defined(__CYGWIN32__)) || \
20diff --git a/tools/build/src/engine/boehm_gc/include/private/gcconfig.h b/tools/build/src/engine/boehm_gc/include/private/gcconfig.h
21index 61cf9eac..427a9be 100644
22--- a/tools/build/src/engine/boehm_gc/include/private/gcconfig.h
23+++ b/tools/build/src/engine/boehm_gc/include/private/gcconfig.h
24@@ -219,6 +219,12 @@
25 #    define I386
26 #    define HAIKU
27 #    define mach_type_known
28+# endif
29+# if defined(__HAIKU__) && defined(__x86_64__)
30+#    define X86_64
31+#    define HAIKU
32+#    define mach_type_known
33+# endif
34 # if defined(LINUX) && (defined(i386) || defined(__i386__))
35 #    define I386
36 #    define mach_type_known
37@@ -1025,6 +1031,13 @@
38 #     extern int etext[];
39 #     define DATASTART ((ptr_t)((((word) (etext)) + 0xfff) & ~0xfff))
40 #   endif
41+#   ifdef HAIKU
42+#     define OS_TYPE "HAIKU"
43+#     include <OS.h>
44+#     define GETPAGESIZE() B_PAGE_SIZE
45+      extern int etext[];
46+#     define DATASTART ((ptr_t)((((word) (etext)) + 0xfff) & ~0xfff))
47+#   endif
48 #   ifdef SOLARIS
49 #	define OS_TYPE "SOLARIS"
50         extern int _etext[], _end[];
51diff --git a/tools/build/src/engine/boehm_gc/os_dep.c b/tools/build/src/engine/boehm_gc/os_dep.c
52index 2dd087f..8be17f8 100644
53--- a/tools/build/src/engine/boehm_gc/os_dep.c
54+++ b/tools/build/src/engine/boehm_gc/os_dep.c
55@@ -776,6 +776,15 @@ ptr_t GC_get_main_stack_base(void){
56 }
57 # endif /* BEOS */
58 
59+# ifdef HAIKU
60+# include <OS.h>
61+ptr_t GC_get_main_stack_base(void){
62+       thread_info th;
63+       get_thread_info(find_thread(NULL),&th);
64+       return th.stack_end;
65+}
66+# endif /* HAIKU */
67+
68 
69 # ifdef HAIKU
70 # include <OS.h>
71@@ -1106,7 +1115,7 @@ ptr_t GC_get_main_stack_base(void)
72 
73 #endif /* FREEBSD_STACKBOTTOM */
74 
75-#if !defined(BEOS) && !defined(AMIGA) && !defined(MSWIN32) \
76+#if !defined(BEOS) && !defined(__HAIKU__) && !defined(AMIGA) && !defined(MSWIN32) \
77     && !defined(MSWINCE) && !defined(OS2) && !defined(NOSYS) && !defined(ECOS) \
78     && !defined(CYGWIN32) && !defined(HAIKU)
79 
80diff --git a/tools/build/src/engine/jam.h b/tools/build/src/engine/jam.h
81index a6abf41..b774a59 100644
82--- a/tools/build/src/engine/jam.h
83+++ b/tools/build/src/engine/jam.h
84@@ -162,6 +162,11 @@
85     #define OS_BEOS
86     #define NO_VFORK
87 #endif
88+#ifdef __HAIKU__
89+    #define unix
90+    #define OSMINOR "OS=HAIKU"
91+    #define OS_HAIKU
92+#endif
93 #ifdef __bsdi__
94     #define OSMINOR "OS=BSDI"
95     #define OS_BSDI
96diff --git a/tools/build/src/tools/builtin.py b/tools/build/src/tools/builtin.py
97index 1a80c3f..031c014 100644
98--- a/tools/build/src/tools/builtin.py
99+++ b/tools/build/src/tools/builtin.py
100@@ -82,7 +82,7 @@ def variant (name, parents_or_properties, explicit_properties = []):
101     feature.compose ("<variant>" + name, explicit_properties.all())
102 
103 __os_names = """
104-    amiga aix appletv bsd cygwin darwin dos emx freebsd hpux iphone linux netbsd
105+    amiga aix appletv bsd cygwin darwin dos emx freebsd haiku hpux iphone linux netbsd
106     openbsd osf qnx qnxnto sgi solaris sun sunos svr4 sysv ultrix unix unixware
107     vms windows
108 """.split()
109-- 
1102.37.3
111
112
113From 172a909099b905fee46a60ef9a00ab9996ec6c0f Mon Sep 17 00:00:00 2001
114From: Adrien Destugues <pulkomandy@gmail.com>
115Date: Sat, 6 Aug 2016 22:27:41 +0200
116Subject: Import changes from 1.55.0: sourcecode
117
118
119diff --git a/boost/thread/detail/platform.hpp b/boost/thread/detail/platform.hpp
120index 172a601..c706e40 100644
121--- a/boost/thread/detail/platform.hpp
122+++ b/boost/thread/detail/platform.hpp
123@@ -34,7 +34,7 @@
124 #if ! defined BOOST_THREAD_WIN32
125 #  define BOOST_THREAD_WIN32
126 #endif
127-#elif defined(__BEOS__)
128+#elif defined(__BEOS__) || defined(__HAIKU__)
129 #  define BOOST_THREAD_BEOS
130 #elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
131 #  define BOOST_THREAD_MACOS
132-- 
1332.37.3
134
135
136From d4d11ecff10e4c9381fc8d42dc2af0eceef87bde Mon Sep 17 00:00:00 2001
137From: Jerome Duval <jerome.duval@gmail.com>
138Date: Sat, 14 Oct 2017 11:47:09 +0200
139Subject: Haiku needs bsd and _BSD_SOURCE.
140
141
142diff --git a/tools/build/src/engine/build.jam b/tools/build/src/engine/build.jam
143index de567dd..a66d791 100644
144--- a/tools/build/src/engine/build.jam
145+++ b/tools/build/src/engine/build.jam
146@@ -590,6 +590,11 @@ if $(OS) = VMS
147 {
148     --defs += VMS ;
149 }
150+if $(OS) = HAIKU
151+{
152+	--defs += _BSD_SOURCE ;
153+	--libs += -lbsd ;
154+}
155 --defs += YYSTACKSIZE=5000 ;
156 
157 if $(with-python)
158diff --git a/tools/build/src/engine/build.sh b/tools/build/src/engine/build.sh
159index 005e4d9..ac4f43f 100755
160--- a/tools/build/src/engine/build.sh
161+++ b/tools/build/src/engine/build.sh
162@@ -156,6 +156,13 @@ case $BOOST_JAM_TOOLSET in
163         BOOST_JAM_OS="NT"
164         ;;
165 
166+	    *haiku*)
167+	    BOOST_JAM_CC=cc
168+	    BOOST_JAM_OPT_JAM="$BOOST_JAM_OPT_JAM -D_BSD_SOURCE -lbsd"
169+	    BOOST_JAM_OPT_MKJAMBASE="$BOOST_JAM_OPT_MKJAMBASE -D_BSD_SOURCE -lbsd"
170+	    BOOST_JAM_OPT_YYACC="$BOOST_JAM_OPT_YYACC -D_BSD_SOURCE -lbsd"
171+	    ;;
172+
173         *)
174         BOOST_JAM_CC=gcc
175         esac
176-- 
1772.37.3
178
179
180From 7a66a0e6901e0fb5b1b10c0fba6c28a6b5643e2f Mon Sep 17 00:00:00 2001
181From: Alexander von Gluck IV <kallisti5@unixzen.com>
182Date: Wed, 3 Feb 2021 08:36:01 -0600
183Subject: boost/beast: Fix macro seeing , as args on gcc8
184
185
186diff --git a/boost/beast/core/impl/buffers_prefix.hpp b/boost/beast/core/impl/buffers_prefix.hpp
187index e4a484b..139dfb2 100644
188--- a/boost/beast/core/impl/buffers_prefix.hpp
189+++ b/boost/beast/core/impl/buffers_prefix.hpp
190@@ -43,9 +43,9 @@ public:
191     using value_type = buffers_type<Buffers>;
192 #endif
193 
194-    BOOST_STATIC_ASSERT(std::is_same<
195+    BOOST_STATIC_ASSERT((std::is_same<
196         typename const_iterator::value_type,
197-        typename buffers_prefix_view::value_type>::value);
198+        typename buffers_prefix_view::value_type>::value));
199 
200     using pointer = value_type const*;
201     using reference = value_type;
202-- 
2032.37.3
204
205
206From 787d04874f14762b62b17b307779acd703e2745f Mon Sep 17 00:00:00 2001
207From: begasus <begasus@gmail.com>
208Date: Sun, 18 Dec 2022 16:46:28 +0100
209Subject: Fix build, tip provided by Jessicah and waddlesplash
210
211
212diff --git a/libs/filesystem/src/operations.cpp b/libs/filesystem/src/operations.cpp
213index 91fe4d5..8b27cc6 100644
214--- a/libs/filesystem/src/operations.cpp
215+++ b/libs/filesystem/src/operations.cpp
216@@ -2186,12 +2186,17 @@ namespace
217     error_code ec = path_max(path_size);
218     if (ec)
219       return ec;
220-    const std::size_t buffer_size = (sizeof(dirent) - sizeof(dirent().d_name))
221-      +  path_size + 1; // + 1 for "\0"
222-    buffer = std::malloc(buffer_size);
223+    #ifdef __HAIKU__
224+        buffer = std::malloc(sizeof(dirent)
225+          +  path_size + 1);
226+    #else
227+        const std::size_t buffer_size = (sizeof(dirent) - sizeof(dirent().d_name))
228+          +  path_size + 1; // + 1 for "\0"
229+		buffer = std::malloc(buffer_size);
230     if (BOOST_UNLIKELY(!buffer))
231       return make_error_code(boost::system::errc::not_enough_memory);
232     std::memset(buffer, 0, buffer_size);
233+    #endif
234     return ok;
235   }
236 
237-- 
2382.37.3
239
240
241From 6e1b2ce2272d11cca5f7b279dec5cbd46b32f6b8 Mon Sep 17 00:00:00 2001
242From: PulkoMandy <pulkomandy@pulkomandy.tk>
243Date: Fri, 13 Jan 2023 21:26:43 +0100
244Subject: Haiku currently doesn't have cfsetspeed
245
246
247diff --git a/boost/asio/impl/serial_port_base.ipp b/boost/asio/impl/serial_port_base.ipp
248index c7ff518..5174970 100644
249--- a/boost/asio/impl/serial_port_base.ipp
250+++ b/boost/asio/impl/serial_port_base.ipp
251@@ -114,7 +114,8 @@ BOOST_ASIO_SYNC_OP_VOID serial_port_base::baud_rate::store(
252     ec = boost::asio::error::invalid_argument;
253     BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
254   }
255-# if defined(_BSD_SOURCE) || defined(_DEFAULT_SOURCE)
256+# if (defined(_BSD_SOURCE) || defined(_DEFAULT_SOURCE)) && !defined(__HAIKU__)
257+  // TODO re-enable this for Haiku once cfsetspeed is implemented (#18220)
258   ::cfsetspeed(&storage, baud);
259 # else
260   ::cfsetispeed(&storage, baud);
261-- 
2622.37.3
263
264