Skip to content

Commit daab5c9

Browse files
extrowerkbkaradzic
authored andcommitted
Initial Haiku support (bkaradzic#207)
* Initial Haiku support * makefile support * Makefile fix, add genie for Haiku64 * Revert testchanges
1 parent c3fab81 commit daab5c9

File tree

8 files changed

+59
-12
lines changed

8 files changed

+59
-12
lines changed

include/bx/platform.h

+10-1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
#define BX_PLATFORM_WINDOWS 0
6060
#define BX_PLATFORM_WINRT 0
6161
#define BX_PLATFORM_XBOXONE 0
62+
#define BX_PLATFORM_HAIKU 0
6263

6364
// http://sourceforge.net/apps/mediawiki/predef/index.php?title=Compilers
6465
#if defined(__clang__)
@@ -219,6 +220,9 @@
219220
#elif defined(__NX__)
220221
# undef BX_PLATFORM_NX
221222
# define BX_PLATFORM_NX 1
223+
#elif defined(__HAIKU__)
224+
# undef BX_PLATFORM_HAIKU
225+
# define BX_PLATFORM_HAIKU 1
222226
#endif //
223227

224228
#if !BX_CRT_NONE
@@ -235,7 +239,7 @@
235239
# elif defined(__MINGW32__) || defined(__MINGW64__)
236240
# undef BX_CRT_MINGW
237241
# define BX_CRT_MINGW 1
238-
# elif defined(__apple_build_version__) || defined(__ORBIS__) || defined(__EMSCRIPTEN__) || defined(__llvm__)
242+
# elif defined(__apple_build_version__) || defined(__ORBIS__) || defined(__EMSCRIPTEN__) || defined(__llvm__) || defined(__HAIKU__)
239243
# undef BX_CRT_LIBCXX
240244
# define BX_CRT_LIBCXX 1
241245
# endif //
@@ -265,6 +269,7 @@
265269
|| BX_PLATFORM_PS4 \
266270
|| BX_PLATFORM_RPI \
267271
|| BX_PLATFORM_STEAMLINK \
272+
|| BX_PLATFORM_HAIKU \
268273
)
269274

270275
///
@@ -283,6 +288,7 @@
283288
|| BX_PLATFORM_WINDOWS \
284289
|| BX_PLATFORM_WINRT \
285290
|| BX_PLATFORM_XBOXONE \
291+
|| BX_PLATFORM_HAIKU \
286292
)
287293

288294
///
@@ -300,6 +306,7 @@
300306
|| BX_PLATFORM_LINUX \
301307
|| BX_PLATFORM_OSX \
302308
|| BX_PLATFORM_WINDOWS \
309+
|| BX_PLATFORM_HAIKU \
303310
)
304311

305312
///
@@ -382,6 +389,8 @@
382389
# define BX_PLATFORM_NAME "WinRT"
383390
#elif BX_PLATFORM_XBOXONE
384391
# define BX_PLATFORM_NAME "Xbox One"
392+
#elif BX_PLATFORM_HAIKU
393+
# define BX_PLATFORM_NAME "Haiku"
385394
#else
386395
# error "Unknown BX_PLATFORM!"
387396
#endif // BX_PLATFORM_

makefile

+31-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ all:
1212
$(GENIE) --gcc=android-x86 gmake
1313
$(GENIE) --gcc=mingw-gcc gmake
1414
$(GENIE) --gcc=linux-gcc gmake
15+
$(GENIE) --gcc=haiku gmake
1516
$(GENIE) --gcc=osx gmake
1617
$(GENIE) --gcc=ios-arm gmake
1718
$(GENIE) --gcc=ios-simulator gmake
@@ -50,6 +51,14 @@ linux-release64: .build/projects/gmake-linux
5051
make -R -C .build/projects/gmake-linux config=release64
5152
linux: linux-debug64 linux-release64
5253

54+
.build/projects/gmake-haiku:
55+
$(GENIE) --gcc=haiku gmake
56+
haiku-debug64: .build/projects/gmake-haiku
57+
make -R -C .build/projects/gmake-haiku config=debug64
58+
haiku-release64: .build/projects/gmake-haiku
59+
make -R -C .build/projects/gmake-haiku config=release64
60+
haiku: haiku-debug64 haiku-release64
61+
5362
.build/projects/gmake-mingw-gcc:
5463
$(GENIE) --gcc=mingw-gcc gmake
5564
mingw-gcc-debug32: .build/projects/gmake-mingw-gcc
@@ -130,14 +139,22 @@ clean:
130139
SILENT ?= @
131140

132141
UNAME := $(shell uname)
133-
ifeq ($(UNAME),$(filter $(UNAME),Linux GNU Darwin))
142+
ifeq ($(UNAME),$(filter $(UNAME),Linux GNU Darwin Haiku))
143+
ifeq ($(UNAME),$(filter $(UNAME),Darwin Haiku))
134144
ifeq ($(UNAME),$(filter $(UNAME),Darwin))
135145
OS=darwin
136146
BUILD_PROJECT_DIR=gmake-osx
137147
BUILD_OUTPUT_DIR=osx64_clang
138148
BUILD_TOOLS_CONFIG=release64
139149
EXE=
140150
else
151+
OS=haiku
152+
BUILD_PROJECT_DIR=gmake-haiku
153+
BUILD_OUTPUT_DIR=haiku64_gcc
154+
BUILD_TOOLS_CONFIG=release64
155+
EXE=
156+
endif
157+
else
141158
OS=linux
142159
BUILD_PROJECT_DIR=gmake-linux
143160
BUILD_OUTPUT_DIR=linux64_gcc
@@ -165,6 +182,12 @@ tools/bin/darwin/bin2c: .build/osx64_clang/bin/bin2cRelease
165182
tools/bin/linux/bin2c: .build/linux64_gcc/bin/bin2cRelease
166183
$(SILENT) cp $(<) $(@)
167184

185+
.build/haiku64_gcc/bin/bin2cRelease: .build/projects/gmake-haiku
186+
$(SILENT) make -C .build/projects/gmake-haiku bin2c config=$(BUILD_TOOLS_CONFIG)
187+
188+
tools/bin/haiku/bin2c: .build/haiku64_gcc/bin/bin2cRelease
189+
$(SILENT) cp $(<) $(@)
190+
168191
.build/win64_mingw-gcc/bin/bin2cRelease.exe: .build/projects/gmake-mingw-gcc
169192
$(SILENT) make -C .build/projects/gmake-mingw-gcc bin2c config=$(BUILD_TOOLS_CONFIG)
170193

@@ -186,6 +209,12 @@ tools/bin/darwin/lemon: .build/osx64_clang/bin/lemonRelease
186209
tools/bin/linux/lemon: .build/linux64_gcc/bin/lemonRelease
187210
$(SILENT) cp $(<) $(@)
188211

212+
.build/haiku64_gcc/bin/lemonRelease: .build/projects/gmake-haiku
213+
$(SILENT) make -C .build/projects/gmake-haiku lemon config=$(BUILD_TOOLS_CONFIG)
214+
215+
tools/bin/haiku/lemon: .build/haiku64_gcc/bin/lemonRelease
216+
$(SILENT) cp $(<) $(@)
217+
189218
.build/win64_mingw-gcc/bin/lemonRelease.exe: .build/projects/gmake-mingw-gcc
190219
$(SILENT) make -C .build/projects/gmake-mingw-gcc lemon config=$(BUILD_TOOLS_CONFIG)
191220

@@ -199,7 +228,7 @@ lemon: tools/bin/$(OS)/lemon$(EXE) tools/bin/$(OS)/lempar.c
199228

200229
tools: bin2c lemon
201230

202-
dist: tools/bin/darwin/bin2c tools/bin/linux/bin2c tools/bin/windows/bin2c.exe
231+
dist: tools/bin/darwin/bin2c tools/bin/linux/bin2c tools/bin/windows/bin2c.exe tools/bin/haiku/bin2c
203232

204233
.build/$(BUILD_OUTPUT_DIR)/bin/bx.testRelease$(EXE): .build/projects/$(BUILD_PROJECT_DIR)
205234
$(SILENT) make -C .build/projects/$(BUILD_PROJECT_DIR) bx.test config=$(BUILD_TOOLS_CONFIG)

scripts/toolchain.lua

+1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ function toolchain(_buildDir, _libDir)
7373
{ "orbis", "Orbis" },
7474
{ "riscv", "RISC-V" },
7575
{ "rpi", "RaspberryPi" },
76+
{ "haiku", "Haiku" },
7677
},
7778
}
7879

src/file.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ namespace bx
7575
|| BX_PLATFORM_ANDROID \
7676
|| BX_PLATFORM_BSD \
7777
|| BX_PLATFORM_IOS \
78-
|| BX_PLATFORM_OSX
78+
|| BX_PLATFORM_OSX \
79+
|| BX_PLATFORM_HAIKU
7980
# define fseeko64 fseeko
8081
# define ftello64 ftello
8182
# elif BX_PLATFORM_PS4

src/mutex.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
|| BX_PLATFORM_IOS \
1717
|| BX_PLATFORM_OSX \
1818
|| BX_PLATFORM_PS4 \
19-
|| BX_PLATFORM_RPI
19+
|| BX_PLATFORM_RPI \
20+
|| BX_PLATFORM_HAIKU
2021
# include <pthread.h>
2122
#elif BX_PLATFORM_WINDOWS \
2223
|| BX_PLATFORM_WINRT \

src/os.cpp

+11-6
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,15 @@
2727
|| BX_PLATFORM_PS4 \
2828
|| BX_PLATFORM_RPI \
2929
|| BX_PLATFORM_STEAMLINK \
30-
|| BX_PLATFORM_NX
30+
|| BX_PLATFORM_NX \
31+
|| BX_PLATFORM_HAIKU
3132
# include <sched.h> // sched_yield
32-
# if BX_PLATFORM_BSD \
33-
|| BX_PLATFORM_IOS \
34-
|| BX_PLATFORM_OSX \
35-
|| BX_PLATFORM_PS4 \
36-
|| BX_PLATFORM_STEAMLINK
33+
# if BX_PLATFORM_BSD \
34+
|| BX_PLATFORM_IOS \
35+
|| BX_PLATFORM_OSX \
36+
|| BX_PLATFORM_PS4 \
37+
|| BX_PLATFORM_STEAMLINK \
38+
|| BX_PLATFORM_HAIKU
3739
# include <pthread.h> // mach_port_t
3840
# endif // BX_PLATFORM_*
3941

@@ -50,6 +52,9 @@
5052
# include <stdio.h> // fopen
5153
# include <unistd.h> // syscall
5254
# include <sys/syscall.h>
55+
# elif BX_PLATFORM_HAIKU
56+
# include <stdio.h> // fopen
57+
# include <unistd.h> // syscall
5358
# elif BX_PLATFORM_OSX
5459
# include <mach/mach.h> // mach_task_basic_info
5560
# elif BX_PLATFORM_HURD

src/thread.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
|| BX_PLATFORM_IOS \
2020
|| BX_PLATFORM_OSX \
2121
|| BX_PLATFORM_PS4 \
22-
|| BX_PLATFORM_RPI
22+
|| BX_PLATFORM_RPI \
23+
|| BX_PLATFORM_HAIKU
2324
# include <pthread.h>
2425
# if defined(__FreeBSD__)
2526
# include <pthread_np.h>

tools/bin/haiku/genie

526 KB
Binary file not shown.

0 commit comments

Comments
 (0)