Skip to content

Commit

Permalink
gzdoom: add package
Browse files Browse the repository at this point in the history
Add GZDoom package which brings high-res 3D accelerated implementation
of the Doom engine with many extra features.

Signed-off-by: Daniel Golle <[email protected]>
  • Loading branch information
dangowrt committed Nov 9, 2024
1 parent 10a2957 commit d9ffd01
Show file tree
Hide file tree
Showing 7 changed files with 228 additions and 0 deletions.
65 changes: 65 additions & 0 deletions games/gzdoom/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
include $(TOPDIR)/rules.mk

PKG_NAME:=gzdoom
PKG_VERSION:=4.13.1
PKG_RELEASE:=1

PKG_SOURCE:=g$(PKG_VERSION).zip
PKG_SOURCE_URL:=https://github.com/ZDoom/gzdoom/archive/refs/tags/
PKG_HASH:=e584c6436f7ea2c9186324dc75a3f1eebf4302fbdd2f98db13550cff2dd393a3

PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-g$(PKG_VERSION)
HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/$(PKG_NAME)-g$(PKG_VERSION)

PKG_MAINTAINER:=Daniel Golle <[email protected]>
PKG_LICENSE:=BSD-3c
PKG_LICENSE_FILES:=COPYING LICENSE

CMAKE_INSTALL:=1
PKG_BUILD_DEPENDS:=gzdoom/host miniz
HOST_BUILD_DEPENDS:=miniz/host

include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/cmake.mk

CMAKE_OPTIONS += \
-DHAVE_VULKAN=OFF \
-DHAVE_GLES2=ON \
-DNO_OPENAL=ON \
-DFORCE_INTERNAL_BZIP2=ON \
-DSDL2_INCLUDE_DIR="$(STAGING_DIR)/usr/include/SDL2" \
-DIMPORT_EXECUTABLES="$(STAGING_DIR_HOSTPKG)/share/gzdoom/ImportExecutables.cmake"

define Package/gzdoom
SECTION:=games
CATEGORY:=Games
TITLE:=GZDoom
URL:=https://zdoom.org/
DEPENDS:=+alsa-lib +glib2 +libbz2 +libstdcpp +libzmusic +libvpx +libsdl2 +USE_MUSL:musl-fts
endef

define Package/gzdoom/description
ZDoom is a family of enhanced ports of the Doom engine for running on modern
operating systems. Use this port of DOOM on systems with some sort of hardware
3D acceleration support.
endef

define Host/Install
$(INSTALL_DIR) $(STAGING_DIR_HOSTPKG)/share/gzdoom
$(INSTALL_DATA) $(HOST_BUILD_DIR)/ImportExecutables.cmake $(STAGING_DIR_HOSTPKG)/share/gzdoom
endef

define Host/Uninstall
$(RM) $(STAGING_DIR_HOSTPKG)/share/gzdoom/ImportExecutables.cmake
endef

define Package/gzdoom/install
$(INSTALL_DIR) $(1)/usr/share/games
$(CP) $(PKG_INSTALL_DIR)/usr/share/games/* $(1)/usr/share/games
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gzdoom $(1)/usr/bin
endef

$(eval $(call BuildPackage,gzdoom))
$(eval $(call HostBuild))
10 changes: 10 additions & 0 deletions games/gzdoom/patches/0002-fix-musl-fts.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -291,6 +291,7 @@ else()
if ( NOT HAVE_FTS )
include ( FindPkgConfig )
pkg_check_modules( MUSL_FTS musl-fts )
+ string(REPLACE ";" " " MUSL_FTS_LDFLAGS "${MUSL_FTS_LDFLAGS}")
if ( MUSL_FTS_FOUND )
set ( ALL_C_FLAGS "${ALL_C_FLAGS} ${MUSL_FTS_LDFLAGS}" )
else ( MUSL_FTS_FOUND )
12 changes: 12 additions & 0 deletions games/gzdoom/patches/0003-define-cpu_set_t.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
From https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/35711#note_243863
_GNU_SOURCE is needed for cpu_set_t, and affinity disable is needed to work around lack of pthread_attr_setaffinity_np
--- a/libraries/lzma/CMakeLists.txt
+++ b/libraries/lzma/CMakeLists.txt
@@ -1,6 +1,6 @@
make_release_only()

-set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DZ7_PPMD_SUPPORT" )
+set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_GNU_SOURCE -DZ7_PPMD_SUPPORT -DZ7_AFFINITY_DISABLE" )

find_package(Threads)

33 changes: 33 additions & 0 deletions games/gzdoom/patches/100-openwrt-cross-build.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -337,6 +337,7 @@ option(FORCE_INTERNAL_BZIP2 "Use interna
option(FORCE_INTERNAL_ASMJIT "Use internal asmjit" ON)
mark_as_advanced( FORCE_INTERNAL_ASMJIT )

+if( CMAKE_CROSSCOMPILING )
if (HAVE_VULKAN)
add_subdirectory( libraries/ZVulkan )
endif()
@@ -375,6 +376,7 @@ if( ${HAVE_VM_JIT} )
set( ASMJIT_LIBRARY asmjit )
endif()
endif()
+endif()

if( BZIP2_FOUND AND NOT FORCE_INTERNAL_BZIP2 )
message( STATUS "Using system bzip2 library, includes found at ${BZIP2_INCLUDE_DIR}" )
@@ -409,12 +411,14 @@ option( DYN_OPENAL "Dynamically load Ope
add_subdirectory( libraries/lzma )
add_subdirectory( libraries/miniz )
add_subdirectory( tools )
+if( CMAKE_CROSSCOMPILING )
add_subdirectory( wadsrc )
add_subdirectory( wadsrc_bm )
add_subdirectory( wadsrc_lights )
add_subdirectory( wadsrc_extra )
add_subdirectory( wadsrc_widepix )
add_subdirectory( src )
+endif()

if( NOT CMAKE_CROSSCOMPILING )
export(TARGETS ${CROSS_EXPORTS} FILE "${CMAKE_BINARY_DIR}/ImportExecutables.cmake" )
18 changes: 18 additions & 0 deletions games/gzdoom/patches/120-lzma-pthreads.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
--- a/libraries/lzma/CMakeLists.txt
+++ b/libraries/lzma/CMakeLists.txt
@@ -2,8 +2,6 @@ make_release_only()

set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_GNU_SOURCE -DZ7_PPMD_SUPPORT -D_7ZIP_AFFINITY_DISABLE" )

-find_package(Threads)
-
add_library( lzma STATIC
C/7zAlloc.c
C/7zArcIn.c
@@ -48,4 +46,5 @@ add_library( lzma STATIC
C/XzEnc.c
C/XzIn.c
)
-target_link_libraries( lzma Threads::Threads )
+
+target_link_libraries( lzma PUBLIC pthread )
49 changes: 49 additions & 0 deletions games/gzdoom/patches/no-execinfo.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -358,7 +358,7 @@ if( HAVE_VM_JIT AND UNIX )
if( HAVE_LIBEXECINFO )
set( ALL_C_FLAGS "${ALL_C_FLAGS} -lexecinfo" )
else( HAVE_LIBEXECINFO )
- set( HAVE_VM_JIT NO )
+ # set( HAVE_VM_JIT NO )
endif( HAVE_LIBEXECINFO )
set( CMAKE_REQUIRED_FLAGS )
endif( NOT HAVE_BACKTRACE )
--- a/src/common/scripting/jit/jit_runtime.cpp
+++ b/src/common/scripting/jit/jit_runtime.cpp
@@ -7,7 +7,6 @@
#include <DbgHelp.h>
#include <psapi.h>
#else
-#include <execinfo.h>
#include <cxxabi.h>
#include <cstring>
#include <cstdlib>
@@ -806,7 +805,7 @@ static int CaptureStackTrace(int max_fra
// JIT isn't supported here, so just do nothing.
return 0;//return RtlCaptureStackBackTrace(0, min(max_frames, 32), out_frames, nullptr);
#else
- return backtrace(out_frames, max_frames);
+ return 0;
#endif
}

@@ -868,7 +867,9 @@ class NativeSymbolResolver
public:
FString GetName(void *frame)
{
- FString s;
+ FString s = "no backtrace";
+ return s;
+ #if 0
char **strings;
void *frames[1] = { frame };
strings = backtrace_symbols(frames, 1);
@@ -925,6 +926,7 @@ public:

free(strings);
return s;
+ #endif
}
};
#endif
41 changes: 41 additions & 0 deletions games/zmusic/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
include $(TOPDIR)/rules.mk

PKG_NAME:=zmusic
PKG_VERSION:=1.1.14
PKG_RELEASE:=1

PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/ZDoom/ZMusic
PKG_SOURCE_VERSION:=89f3d65734470fb7ec0c1e69f73a0cfcc88ed557
PKG_MIRROR_HASH:=104af83c55909a3cc2151bf9a32b153355fab76ee503bf199f49fb401f595a2b

PKG_MAINTAINER:=Daniel Golle <[email protected]>
PKG_LICENSE:=GPL-3.0
PKG_LICENSE_FILES:=licenses/bsd.txt licenses/dumb.txt licenses/gplv3.txt \
licenses/legal.txt licenses/lgplv21.txt licenses/lgplv3.txt \
licenses/zmusic.txt

CMAKE_INSTALL:=1
PKG_BUILD_FLAGS:=gc-sections lto

include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk

define Package/libzmusic
SECTION:=libs
CATEGORY:=Libraries
TITLE:=ZMusic
URL:=https://zdoom.org/
DEPENDS:=+libstdcpp +libsndfile +alsa-lib +glib2
endef

define Package/libzmusic/description
GZDoom's music system as a standalone library
endef

define Package/libzmusic/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libzmusic.so* $(1)/usr/lib/
endef

$(eval $(call BuildPackage,libzmusic))

0 comments on commit d9ffd01

Please sign in to comment.