From 4a56f72f5be6cd34c96a082e3697f4eecd744e75 Mon Sep 17 00:00:00 2001 From: Kostadin Damyanov Date: Sun, 24 May 2015 23:22:51 +0300 Subject: [PATCH] Haiku: Initial support. --- platform/haiku/SCsub | 10 ++++++++ platform/haiku/detect.py | 42 +++++++++++++++++++++++++++++++ platform/haiku/godot_haiku.cpp | 19 ++++++++++++++ platform/haiku/logo.png | Bin 0 -> 2055 bytes platform/haiku/os_haiku.cpp | 0 platform/haiku/os_haiku.h | 42 +++++++++++++++++++++++++++++++ platform/haiku/platform_config.h | 1 + 7 files changed, 114 insertions(+) create mode 100644 platform/haiku/SCsub create mode 100644 platform/haiku/detect.py create mode 100644 platform/haiku/godot_haiku.cpp create mode 100644 platform/haiku/logo.png create mode 100644 platform/haiku/os_haiku.cpp create mode 100644 platform/haiku/os_haiku.h create mode 100644 platform/haiku/platform_config.h diff --git a/platform/haiku/SCsub b/platform/haiku/SCsub new file mode 100644 index 0000000000..8ae489cf54 --- /dev/null +++ b/platform/haiku/SCsub @@ -0,0 +1,10 @@ +Import('env') + +common_haiku = [ + 'os_haiku.cpp' +] + +env.Program( + '#bin/godot', + ['godot_haiku.cpp'] + common_haiku +) diff --git a/platform/haiku/detect.py b/platform/haiku/detect.py new file mode 100644 index 0000000000..992c73ee79 --- /dev/null +++ b/platform/haiku/detect.py @@ -0,0 +1,42 @@ +import os +import sys + +def is_active(): + return True + +def get_name(): + return "Haiku" + +def can_build(): + if (os.name != "posix"): + return False + + if (sys.platform == "darwin"): + return False + + return True + +def get_opts(): + return [] + +def get_flags(): + return [ + ('builtin_zlib', 'no') + ] + +def configure(env): + is64=sys.maxsize > 2**32 + + if (env["bits"]=="default"): + if (is64): + env["bits"]="64" + else: + env["bits"]="32" + + env.Append(CPPPATH = ['#platform/haiku']) + env["CC"] = "gcc-x86" + env["CXX"] = "g++-x86" + env.Append(CPPFLAGS = ['-DDEBUG_METHODS_ENABLED']) + + env.Append(CPPFLAGS = ['-DUNIX_ENABLED']) + #env.Append(LIBS = ['be']) diff --git a/platform/haiku/godot_haiku.cpp b/platform/haiku/godot_haiku.cpp new file mode 100644 index 0000000000..b4e5e50891 --- /dev/null +++ b/platform/haiku/godot_haiku.cpp @@ -0,0 +1,19 @@ +#include "main/main.h" +#include "os_haiku.h" + +int main(int argc, char* argv[]) { + OS_Haiku os; + + Error error = Main::setup(argv[0], argc-1, &argv[1]); + if (error != OK) { + return 255; + } + + if (Main::start()) { + os.run(); + } + + Main::cleanup(); + + return os.get_exit_code(); +} diff --git a/platform/haiku/logo.png b/platform/haiku/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c40214d6debde3fad414d5f0002579484421c5be GIT binary patch literal 2055 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}Ea{HEjtmSN`?>!lvNA9* zFct^7J29*~C-V}dGT9@@mw};5je((|g@NH00|P_D3kHT#0|tgy2@DKYGZ+}e3+C(! zv|(UiU`z6LcVYMsf(!O8pUl9(z**oCSAayt5~bluRHAR<3?)&fu78EbmAm*rfK^__foiM4fk+Pl5S?bFiA%ZyLz znb=$0IlXg#@&5attLJ_eex@E&yDHL|f%(X0wyQrY|5xmLAeO-F_cb<@(Rl&Ol*ScS z&s?3(Pj=w7VO-L{vq9oUz+bu0(lcv5dbos^-%(MTdm!uqQvgd(YGh+-!x>$=^ABUTVr^@e#^DhTd(ChY|7f`?sPzC;*{Lm zvR*6w%?&D!7qxt=8n?r~|XS4}P}U za;>97B3W(k$^9Q5nYW$PIUz7ReCOBSGV1p&*cuF%MQ6V~QkbK?v_$5(d|yLqVAi5`N#F-BX_0=kRXg{4+)G?`ectw7vh`;Ss$s;Kf#*>^l<4!J2+sU)|WCXLE-2 z(xppE^PXqk|GswGG_l<~ci!A<_H&Bm|Msgqd!;|!pV(0IOd`8HR)K?QnogwC%8*}k zu32d+tqVFePg_hbg!AZUo0DmqZ+*5=pL}vj?frNI3yU9b_UYSiFMBzyHfHC}u64fl z3%0-4+_k%UN9AX==jY}gmbkonN|m=u-qFGsvtus&n-4VCsOakIp88(9eC0~bsb|wR zH#axmj*gCw-%;{%5)(&LLx`5?)(4-Sp3b?mW8gPxM zgzlbTO^TeRGTAdXa@yO{9Ak`Db~6M#1A_yt8J{j@+6R zsw+|5ee}`wsX>`bLz-STXV)2CxN=3sOLMM=%AFLWnNkuGH>P{2{F!TAp44-&P-fCe z6^3=MAN{sdR#tv+uiEwO{YMq+F5+UR0E2 zcZHQnL-67;iRkRNvHR=(ZjO5Ws?eKL=7B5cr`gm<^G{4Hmq@!G2N0l4}7*<&H&0i6E zd?&{hu@^}jUx;)cJ#yf{fpneIzcS+E@AE9JvHS19v@)bCM61<<^|Zw1DK8cFoafpq zvEpu3iHNJ8L|doR!U=RZrx%gY-dJ7YH| ztNf(oWUhi9!#IgH-=#?#9vt%ib#i{)>gj8{{R_Umxv4p!#OkiV9-AMbRcE++`ud8# zzl+_r#_-RJ3GyMFCO${2xHAsKUiE$5n0_eM+j{X^+t}Dzk6E(wPkegwecrQMTeD>> zi&|pz%H=B-3VhgK|F^UC9LH*LCpA`k%Ya1z+rk4p4@b#d(c5I)be`#w!}HntpPfIK zwHxMtmni;Pn7l5};MuFH;^+OEm!}>5^8Nd4x1#i%Gci^>&rG>@h-Yt`@`=?pt97W>PGyV*qo@7(zReot}p#Pary zcSX9Vm2O_}Rk`8Nwz*dp>g(42JR81i+x65#Aqw}NPwwdt-FQuBqKd!$%qJ(Vo1LAZ zH~sV+yV_Z?*4r=7vB|pB~5e*#5tieb9B8 z_QILI2SV)K&dWUV`M$j*^{RyX~>eTdbhX5UW;;PD3tNu z8ME!MLCGVFbzhkiuRd|r;?0g=_fuy2`hHcP&*ERQ*=u_{Bo4R)svMJ;x%B#qRP)UT z8UOK@U0Yxwx=v;%0|SFRdP{kVo554k%6I+uA!l>k!6U1k(H^Lm5G_I ofw7f=!G(^srYIV6^HVa@DsgLAcvZBMfq{X+)78&qol`;+0DqdnSO5S3 literal 0 HcmV?d00001 diff --git a/platform/haiku/os_haiku.cpp b/platform/haiku/os_haiku.cpp new file mode 100644 index 0000000000..e69de29bb2 diff --git a/platform/haiku/os_haiku.h b/platform/haiku/os_haiku.h new file mode 100644 index 0000000000..ee1283f018 --- /dev/null +++ b/platform/haiku/os_haiku.h @@ -0,0 +1,42 @@ +#ifndef OS_HAIKU_H +#define OS_HAIKU_H + +#include "drivers/unix/os_unix.h" + + +class OS_Haiku : public OS_Unix { +private: + virtual void delete_main_loop(); + +protected: + virtual int get_video_driver_count() const; + virtual const char* get_video_driver_name(int p_driver) const; + virtual VideoMode get_default_video_mode() const; + + virtual void initialize(const VideoMode& p_desired, int p_video_driver, int p_audio_driver); + virtual void finalize(); + + virtual void set_main_loop(MainLoop* p_main_loop); + +public: + OS_Haiku(); + void run(); + + virtual String get_name(); + + virtual MainLoop *get_main_loop() const; + virtual bool can_draw() const; + + virtual Point2 get_mouse_pos() const; + virtual int get_mouse_button_state() const; + virtual void set_cursor_shape(CursorShape p_shape); + + virtual void set_window_title(const String& p_title); + virtual Size2 get_window_size() const; + + virtual void set_video_mode(const VideoMode& p_video_mode, int p_screen=0); + virtual VideoMode get_video_mode(int p_screen=0) const; + virtual void get_fullscreen_mode_list(List *p_list, int p_screen=0) const; +}; + +#endif diff --git a/platform/haiku/platform_config.h b/platform/haiku/platform_config.h new file mode 100644 index 0000000000..dad24432a5 --- /dev/null +++ b/platform/haiku/platform_config.h @@ -0,0 +1 @@ +#include