commit:     5c1e0c4e25bdc6f7640850d33c3c43d4ea3c0156
Author:     Maciej Barć <xgqt <AT> gentoo <DOT> org>
AuthorDate: Mon Feb  5 11:19:02 2024 +0000
Commit:     Maciej Barć <xgqt <AT> gentoo <DOT> org>
CommitDate: Mon Feb  5 11:28:32 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5c1e0c4e

games-emulation/ppsspp: bump to 1.17.1

Signed-off-by: Maciej Barć <xgqt <AT> gentoo.org>

 games-emulation/ppsspp/Manifest                    |   1 +
 .../ppsspp/files/ppsspp-1.17.1-avcodec-18825.patch | 176 +++++++++++++++++++++
 .../ppsspp/files/ppsspp-1.17.1-ccache-18826.patch  |  33 ++++
 .../ppsspp/files/ppsspp-1.17.1-cmake-cxx.patch     |  11 ++
 games-emulation/ppsspp/ppsspp-1.17.1.ebuild        |  84 ++++++++++
 5 files changed, 305 insertions(+)

diff --git a/games-emulation/ppsspp/Manifest b/games-emulation/ppsspp/Manifest
index ed30d9e1197e..58cc3e9dbdae 100644
--- a/games-emulation/ppsspp/Manifest
+++ b/games-emulation/ppsspp/Manifest
@@ -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

diff --git a/games-emulation/ppsspp/files/ppsspp-1.17.1-avcodec-18825.patch 
b/games-emulation/ppsspp/files/ppsspp-1.17.1-avcodec-18825.patch
new file mode 100644
index 000000000000..a3003660dd74
--- /dev/null
+++ b/games-emulation/ppsspp/files/ppsspp-1.17.1-avcodec-18825.patch
@@ -0,0 +1,176 @@
+From a8ae43dfd4f06a48a275a684aafee021e591d75e Mon Sep 17 00:00:00 2001
+From: Andrew Udvare <[email protected]>
+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_;

diff --git a/games-emulation/ppsspp/files/ppsspp-1.17.1-ccache-18826.patch 
b/games-emulation/ppsspp/files/ppsspp-1.17.1-ccache-18826.patch
new file mode 100644
index 000000000000..af5478f1bf73
--- /dev/null
+++ b/games-emulation/ppsspp/files/ppsspp-1.17.1-ccache-18826.patch
@@ -0,0 +1,33 @@
+From e1ef901fcc2f0acbdff2671a8e07edab3e473c98 Mon Sep 17 00:00:00 2001
+From: Andrew Udvare <[email protected]>
+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)

diff --git a/games-emulation/ppsspp/files/ppsspp-1.17.1-cmake-cxx.patch 
b/games-emulation/ppsspp/files/ppsspp-1.17.1-cmake-cxx.patch
new file mode 100644
index 000000000000..12796b06e890
--- /dev/null
+++ b/games-emulation/ppsspp/files/ppsspp-1.17.1-cmake-cxx.patch
@@ -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)

diff --git a/games-emulation/ppsspp/ppsspp-1.17.1.ebuild 
b/games-emulation/ppsspp/ppsspp-1.17.1.ebuild
new file mode 100644
index 000000000000..4f6565ae477c
--- /dev/null
+++ b/games-emulation/ppsspp/ppsspp-1.17.1.ebuild
@@ -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
+}

Reply via email to