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 +}
