From b43dde58f3668a00490190149f740168cb88157e Mon Sep 17 00:00:00 2001 From: Peppersawce <157759066+Peppersawce@users.noreply.github.com> Date: Sat, 5 Apr 2025 14:18:33 +0200 Subject: [PATCH] Haiku support patch --- CMakeLists.txt | 2 +- libraries/ZVulkan/CMakeLists.txt | 6 +++++- libraries/ZWidget/CMakeLists.txt | 6 +++++- src/common/engine/i_specialpaths.h | 2 +- src/common/rendering/gl_load/gl_load.c | 2 +- src/version.h | 2 ++ 6 files changed, 15 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0ac374e55b..92e7d67027 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -309,7 +309,7 @@ else() # If we're compiling with a custom GCC on the Mac (which we know since g++-4.2 doesn't support C++11) statically link libgcc. set( ALL_C_FLAGS "-static-libgcc" ) endif() - elseif( NOT MINGW ) + elseif( NOT MINGW AND NOT HAIKU ) # Generic GCC/Clang requires position independent executable to be enabled explicitly set( ALL_C_FLAGS "${ALL_C_FLAGS} -fPIE" ) set( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie" ) diff --git a/libraries/ZVulkan/CMakeLists.txt b/libraries/ZVulkan/CMakeLists.txt index 3b47b7b686..4cd713323e 100644 --- a/libraries/ZVulkan/CMakeLists.txt +++ b/libraries/ZVulkan/CMakeLists.txt @@ -188,7 +188,11 @@ if(WIN32) add_definitions(-DUNICODE -D_UNICODE) else() set(ZVULKAN_SOURCES ${ZVULKAN_SOURCES} ${ZVULKAN_UNIX_SOURCES}) - set(ZVULKAN_LIBS ${CMAKE_DL_LIBS} -ldl) + if(NOT HAIKU) + set(ZVULKAN_LIBS ${CMAKE_DL_LIBS} -ldl) + else() + set(ZVULKAN_LIBS ${CMAKE_DL_LIBS}) + endif() add_definitions(-DUNIX -D_UNIX) add_link_options(-pthread) endif() diff --git a/libraries/ZWidget/CMakeLists.txt b/libraries/ZWidget/CMakeLists.txt index 68c048e22e..329caf96e8 100644 --- a/libraries/ZWidget/CMakeLists.txt +++ b/libraries/ZWidget/CMakeLists.txt @@ -130,7 +130,11 @@ elseif(APPLE) add_link_options(-pthread) else() set(ZWIDGET_SOURCES ${ZWIDGET_SOURCES} ${ZWIDGET_SDL2_SOURCES}) - set(ZWIDGET_LIBS ${CMAKE_DL_LIBS} -ldl) + if(NOT HAIKU) + set(ZWIDGET_LIBS ${CMAKE_DL_LIBS} -ldl) + else() + set(ZWIDGET_LIBS ${CMAKE_DL_LIBS}) + endif() add_definitions(-DUNIX -D_UNIX) add_link_options(-pthread) endif() diff --git a/src/common/engine/i_specialpaths.h b/src/common/engine/i_specialpaths.h index 01710b6725..fb75230f55 100644 --- a/src/common/engine/i_specialpaths.h +++ b/src/common/engine/i_specialpaths.h @@ -2,7 +2,7 @@ #include "zstring.h" -#ifdef __unix__ +#if defined(__unix__) || defined(__HAIKU__) FString GetUserFile (const char *path); #endif FString M_GetAppDataPath(bool create); diff --git a/src/common/rendering/gl_load/gl_load.c b/src/common/rendering/gl_load/gl_load.c index d5ba4e49fe..bb2141e7c3 100644 --- a/src/common/rendering/gl_load/gl_load.c +++ b/src/common/rendering/gl_load/gl_load.c @@ -134,7 +134,7 @@ static PROC WinGetProcAddress(const char *name) #if defined(__APPLE__) #define IntGetProcAddress(name) AppleGLGetProcAddress(name) #else - #if defined(__sgi) || defined(__sun) || defined(__unix__) + #if defined(__sgi) || defined(__sun) || defined(__unix__) || defined(__HAIKU__) void* SDL_GL_GetProcAddress(const char* proc); #define IntGetProcAddress(name) SDL_GL_GetProcAddress((const char*)name) //#define IntGetProcAddress(name) PosixGetProcAddress((const GLubyte*)name) diff --git a/src/version.h b/src/version.h index 91f3319b54..ddfd3a346a 100644 --- a/src/version.h +++ b/src/version.h @@ -105,6 +105,8 @@ const char *GetVersionString(); #if defined(__APPLE__) || defined(_WIN32) #define GAME_DIR GAMENAME +#elif defined(__HAIKU__) +#define GAME_DIR "config/settings/" GAMENAME #else #define GAME_DIR ".config/" GAMENAMELOWERCASE #endif