Friday, December 27, 2019

Re: update games/eduke32 for ion fury compatibility

On Fri, Dec 27, 2019 at 08:43:47PM -0800, Ryan Freeman wrote:
> On Sat, Dec 28, 2019 at 03:18:28PM +1100, Jonathan Gray wrote:
> > On Fri, Dec 27, 2019 at 06:21:35PM -0800, Ryan Freeman wrote:
> > > On Sat, Dec 28, 2019 at 01:17:33AM +1100, Jonathan Gray wrote:
> > > > On Tue, Dec 24, 2019 at 08:16:22PM +1100, Jonathan Gray wrote:
> > > > > On Tue, Dec 24, 2019 at 09:22:27AM +0100, Solene Rapenne wrote:
> > > > > > Le Tue, 24 Dec 2019 10:46:41 +1100,
> > > > > > Jonathan Gray <jsg@jsg.id.au> a écrit :
> > > > > >
> > > > > > > On Mon, Dec 23, 2019 at 07:41:32PM +0100, Solene Rapenne wrote:
> > > > > > > > This patch updates eduke32 to last version and enable playing Ion
> > > > > > > > Fury
> > > > > > > >
> > > > > > > > most of the diff comes from the following thread
> > > > > > > > https://marc.info/?l=openbsd-misc&m=156907261602397&w=2
> > > > > > > >
> > > > > > > > tested Ion Fury, works fine on an old T400 (smooth if
> > > > > > > > I disabled sound...) but smooth on a T480, it's really CPU intensive
> > > > > > > >
> > > > > > > > duke32 shareware data still works fine out of the box
> > > > > > >
> > > > > > > This looks mostly fine but why have you dropped base-clang from
> > > > > > > COMPILER?
> > > > > > >
> > > > > >
> > > > > > I forgot to explain why I dropped base-clang, this is because eduke32
> > > > > > fails with this error:
> > > > > >
> > > > > > ===> Building for eduke32-2.0.0.8494
> > > > > > mkdir -p obj/duke3d
> > > > > > c++ -std=gnu++11 -fno-exceptions -fno-rtti -fomit-frame-pointer -fno-strict-aliasing -fno-threadsafe-statics -fjump-tables -fno-stack-protector -O2 -pipe -W -Wall -Wextra -Wpointer-arith -Wno-char-subscripts -Wno-missing-braces -Wwrite-strings -Wuninitialized -Wno-attributes -Wno-strict-overflow -Isource/build/include -Isource/mact/include -Isource/audiolib/include -Isource/glad/include -Isource/voidwrap/include -MP -MMD -funsigned-char -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0 -DNDEBUG -DNOASM -DRENDERTYPESDL=1 -DSTARTUP_WINDOW -DUSE_OPENGL -DPOLYMER -I/usr/local/include -DUSE_LIBVPX -DHAVE_VORBIS -DHAVE_FLAC -DHAVE_XMP -DSDL_TARGET=2 -I/usr/local/include -I/usr/local/include/SDL2 -I/usr/X11R6/include -D_REENTRANT -I/usr/X11R6/include -DHAVE_GTK2 -I/usr/local/include/gtk-2.0 -I/usr/local/lib/gtk-2.0/include -I/usr/local/include/pango-1.0 -I/usr/local/include/gio-unix-2.0 -I/usr/X11R6/include -I/usr/local/include/cairo -I/usr/local/include/atk-1.0 -I/usr/local/include/gdk-pixbuf-2.0 -I/usr/local/include -pthread -I/usr/local/include/fribidi -I/usr/X11R6/include/pixman-1 -I/usr/local/include/libpng16 -I/usr/local/include/harfbuzz -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/X11R6/include/freetype2 -Isource/duke3d/src -c source/duke3d/src/actors.cpp -o obj/duke3d/actors.o
> > > > > > In file included from source/duke3d/src/actors.cpp:25:
> > > > > > In file included from source/duke3d/src/duke3d.h:134:
> > > > > > In file included from source/duke3d/src/game.h:34:
> > > > > > source/duke3d/src/gamevars.h:254:85: error: fallthrough annotation does not directly precede switch label
> > > > > > case GAMEVAR_PERPLAYER: iptr = &var.pValues[vm.playerNum & (MAXPLAYERS-1)]; fallthrough__;
> > > > > > ^
> > > > > > source/build/include/compat.h:267:25: note: expanded from macro 'fallthrough__'
> > > > > > # define fallthrough__ [[fallthrough]]
> > > > > > ^
> > > > > > 1 error generated.
> > > > > > gmake: *** [GNUmakefile:1074: obj/duke3d/actors.o] Error 1
> > > > > > *** Error 2 in . (/home/ports/infrastructure/mk/bsd.port.mk:2890 '/home/ports/pobj/eduke32-2.0.0.8494/.build_done')
> > > > > > *** Error 1 in /usr/ports/games/eduke32 (/home/ports/infrastructure/mk/bsd.port.mk:2556 'all')
> > > > >
> > > > > case GAMEVAR_PERACTOR: iptr = &var.pValues[vm.spriteNum & (MAXSPRITES-1)]; goto jmp;
> > > > > case GAMEVAR_PERPLAYER: iptr = &var.pValues[vm.playerNum & (MAXPLAYERS-1)]; fallthrough__;
> > > > > jmp: default: *iptr = libdivide_s32_do(*iptr, dptr); break;
> > > > >
> > > > > it should be enough to change this to
> > > > >
> > > > > default: jmp: ...
> > > >
> > > > eduke32 rev 8495 and later has this change.
> > > >
> > >
> > > Thanks Jonathan, I built the port with that change cherry-picked, plus base-clang
> > > re-added to the COMPILERS line. I hit this error:
> > >
> > > c++ -std=gnu++11 -fno-exceptions -fno-rtti -fomit-frame-pointer -fno-strict-aliasing -fno-threadsafe-statics -fjump-tables -fno-stack-protector -O2 -pipe -W -Wall -Wextra -Wpointer-arith -Wno-char-subscripts -Wno-missing-braces -Wwrite-strings -Wuninitialized -Wno-attributes -Wno-strict-overflow -Isource/build/include -Isource/mact/include -Isource/audiolib/include -Isource/glad/include -Isource/voidwrap/include -MP -MMD -funsigned-char -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0 -DNDEBUG -DNOASM -DRENDERTYPESDL=1 -DSTARTUP_WINDOW -DUSE_OPENGL -DPOLYMER -I/usr/local/include -DUSE_LIBVPX -DHAVE_VORBIS -DHAVE_FLAC -DHAVE_XMP -DSDL_TARGET=2 -I/usr/local/include -I/usr/local/include/SDL2 -I/usr/X11R6/include -D_REENTRANT -I/usr/X11R6/include -DHAVE_GTK2 -I/usr/local/include/gtk-2.0 -I/usr/local/lib/gtk-2.0/include -I/usr/local/include/pango-1.0 -I/usr/local/include/gio-unix-2.0 -I/usr/X11R6/include -I/usr/local/include/cairo -I/usr/local/include/atk-1.0 -I/usr/local/include/gdk-pixbuf-2.0 -I/usr/local/include -pthread -I/usr/local/include/fribidi -I/usr/X11R6/include/pixman-1 -I/usr/local/include/libpng16 -I/usr/local/include/harfbuzz -I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include -I/usr/X11R6/include/freetype2 -DHAVE_ROUND -DLIBXMP_CORE_PLAYER -DBUILDING_STATIC -Isource/libxmp-lite/include/libxmp-lite -Wno-unused-parameter -Wno-sign-compare -c source/libxmp-lite/src/common.c -o obj/libxmp-lite/common.o
> > > c++: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
> > > source/libxmp-lite/src/common.c:70:55: error: invalid application of 'sizeof' to an incomplete type 'struct xmp_subinstrument'
> > > mod->xxi[i].sub = (struct xmp_subinstrument *)calloc(sizeof (struct xmp_subinstrument), num);
> > > ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~
> > > source/libxmp-lite/src/common.c:70:28: note: forward declaration of 'xmp_subinstrument'
> > > mod->xxi[i].sub = (struct xmp_subinstrument *)calloc(sizeof (struct xmp_subinstrument), num);
> > > ^
> > > 1 error generated.
> > > gmake: *** [GNUmakefile:1074: obj/libxmp-lite/common.o] Error 1
> > > *** Error 2 in . (/usr/ports/infrastructure/mk/bsd.port.mk:2890 '/usr/ports/pobj/eduke32-2.0.0.8494/.build_done')
> > > *** Error 1 in /usr/ports/games/eduke32 (/usr/ports/infrastructure/mk/bsd.port.mk:2556 'all')
> > >
> > >
> > > It seems this is due to me having libxmp installed. Removing it allows the
> > > build to complete. I spent hours trying to figure out a way to make libxmplite
> > > play nice when libxmp package is installed, but the Makefile for eduke32 sure
> > > doesn't make it easy. Most (all?) of the files get built with loops that
> > > share the same dependency arguments as everything else, so finding a way to
> > > remove '-I/usr/local/include' just ends up breaking other stuff.
> > >
> > > Trying to use HAVE_XMP=0 to disable it doesn't work either, as it seems it
> > > is now deep enough in audiolib there is no more off switch for that.
> > >
> > > As of now I am unsure of how to proceed, but I don't think this update can
> > > go in if it breaks dpb...
> >
> > both the local and ports xmp.h headers have
> >
> > #ifndef XMP_H
> > #define XMP_H
> > ...
> >
> > So it is enough to make sure the local xmp.h is first in the include
> > search order.
>
> You're a wizard, Jonathan. =)
>
> I came back to it after cooling off, and some gentle nudging by brynet@.
> I tried to get it to use the ports version of libxmp again.
>
> Well, it worked. At this point I don't know which is preferred, I am ok
> with whatever the ports gods want. Here is a patch that makes it use
> the libxmp package.
>
> -Ryan

Some additional changes are needed to use ports libxmp.

Index: Makefile
===================================================================
RCS file: /cvs/ports/games/eduke32/Makefile,v
retrieving revision 1.22
diff -u -p -r1.22 Makefile
--- Makefile 14 Jul 2019 02:16:51 -0000 1.22
+++ Makefile 28 Dec 2019 05:18:24 -0000
@@ -1,15 +1,14 @@
# $OpenBSD: Makefile,v 1.22 2019/07/14 02:16:51 naddy Exp $

COMMENT = Enhanced Duke Nukem 3D engine
-RDATE = 20171105
-RTAG = 6496
+RDATE = 20191222
+RTAG = 8494
DISTNAME = eduke32_src_${RDATE}-${RTAG}
PKGNAME = eduke32-2.0.0.${RTAG}
-REVISION = 3
EXTRACT_SUFX = .tar.xz
CATEGORIES = games x11

-HOMEPAGE = http://www.eduke32.com/
+HOMEPAGE = https://www.eduke32.com/

MAINTAINER = Ryan Freeman <ryan@slipgate.org>

@@ -21,11 +20,12 @@ BUILD_DEPENDS = archivers/unzip \
graphics/gdk-pixbuf2

WANTLIB += c m ogg pthread vorbis vorbisfile vpx lz4
-WANTLIB += SDL2 SDL2_mixer FLAC execinfo ${COMPILER_LIBCXX}
+WANTLIB += SDL2 SDL2_mixer FLAC execinfo xmp ${COMPILER_LIBCXX}

LIB_DEPENDS = archivers/lz4 \
audio/libvorbis \
audio/flac \
+ audio/libxmp \
devel/sdl2 \
devel/sdl2-mixer \
devel/libexecinfo \
@@ -37,7 +37,7 @@ WANTLIB += gtk-x11-2.0

RUN_DEPENDS = games/duke3ddata

-MASTER_SITES = http://dukeworld.duke4.net/eduke32/synthesis/${RDATE}-${RTAG}/
+MASTER_SITES = https://dukeworld.duke4.net/eduke32/synthesis/${RDATE}-${RTAG}/

COMPILER = base-clang ports-gcc

@@ -47,7 +47,6 @@ MAKE_FLAGS += PRETTY_OUTPUT=0 \
CXX="${CXX}" \
STRIP=true \
PACKAGE_REPOSITORY=1 \
- HAVE_XMP=0 \
NOASM=1
MAKE_FILE = GNUmakefile
USE_GMAKE = Yes
Index: distinfo
===================================================================
RCS file: /cvs/ports/games/eduke32/distinfo,v
retrieving revision 1.4
diff -u -p -r1.4 distinfo
--- distinfo 22 Nov 2017 03:43:46 -0000 1.4
+++ distinfo 28 Dec 2019 03:35:33 -0000
@@ -1,2 +1,2 @@
-SHA256 (eduke32_src_20171105-6496.tar.xz) = 1+MCe1npolXkOvGK6Jtk+THxlaIL9kwoTLKYpdkMPrI=
-SIZE (eduke32_src_20171105-6496.tar.xz) = 14351444
+SHA256 (eduke32_src_20191222-8494.tar.xz) = RaI1M725fVdITdOus9lSZQQspn1R/PfxFpUugWTOcww=
+SIZE (eduke32_src_20191222-8494.tar.xz) = 15951736
Index: patches/patch-Common_mak
===================================================================
RCS file: /cvs/ports/games/eduke32/patches/patch-Common_mak,v
retrieving revision 1.1
diff -u -p -r1.1 patch-Common_mak
--- patches/patch-Common_mak 22 Nov 2017 03:43:46 -0000 1.1
+++ patches/patch-Common_mak 28 Dec 2019 05:11:26 -0000
@@ -3,7 +3,7 @@ $OpenBSD: patch-Common_mak,v 1.1 2017/11
Index: Common.mak
--- Common.mak.orig
+++ Common.mak
-@@ -638,7 +638,7 @@ ifeq (0,$(RELEASE))
+@@ -710,7 +710,7 @@ ifeq (0,$(RELEASE))
F_NO_STACK_PROTECTOR :=
else
ifeq (0,$(CLANG))
@@ -11,4 +11,13 @@ Index: Common.mak
+ #COMMONFLAGS += -funswitch-loops
endif

- ifeq (0,$(DEBUGANYWAY))
+ ifeq (0,$(FORCEDEBUG))
+@@ -882,8 +882,6 @@ else ifeq ($(PLATFORM),DARWIN)
+ LIBDIRS += -L/sw/lib
+ COMPILERFLAGS += -I/sw/include
+ endif
+-else ifeq ($(PLATFORM),BSD)
+- COMPILERFLAGS += -I/usr/local/include
+ else ifeq ($(PLATFORM),WII)
+ COMPILERFLAGS += -I$(PORTLIBS)/include -Iplatform/Wii/include
+ LIBDIRS += -L$(PORTLIBS)/lib -Lplatform/Wii/lib
Index: patches/patch-GNUmakefile
===================================================================
RCS file: /cvs/ports/games/eduke32/patches/patch-GNUmakefile,v
retrieving revision 1.2
diff -u -p -r1.2 patch-GNUmakefile
--- patches/patch-GNUmakefile 17 Jul 2018 07:56:44 -0000 1.2
+++ patches/patch-GNUmakefile 28 Dec 2019 05:11:39 -0000
@@ -3,29 +3,45 @@ $OpenBSD: patch-GNUmakefile,v 1.2 2018/0
Index: GNUmakefile
--- GNUmakefile.orig
+++ GNUmakefile
-@@ -161,7 +161,6 @@ engine_objs := \
- textfont.cpp \
- smalltextfont.cpp \
+@@ -240,7 +240,6 @@ engine_objs := \
+ hightile.cpp \
+ klzw.cpp \
kplib.cpp \
- lz4.c \
- osd.cpp \
- pragmas.cpp \
- scriptfile.cpp \
-@@ -581,7 +580,7 @@ ifeq ($(SUBPLATFORM),LINUX)
+ md4.cpp \
+ mhk.cpp \
+ miniz.c \
+@@ -402,7 +401,7 @@ ifeq ($(RENDERTYPE),SDL)
+ audiolib_objs += driver_sdl.cpp
+ endif
+
+-ifneq (0,$(HAVE_XMP))
++ifeq (0,$(HAVE_XMP))
+ audiolib_cflags += -I$(libxmplite_inc)
+ audiolib_deps += libxmplite
+ endif
+@@ -684,7 +683,7 @@ ifeq ($(SUBPLATFORM),LINUX)
endif

ifeq ($(PLATFORM),BSD)
- LIBS += -lFLAC -lvorbisfile -lvorbis -logg -lexecinfo
-+ LIBS += -lFLAC -lvorbisfile -lvorbis -logg -lexecinfo -llz4
++ LIBS += -lFLAC -lvorbisfile -lvorbis -logg -lexecinfo -llz4 -lxmp
endif

ifeq ($(PLATFORM),DARWIN)
-@@ -755,7 +754,7 @@ endif
+@@ -851,13 +850,14 @@ endif

#### Final setup

--COMPILERFLAGS += -I$(engine_inc) -I$(mact_inc) -I$(audiolib_inc) -I$(enet_inc)
-+COMPILERFLAGS := -I$(engine_inc) -I$(mact_inc) -I$(audiolib_inc) -I$(enet_inc) $(COMPILERFLAGS)
-
+-COMPILERFLAGS += \
++COMPILERFLAGS := \
+ -I$(engine_inc) \
+ -I$(mact_inc) \
+ -I$(audiolib_inc) \
+ -I$(glad_inc) \
+ -I$(voidwrap_inc) \
+ -MP -MMD \
++ $(COMPILERFLAGS)

- ##### Recipes
+ ifneq (0,$(USE_PHYSFS))
+ COMPILERFLAGS += -I$(physfs_inc) -DUSE_PHYSFS
Index: patches/patch-source_audiolib_src_multivoc_cpp
===================================================================
RCS file: patches/patch-source_audiolib_src_multivoc_cpp
diff -N patches/patch-source_audiolib_src_multivoc_cpp
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-source_audiolib_src_multivoc_cpp 28 Dec 2019 05:12:19 -0000
@@ -0,0 +1,15 @@
+$OpenBSD$
+
+Index: source/audiolib/src/multivoc.cpp
+--- source/audiolib/src/multivoc.cpp.orig
++++ source/audiolib/src/multivoc.cpp
+@@ -44,8 +44,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Bos
+ #include "pragmas.h"
+
+ #ifdef HAVE_XMP
+-# define BUILDING_STATIC
+-# include "libxmp-lite/xmp.h"
++# include <xmp.h>
+
+ int MV_XMPInterpolation = XMP_INTERP_SPLINE;
+

No comments:

Post a Comment