diff --git a/Ports/AvailablePorts.md b/Ports/AvailablePorts.md index 89ac58840d..7fa483f409 100644 --- a/Ports/AvailablePorts.md +++ b/Ports/AvailablePorts.md @@ -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 | diff --git a/Ports/prboom-plus/package.sh b/Ports/prboom-plus/package.sh new file mode 100755 index 0000000000..58d31ef8b3 --- /dev/null +++ b/Ports/prboom-plus/package.sh @@ -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}/" +} diff --git a/Ports/prboom-plus/patches/0001-Remove-WAD-data-targets-from-build.patch b/Ports/prboom-plus/patches/0001-Remove-WAD-data-targets-from-build.patch new file mode 100644 index 0000000000..91f241db64 --- /dev/null +++ b/Ports/prboom-plus/patches/0001-Remove-WAD-data-targets-from-build.patch @@ -0,0 +1,46 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jelle Raaijmakers +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 diff --git a/Ports/prboom-plus/patches/ReadMe.md b/Ports/prboom-plus/patches/ReadMe.md new file mode 100644 index 0000000000..b10bbd3a31 --- /dev/null +++ b/Ports/prboom-plus/patches/ReadMe.md @@ -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. +