Cube 2: Sauerbraten port (#12164)

This commit is contained in:
Peppersawce
2025-04-15 12:37:34 +00:00
committed by GitHub
parent 35b2beed88
commit 9209689706
3 changed files with 168 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
resource app_flags B_SINGLE_LAUNCH;
resource app_version {
variety = B_APPV_FINAL,
internal = 0,
short_info = "Sauerbraten",
long_info = "Free multiplayer & singleplayer first person shooter based on the Cube 2 engine"
};
resource app_signature "application/x-vnd.cube2-sauerbraten";
resource vector_icon array {
$"6E6369660503F8671403E51D14020006023E00000000000000003C00004A0000"
$"4A000000F86714FFFFFFFF020006023C38E30000000000003A38E34A00004B1C"
$"7100FFFFFFFFF86714020006023B8E38000000000000398E3849FFFF4A000000"
$"F86714FFFFFFFF0C00046030603060BD9F605060C1DFC83FC83F4060C400CA60"
$"40C83F404040C4004040000420302030B740BB804040BB80BD9F40C400406040"
$"C83FBB80CA602050B740C83F2050000440204020C400B5206030C83FB740C83F"
$"BB804040C400BD9FBB80BD9F2030B740BB802030000440B8AA40B8AAC21CB9D8"
$"C6D5BC35C478BB07C6D5BE91C6D5C34AC6D5C0EEC478C21C4040C21CC0EE4040"
$"000440B8AA40B8AABD63B9D8B8AABC35BB07BB07B8AABE91B8AAC34AB8AAC0EE"
$"BB07C21C4040BD63C0EE4040000440404040BD63C0EEB8AAC34ABB07C21CBB07"
$"C47840C6D5BD63C5A7C21CC5A7C6D5C34AC478C478C6D5C34A0004BA15BCEABA"
$"15BCEABBF8BDDC4040BDDCBECE40C1A340C56A40C387BDDCC478BA15C295BBF8"
$"C387BA15C295000440BA1540BA15C1A3BB07C56ABCEAC387BBF8C387BDDC4040"
$"C1A3BECEBDDCBECEBA15BCEABBF8BDDCBA15BCEA0004C56ABCEAC56ABCEAC56A"
$"BECEC56AC295C56AC0B1C387C38740C56AC1A3C47840C387404040C1A3404000"
$"03C1B2BB0EC1B2BB0EC093BBADBE55BCEABF74BC4CBF74BD89C1B2BEC6C0933C"
$"C1B2BEC60003C1B2BEC6C1B2BEC648BF65C56AC0A2C42DC004C42DC148C1B2C2"
$"9548C1EFC1B2C2950004C1B234C1B234C2F7BB8FC581BCBDC43CBC26C581BE11"
$"C581C0B9C581BF65C43CC013C1B2BEC6C2F7BF6CC1B2BEC60C0A000100000A01"
$"0101000A020102000A010103000A000104000A030105000A010106000A040107"
$"000A000108000A000109000A03010A000A01010B00"
};

View File

@@ -0,0 +1,69 @@
From d107b814ebf6161fe86a49f1ff034a7a3b6c5d53 Mon Sep 17 00:00:00 2001
From: Peppersawce <michaelpeppers89@yahoo.it>
Date: Mon, 14 Apr 2025 18:16:07 +0200
Subject: De-linuxify Makefile, set up default config path
diff --git a/src/Makefile b/src/Makefile
index bb15b25..7d28d57 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -65,8 +65,10 @@ CLIENT_LIBS= -F../sauerbraten.app/Contents/Frameworks/ -framework SDL2 -framewor
CLIENT_LIBS+= -framework SDL2_mixer -framework CoreAudio -framework AudioToolbox
CLIENT_LIBS+= -framework AudioUnit -framework OpenGL -framework Cocoa -lz -Lenet -lenet
else
-CLIENT_INCLUDES= $(INCLUDES) -I/usr/X11R6/include `sdl2-config --cflags`
-CLIENT_LIBS= -Lenet -lenet -L/usr/X11R6/lib -lX11 `sdl2-config --libs` -lSDL2_image -lSDL2_mixer -lz -lGL
+USRLIB=$(shell if [ -e /boot/system/lib/x86 ]; then echo "/boot/system/lib/x86"; else echo "/boot/system/lib"; fi)
+INCLUDEDIR=$(shell if [ -e /boot/system/develop/headers/x86 ]; then echo "/boot/system/develop/headers/x86"; else echo "/boot/system/develop/headers"; fi)
+CLIENT_INCLUDES= $(INCLUDES) -I$(INCLUDEDIR)/SDL2 `sdl2-config --cflags`
+CLIENT_LIBS= -Lenet -lenet -L$(USRLIB) -lbsd -lnetwork `sdl2-config --libs` -lSDL2_image -lSDL2_mixer -lz -lGL
endif
endif
ifeq ($(PLATFORM),LINUX)
@@ -140,8 +142,8 @@ SERVER_INCLUDES= -DSTANDALONE $(INCLUDES) -Iinclude
SERVER_LIBS= -mwindows $(STD_LIBS) -L$(WINBIN) -L$(WINLIB) -lzlib1 -lenet -lws2_32 -lwinmm
MASTER_LIBS= $(STD_LIBS) -L$(WINBIN) -L$(WINLIB) -lzlib1 -lenet -lws2_32 -lwinmm
else
-SERVER_INCLUDES= -DSTANDALONE $(INCLUDES)
-SERVER_LIBS= -Lenet -lenet -lz
+SERVER_INCLUDES= -DSTANDALONE $(INCLUDES) -I$(INCLUDEDIR)
+SERVER_LIBS= -Lenet -lenet -lbsd -lnetwork -lz -L$(USRLIB)
MASTER_LIBS= $(SERVER_LIBS)
endif
SERVER_OBJS= \
diff --git a/src/engine/main.cpp b/src/engine/main.cpp
index 95e494d..0e23b9b 100644
--- a/src/engine/main.cpp
+++ b/src/engine/main.cpp
@@ -6,6 +6,11 @@
#include "SDL_syswm.h"
#endif
+#ifdef __HAIKU__
+#include <FindDirectory.h>
+#include <fs_info.h>
+#endif
+
extern void cleargamma();
void cleanup()
@@ -1184,6 +1189,15 @@ int main(int argc, char **argv)
initing = INIT_RESET;
// set home dir first
for(int i = 1; i<argc; i++) if(argv[i][0]=='-' && argv[i][1] == 'q') { sethomedir(&argv[i][2]); break; }
+ #ifdef __HAIKU__
+ if(!homedir[0])
+ {
+ char buffer[B_PATH_NAME_LENGTH+10];
+ find_directory(B_USER_SETTINGS_DIRECTORY, dev_for_path("/boot"), false, buffer, B_PATH_NAME_LENGTH);
+ strcat(buffer, "/sauerbraten");
+ sethomedir(buffer);
+ }
+ #endif
// set log after home dir, but before anything else
for(int i = 1; i<argc; i++) if(argv[i][0]=='-' && argv[i][1] == 'g')
{
--
2.48.1

View File

@@ -0,0 +1,64 @@
SUMMARY="Free multiplayer & singleplayer first person shooter based on the Cube 2 engine"
DESCRIPTION="Cube 2: Sauerbraten is a free multiplayer & singleplayer first person shooter, the successor of the Cube FPS.
Much like the original Cube, the aim of this game is fun, old school deathmatch gameplay and also \
to allow map/geometry editing to be done cooperatively in-game."
HOMEPAGE="http://sauerbraten.org/"
COPYRIGHT="2020 Cube 2: Sauerbraten team"
LICENSE="Zlib"
REVISION="1"
SOURCE_URI="https://sourceforge.net/projects/sauerbraten/files/sauerbraten/2020_11_29/sauerbraten_2020_12_29_linux.tar.bz2"
CHECKSUM_SHA256="cdba7c4a47cefd30d0afdd6a912199a1384319cf1619923cb7189e72e468be70"
SOURCE_DIR="sauerbraten"
PATCHES="sauerbraten-$portVersion.patchset"
ADDITIONAL_FILES="sauerbraten.rdef"
ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"
PROVIDES="
sauerbraten$secondaryArchSuffix = $portVersion
app:sauer_client
app:sauer_server
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libgl$secondaryArchSuffix
lib:libSDL2_2.0$secondaryArchSuffix
lib:libSDL2_image_2.0$secondaryArchSuffix
lib:libSDL2_mixer_2.0$secondaryArchSuffix
lib:libz$secondaryArchSuffix
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
devel:libgl$secondaryArchSuffix
devel:libSDL2$secondaryArchSuffix
devel:libSDL2_image$secondaryArchSuffix
devel:libSDL2_mixer$secondaryArchSuffix
devel:libz$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:gcc$secondaryArchSuffix
cmd:make
"
BUILD()
{
cd src && make $jobArgs
}
INSTALL()
{
# Pack binaries and game data
mkdir -p $appsDir/Sauerbraten
mv -t $appsDir/Sauerbraten src/sauer_client src/sauer_server
cp -rt $appsDir/Sauerbraten server-init.cfg data packages
# Pack docs
mkdir -p $docDir && cp -rt $docDir README.html docs src/readme_source.txt
addResourcesToBinaries \
$portDir/additional-files/sauerbraten.rdef $appsDir/Sauerbraten/sauer_client
addAppDeskbarSymlink $appsDir/Sauerbraten/sauer_client "Cube 2: Sauerbraten"
}