Commander Genius port (#12327)

This commit is contained in:
Peppersawce
2025-05-07 07:30:13 +00:00
committed by GitHub
parent b2955c9976
commit 1c4a06d70a
3 changed files with 325 additions and 0 deletions

View File

@@ -0,0 +1,114 @@
resource app_flags B_SINGLE_LAUNCH;
resource app_version {
major = @MAJOR@,
middle = @MIDDLE@,
minor = @MINOR@,
variety = B_APPV_FINAL,
internal = 0,
short_info = "Commander Genius",
long_info = "@LONG_INFO@"
};
resource app_signature "application/x-vnd.commandergenius";
resource vector_icon {
$"6E63696603020006023D6D5C3CCCE3BCCE183D6BE346505E4BA7A3003B63FEFF"
$"3785BE0500038EDFFF0B0205CC79BFBCCC79BFBCCC79C6C4BFBCCC79C6C4CC79"
$"B8B3CC7920BFBC20C6C420B8B3BFBC20B8B320C6C420CC79BFBCCC79B8B3CC79"
$"BFBC0223C2A9BD1CC2A9BD1CC261BD1DC25CBD76C25BBD47C250BFBDC235C446"
$"C241C202C23FC49CC2BFC4D4C27EC4C8C31FC4E8C3DBC50EC37DC4FCC442C50E"
$"C46AC49CC465C4DFC46BC459C46DC3D6C46CC419C45CC3A5C40AC359C441C366"
$"C3BAC347C319C323C36AC336C2CEC314C2A9C27BC2A9C2C2C2AFC196C2BDBFCE"
$"C2B7C0B1C2BDBF8DC353BF34C30BBF33C3CDBF4CC4C1BF78C447BF63C4C1BF71"
$"C4C1BF62C4C1BF69C4C2BF62C4C4BF62C4C3BF62C4C4BF69C4C4BF7AC4C4BF72"
$"C611BFB7C8ACC033C75FBFF4C94AC05AC94AC114C94AC0C0C937C3B1C913C8E8"
$"C925C64CC913C90AC8F4C94CC909C92FC8F5C94BC8F8C949C8F7C94AC975C8FF"
$"CA71C86AC9F3C8B5CAEEC86ACB1BC7CACB1BC819CB2EC525CB52BFDBCB40C281"
$"CB51BFD65DBFC9CB4FBFD0CB40BF69CAB6BF18CB05BF36CAB5BF17CAB4BF16CA"
$"B5BF16C8DABEBFC529BE10C702BE67C528BE10C526BE10C527BE10C526BE10C5"
$"25BE10C526BE10C4F4BE10C4D0BE3CC4DABE1CC4A7BE4FC458BE77C480BE64C4"
$"5ABE1EC45EBD6CC45CBDC5C3D2BD51C2B9BD1CC344BD36C2B3BD1BC2A9BD1CC2"
$"ADBD1BC2A9BD1C021AC01CB6F6C01CB6F6C01CB6F7C01AB6F7C01BB6F7BFF3B6"
$"FEBFC3B722BFD8B70EBF33B76ABE13B7FBBEA4B7B3BD93B82FBD8CB8ACBD93B8"
$"6DBD8ABD39BD85C655BD87C1C7BD85C663BD89C67BBD86C66EBD89C676BD89C6"
$"6EBD89C672BD8BC1E1BD8FB8C6BD8DBD53BD90B874BE17B814BDB0B823BE96B8"
$"29BF94B854BF15B840BF94B84DBF94B83BBF94B843BF95B83BBF96B83BBF95B8"
$"3BBF96B845BF96B855BF96B84DC2A4B8DAC8C1B9E1C5B4B95EC949B9F4C98EBA"
$"EFC999BA85C988BBD2C97BBD9AC982BCB6C97ABDB5C963BDE7C970BDCFC9E3BD"
$"A1CAE4BD1ACA64BD5DCAE9BD17CAF5BD11CAEEBD13CB5639CB99BC5ECB95BCA9"
$"CB98BB85CB97B9D2CB98BAABCBA0B968CACAB8C4CB50B8D7C73BB82BC01FB6F6"
$"C3ACB790C01EB6F7C01EB6F7C01EB6F7C01DB6F7C01CB6F6C01DB6F7C01CB6F6"
$"0223C2A9BD1CC2A9BD1CC261BD1DC25CBD76C25BBD47C250BFBDC235C446C241"
$"C202C23FC49CC2BFC4D4C27EC4C8C31FC4E8C3DBC50EC37DC4FCC442C50EC46A"
$"C49CC465C4DFC46BC459C46DC3D6C46CC419C45CC3A5C40AC359C441C366C3BA"
$"C347C319C323C36AC336C2CEC314C2A9C27BC2A9C2C2C2AFC196C2BDBFCEC2B7"
$"C0B1C2BDBF8DC353BF34C30BBF33C3CDBF4CC4C1BF78C447BF63C4C1BF71C4C1"
$"BF62C4C1BF69C4C2BF62C4C4BF62C4C3BF62C4C4BF69C4C4BF7AC4C4BF72C611"
$"BFB7C8ACC033C75FBFF4C94AC05AC94AC114C94AC0C0C937C3B1C913C8E8C925"
$"C64CC913C90AC8F4C94CC909C92FC8F5C94BC8F8C949C8F7C94AC975C8FFCA71"
$"C86AC9F3C8B5CAEEC86ACB1BC7CACB1BC819CB2EC525CB52BFDBCB40C281CB51"
$"BFD65DBFC9CB4FBFD0CB40BF69CAB6BF18CB05BF36CAB5BF17CAB4BF16CAB5BF"
$"16C8DABEBFC529BE10C702BE67C528BE10C526BE10C527BE10C526BE10C525BE"
$"10C526BE10C4F4BE10C4D0BE3CC4DABE1CC4A7BE4FC458BE77C480BE64C45ABE"
$"1EC45EBD6CC45CBDC5C3D2BD51C2B9BD1CC344BD36C2B3BD1BC2A9BD1CC2ADBD"
$"1BC2A9BD1C021AC01CB6F6C01CB6F6C01CB6F7C01AB6F7C01BB6F7BFF3B6FEBF"
$"C3B722BFD8B70EBF33B76ABE13B7FBBEA4B7B3BD93B82FBD8CB8ACBD93B86DBD"
$"8ABD39BD85C655BD87C1C7BD85C663BD89C67BBD86C66EBD89C676BD89C66EBD"
$"89C672BD8BC1E1BD8FB8C6BD8DBD53BD90B874BE17B814BDB0B823BE96B829BF"
$"94B854BF15B840BF94B84DBF94B83BBF94B843BF95B83BBF96B83BBF95B83BBF"
$"96B845BF96B855BF96B84DC2A4B8DAC8C1B9E1C5B4B95EC949B9F4C98EBAEFC9"
$"99BA85C988BBD2C97BBD9AC982BCB6C97ABDB5C963BDE7C970BDCFC9E3BDA1CA"
$"E4BD1ACA64BD5DCAE9BD17CAF5BD11CAEEBD13CB5639CB99BC5ECB95BCA9CB98"
$"BB85CB97B9D2CB98BAABCBA0B968CACAB8C4CB50B8D7C73BB82BC01FB6F6C3AC"
$"B790C01EB6F7C01EB6F7C01EB6F7C01DB6F7C01CB6F6C01DB6F7C01CB6F60219"
$"BE17B862BE17B862C1A4B8FBC8C1BA2FC534B995C949BA42C98EBB3DC999BAD2"
$"C988BC20C97BBDE8C982BD03C974BE52C851BE7EC909BEA9C673BE22C2B9BD68"
$"C496BDC5C262BD66C25CBDC4C25BBD92C250C00AC235C495C241C250C23FC4EA"
$"C2BFC522C27EC515C31FC536C3DBC55CC37DC549C442C55CC46AC4EAC465C52E"
$"C46BC4A7C46CC424C46CC466C45CC3F3C40AC3A7C441C3B4C3BAC396C319C370"
$"C36AC383C2CEC363C2A9C2CAC2A9C310C2AFC1E5C2BDC01BC2B7C100C2BDBFDA"
$"C353BF82C30BBF80C51BBFD8C8ACC081C6E4C02BC94AC0A8C94AC162C94AC10E"
$"C937C3FFC913C936C925C69AC913C993C81DC9CEC8D5C9F3C4C2C912BE0EC79A"
$"C168C855BDBCC785BD89C6BCBD86C720BD8BC22FBD8FB913BD8DBDA1BD90B8C1"
$"BE17B862BDB0B872BE17B8620219BE17B862BE17B862C1A4B8FBC8C1BA2FC534"
$"B995C949BA42C98EBB3DC999BAD2C988BC20C97BBDE8C982BD03C974BE52C851"
$"BE7EC909BEA9C673BE22C2B9BD68C496BDC5C262BD66C25CBDC4C25BBD92C250"
$"C00AC235C495C241C250C23FC4EAC2BFC522C27EC515C31FC536C3DBC55CC37D"
$"C549C442C55CC46AC4EAC465C52EC46BC4A7C46CC424C46CC466C45CC3F3C40A"
$"C3A7C441C3B4C3BAC396C319C370C36AC383C2CEC363C2A9C2CAC2A9C310C2AF"
$"C1E5C2BDC01BC2B7C100C2BDBFDAC353BF82C30BBF80C51BBFD8C8ACC081C6E4"
$"C02BC94AC0A8C94AC162C94AC10EC937C3FFC913C936C925C69AC913C993C81D"
$"C9CEC8D5C9F3C4C2C912BE0EC79AC168C855BDBCC785BD89C6BCBD86C720BD8B"
$"C22FBD8FB913BD8DBDA1BD90B8C1BE17B862BDB0B872BE17B8620213B899BD2A"
$"B899BD2AB869BD2AB847BD9BB847BD41B85440B86DC40CB861C1E7B873C454B8"
$"C6C483B895C472BA91C4E4BE26C5A5BC5CC544BEBCC5CCBEF1C682BEEBC6323E"
$"C750BEFBC8ECBEF755BEF5C932BE9AC986BECCC969BE9AC988BE9AC98CBE9AC9"
$"8ABF5EC925C0C7C869C057C8E5C10FC861C169C7BDC161C81BC165C6EFC15D4E"
$"C161C62144C505C085C478C125C4A0BE9AC419BAC549BCB1C3B8BAA8C34EBA7C"
$"C324BA8EC33EBA79C31CBA76C309BA78C312BA6BC12DBA54BD78BA5FBF54B9DF"
$"BD63B8F4BD35B96ABD4DB8D4BD32B899BD2AB8B3BD29B899BD2A0210B675B720"
$"B675B720B61DB71AB50AB71CB58AB6F0B4E1B730B491B759B4BAB744B43BB78C"
$"B3462DB3ABB7CCB368B82FB3ABB834B389B832B3C0B82CB3F3B823B3D8B826B7"
$"5FB8BABE35B9E9BACAB952BEB1BA01BF08BAD4BEF5BA51BF05BBB4BF01BD71BF"
$"03BC91BEFCBDA9BED5BDEDBEEBBDD13FBDB6C063BD49BFDEBD80C0A1BD3AC0DD"
$"BD02C0C5BD20C125BCEEC170BC4DC162BCC3C171BB6EC176B9B3C173BA91C162"
$"B92EC095B8C7C11AB8DFBD35B83AB675B720B9D5B7ADB675B7200211B3F3B823"
$"B3F3B823B396B82BB34EB8A9B356B85AB37EBD2EB3E0C637B3B0C1B3B3DFC6BE"
$"B49EC75BB418C726B7D4C81ABE40C998BB09C8D8BE89C9ABBEFBC8ECBEF3C95B"
$"BEF755BEF1C6823EC750BEEBC632BE26C5A5BEBCC5CCBC5CC544B8C6C483BA91"
$"C4E4B895C472B86DC40CB873C454B861C1E7B847BD9BB85440B847BD0BB8F4BD"
$"35B89FBD29BAB3BD8BBE2DBE33BC6FBDDEBE8DBE2ABF01BD71BEF2BE12BF03BC"
$"91BF08BAD4BF05BBB4BEF5BA51BE35B9E9BEB1BA01BACAB952B3F3B823B75FB8"
$"BAB3F3B8230211B3F3B823B3F3B823B396B82BB34EB8A9B356B85AB37EBD2EB3"
$"E0C637B3B0C1B3B3DFC6BEB49EC75BB418C726B7D4C81ABE40C998BB09C8D8BE"
$"89C9ABBEFBC8ECBEF3C95BBEF755BEF1C6823EC750BEEBC632BE26C5A5BEBCC5"
$"CCBC5CC544B8C6C483BA91C4E4B895C472B86DC40CB873C454B861C1E7B847BD"
$"9BB85440B847BD0BB8F4BD35B89FBD29BAB3BD8BBE2DBE33BC6FBDDEBE8DBE2A"
$"BF01BD71BEF2BE12BF03BC91BF08BAD4BF05BBB4BEF5BA51BE35B9E9BEB1BA01"
$"BACAB952B3F3B823B75FB8BAB3F3B823080A000100000A01020102000A010203"
$"041001178102040A020105000A0101061001178100040A01020708000A020109"
$"000A01010A100117810004"
};

View File

@@ -0,0 +1,105 @@
SUMMARY="Open Source interpreter for Commander Keen and Cosmo's Cosmic Adventure"
DESCRIPTION="Commander Genius is an open-source interpreter for the Commander Keen (1-6, Dreams) and Cosmo's \
Cosmic Adventure which allows you to play the original episodes and some of the mods made for them.
All of the original data files are required to do so, however, we conveniently provide an online \
store where you can get some of the games, including Keen 1, 4, Dreams and Cosmos 1 for your enjoyment.
There are also mods that can be downloaded directly.
Of course you still have the option to use your old original DOS versions of the game.
Commander Genius will look for games in 2 folders:
* ~/config/settings/CommanderGenius/games (default)
* ~/config/non-packaged/data/commandergenius/games"
HOMEPAGE="https://clonekeenplus.sourceforge.io/"
COPYRIGHT="2008-2025 Gerstrong"
LICENSE="GNU GPL v2"
REVISION="1"
SOURCE_URI="https://gitlab.com/Dringgstein/Commander-Genius/-/archive/v$portVersion/Commander-Genius-v$portVersion.tar.gz"
CHECKSUM_SHA256="028bb12e6e35df7e299ad89a0e3b3c5ef1a5302bf658fa3dd03b6b92e3a06f65"
SOURCE_DIR="Commander-Genius-v$portVersion"
srcGitRev="8497b5696c92b13ede4f5ad01dfb577b208404cb"
SOURCE_URI_2="https://gitlab.com/Dringgstein/cosmos/-/archive/$srcGitRev/cosmos-$srcGitRev.tar.gz"
CHECKSUM_SHA256_2="639d1d22df52d35d1d774acabf54cbab9d7494cbb91ef5633ce06717de159557"
SOURCE_DIR_2="cosmos-$srcGitRev"
PATCHES="commandergenius-$portVersion.patchset"
ADDITIONAL_FILES="commandergenius.rdef.in"
ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"
PROVIDES="
commandergenius$secondaryArchSuffix = $portVersion
cmd:CGeniusExe
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libcurl$secondaryArchSuffix
lib:libSDL2_2.0$secondaryArchSuffix
lib:libSDL2_image_2.0$secondaryArchSuffix
lib:libSDL2_mixer_2.0$secondaryArchSuffix
lib:libSDL2_ttf_2.0$secondaryArchSuffix
lib:libz$secondaryArchSuffix
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
devel:libcurl$secondaryArchSuffix
devel:libSDL2_2.0$secondaryArchSuffix
devel:libSDL2_image_2.0$secondaryArchSuffix
devel:libSDL2_mixer_2.0$secondaryArchSuffix
devel:libSDL2_ttf_2.0$secondaryArchSuffix
devel:libz$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:ccache # Optional, to enable ccache during build
cmd:cmake
cmd:gcc$secondaryArchSuffix
cmd:make
"
BUILD()
{
sdldir=$(finddir B_SYSTEM_HEADERS_DIRECTORY)${secondaryArchSubDir}/SDL2
nonpackdatadir=$(finddir B_USER_NONPACKAGED_DATA_DIRECTORY)
# Set up install directories
sed -i \
-e "s|@SHAREDIR@|$nonpackdatadir|g" \
-e "s|@DATADIR@|$dataDir|g" \
-e "s|@APPDIR@|$prefix/bin|g" \
-e "s|@DOCDIR@|$docDir|g" \
$sourceDir/CMakeLists.txt
# Copy Cosmos engine files
mkdir -p $sourceDir/src/engine/cosmos && cp -r $sourceDir2/* $sourceDir/src/engine/cosmos/
cmake -Bbuild -S. -DCMAKE_INSTALL_PREFIX=$prefix \
-DCMAKE_BUILD_TYPE=Release -DBUILD_COSMOS=1 \
-DSDL2_INCLUDE_DIR=$sdldir -DSDL2_MIXER_INCLUDE_DIR=$sdldir \
-DALTERNATE_HOME=$(finddir B_USER_SETTINGS_DIRECTORY) \
-DSYSTEM_DATA_DIR=$nonpackdatadir
make -C build $jobArgs
}
INSTALL()
{
make -C build install
# Remove unneeded files
rm -rf $prefix/share $dataDir/{applications,icons,metainfo}
# Generate the rdef
local MAJOR="`echo "$portVersion" | cut -d. -f1`"
local MIDDLE="`echo "$portVersion" | cut -d. -f2`"
local MINOR="`echo "$portVersion" | cut -d. -f3`"
local LONG_INFO="$SUMMARY"
sed \
-e "s|@MAJOR@|$MAJOR|" \
-e "s|@MIDDLE@|$MIDDLE|" \
-e "s|@MINOR@|$MINOR|" \
-e "s|@LONG_INFO@|$LONG_INFO|" \
$portDir/additional-files/commandergenius.rdef.in > commandergenius.rdef
addResourcesToBinaries commandergenius.rdef $prefix/bin/CGeniusExe
addAppDeskbarSymlink $prefix/bin/CGeniusExe "Commander Genius"
}

View File

@@ -0,0 +1,106 @@
From 1aad32b159007dcbacdc559b3b5e5855f4da7d61 Mon Sep 17 00:00:00 2001
From: Peppersawce <michaelpeppers89@yahoo.it>
Date: Mon, 5 May 2025 14:04:25 +0200
Subject: Haiku build fixes
diff --git a/GsKit/base/interface/CrashHandler.cpp b/GsKit/base/interface/CrashHandler.cpp
index 021c902..7fc91c8 100644
--- a/GsKit/base/interface/CrashHandler.cpp
+++ b/GsKit/base/interface/CrashHandler.cpp
@@ -198,7 +198,7 @@ static signal_def signal_data[] =
{ "SIGILL", SIGILL, "Illegal instruction (ANSI)" },
{ "SIGTRAP", SIGTRAP, "Trace trap (POSIX)" },
{ "SIGABRT", SIGABRT, "Abort (ANSI)" },
- { "SIGIOT", SIGIOT, "IOT trap (4.2 BSD)" },
+ //{ "SIGIOT", SIGIOT, "IOT trap (4.2 BSD)" },
{ "SIGBUS", SIGBUS, "BUS error (4.2 BSD)" },
{ "SIGFPE", SIGFPE, "Floating-point exception (ANSI)" },
{ "SIGKILL", SIGKILL, "Kill, unblockable (POSIX)" },
@@ -222,7 +222,7 @@ static signal_def signal_data[] =
{ "SIGVTALRM", SIGVTALRM, "Virtual alarm clock (4.2 BSD)" },
{ "SIGPROF", SIGPROF, "Profiling alarm clock (4.2 BSD)" },
{ "SIGWINCH", SIGWINCH, "Window size change (4.3 BSD, Sun)" },
- { "SIGIO", SIGIO, "I/O now possible (4.2 BSD)" },
+ //{ "SIGIO", SIGIO, "I/O now possible (4.2 BSD)" },
//{ "SIGPOLL", SIGPOLL, "Pollable event occurred (System V)" },
//{ "SIGPWR", SIGPWR, "Power failure restart (System V)" },
{ "SIGSYS", SIGSYS, "Bad system call" },
diff --git a/GsKit/base/interface/FindFile.cpp b/GsKit/base/interface/FindFile.cpp
index 64fb916..31f88a0 100644
--- a/GsKit/base/interface/FindFile.cpp
+++ b/GsKit/base/interface/FindFile.cpp
@@ -812,7 +812,7 @@ std::string GetHomeDir()
const char* home = "";
return home;
#else
- char* home = getenv("HOME");
+ char* home = getenv("XDG_CONFIG_HOME");
#endif
if(home == nullptr || home[0] == '\0') {
passwd* userinfo = getpwuid(getuid());
diff --git a/src/engine/refkeen/be_cross_fs.cpp b/src/engine/refkeen/be_cross_fs.cpp
index 027b8fa..82b3d90 100644
--- a/src/engine/refkeen/be_cross_fs.cpp
+++ b/src/engine/refkeen/be_cross_fs.cpp
@@ -894,7 +894,7 @@ void BE_Cross_PrepareGameInstallations(void)
/*** Some misc. preparation ***/
#ifdef REFKEEN_PLATFORM_UNIX
#if (defined REFKEEN_VER_KDREAMS_CGA_ALL)
- const char *homedir = getenv("HOME");
+ const char *homedir = getenv("XDG_CONFIG_HOME");
char path[BE_CROSS_PATH_LEN_BOUND];
char *pathEnd = path + sizeof(path);
#endif
diff --git a/version.h b/version.h
index f07d7f2..0f9b8e0 100644
--- a/version.h
+++ b/version.h
@@ -1,7 +1,7 @@
#ifndef CG_VERSION_H
#define CG_VERSION_H
-#define CGVERSION "3.5.1-Release"
-#define CGVERSIONCODE 351000
+#define CGVERSION "3.5.2-Release"
+#define CGVERSIONCODE 352000
#endif
--
2.48.1
From 625560d87412a4617bcb3812a7b9ebc5953e5119 Mon Sep 17 00:00:00 2001
From: Peppersawce <michaelpeppers89@yahoo.it>
Date: Mon, 5 May 2025 14:36:48 +0200
Subject: Edit CMakeLists using sed
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 17160a7..8ac50f9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -11,13 +11,13 @@ SET(APPDIR CGenius)
SET(GAMES_SHAREDIR "${APPDIR}" CACHE PATH "Game data root dir")
SET(DOCDIR ${DATADIR} CACHE PATH "Docs destination")
ELSE(WIN32)
-SET(SHAREDIR "/usr/share" CACHE PATH "System share dir location")
-SET(GAMES_SHAREDIR "${SHAREDIR}/games/" CACHE PATH "Game data root dir")
-SET(DATADIR "${GAMES_SHAREDIR}/commandergenius")
-SET(APPDIR games CACHE PATH "Binary destination")
-SET(DOCDIR ${DATADIR} CACHE PATH "Docs destination")
-SET(ICONDIR "${SHAREDIR}/icons/hicolor" CACHE PATH "Standard icon installation dir")
-SET(DESKTOPFILESDIR "${SHAREDIR}/applications" CACHE PATH "Application installation dir")
+SET(SHAREDIR "@DATADIR@" CACHE PATH "System share dir location")
+SET(GAMES_SHAREDIR "@SHAREDIR@/games" CACHE PATH "Game data root dir")
+SET(DATADIR "@DATADIR@/commandergenius")
+SET(APPDIR @APPDIR@)
+SET(DOCDIR @DOCDIR@)
+SET(ICONDIR "@DATADIR@/icons/hicolor" CACHE PATH "Standard icon installation dir")
+SET(DESKTOPFILESDIR "@DATADIR@/applications" CACHE PATH "Application installation dir")
ENDIF(WIN32)
if (OSXCROSS)
--
2.48.1