games-emulation/ppsspp: bump to 1.17.1

Signed-off-by: Maciej Barć <xgqt@gentoo.org>
This commit is contained in:
Maciej Barć
2024-02-05 12:19:02 +01:00
parent 371a6d2402
commit 5c1e0c4e25
5 changed files with 305 additions and 0 deletions

View File

@@ -1,3 +1,4 @@
DIST ppsspp-1.15.4.tar.xz 51947468 BLAKE2B c6a5e621b02556b791ec41389f17dede63811c87ff628b8f1304ac950071b365ecc9be05f4042e4e3b81e77f5a14b6931577f08b0174fec821350a1d7eca4d6a SHA512 9d2c140b0d633e5ca6191aaf276b7e4f6d029f29d1313a45fb78ee3879fec09f57d816604c51474ab6fe9cde713787d5769e87466d3c3015fe6a9b195ff198d2
DIST ppsspp-1.16.4.tar.xz 51110488 BLAKE2B 061090bfd646b0839de7aed8e4b249ac86353c8742cd293c8df5ffc0d93a67f960ff4836bc13b534ba34871719cea2dc485b7d14deaa17aa5ff3dd6f8663687e SHA512 6364bb821a456409c9ee20eb589d761aef02d7756063bd5faa035b856ca551db0675a65767a9ad09dc8eba5fda6ede8ea3eb384b6770570bd4925e11b8c05ac5
DIST ppsspp-1.16.tar.xz 50656132 BLAKE2B 5149bd859134a76a191e0f144bdcefc4c521276ebb1390fe5e24eeeb1227b77bab0458a760f29aed5ba169d566f12d5226f2b50a19e44172f1ad98c4eb8f400f SHA512 d65a8c9fb5d7ff45a99f5852d1071029bc51c1e8bdb45b3e78d961a46587553db4465bbd97b301db54a94b60772359929524047f08de3067cd3336f5f7717826
DIST ppsspp-1.17.1.tar.xz 54663108 BLAKE2B 91c4964c9f334d42e090f59485e2f02ba8edb780903d2fa46e1a9cea77f6cc9e1a0605310d76445738259c0e99d5d1ca0764ef5f5565e781b482d5d5274620e5 SHA512 eaa0046f5d8e529efd8238690fa242638aa88630172abe59c4b7ffb16b1e18eeb38fcaf8e70ef76dbd2304b226d1f33e10cde709abe00fa2a5baff16c1883c31

View File

@@ -0,0 +1,176 @@
From a8ae43dfd4f06a48a275a684aafee021e591d75e Mon Sep 17 00:00:00 2001
From: Andrew Udvare <audvare@gmail.com>
Date: Sun, 4 Feb 2024 18:26:06 -0500
Subject: [PATCH] ffmpeg: Improved fix for checking if const AVCodec* is
necessary
---
CMakeLists.txt | 21 +++++++++++++++++++++
Core/AVIDump.cpp | 4 +---
Core/FFMPEGCompat.h | 8 ++++++++
Core/HLE/sceAtrac.cpp | 5 +----
Core/HLE/sceMpeg.cpp | 4 +---
Core/HW/MediaEngine.cpp | 4 +---
Core/HW/SimpleAudioDec.cpp | 1 +
Core/HW/SimpleAudioDec.h | 7 +++----
8 files changed, 37 insertions(+), 17 deletions(-)
create mode 100644 Core/FFMPEGCompat.h
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 33570d09c024..f7e5ce1d337c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -953,6 +953,23 @@ if(USE_FFMPEG)
endif()
find_package(FFmpeg REQUIRED avcodec avformat avutil swresample swscale)
+ # Check if we need to use avcodec_(alloc|free)_frame instead of av_frame_(alloc|free)
+ # Check if we need to use const AVCodec
+ set(CMAKE_REQUIRED_LIBRARIES avcodec;avformat)
+ set(CMAKE_REQUIRED_FLAGS "-pedantic -Wall -Werror -Wno-unused-variable")
+ check_cxx_source_compiles("extern \"C\" {
+ #include <libavcodec/avcodec.h>
+ #include <libavformat/avformat.h>
+ }
+ static AVCodecContext *s_codec_context = NULL;
+ int main() {
+ const AVCodec *codec = avcodec_find_encoder(s_codec_context->codec_id);
+ return 0;
+ }
+ " HAVE_LIBAVCODEC_CONST_AVCODEC FAIL_REGEX "invalid conversion")
+
+ # Check if we need to use avcodec_alloc_context3 instead of stream->codec
+ # Check if we need to use av_frame_get_buffer instead of avcodec_default_get_buffer
endif(USE_FFMPEG)
find_package(ZLIB)
@@ -2024,6 +2041,7 @@ add_library(${CoreLibName} ${CoreLinkType}
Core/ELF/PrxDecrypter.h
Core/ELF/ParamSFO.cpp
Core/ELF/ParamSFO.h
+ Core/FFMPEGCompat.h
Core/FileSystems/tlzrc.cpp
Core/FileSystems/BlobFileSystem.cpp
Core/FileSystems/BlobFileSystem.h
@@ -2358,6 +2376,9 @@ target_compile_features(${CoreLibName} PUBLIC cxx_std_17)
if(FFmpeg_FOUND)
target_compile_definitions(${CoreLibName} PRIVATE USE_FFMPEG=1)
+ if (HAVE_LIBAVCODEC_CONST_AVCODEC)
+ target_compile_definitions(${CoreLibName} PRIVATE HAVE_LIBAVCODEC_CONST_AVCODEC=1)
+ endif()
set_target_properties(${CoreLibName} PROPERTIES NO_SYSTEM_FROM_IMPORTED true)
target_include_directories(${CoreLibName} BEFORE PUBLIC ${FFmpeg_INCLUDE_avcodec})
target_link_libraries(${CoreLibName}
diff --git a/Core/AVIDump.cpp b/Core/AVIDump.cpp
index 7c9576d2922b..aa811650314d 100644
--- a/Core/AVIDump.cpp
+++ b/Core/AVIDump.cpp
@@ -45,9 +45,7 @@ extern "C" {
#define av_frame_free avcodec_free_frame
#endif
-#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(59, 16, 100)
-#define AVCodec const AVCodec
-#endif
+#include "FFMPEGCompat.h"
static AVFormatContext *s_format_context = nullptr;
static AVCodecContext *s_codec_context = nullptr;
diff --git a/Core/FFMPEGCompat.h b/Core/FFMPEGCompat.h
new file mode 100644
index 000000000000..fed3b1c85392
--- /dev/null
+++ b/Core/FFMPEGCompat.h
@@ -0,0 +1,8 @@
+#ifndef FFMPEG_COMPAT_H
+#define FFMPEG_COMPAT_H
+
+#ifdef HAVE_LIBAVCODEC_CONST_AVCODEC
+#define AVCodec const AVCodec
+#endif
+
+#endif // FFMPEG_COMPAT_H
diff --git a/Core/HLE/sceAtrac.cpp b/Core/HLE/sceAtrac.cpp
index fe0e8a54de6b..f83d9ffdf166 100644
--- a/Core/HLE/sceAtrac.cpp
+++ b/Core/HLE/sceAtrac.cpp
@@ -129,10 +129,7 @@ extern "C" {
#include "libavcodec/avcodec.h"
#include "libavutil/version.h"
}
-
-#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(59, 16, 100)
-#define AVCodec const AVCodec
-#endif
+#include "Core/FFMPEGCompat.h"
#endif // USE_FFMPEG
diff --git a/Core/HLE/sceMpeg.cpp b/Core/HLE/sceMpeg.cpp
index d050d62f3d73..8be78c73e0f8 100644
--- a/Core/HLE/sceMpeg.cpp
+++ b/Core/HLE/sceMpeg.cpp
@@ -113,9 +113,7 @@ extern "C" {
#include "libswscale/swscale.h"
#include "libavcodec/avcodec.h"
}
-#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(59, 16, 100)
-#define AVCodec const AVCodec
-#endif
+#include "Core/FFMPEGCompat.h"
static AVPixelFormat pmp_want_pix_fmt;
#endif
diff --git a/Core/HW/MediaEngine.cpp b/Core/HW/MediaEngine.cpp
index 0ed957edfd26..7e8b37d4dc9b 100644
--- a/Core/HW/MediaEngine.cpp
+++ b/Core/HW/MediaEngine.cpp
@@ -56,9 +56,7 @@ extern "C" {
#ifdef USE_FFMPEG
-#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(59, 16, 100)
-#define AVCodec const AVCodec
-#endif
+#include "Core/FFMPEGCompat.h"
static AVPixelFormat getSwsFormat(int pspFormat)
{
diff --git a/Core/HW/SimpleAudioDec.cpp b/Core/HW/SimpleAudioDec.cpp
index 7994a7f4027a..80397bf6da0a 100644
--- a/Core/HW/SimpleAudioDec.cpp
+++ b/Core/HW/SimpleAudioDec.cpp
@@ -33,6 +33,7 @@ extern "C" {
#include "libavutil/samplefmt.h"
#include "libavcodec/avcodec.h"
}
+#include "Core/FFMPEGCompat.h"
#endif // USE_FFMPEG
diff --git a/Core/HW/SimpleAudioDec.h b/Core/HW/SimpleAudioDec.h
index 52a78bf3b411..9bf2427a4a15 100644
--- a/Core/HW/SimpleAudioDec.h
+++ b/Core/HW/SimpleAudioDec.h
@@ -33,10 +33,6 @@ extern "C" {
#include "libavutil/version.h"
};
-#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(59, 16, 100)
-#define AVCodec const AVCodec
-#endif
-
#endif
// Wraps FFMPEG for audio decoding in a nice interface.
@@ -90,6 +86,9 @@ class SimpleAudio {
int wanted_resample_freq; // wanted resampling rate/frequency
AVFrame *frame_;
+#if HAVE_LIBAVCODEC_CONST_AVCODEC // USE_FFMPEG is implied
+ const
+#endif
AVCodec *codec_;
AVCodecContext *codecCtx_;
SwrContext *swrCtx_;

View File

@@ -0,0 +1,33 @@
From e1ef901fcc2f0acbdff2671a8e07edab3e473c98 Mon Sep 17 00:00:00 2001
From: Andrew Udvare <audvare@gmail.com>
Date: Sun, 4 Feb 2024 18:39:18 -0500
Subject: [PATCH] Add option to disable ccache detection
---
CMakeLists.txt | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index bfd5e690353e..33570d09c024 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -116,7 +116,6 @@ if(NOT IOS)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/sdl)
endif()
-include(ccache)
include(GNUInstallDirs)
add_definitions(-DASSETS_DIR="${CMAKE_INSTALL_FULL_DATADIR}/ppsspp/assets/")
@@ -173,6 +172,11 @@ option(USE_SYSTEM_ZSTD "Dynamically link against system zstd" ${USE_SYSTEM_ZSTD}
option(USE_SYSTEM_MINIUPNPC "Dynamically link against system miniUPnPc" ${USE_SYSTEM_MINIUPNPC})
option(USE_ASAN "Use address sanitizer" OFF)
option(USE_UBSAN "Use undefined behaviour sanitizer" OFF)
+option(USE_CCACHE "Use ccache if detected" ON)
+
+if(USE_CACHE)
+ include(ccache)
+endif()
if(UNIX AND NOT (APPLE OR ANDROID) AND VULKAN)
if(USING_X11_VULKAN)

View File

@@ -0,0 +1,11 @@
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,6 +3,8 @@ cmake_minimum_required(VERSION 3.8)
project(PPSSPP)
enable_testing()
+include(CheckCXXSourceCompiles)
+
#This is supposed to work but doesn't!
if(NOT ANDROID)
set(CMAKE_CXX_STANDARD 17)

View File

@@ -0,0 +1,84 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{10..12} )
inherit python-any-r1 xdg cmake
DESCRIPTION="A PSP emulator written in C++"
HOMEPAGE="https://www.ppsspp.org/
https://github.com/hrydgard/ppsspp/"
if [[ "${PV}" == *9999* ]] ; then
inherit git-r3
EGIT_REPO_URI="https://github.com/hrydgard/${PN}.git"
else
SRC_URI="https://github.com/hrydgard/${PN}/releases/download/v${PV}/${P}.tar.xz"
KEYWORDS="~amd64"
fi
LICENSE="Apache-2.0 BSD BSD-2 GPL-2 JSON MIT"
SLOT="0"
IUSE="discord qt5 test"
RESTRICT="!test? ( test )"
RDEPEND="
app-arch/snappy:=
app-arch/zstd:=
dev-libs/libzip:=
media-libs/glew:=
media-libs/libpng:=
media-libs/libsdl2[joystick]
media-video/ffmpeg:0/58.60.60
sys-libs/zlib:=
virtual/opengl
qt5? (
dev-qt/qtcore:5
dev-qt/qtgui:5[-gles2-only]
dev-qt/qtmultimedia:5[-gles2-only]
dev-qt/qtopengl:5[-gles2-only]
dev-qt/qtwidgets:5[-gles2-only]
)
!qt5? ( media-libs/libsdl2[X,opengl,sound,video] )
"
DEPEND="
${RDEPEND}
"
BDEPEND="
${PYTHON_DEPS}
"
PATCHES=(
"${FILESDIR}/${PN}-1.17.1-avcodec-18825.patch"
"${FILESDIR}/${PN}-1.17.1-ccache-18826.patch"
"${FILESDIR}/${PN}-1.17.1-cmake-cxx.patch"
"${FILESDIR}/${PN}-CMakeLists-flags.patch"
)
pkg_setup() {
python-any-r1_pkg_setup
}
src_configure() {
local -a mycmakeargs=(
-DBUILD_SHARED_LIBS=OFF
-DCMAKE_SKIP_RPATH=ON
-DHEADLESS=false
-DUSE_SYSTEM_FFMPEG=ON
-DUSE_SYSTEM_LIBZIP=ON
-DUSE_SYSTEM_SNAPPY=ON
-DUSE_SYSTEM_ZSTD=ON
-DUSE_DISCORD=$(usex discord)
-DUSING_QT_UI=$(usex qt5)
-DUNITTEST=$(usex test)
)
cmake_src_configure
}
src_test() {
cmake_src_test -E glslang-testsuite
}