mirror of
https://github.com/yann64/haikuports.git
synced 2026-05-06 06:58:57 +02:00
334 lines
8.6 KiB
Plaintext
334 lines
8.6 KiB
Plaintext
From fbc196f3d58e2c5759b28b2773bd66608ee0f645 Mon Sep 17 00:00:00 2001
|
|
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
|
Date: Wed, 30 Oct 2019 00:18:24 +1000
|
|
Subject: Add Haiku support
|
|
|
|
|
|
diff --git a/code/qcommon/files.cpp b/code/qcommon/files.cpp
|
|
index c35d0e0..c4f6149 100644
|
|
--- a/code/qcommon/files.cpp
|
|
+++ b/code/qcommon/files.cpp
|
|
@@ -2885,6 +2885,12 @@ void FS_Startup( const char *gameName ) {
|
|
if (fs_basepath->string[0]) {
|
|
FS_AddGameDirectory( fs_basepath->string, gameName );
|
|
}
|
|
+#ifdef __HAIKU__
|
|
+ char *p;
|
|
+ if ( (p = getenv( "OPENJK_GAME_DATA" )) != NULL ) {
|
|
+ FS_AddGameDirectory( p, gameName );
|
|
+ }
|
|
+#endif
|
|
|
|
#ifdef MACOS_X
|
|
fs_apppath = Cvar_Get ("fs_apppath", Sys_DefaultAppPath(), CVAR_INIT|CVAR_PROTECTED );
|
|
diff --git a/code/rd-vanilla/qgl.h b/code/rd-vanilla/qgl.h
|
|
index c9215db..9b3fa66 100644
|
|
--- a/code/rd-vanilla/qgl.h
|
|
+++ b/code/rd-vanilla/qgl.h
|
|
@@ -39,6 +39,8 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
# if defined(__FX__)
|
|
# include <GL/fxmesa.h>
|
|
# endif
|
|
+#elif defined( __HAIKU__ )
|
|
+# include <GL/gl.h>
|
|
#elif defined( __FreeBSD__ ) || defined(__OpenBSD__) // rb010123
|
|
# include <GL/gl.h>
|
|
# include <GL/glx.h>
|
|
diff --git a/lib/minizip/ioapi.c b/lib/minizip/ioapi.c
|
|
index 7f5c191..0db4bbf 100644
|
|
--- a/lib/minizip/ioapi.c
|
|
+++ b/lib/minizip/ioapi.c
|
|
@@ -14,7 +14,7 @@
|
|
#define _CRT_SECURE_NO_WARNINGS
|
|
#endif
|
|
|
|
-#if defined(__APPLE__) || defined(IOAPI_NO_64)
|
|
+#if defined(__APPLE__) || defined(__HAIKU__) || defined(IOAPI_NO_64)
|
|
// In darwin and perhaps other BSD variants off_t is a 64 bit value, hence no need for specific 64 bit functions
|
|
#define FOPEN_FUNC(filename, mode) fopen(filename, mode)
|
|
#define FTELLO_FUNC(stream) ftello(stream)
|
|
diff --git a/shared/qcommon/q_platform.h b/shared/qcommon/q_platform.h
|
|
index bddb7bd..d54b0f8 100644
|
|
--- a/shared/qcommon/q_platform.h
|
|
+++ b/shared/qcommon/q_platform.h
|
|
@@ -143,6 +143,30 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
|
|
#define DLL_EXT ".so"
|
|
|
|
+// Haiku
|
|
+#elif defined(__HAIKU__)
|
|
+
|
|
+ #include <endian.h>
|
|
+ #define OS_STRING "haiku"
|
|
+ #define QINLINE inline
|
|
+ #define PATH_SEP '/'
|
|
+
|
|
+ #if !defined(ARCH_STRING)
|
|
+ #error ARCH_STRING should be defined by the build system
|
|
+ #endif
|
|
+
|
|
+ #if defined(__x86_64__)
|
|
+ #define idx64
|
|
+ #endif
|
|
+
|
|
+ #if __FLOAT_WORD_ORDER == __BIG_ENDIAN
|
|
+ #define Q3_BIG_ENDIAN
|
|
+ #else
|
|
+ #define Q3_LITTLE_ENDIAN
|
|
+ #endif
|
|
+
|
|
+ #define DLL_EXT ".so"
|
|
+
|
|
// BSD
|
|
#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
|
|
|
|
diff --git a/shared/sdl/sdl_window.cpp b/shared/sdl/sdl_window.cpp
|
|
index 5fa0f8b..4dfd01b 100644
|
|
--- a/shared/sdl/sdl_window.cpp
|
|
+++ b/shared/sdl/sdl_window.cpp
|
|
@@ -87,7 +87,7 @@ const vidmode_t r_vidModes[] = {
|
|
};
|
|
static const int s_numVidModes = ARRAY_LEN( r_vidModes );
|
|
|
|
-#define R_MODE_FALLBACK (4) // 640x480
|
|
+#define R_MODE_FALLBACK (6) // 1024x768
|
|
|
|
qboolean R_GetModeInfo( int *width, int *height, int mode ) {
|
|
const vidmode_t *vm;
|
|
@@ -347,6 +347,12 @@ static rserr_t GLimp_SetMode(glconfig_t *glConfig, const windowDesc_t *windowDes
|
|
#endif
|
|
);
|
|
|
|
+#ifdef __HAIKU__
|
|
+ if (r_fullscreen->integer == 1) {
|
|
+ mode = -2;
|
|
+ }
|
|
+#endif
|
|
+
|
|
// If a window exists, note its display index
|
|
if ( screen != NULL )
|
|
{
|
|
@@ -713,9 +719,11 @@ static qboolean GLimp_StartDriverAndSetMode(glconfig_t *glConfig, const windowDe
|
|
case RSERR_INVALID_MODE:
|
|
Com_Printf( "...WARNING: could not set the given mode (%d)\n", mode );
|
|
return qfalse;
|
|
+#ifndef __HAIKU__
|
|
case RSERR_UNKNOWN:
|
|
Com_Printf( "...ERROR: no display modes could be found.\n" );
|
|
return qfalse;
|
|
+#endif
|
|
default:
|
|
break;
|
|
}
|
|
@@ -809,8 +817,9 @@ void WIN_Shutdown( void )
|
|
Cmd_RemoveCommand("minimize");
|
|
|
|
IN_Shutdown();
|
|
-
|
|
+#ifndef __HAIKU__
|
|
SDL_QuitSubSystem( SDL_INIT_VIDEO );
|
|
+#endif
|
|
screen = NULL;
|
|
}
|
|
|
|
diff --git a/shared/sys/sys_unix.cpp b/shared/sys/sys_unix.cpp
|
|
index 96f5b7a..c90f068 100644
|
|
--- a/shared/sys/sys_unix.cpp
|
|
+++ b/shared/sys/sys_unix.cpp
|
|
@@ -400,6 +400,12 @@ Sys_Mkdir
|
|
*/
|
|
qboolean Sys_Mkdir( const char *path )
|
|
{
|
|
+#ifdef __HAIKU__
|
|
+ struct stat buff;
|
|
+ if (stat(path, &buff) == 0)
|
|
+ if (S_ISDIR(buff.st_mode))
|
|
+ return qtrue;
|
|
+#endif
|
|
int result = mkdir( path, 0750 );
|
|
|
|
if( result != 0 )
|
|
@@ -468,6 +474,25 @@ char *Sys_DefaultHomePath(void)
|
|
|
|
return homePath;
|
|
}
|
|
+#elif defined(__HAIKU__)
|
|
+char *Sys_DefaultHomePath(void)
|
|
+{
|
|
+ char *p;
|
|
+
|
|
+ if ( !homePath[0] )
|
|
+ {
|
|
+ if ( (p = getenv( "HOME" )) != NULL )
|
|
+ {
|
|
+ Com_sprintf( homePath, sizeof( homePath ), "%s/config/settings/OpenJK/", p );
|
|
+ if ( com_homepath && com_homepath->string[0] )
|
|
+ Q_strcat( homePath, sizeof( homePath ), com_homepath->string );
|
|
+ else
|
|
+ Q_strcat( homePath, sizeof( homePath ), HOMEPATH_NAME_MACOSX );
|
|
+ return homePath;
|
|
+ }
|
|
+ }
|
|
+ return homePath;
|
|
+}
|
|
#else
|
|
char *Sys_DefaultHomePath(void)
|
|
{
|
|
--
|
|
2.26.0
|
|
|
|
|
|
From f66678ef68dad4199263d7848f7d8e2d1cd4306e Mon Sep 17 00:00:00 2001
|
|
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
|
Date: Tue, 10 Mar 2020 20:22:50 +1000
|
|
Subject: use internal zlib
|
|
|
|
|
|
diff --git a/lib/libpng/CMakeLists.txt b/lib/libpng/CMakeLists.txt
|
|
index 4ef4c7e..a25a99a 100644
|
|
--- a/lib/libpng/CMakeLists.txt
|
|
+++ b/lib/libpng/CMakeLists.txt
|
|
@@ -23,7 +23,7 @@
|
|
|
|
# This only has effect in this directory (lib/png).
|
|
include_directories(include/)
|
|
-if(WIN32)
|
|
+if(WIN32 OR HAIKU)
|
|
include_directories(../zlib/include/)
|
|
endif()
|
|
|
|
--
|
|
2.26.0
|
|
|
|
|
|
From eb785c535fd2e7c13b3e1aa78e39957159e14d54 Mon Sep 17 00:00:00 2001
|
|
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
|
Date: Sat, 16 May 2020 20:29:43 +1000
|
|
Subject: Fix buils Jedi Academy
|
|
|
|
|
|
diff --git a/codemp/CMakeLists.txt b/codemp/CMakeLists.txt
|
|
index a55ddf7..e823cb8 100644
|
|
--- a/codemp/CMakeLists.txt
|
|
+++ b/codemp/CMakeLists.txt
|
|
@@ -174,6 +174,10 @@ if(BuildMPEngine OR BuildMPDed)
|
|
set(MPEngineAndDedLibraries ${MPEngineAndDedLibraries} "winmm" "wsock32")
|
|
endif(WIN32)
|
|
|
|
+ if(HAIKU)
|
|
+ set(MPEngineAndDedLibraries ${MPEngineAndDedLibraries} "network")
|
|
+ endif(HAIKU)
|
|
+
|
|
# Include directories
|
|
set(MPEngineAndDedIncludeDirectories ${MPDir} ${SharedDir} ${GSLIncludeDirectory}) # codemp folder, since includes are not always relative in the files
|
|
|
|
diff --git a/codemp/rd-vanilla/qgl.h b/codemp/rd-vanilla/qgl.h
|
|
index 2127128..c560694 100644
|
|
--- a/codemp/rd-vanilla/qgl.h
|
|
+++ b/codemp/rd-vanilla/qgl.h
|
|
@@ -39,6 +39,8 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
# if defined(__FX__)
|
|
# include <GL/fxmesa.h>
|
|
# endif
|
|
+#elif defined( __HAIKU__ )
|
|
+# include <GL/gl.h>
|
|
#elif defined( __FreeBSD__ ) || defined(__OpenBSD__) // rb010123
|
|
# include <GL/gl.h>
|
|
# include <GL/glx.h>
|
|
--
|
|
2.26.0
|
|
|
|
|
|
From bff7fbadc16d49bce431ea676a6613628b784349 Mon Sep 17 00:00:00 2001
|
|
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
|
Date: Sun, 17 May 2020 10:28:53 +1000
|
|
Subject: Add gamedir path from env
|
|
|
|
|
|
diff --git a/codemp/qcommon/files.cpp b/codemp/qcommon/files.cpp
|
|
index 4fb8b4a..9d8a794 100644
|
|
--- a/codemp/qcommon/files.cpp
|
|
+++ b/codemp/qcommon/files.cpp
|
|
@@ -3372,6 +3372,12 @@ void FS_Startup( const char *gameName ) {
|
|
if (fs_basepath->string[0]) {
|
|
FS_AddGameDirectory( fs_basepath->string, gameName );
|
|
}
|
|
+#ifdef __HAIKU__
|
|
+ char *p;
|
|
+ if ( (p = getenv( "OPENJK_GAME_DATA" )) != NULL ) {
|
|
+ FS_AddGameDirectory( p, gameName );
|
|
+ }
|
|
+#endif
|
|
|
|
#ifdef MACOS_X
|
|
fs_apppath = Cvar_Get ("fs_apppath", Sys_DefaultAppPath(), CVAR_INIT|CVAR_PROTECTED, "(Read Only) Location of OSX .app bundle" );
|
|
--
|
|
2.26.0
|
|
|
|
|
|
From 1da8e7fa13b8d2c4cc6b098a6512048ba84c926c Mon Sep 17 00:00:00 2001
|
|
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
|
Date: Sun, 17 May 2020 19:09:55 +1000
|
|
Subject: Fix build for x86
|
|
|
|
|
|
diff --git a/codemp/mp3code/config.h b/codemp/mp3code/config.h
|
|
index 36a2651..c95e683 100644
|
|
--- a/codemp/mp3code/config.h
|
|
+++ b/codemp/mp3code/config.h
|
|
@@ -59,6 +59,10 @@ typedef int socklen_t;
|
|
// real number
|
|
typedef double real;
|
|
|
|
+#ifdef __HAIKU__
|
|
+#include <SupportDefs.h>
|
|
+#else
|
|
+
|
|
#if UCHAR_MAX == 0xff
|
|
|
|
typedef unsigned char uint8;
|
|
@@ -101,6 +105,7 @@ typedef short int32;
|
|
#else
|
|
#error This machine has no 32-bit type
|
|
#endif
|
|
+#endif
|
|
|
|
|
|
// What character marks the end of a directory entry? For DOS and
|
|
--
|
|
2.26.0
|
|
|
|
|
|
From 4537cd02588b0d531e71cb5f2727c1157d1d2a89 Mon Sep 17 00:00:00 2001
|
|
From: Gerasim Troeglazov <3dEyes@gmail.com>
|
|
Date: Sun, 17 May 2020 19:10:22 +1000
|
|
Subject: Fix build for x86
|
|
|
|
|
|
diff --git a/code/mp3code/config.h b/code/mp3code/config.h
|
|
index 36a2651..c95e683 100644
|
|
--- a/code/mp3code/config.h
|
|
+++ b/code/mp3code/config.h
|
|
@@ -59,6 +59,10 @@ typedef int socklen_t;
|
|
// real number
|
|
typedef double real;
|
|
|
|
+#ifdef __HAIKU__
|
|
+#include <SupportDefs.h>
|
|
+#else
|
|
+
|
|
#if UCHAR_MAX == 0xff
|
|
|
|
typedef unsigned char uint8;
|
|
@@ -101,6 +105,7 @@ typedef short int32;
|
|
#else
|
|
#error This machine has no 32-bit type
|
|
#endif
|
|
+#endif
|
|
|
|
|
|
// What character marks the end of a directory entry? For DOS and
|
|
--
|
|
2.26.0
|
|
|