From 941b19cd7e732d50d701b54fd0b80c9cb2f3205d Mon Sep 17 00:00:00 2001 From: Crestwave Date: Wed, 11 Mar 2020 12:18:49 +0800 Subject: Add Haiku support diff --git a/engine/stratagus/script.cpp b/engine/stratagus/script.cpp index 887050d..37b78c0 100644 --- a/engine/stratagus/script.cpp +++ b/engine/stratagus/script.cpp @@ -36,6 +36,10 @@ #include #include +#ifdef __HAIKU__ +#include +#endif + #include "stratagus.h" #include "unittype.h" @@ -1450,6 +1454,11 @@ void CreateUserDirectories(void) std::string directory; UserDirectory = ""; +#ifdef __HAIKU__ + char path[B_PATH_NAME_LENGTH]; + find_directory(B_USER_SETTINGS_DIRECTORY, 0, false, path, B_PATH_NAME_LENGTH); + UserDirectory = std::string(path) + "/boswars/"; +#else std::string s; #ifdef USE_WIN32 s = getenv("APPDATA"); @@ -1461,6 +1470,7 @@ void CreateUserDirectories(void) } UserDirectory += STRATAGUS_HOME_PATH; +#endif makedir(UserDirectory.c_str(), 0777); // Create specific subdirectories diff --git a/fabricate.py b/fabricate.py index 5c14e40..8d90382 100644 --- a/fabricate.py +++ b/fabricate.py @@ -464,7 +464,7 @@ class StraceRunner(Runner): def get_strace_version(): """ Return 0 if this system doesn't have strace, nonzero otherwise (64 if strace supports stat64, 32 otherwise). """ - if platform.system() == 'Windows': + if platform.system() == 'Windows' or platform.system() == 'Haiku': # even if windows has strace, it's probably a dodgy cygwin one return 0 try: diff --git a/make.py b/make.py index c3e4996..917bf67 100755 --- a/make.py +++ b/make.py @@ -296,6 +296,7 @@ def detectSdl(b): sys.exit(1) def detectAlwaysDynamic(b): + CheckLib(b, 'network') RequireLib(b, 'z', 'zlib.h') detectOpenGl(b) detectSdl(b) diff --git a/engine/stratagus/stratagus.cpp b/engine/stratagus/stratagus.cpp index ff3a416..def24ca 100644 --- a/engine/stratagus/stratagus.cpp +++ b/engine/stratagus/stratagus.cpp @@ -165,6 +165,9 @@ #ifdef __CYGWIN__ #include #endif +#ifdef __HAIKU__ +#include +#endif #if defined(_MSC_VER) || defined(__MINGW32__) extern char *optarg; extern int optind; @@ -769,7 +772,14 @@ int main(int argc, char **argv) // Setup some defaults. // #ifndef MAC_BUNDLE +#ifndef __HAIKU__ StratagusLibPath = STRATAGUS_LIB_PATH; +#else + char path[B_PATH_NAME_LENGTH]; + find_path(B_APP_IMAGE_SYMBOL, B_FIND_PATH_DATA_DIRECTORY, "boswars/", + path, B_PATH_NAME_LENGTH); + StratagusLibPath = path; +#endif #else freopen("/tmp/stdout.txt", "w", stdout); freopen("/tmp/stderr.txt", "w", stderr); -- 2.24.1