forked from SerenityOS/serenity
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
GemRB is an open-source implementation of the Infinity engine by Bioware, used in some of their classic role-playing games.
- Loading branch information
1 parent
b789deb
commit 9be9bf3
Showing
7 changed files
with
183 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
#!/usr/bin/env -S bash ../.port_include.sh | ||
port='gemrb' | ||
version='0.9.1' | ||
useconfigure='true' | ||
files="https://github.com/gemrb/gemrb/archive/refs/tags/v${version}.tar.gz gemrb-${version}.tar.gz 6e5dbcf7398d5566751f434b0d4647196bfbe9a813e3b65ad6a4ee2f1bbfb9ba" | ||
auth_type='sha256' | ||
depends=( | ||
'freetype' | ||
'libiconv' | ||
'python3' | ||
'SDL2' | ||
'SDL2_mixer' | ||
'zlib' | ||
) | ||
configopts=( | ||
"-DCMAKE_TOOLCHAIN_FILE=${SERENITY_BUILD_DIR}/CMakeToolchain.txt" | ||
"-DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr/local/" | ||
'-DCMAKE_BUILD_TYPE=Release' | ||
'-DDISABLE_WERROR=1' | ||
'-DSTATIC_LINK=ON' | ||
'-DSDL_BACKEND=SDL2' | ||
) | ||
icon_file='artwork/gemrb-logo.ico' | ||
launcher_name='GemRB' | ||
launcher_category='Games' | ||
launcher_command='/usr/local/bin/gemrb' | ||
|
||
configure() { | ||
mkdir -p "${PORT_BUILD_DIR}/gemrb-${version}-build" | ||
cd "${PORT_BUILD_DIR}/gemrb-${version}-build" | ||
cmake -G Ninja "${configopts[@]}" "${PORT_BUILD_DIR}/gemrb-${version}" | ||
} | ||
|
||
build() { | ||
ninja -C "${PORT_BUILD_DIR}/gemrb-${version}-build" | ||
} | ||
|
||
install() { | ||
ninja -C "${PORT_BUILD_DIR}/gemrb-${version}-build" install | ||
} |
30 changes: 30 additions & 0 deletions
30
Ports/gemrb/patches/0001-Hard-code-some-paths-for-runtime-purposes.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: =?UTF-8?q?Julian=20Offenh=C3=A4user?= <[email protected]> | ||
Date: Sat, 11 Feb 2023 00:05:55 +0100 | ||
Subject: [PATCH] Hard-code some paths for runtime purposes | ||
|
||
GemRB uses the paths where its libraries and data are copied to during | ||
installation at runtime by generating a header. This does not work for | ||
us, as our paths change from compilation to runtime. The easiest fix for | ||
this is to hard-code these paths in the header file. | ||
--- | ||
cmake/cmake_config.h.in | 6 +++--- | ||
1 file changed, 3 insertions(+), 3 deletions(-) | ||
|
||
diff --git a/cmake/cmake_config.h.in b/cmake/cmake_config.h.in | ||
index 17584b33da6e9cc610d8be7d1a4f28b8b587844a..02a6214f4215723eb4c90b65f67aea6d508be193 100644 | ||
--- a/cmake/cmake_config.h.in | ||
+++ b/cmake/cmake_config.h.in | ||
@@ -10,9 +10,9 @@ | ||
#cmakedefine HAVE_MEMALIGN 1 | ||
#cmakedefine HAVE_ALIGNED_MALLOC 1 | ||
#cmakedefine HAVE_POSIX_MEMALIGN 1 | ||
-#cmakedefine PLUGIN_DIR "${PLUGIN_DIR}" | ||
-#cmakedefine DATA_DIR "${DATA_DIR}" | ||
-#cmakedefine SYSCONF_DIR "${SYSCONF_DIR}" | ||
+#cmakedefine PLUGIN_DIR "/usr/local/lib/gemrb/plugins/" | ||
+#cmakedefine DATA_DIR "/usr/local/share/gemrb/" | ||
+#cmakedefine SYSCONF_DIR "/usr/local/etc/gemrb/" | ||
#cmakedefine NO_COLOR ${NOCOLOR} | ||
#cmakedefine OPENGL_BACKEND ${OPENGL_BACKEND} | ||
#cmakedefine NOFPSLIMIT ${NOFPSLIMIT} |
22 changes: 22 additions & 0 deletions
22
Ports/gemrb/patches/0002-Create-SDL2-renderer-as-unaccelerated.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: =?UTF-8?q?Julian=20Offenh=C3=A4user?= <[email protected]> | ||
Date: Sat, 11 Feb 2023 00:34:13 +0100 | ||
Subject: [PATCH] Create SDL2 renderer as unaccelerated | ||
|
||
--- | ||
gemrb/plugins/SDLVideo/SDL20Video.cpp | 2 +- | ||
1 file changed, 1 insertion(+), 1 deletion(-) | ||
|
||
diff --git a/gemrb/plugins/SDLVideo/SDL20Video.cpp b/gemrb/plugins/SDLVideo/SDL20Video.cpp | ||
index 36dc17caffc89bed2610d26d19e97290905bcf20..158ee2fe5eb1b396c1a63b1e7bc898bd1ae224fc 100644 | ||
--- a/gemrb/plugins/SDLVideo/SDL20Video.cpp | ||
+++ b/gemrb/plugins/SDLVideo/SDL20Video.cpp | ||
@@ -139,7 +139,7 @@ int SDL20VideoDriver::CreateSDLDisplay(const char* title) | ||
SetWindowIcon(window); | ||
#endif | ||
|
||
- renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_TARGETTEXTURE | SDL_RENDERER_ACCELERATED); | ||
+ renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_TARGETTEXTURE); | ||
SDL_RendererInfo info; | ||
SDL_GetRendererInfo(renderer, &info); | ||
Log(DEBUG, "SDL20Video", "Renderer: {}", info.name); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: =?UTF-8?q?Julian=20Offenh=C3=A4user?= <[email protected]> | ||
Date: Sat, 11 Feb 2023 00:52:51 +0100 | ||
Subject: [PATCH] Get rid of swscanf() usage | ||
|
||
This function is currently not implemented in our LibC. | ||
--- | ||
gemrb/core/GUI/TextSystem/GemMarkup.cpp | 14 +++++++++++++- | ||
1 file changed, 13 insertions(+), 1 deletion(-) | ||
|
||
diff --git a/gemrb/core/GUI/TextSystem/GemMarkup.cpp b/gemrb/core/GUI/TextSystem/GemMarkup.cpp | ||
index f0f604ccb0c3d37098976f0e05371fb4a1988a67..2741aa6cd6b27961ac9bcd11992cb6cef4fa2a9f 100644 | ||
--- a/gemrb/core/GUI/TextSystem/GemMarkup.cpp | ||
+++ b/gemrb/core/GUI/TextSystem/GemMarkup.cpp | ||
@@ -25,7 +25,19 @@ namespace GemRB { | ||
static Color ParseColor(const String& colorString) | ||
{ | ||
Color color = ColorWhite; | ||
- swscanf(colorString.c_str(), L"%02hhx%02hhx%02hhx%02hhx", &color.r, &color.g, &color.b, &color.a); | ||
+ | ||
+ auto h2i = [](wchar_t c) -> int { | ||
+ if (c >= '0' && c <= '9') return c - '0'; | ||
+ else if (c >= 'a' && c <='f') return c - 'a' + 10; | ||
+ else if (c >= 'A' && c <='F') return c - 'A' + 10; | ||
+ return 0; | ||
+ }; | ||
+ | ||
+ color.r = (h2i(colorString[0]) << 4) | h2i(colorString[1]); | ||
+ color.g = (h2i(colorString[2]) << 4) | h2i(colorString[3]); | ||
+ color.b = (h2i(colorString[4]) << 4) | h2i(colorString[5]); | ||
+ color.a = (h2i(colorString[6]) << 4) | h2i(colorString[7]); | ||
+ | ||
return color; | ||
} | ||
|
25 changes: 25 additions & 0 deletions
25
Ports/gemrb/patches/0004-Be-a-bit-more-lenient-with-matching-savegame-directo.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: =?UTF-8?q?Julian=20Offenh=C3=A4user?= <[email protected]> | ||
Date: Sat, 11 Feb 2023 02:30:10 +0100 | ||
Subject: [PATCH] Be a bit more lenient with matching savegame directories | ||
|
||
Our sscanf() implementation failed to match this case. Making it more | ||
inclusive should be fine, since invalid savegame directories probably | ||
won't contain the right files anyway. | ||
--- | ||
gemrb/core/SaveGameIterator.h | 2 +- | ||
1 file changed, 1 insertion(+), 1 deletion(-) | ||
|
||
diff --git a/gemrb/core/SaveGameIterator.h b/gemrb/core/SaveGameIterator.h | ||
index 4d1550eddcd2f656205170131a04f570570430f9..e93b171123c68e41e607518e6c4ffc93e455f92d 100644 | ||
--- a/gemrb/core/SaveGameIterator.h | ||
+++ b/gemrb/core/SaveGameIterator.h | ||
@@ -29,7 +29,7 @@ | ||
|
||
namespace GemRB { | ||
|
||
-#define SAVEGAME_DIRECTORY_MATCHER "%d - %[A-Za-z0-9- _+*#%&|()=!?':;]" | ||
+#define SAVEGAME_DIRECTORY_MATCHER "%d - %s" | ||
|
||
class GEM_EXPORT SaveGameIterator { | ||
private: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
# Patches for gemrb on SerenityOS | ||
|
||
## `0001-Hard-code-some-paths-for-runtime-purposes.patch` | ||
|
||
Hard-code some paths for runtime purposes | ||
|
||
GemRB uses the paths where its libraries and data are copied to during | ||
installation at runtime by generating a header. This does not work for | ||
us, as our paths change from compilation to runtime. The easiest fix for | ||
this is to hard-code these paths in the header file. | ||
|
||
## `0002-Create-SDL2-renderer-as-unaccelerated.patch` | ||
|
||
Create SDL2 renderer as unaccelerated | ||
|
||
|
||
## `0003-Get-rid-of-swscanf-usage.patch` | ||
|
||
Get rid of swscanf() usage | ||
|
||
This function is currently not implemented in our LibC. | ||
|
||
## `0004-Be-a-bit-more-lenient-with-matching-savegame-directo.patch` | ||
|
||
Be a bit more lenient with matching savegame directories | ||
|
||
Our sscanf() implementation failed to match this case. Making it more | ||
inclusive should be fine, since invalid savegame directories probably | ||
won't contain the right files anyway. | ||
|