Ports: Add PrBoom+

Music (MIDI) works through TiMidity++ and OpenGL support works, but is
still very buggy. Sometimes PrBoom+ fails to load its own configuration
file, which can be worked around by deleting it.
This commit is contained in:
Jelle Raaijmakers 2022-09-01 14:48:18 +02:00 committed by Andreas Kling
parent 808e0c9b17
commit 180effa8ac
4 changed files with 98 additions and 0 deletions

View file

@ -191,6 +191,7 @@ This list is also available at [ports.serenityos.net](https://ports.serenityos.n
| [`pixman`](pixman/) | pixman | 0.40.0 | http://pixman.org |
| [`pkgconf`](pkgconf/) | pkgconf | 1.8.0 | https://github.com/pkgconf/pkgconf |
| [`powdertoy`](powdertoy/) | The Powder Toy | 96.2.350 | https://powdertoy.co.uk/ |
| [`prboom-plus`](prboom-plus/) | PrBoom+ | 2.6.2 | https://prboom-plus.sourceforge.io/ |
| [`printf`](printf/) | printf (OpenBSD) | 6.6 | https://github.com/ibara/libpuffy |
| [`pt2-clone`](pt2-clone/) | ProTracker 2 clone | 1.49 | https://github.com/8bitbubsy/pt2-clone |
| [`pv`](pv/) | Pipe Viewer | 1.6.20 | http://www.ivarch.com/programs/pv.shtml |

40
Ports/prboom-plus/package.sh Executable file
View file

@ -0,0 +1,40 @@
#!/usr/bin/env -S bash ../.port_include.sh
port='prboom-plus'
version='2.6.2'
useconfigure='true'
squashed_version=$(echo "${version}" | tr -d '.')
files="https://github.com/coelckers/prboom-plus/archive/refs/tags/v${version}.tar.gz prboom-plus-v4${version}.tar.gz 5cfeec96fbfe4fc3bd5dbc2b8d581ff5f6617dd74b2799680ba5b1e2e38c4aff
https://github.com/coelckers/prboom-plus/releases/download/v${version}/prboom-plus-${squashed_version}-w32.zip prboom-plus-w32.zip 20313e00d8841a618e23e7c671d65870194bee634468fecd2f3697ac05f21476"
auth_type='sha256'
workdir="prboom-plus-${version}/prboom2"
depends=("glu" "libmad" "libvorbis" "SDL2" "SDL2_image" "SDL2_mixer" "SDL2_net")
configopts=(
"-DCMAKE_C_FLAGS=-I${SERENITY_INSTALL_ROOT}/usr/include/LibGL"
"-DCMAKE_PREFIX_PATH=${SERENITY_INSTALL_ROOT}/usr/local"
"-DFORCE_CROSSCOMPILE=ON"
"-DOPENGL_gl_LIBRARY=${SERENITY_INSTALL_ROOT}/usr/lib/libgl.so"
"-DWITH_PCRE=OFF"
"-Wno-dev"
)
launcher_name='PrBoom+'
launcher_category='Games'
launcher_command='/usr/local/bin/prboom-plus -vidmode gl'
icon_file='ICONS/prboom-plus.ico'
configure() {
run cmake -B build "${configopts[@]}"
}
build() {
run cp -v ../../prboom-plus.wad build/
run make -C build "${makeopts[@]}"
}
install() {
run make DESTDIR="${DESTDIR}" -C build install
wad_directory="${SERENITY_INSTALL_ROOT}/usr/local/share/games/doom"
mkdir -p "${wad_directory}"
run cp "../../prboom-plus-${squashed_version}-w32/prboom-plus.wad" "${wad_directory}/"
}

View file

@ -0,0 +1,46 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jelle Raaijmakers <jelle@gmta.nl>
Date: Thu, 1 Sep 2022 12:05:29 +0200
Subject: [PATCH] Remove WAD / data targets from build
We're crosscompiling but PRBoom+ still tries to invoke the rdatawad
tool, which we're supposed to get from a different native build.
We download the PRBoom WAD separately, so we remove it from the build.
---
CMakeLists.txt | 2 --
src/CMakeLists.txt | 1 -
2 files changed, 3 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 55e1573..540c85c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -215,7 +215,6 @@ endif()
if(CMAKE_CROSSCOMPILING)
set(IMPORT_EXECUTABLES "IMPORTFILE-NOTFOUND" CACHE FILEPATH "Export file from native build")
- include(${IMPORT_EXECUTABLES})
else()
if(NOT CROSS_EXPORTS)
set(CROSS_EXPORTS "")
@@ -227,7 +226,6 @@ set(PRBOOM_OUTPUT_PATH ${CMAKE_BINARY_DIR})
set(WAD_DATA prboom-plus.wad)
set(WAD_DATA_PATH "${PRBOOM_OUTPUT_PATH}/${WAD_DATA}")
-add_subdirectory(data)
add_subdirectory(doc)
add_subdirectory(src)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 627ef88..ae3599b 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -374,7 +374,6 @@ function(AddGameExecutable TARGET SOURCES)
target_include_directories(${TARGET} PRIVATE ${ALSA_INCLUDE_DIR})
target_link_libraries(${TARGET} PRIVATE ${ASOUND_LIBRARY})
endif()
- add_dependencies(${TARGET} prboomwad)
if(MSVC)
set_target_properties(${TARGET} PROPERTIES

View file

@ -0,0 +1,11 @@
# Patches for prboom-plus on SerenityOS
## `0001-Remove-WAD-data-targets-from-build.patch`
Remove WAD / data targets from build
We're crosscompiling but PRBoom+ still tries to invoke the rdatawad
tool, which we're supposed to get from a different native build.
We download the PRBoom WAD separately, so we remove it from the build.