commit:     b4b104c86851db0f82fbc371a9e4e3536ed3897d
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Sun Mar  9 22:40:11 2025 +0000
Commit:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
CommitDate: Sun Mar  9 22:43:36 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b4b104c8

games-fps/gzdoom: Version bump to 4.14.1

Closes: https://bugs.gentoo.org/938158
Closes: https://bugs.gentoo.org/949070
Signed-off-by: James Le Cuirot <chewi <AT> gentoo.org>

 games-fps/gzdoom/Manifest                        |   1 +
 games-fps/gzdoom/files/gzdoom-4.14.1-gcc15.patch | 196 +++++++++++++++++++++++
 games-fps/gzdoom/gzdoom-4.14.1.ebuild            | 100 ++++++++++++
 3 files changed, 297 insertions(+)

diff --git a/games-fps/gzdoom/Manifest b/games-fps/gzdoom/Manifest
index 53223b19f78e..6be518120dfc 100644
--- a/games-fps/gzdoom/Manifest
+++ b/games-fps/gzdoom/Manifest
@@ -1 +1,2 @@
 DIST gzdoom-4.12.2.tar.gz 25910359 BLAKE2B 
3f456136cfc161d67451d8bf1f359d748d6f30f4461a3bff4ab6b02fd949e4057dcbee79eae9ebc0566e33d2f1f3f42add18417b1932e3bccf8b4d5cae9b9a38
 SHA512 
1e9f34af0d5bf9f3797e0cfef01f993c0b8a742ba0af53b4b13cbce9ecefa15f22949bdbbba5a09e890a01dc32af81806fcb6fc632e0dc9261494580782a5007
+DIST gzdoom-4.14.1.tar.gz 25970736 BLAKE2B 
49012b47288d6d4ad0806abb6b33ed2a9dbb3fffbf65135b4c37f6c7d48bf7943a81a718ab91b787b07e4d0a42853e2a21c8a3c05693e7979d42bf812a46d864
 SHA512 
43589366d3311ca55e595852c526eeaf24a89decb7a029ddc4363019a61459a8da7d5ca43f1edffe9bfd44189af40fec40351857956d78b57d8db920a1a84a92

diff --git a/games-fps/gzdoom/files/gzdoom-4.14.1-gcc15.patch 
b/games-fps/gzdoom/files/gzdoom-4.14.1-gcc15.patch
new file mode 100644
index 000000000000..249192208f5f
--- /dev/null
+++ b/games-fps/gzdoom/files/gzdoom-4.14.1-gcc15.patch
@@ -0,0 +1,196 @@
+From 71f121fe54b16f1e4b3022825dcda3cddc12e6cb Mon Sep 17 00:00:00 2001
+From: James Le Cuirot <[email protected]>
+Date: Sun, 9 Mar 2025 12:34:44 +0000
+Subject: [PATCH] Fix building with GCC 15
+
+---
+ libraries/ZWidget/include/zwidget/window/window.h | 1 +
+ src/common/utility/r_memory.h                     | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/libraries/ZWidget/include/zwidget/window/window.h 
b/libraries/ZWidget/include/zwidget/window/window.h
+index 0539f773f..4cdb748d8 100644
+--- a/libraries/ZWidget/include/zwidget/window/window.h
++++ b/libraries/ZWidget/include/zwidget/window/window.h
+@@ -1,5 +1,6 @@
+ #pragma once
+ 
++#include <cstdint>
+ #include <memory>
+ #include <string>
+ #include <functional>
+diff --git a/src/common/utility/r_memory.h b/src/common/utility/r_memory.h
+index d9db538ca..41abe0be5 100644
+--- a/src/common/utility/r_memory.h
++++ b/src/common/utility/r_memory.h
+@@ -1,5 +1,6 @@
+ #pragma once
+ 
++#include <cstdint>
+ #include <memory>
+ #include <vector>
+ 
+-- 
+2.48.1
+
+From 4e0e0db076d661695ae4051c06f4a784757e1db3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ricardo=20Lu=C3=ADs=20Vaz=20Silva?= <[email protected]>
+Date: Sun, 9 Mar 2025 16:54:41 -0300
+Subject: [PATCH 1/2] remove K&R C function declaration bullshit from lemon.c
+
+should be enough to fix GCC15 compilation without fucking up size_t/etc
+---
+ tools/lemon/lemon.c | 38 +++++++++++++++++++-------------------
+ 1 file changed, 19 insertions(+), 19 deletions(-)
+
+diff --git a/tools/lemon/lemon.c b/tools/lemon/lemon.c
+index bdc004a17db..e5fd16905a6 100644
+--- a/tools/lemon/lemon.c
++++ b/tools/lemon/lemon.c
+@@ -53,7 +53,7 @@ extern int access(char *path, int mode);
+ #endif
+ 
+ static int showPrecedenceConflict = 0;
+-static void *msort(void *list, void *next, int (*cmp)());
++static void *msort(void *list, void *next, int (*cmp)(void*, void*));
+ 
+ /*
+ ** Compilers are getting increasingly pedantic about type conversions
+@@ -359,7 +359,7 @@ struct symbol **Symbol_arrayof(void);
+ 
+ /* Routines to manage the state table */
+ 
+-int Configcmp(const char *, const char *);
++int Configcmp(void *, void *);
+ struct state *State_new(void);
+ void State_init(void);
+ int State_insert(struct state *, struct config *);
+@@ -403,10 +403,10 @@ static struct action *Action_new(void){
+ ** positive if the first action is less than, equal to, or greater than
+ ** the first
+ */
+-static int actioncmp(ap1,ap2)
+-struct action *ap1;
+-struct action *ap2;
++static int actioncmp(void *_ap1,void *_ap2)
+ {
++  struct action * ap1 = (struct action *)_ap1;
++  struct action * ap2 = (struct action *)_ap2;
+   int rc;
+   rc = ap1->sp->index - ap2->sp->index;
+   if( rc==0 ){
+@@ -1757,9 +1757,9 @@ int main(int argc, char **argv)
+ **   The "next" pointers for elements in the lists a and b are
+ **   changed.
+ */
+-static void *merge(void *a,void *b,int (*cmp)(),size_t offset)
++static void *merge(void *a,void *b,int (*cmp)(void *a, void *b),size_t offset)
+ {
+-  char *ptr, *head;
++  void *ptr, *head;
+ 
+   if( a==0 ){
+     head = b;
+@@ -1805,11 +1805,11 @@ static void *merge(void *a,void *b,int (*cmp)(),size_t 
offset)
+ **   The "next" pointers for elements in list are changed.
+ */
+ #define LISTSIZE 30
+-static void *msort(void *list,void *next,int (*cmp)())
++static void *msort(void *list,void *next,int (*cmp)(void*, void*))
+ {
+   size_t offset;
+-  char *ep;
+-  char *set[LISTSIZE];
++  void *ep;
++  void *set[LISTSIZE];
+   int i;
+   offset = (size_t)next - (size_t)list;
+   for(i=0; i<LISTSIZE; i++) set[i] = 0;
+@@ -2714,9 +2714,7 @@ static void preprocess_input(char *z){
+   }
+ }
+ 
+-int strip_crlf(filebuf, filesize)
+-char *filebuf;
+-int filesize;
++int strip_crlf(char *filebuf, int filesize)
+ {
+       int i, j;
+ 
+@@ -5136,10 +5134,10 @@ struct symbol **Symbol_arrayof()
+ }
+ 
+ /* Compare two configurations */
+-int Configcmp(const char *_a,const char *_b)
++int Configcmp(void *_a,void *_b)
+ {
+-  const struct config *a = (struct config *) _a;
+-  const struct config *b = (struct config *) _b;
++  const struct config *a = (const struct config *) _a;
++  const struct config *b = (const struct config *) _b;
+   int x;
+   x = a->rp->index - b->rp->index;
+   if( x==0 ) x = a->dot - b->dot;
+@@ -5147,8 +5145,10 @@ int Configcmp(const char *_a,const char *_b)
+ }
+ 
+ /* Compare two states */
+-PRIVATE int statecmp(struct config *a, struct config *b)
++PRIVATE int statecmp(void *_a, void *_b)
+ {
++  const struct config *a = (const struct config *) _a;
++  const struct config *b = (const struct config *) _b;
+   int rc;
+   for(rc=0; rc==0 && a && b;  a=a->bp, b=b->bp){
+     rc = a->rp->index - b->rp->index;
+@@ -5377,7 +5377,7 @@ int Configtable_insert(struct config *data)
+   h = ph & (x4a->size-1);
+   np = x4a->ht[h];
+   while( np ){
+-    if( Configcmp((const char *) np->data,(const char *) data)==0 ){
++    if( Configcmp(np->data, data)==0 ){
+       /* An existing entry with the same key is found. */
+       /* Fail because overwrite is not allows. */
+       return 0;
+@@ -5430,7 +5430,7 @@ struct config *Configtable_find(struct config *key)
+   h = confighash(key) & (x4a->size-1);
+   np = x4a->ht[h];
+   while( np ){
+-    if( Configcmp((const char *) np->data,(const char *) key)==0 ) break;
++    if( Configcmp(np->data,key)==0 ) break;
+     np = np->next;
+   }
+   return np ? np->data : 0;
+
+From c9d21a11be721e69b9180b97b203b1fa25324c59 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ricardo=20Lu=C3=ADs=20Vaz=20Silva?= <[email protected]>
+Date: Sun, 9 Mar 2025 16:57:28 -0300
+Subject: [PATCH 2/2] fix non-void forward declarations as well
+
+---
+ tools/lemon/lemon.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/tools/lemon/lemon.c b/tools/lemon/lemon.c
+index e5fd16905a6..45f458d726f 100644
+--- a/tools/lemon/lemon.c
++++ b/tools/lemon/lemon.c
+@@ -72,12 +72,12 @@ static struct action *Action_new(void);
+ static struct action *Action_sort(struct action *);
+ 
+ /********** From the file "build.h" ************************************/
+-void FindRulePrecedences();
+-void FindFirstSets();
+-void FindStates();
+-void FindLinks();
+-void FindFollowSets();
+-void FindActions();
++void FindRulePrecedences(struct lemon *xp);
++void FindFirstSets(struct lemon *lemp);
++void FindStates(struct lemon *lemp);
++void FindLinks(struct lemon *lemp);
++void FindFollowSets(struct lemon *lemp);
++void FindActions(struct lemon *lemp);
+ 
+ /********* From the file "configlist.h" *********************************/
+ void Configlist_init(void);

diff --git a/games-fps/gzdoom/gzdoom-4.14.1.ebuild 
b/games-fps/gzdoom/gzdoom-4.14.1.ebuild
new file mode 100644
index 000000000000..291411d90842
--- /dev/null
+++ b/games-fps/gzdoom/gzdoom-4.14.1.ebuild
@@ -0,0 +1,100 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake desktop xdg flag-o-matic
+
+DESCRIPTION="A modder-friendly OpenGL source port based on the DOOM engine"
+HOMEPAGE="https://zdoom.org";
+SRC_URI="https://github.com/coelckers/${PN}/archive/g${PV}.tar.gz -> 
${P}.tar.gz"
+S="${WORKDIR}/${PN}-g${PV}"
+
+LICENSE="Apache-2.0 BSD BZIP2 GPL-3 LGPL-2.1+ LGPL-3 MIT
+       non-free? ( Activision ChexQuest3 DOOM-COLLECTORS-EDITION freedist 
WidePix )"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64"
+IUSE="debug gles2 gtk +non-free openmp +swr telemetry vulkan"
+
+DEPEND="
+       app-arch/bzip2
+       media-libs/libjpeg-turbo:0=
+       media-libs/libsdl2[gles2?,opengl,vulkan?]
+       media-libs/libvpx:=
+       media-libs/libwebp
+       media-libs/openal
+       >=media-libs/zmusic-1.1.14
+       sys-libs/zlib
+       gtk? ( x11-libs/gtk+:3 )"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-4.7.1-Introduce-the-BUILD_NONFREE-option.patch
+       "${FILESDIR}"/${P}-gcc15.patch
+)
+
+src_prepare() {
+       rm -rf docs/licenses || die
+       rm -rf libraries/{bzip2,jpeg,zlib} || die
+       if ! use non-free ; then
+               rm -rf wadsrc_bm wadsrc_extra wadsrc_widepix || die
+       fi
+
+       {
+               echo "// 0"
+               echo "// The above line prevents UpdateRevision.cmake from 
replacing this file."
+               echo "// This file was generated by the Gentoo ebuild."
+               echo
+               echo "#define GIT_DESCRIPTION \"g${PV}\""
+               echo "#define GIT_HASH \"0\""
+               echo "#define GIT_TIME \"\""
+       } > "${S}/src/gitinfo.h" || die
+
+       cmake_src_prepare
+}
+
+src_configure() {
+       # https://bugs.gentoo.org/858749
+       filter-lto
+       append-flags -fno-strict-aliasing
+
+       local mycmakeargs=(
+               -DBUILD_SHARED_LIBS=OFF
+               -DINSTALL_DOCS_PATH="${EPREFIX}/usr/share/doc/${PF}"
+               -DINSTALL_PK3_PATH="${EPREFIX}/usr/share/doom"
+               -DINSTALL_SOUNDFONT_PATH="${EPREFIX}/usr/share/doom"
+               -DDYN_OPENAL=OFF
+               -DNO_GTK="$(usex !gtk)"
+               -DNO_OPENAL=OFF
+               -DHAVE_VULKAN="$(usex vulkan)"
+               -DHAVE_GLES2="$(usex gles2)"
+               -DNO_OPENMP="$(usex !openmp)"
+               -DZDOOM_ENABLE_SWR="$(usex swr)"
+               -DBUILD_NONFREE="$(usex non-free)"
+       )
+
+       use debug || append-cppflags -DNDEBUG
+       use telemetry || append-cppflags -DNO_SEND_STATS
+
+       cmake_src_configure
+}
+
+src_install() {
+       newicon src/posix/zdoom.xpm "${PN}.xpm"
+       make_desktop_entry "${PN}" "GZDoom" "${PN}" "Game;ActionGame"
+       cmake_src_install
+}
+
+pkg_postinst() {
+       xdg_pkg_postinst
+
+       if ! use non-free ; then
+               ewarn
+               ewarn "GZDoom installed without non-free components."
+               ewarn "Note: The non-free game_support.pk3 file is needed to 
play"
+               ewarn "      games natively supported by GZDoom."
+               ewarn "A list of games natively supported by GZDoom is 
available"
+               ewarn "on the ZDoom wiki: https://zdoom.org/wiki/IWAD";
+               ewarn
+       fi
+}

Reply via email to