diff --git a/include/bx/platform.h b/include/bx/platform.h index fea9543..c911c87 100644 --- a/include/bx/platform.h +++ b/include/bx/platform.h @@ -59,6 +59,7 @@ #define BX_PLATFORM_WINDOWS 0 #define BX_PLATFORM_WINRT 0 #define BX_PLATFORM_XBOXONE 0 +#define BX_PLATFORM_HAIKU 0 // http://sourceforge.net/apps/mediawiki/predef/index.php?title=Compilers #if defined(__clang__) @@ -219,6 +220,9 @@ #elif defined(__NX__) # undef BX_PLATFORM_NX # define BX_PLATFORM_NX 1 +#elif defined(__HAIKU__) +# undef BX_PLATFORM_HAIKU +# define BX_PLATFORM_HAIKU 1 #endif // #if !BX_CRT_NONE @@ -235,7 +239,7 @@ # elif defined(__MINGW32__) || defined(__MINGW64__) # undef BX_CRT_MINGW # define BX_CRT_MINGW 1 -# elif defined(__apple_build_version__) || defined(__ORBIS__) || defined(__EMSCRIPTEN__) || defined(__llvm__) +# elif defined(__apple_build_version__) || defined(__ORBIS__) || defined(__EMSCRIPTEN__) || defined(__llvm__) || defined(__HAIKU__) # undef BX_CRT_LIBCXX # define BX_CRT_LIBCXX 1 # endif // @@ -265,6 +269,7 @@ || BX_PLATFORM_PS4 \ || BX_PLATFORM_RPI \ || BX_PLATFORM_STEAMLINK \ + || BX_PLATFORM_HAIKU \ ) /// @@ -283,6 +288,7 @@ || BX_PLATFORM_WINDOWS \ || BX_PLATFORM_WINRT \ || BX_PLATFORM_XBOXONE \ + || BX_PLATFORM_HAIKU \ ) /// @@ -300,6 +306,7 @@ || BX_PLATFORM_LINUX \ || BX_PLATFORM_OSX \ || BX_PLATFORM_WINDOWS \ + || BX_PLATFORM_HAIKU \ ) /// @@ -382,6 +389,8 @@ # define BX_PLATFORM_NAME "WinRT" #elif BX_PLATFORM_XBOXONE # define BX_PLATFORM_NAME "Xbox One" +#elif BX_PLATFORM_HAIKU +# define BX_PLATFORM_NAME "Haiku" #else # error "Unknown BX_PLATFORM!" #endif // BX_PLATFORM_ diff --git a/makefile b/makefile index aaabd81..d232ce2 100644 --- a/makefile +++ b/makefile @@ -12,6 +12,7 @@ all: $(GENIE) --gcc=android-x86 gmake $(GENIE) --gcc=mingw-gcc gmake $(GENIE) --gcc=linux-gcc gmake + $(GENIE) --gcc=haiku gmake $(GENIE) --gcc=osx gmake $(GENIE) --gcc=ios-arm gmake $(GENIE) --gcc=ios-simulator gmake @@ -50,6 +51,14 @@ linux-release64: .build/projects/gmake-linux make -R -C .build/projects/gmake-linux config=release64 linux: linux-debug64 linux-release64 +.build/projects/gmake-haiku: + $(GENIE) --gcc=haiku gmake +haiku-debug64: .build/projects/gmake-haiku + make -R -C .build/projects/gmake-haiku config=debug64 +haiku-release64: .build/projects/gmake-haiku + make -R -C .build/projects/gmake-haiku config=release64 +haiku: haiku-debug64 haiku-release64 + .build/projects/gmake-mingw-gcc: $(GENIE) --gcc=mingw-gcc gmake mingw-gcc-debug32: .build/projects/gmake-mingw-gcc @@ -130,7 +139,8 @@ clean: SILENT ?= @ UNAME := $(shell uname) -ifeq ($(UNAME),$(filter $(UNAME),Linux GNU Darwin)) +ifeq ($(UNAME),$(filter $(UNAME),Linux GNU Darwin Haiku)) +ifeq ($(UNAME),$(filter $(UNAME),Darwin Haiku)) ifeq ($(UNAME),$(filter $(UNAME),Darwin)) OS=darwin BUILD_PROJECT_DIR=gmake-osx @@ -138,6 +148,13 @@ BUILD_OUTPUT_DIR=osx64_clang BUILD_TOOLS_CONFIG=release64 EXE= else +OS=haiku +BUILD_PROJECT_DIR=gmake-haiku +BUILD_OUTPUT_DIR=haiku64_gcc +BUILD_TOOLS_CONFIG=release64 +EXE= +endif +else OS=linux BUILD_PROJECT_DIR=gmake-linux BUILD_OUTPUT_DIR=linux64_gcc @@ -165,6 +182,12 @@ tools/bin/darwin/bin2c: .build/osx64_clang/bin/bin2cRelease tools/bin/linux/bin2c: .build/linux64_gcc/bin/bin2cRelease $(SILENT) cp $(<) $(@) +.build/haiku64_gcc/bin/bin2cRelease: .build/projects/gmake-haiku + $(SILENT) make -C .build/projects/gmake-haiku bin2c config=$(BUILD_TOOLS_CONFIG) + +tools/bin/haiku/bin2c: .build/haiku64_gcc/bin/bin2cRelease + $(SILENT) cp $(<) $(@) + .build/win64_mingw-gcc/bin/bin2cRelease.exe: .build/projects/gmake-mingw-gcc $(SILENT) make -C .build/projects/gmake-mingw-gcc bin2c config=$(BUILD_TOOLS_CONFIG) @@ -186,6 +209,12 @@ tools/bin/darwin/lemon: .build/osx64_clang/bin/lemonRelease tools/bin/linux/lemon: .build/linux64_gcc/bin/lemonRelease $(SILENT) cp $(<) $(@) +.build/haiku64_gcc/bin/lemonRelease: .build/projects/gmake-haiku + $(SILENT) make -C .build/projects/gmake-haiku lemon config=$(BUILD_TOOLS_CONFIG) + +tools/bin/haiku/lemon: .build/haiku64_gcc/bin/lemonRelease + $(SILENT) cp $(<) $(@) + .build/win64_mingw-gcc/bin/lemonRelease.exe: .build/projects/gmake-mingw-gcc $(SILENT) make -C .build/projects/gmake-mingw-gcc lemon config=$(BUILD_TOOLS_CONFIG) @@ -199,7 +228,7 @@ lemon: tools/bin/$(OS)/lemon$(EXE) tools/bin/$(OS)/lempar.c tools: bin2c lemon -dist: tools/bin/darwin/bin2c tools/bin/linux/bin2c tools/bin/windows/bin2c.exe +dist: tools/bin/darwin/bin2c tools/bin/linux/bin2c tools/bin/windows/bin2c.exe tools/bin/haiku/bin2c .build/$(BUILD_OUTPUT_DIR)/bin/bx.testRelease$(EXE): .build/projects/$(BUILD_PROJECT_DIR) $(SILENT) make -C .build/projects/$(BUILD_PROJECT_DIR) bx.test config=$(BUILD_TOOLS_CONFIG) diff --git a/scripts/toolchain.lua b/scripts/toolchain.lua index a757749..89a5b1b 100644 --- a/scripts/toolchain.lua +++ b/scripts/toolchain.lua @@ -73,6 +73,7 @@ function toolchain(_buildDir, _libDir) { "orbis", "Orbis" }, { "riscv", "RISC-V" }, { "rpi", "RaspberryPi" }, + { "haiku", "Haiku" }, }, } diff --git a/src/file.cpp b/src/file.cpp index 6ffab48..f94d759 100644 --- a/src/file.cpp +++ b/src/file.cpp @@ -75,7 +75,8 @@ namespace bx || BX_PLATFORM_ANDROID \ || BX_PLATFORM_BSD \ || BX_PLATFORM_IOS \ - || BX_PLATFORM_OSX + || BX_PLATFORM_OSX \ + || BX_PLATFORM_HAIKU # define fseeko64 fseeko # define ftello64 ftello # elif BX_PLATFORM_PS4 diff --git a/src/mutex.cpp b/src/mutex.cpp index ab7585a..93c6cd6 100644 --- a/src/mutex.cpp +++ b/src/mutex.cpp @@ -16,7 +16,8 @@ || BX_PLATFORM_IOS \ || BX_PLATFORM_OSX \ || BX_PLATFORM_PS4 \ - || BX_PLATFORM_RPI + || BX_PLATFORM_RPI \ + || BX_PLATFORM_HAIKU # include #elif BX_PLATFORM_WINDOWS \ || BX_PLATFORM_WINRT \ diff --git a/src/os.cpp b/src/os.cpp index e774628..555ae57 100644 --- a/src/os.cpp +++ b/src/os.cpp @@ -27,13 +27,15 @@ || BX_PLATFORM_PS4 \ || BX_PLATFORM_RPI \ || BX_PLATFORM_STEAMLINK \ - || BX_PLATFORM_NX + || BX_PLATFORM_NX \ + || BX_PLATFORM_HAIKU # include // sched_yield -# if BX_PLATFORM_BSD \ - || BX_PLATFORM_IOS \ - || BX_PLATFORM_OSX \ - || BX_PLATFORM_PS4 \ - || BX_PLATFORM_STEAMLINK +# if BX_PLATFORM_BSD \ + || BX_PLATFORM_IOS \ + || BX_PLATFORM_OSX \ + || BX_PLATFORM_PS4 \ + || BX_PLATFORM_STEAMLINK \ + || BX_PLATFORM_HAIKU # include // mach_port_t # endif // BX_PLATFORM_* @@ -50,6 +52,9 @@ # include // fopen # include // syscall # include +# elif BX_PLATFORM_HAIKU +# include // fopen +# include // syscall # elif BX_PLATFORM_OSX # include // mach_task_basic_info # elif BX_PLATFORM_HURD diff --git a/src/thread.cpp b/src/thread.cpp index 1c568a2..a4f13d7 100644 --- a/src/thread.cpp +++ b/src/thread.cpp @@ -19,7 +19,8 @@ || BX_PLATFORM_IOS \ || BX_PLATFORM_OSX \ || BX_PLATFORM_PS4 \ - || BX_PLATFORM_RPI + || BX_PLATFORM_RPI \ + || BX_PLATFORM_HAIKU # include # if defined(__FreeBSD__) # include diff --git a/tools/bin/haiku/genie b/tools/bin/haiku/genie new file mode 100755 index 0000000..39fd5f1 Binary files /dev/null and b/tools/bin/haiku/genie differ