From 25ff094a259d0b6dbfa52809193bcc99f02b2ca7 Mon Sep 17 00:00:00 2001 From: Maxime Gauduin Date: Mon, 8 Jun 2015 11:11:15 +0200 Subject: [PATCH] Initial import --- .SRCINFO | 42 +++++ MKPKG | 6 + PKGBUILD | 103 +++++++++++ ppsspp-ffmpeg.patch | 423 ++++++++++++++++++++++++++++++++++++++++++++ ppsspp-gcc5.1.patch | 40 +++++ 5 files changed, 614 insertions(+) create mode 100644 .SRCINFO create mode 100644 MKPKG create mode 100644 PKGBUILD create mode 100644 ppsspp-ffmpeg.patch create mode 100644 ppsspp-gcc5.1.patch diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 0000000..cdfd981 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,42 @@ +pkgbase = ppsspp-git + pkgdesc = A PSP emulator written in C++ + pkgver = 1.0.1.r559.403f6ab + pkgrel = 1 + url = http://www.ppsspp.org/ + arch = i686 + arch = x86_64 + license = GPL2 + makedepends = cmake + makedepends = git + makedepends = glu + makedepends = qt5-tools + depends = ffmpeg + depends = sdl2 + source = git+https://github.com/hrydgard/ppsspp.git + source = git+https://github.com/hrydgard/ppsspp-lang.git + source = ppsspp-native::git+https://github.com/hrydgard/native.git + source = ppsspp-armips::git+https://github.com/Kingcom/armips.git + source = ppsspp-ffmpeg.patch + source = ppsspp-gcc5.1.patch + sha256sums = SKIP + sha256sums = SKIP + sha256sums = SKIP + sha256sums = SKIP + sha256sums = 00ef3d221b3a7e967fc79eaed20664f52fe7d303597130c46198e60b81023f8a + sha256sums = 719f6ae3efa533872f1db5131bc9e7245d7c2e40e776c9869a0820be17f0ac9d + +pkgname = ppsspp-git + provides = ppsspp + conflicts = ppsspp + conflicts = ppsspp-qt + conflicts = ppsspp-qt-git + +pkgname = ppsspp-qt-git + depends = ffmpeg + depends = sdl2 + depends = qt5-base + provides = ppsspp + conflicts = ppsspp + conflicts = ppsspp-git + conflicts = ppsspp-qt + diff --git a/MKPKG b/MKPKG new file mode 100644 index 0000000..df2ec3c --- /dev/null +++ b/MKPKG @@ -0,0 +1,6 @@ +arch=('x86_64') +pkgname=('ppsspp-git' 'ppsspp-qt-git') + +check_git $packagedir/ppsspp-git/ppsspp + +# vim: ts=2 sw=2 et: diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..fd4bda9 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,103 @@ +# Maintainer: Maxime Gauduin +# Contributor: BartÅ‚omiej Piotrowski +# Contributor: Ben Reedy +# Contributor: Clement Guerin +# Contributor: Thiago Kenji Okada +# Contributor: uberushaximus + +pkgbase=ppsspp-git +pkgname=('ppsspp-git' 'ppsspp-qt-git') +pkgver=1.0.1.r559.403f6ab +pkgrel=1 +pkgdesc='A PSP emulator written in C++' +arch=('i686' 'x86_64') +url='http://www.ppsspp.org/' +license=('GPL2') +depends=('ffmpeg' 'sdl2') +makedepends=('cmake' 'git' 'glu' 'qt5-tools') +source=('git+https://github.com/hrydgard/ppsspp.git' + 'git+https://github.com/hrydgard/ppsspp-lang.git' + 'ppsspp-native::git+https://github.com/hrydgard/native.git' + 'ppsspp-armips::git+https://github.com/Kingcom/armips.git' + 'ppsspp-ffmpeg.patch' + 'ppsspp-gcc5.1.patch') +sha256sums=('SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + '00ef3d221b3a7e967fc79eaed20664f52fe7d303597130c46198e60b81023f8a' + '719f6ae3efa533872f1db5131bc9e7245d7c2e40e776c9869a0820be17f0ac9d') + +pkgver() { + cd ppsspp + + echo "$(git describe --tags | sed 's/^v//; s/-/.r/; s/-g/./')" +} + +prepare() { + cd ppsspp + + for submodule in native lang ext/armips; do + git submodule init ${submodule} + git config submodule.${submodule}.url ../ppsspp-${submodule#*/} + git submodule update ${submodule} + done + + patch -Np1 -i ../ppsspp-ffmpeg.patch + patch -Np1 -i ../ppsspp-gcc5.1.patch +} + +build() { + cd ppsspp + + if [[ -d build ]]; then + rm -rf build + fi + mkdir build && cd build + + cmake .. \ + -DCMAKE_BUILD_TYPE='Release' \ + -DCMAKE_SKIP_RPATH='TRUE' \ + -DUSE_SYSTEM_FFMPEG='TRUE' + make + + cd .. + + if [[ -d build-qt ]]; then + rm -rf build-qt + fi + mkdir build-qt && cd build-qt + + qmake-qt5 CONFIG+='release' CONFIG+='system_ffmpeg' ../Qt/PPSSPPQt.pro + make +} + +package_ppsspp-git() { + provides=('ppsspp') + conflicts=('ppsspp' 'ppsspp-qt' 'ppsspp-qt-git') + + cd ppsspp/build + + install -dm 755 "${pkgdir}"/usr/{bin,share/{applications,man/man1,pixmaps,ppsspp}} + install -m 755 PPSSPPSDL "${pkgdir}"/usr/bin/ppsspp + cp -dr --no-preserve='ownership' assets "${pkgdir}"/usr/share/ppsspp/ + install -m 644 ../assets/unix-icons/icon-512.svg "${pkgdir}"/usr/share/pixmaps/ppsspp.svg + install -m 644 ../debian/ppsspp.desktop "${pkgdir}"/usr/share/applications/ + install -m 644 ../debian/ppsspp.1 "${pkgdir}"/usr/share/man/man1/ +} + +package_ppsspp-qt-git() { + depends+=('qt5-base') + provides=('ppsspp') + conflicts=('ppsspp' 'ppsspp-git' 'ppsspp-qt') + + cd ppsspp/build-qt + + install -dm 755 "${pkgdir}"/usr/{bin,share/{applications,man/man1,pixmaps}} + install -m 755 ppsspp "${pkgdir}"/usr/bin/ + install -m 644 ../assets/unix-icons/icon-512.svg "${pkgdir}"/usr/share/pixmaps/ppsspp.svg + install -m 644 ../debian/ppsspp.desktop "${pkgdir}"/usr/share/applications/ + install -m 644 ../debian/ppsspp.1 "${pkgdir}"/usr/share/man/man1/ +} + +# vim ts=2 sw=2 et: diff --git a/ppsspp-ffmpeg.patch b/ppsspp-ffmpeg.patch new file mode 100644 index 0000000..87d2780 --- /dev/null +++ b/ppsspp-ffmpeg.patch @@ -0,0 +1,423 @@ +From 983ae517e17a635e21a84a8abdff338e1805f33b Mon Sep 17 00:00:00 2001 +From: Maxime Gauduin +Date: Mon, 1 Jun 2015 15:29:54 +0200 +Subject: [PATCH] Try to dynamically link against system ffmpeg when possible + +--- + CMakeLists.txt | 192 ++++++++++++++++++++++++-------------------- + CMakeTests/FindFFMPEG.cmake | 167 ++++++++++++++++++++++++++++++++++++++ + 2 files changed, 271 insertions(+), 88 deletions(-) + create mode 100644 CMakeTests/FindFFMPEG.cmake + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index eb66586..00cf33a 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -98,6 +98,7 @@ option(UNITTEST "Set to ON to generate the unittest target" ${UNITTEST}) + option(SIMULATOR "Set to ON when targeting an x86 simulator of an ARM platform" ${SIMULATOR}) + # :: Options + option(USE_FFMPEG "Build with FFMPEG support" ${USE_FFMPEG}) ++option(USE_SYSTEM_FFMPEG "Dynamically link against system FFMPEG" ${USE_SYSTEM_FFMPEG}) + + if(ANDROID OR BLACKBERRY OR IOS) + if (NOT CMAKE_TOOLCHAIN_FILE) +@@ -411,96 +412,101 @@ add_library(stb_vorbis STATIC + native/ext/stb_vorbis/stb_vorbis.h) + include_directories(native/ext/stb_vorbis) + +-if(USE_FFMPEG AND NOT DEFINED FFMPEG_BUILDDIR) +- if(ANDROID) +- if(ARMV7) +- set(PLATFORM_ARCH "android/armv7") +- elseif(ARM) +- set(PLATFORM_ARCH "android/arm") +- elseif(X86) +- set(PLATFORM_ARCH "android/x86") +- endif() +- elseif(BLACKBERRY) +- set(PLATFORM_ARCH "blackberry/armv7") +- elseif(IOS) +- set(PLATFORM_ARCH "ios/universal") +- elseif(MACOSX) +- set(PLATFORM_ARCH "macosx/x86_64") +- elseif(LINUX) +- if(ARMV7) +- set(PLATFORM_ARCH "linux/armv7") +- elseif(ARM) +- set(PLATFORM_ARCH "linux/arm") +- elseif(MIPS) +- set(PLATFORM_ARCH "linux/mips32") +- elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) +- set(PLATFORM_ARCH "linux/x86_64") +- else() +- set(PLATFORM_ARCH "linux/x86") +- endif() +- endif() +- # Using static libraries +- if (DEFINED PLATFORM_ARCH) +- include_directories(ffmpeg/${PLATFORM_ARCH}/include) +- link_directories(ffmpeg/${PLATFORM_ARCH}/lib) +- set(FFMPEG_LIBRARIES libavformat.a libavcodec.a libavutil.a libswresample.a libswscale.a) ++if(USE_FFMPEG) ++ if(USE_SYSTEM_FFMPEG) ++ include(FindFFMPEG) + else() +- # Manual definition of system library locations by the user. +- if (DEFINED FFMPEG_INCLUDE_PATH) +- include_directories(ffmpeg ${FFMPEG_INCLUDE_PATH}) +- endif() +- if (DEFINED AVFORMAT_PATH) ++ set(FFMPEG_FOUND OFF) ++ endif() ++ if(NOT FFMPEG_FOUND) ++ if(NOT DEFINED FFMPEG_BUILDDIR) ++ if(ANDROID) ++ if(ARMV7) ++ set(PLATFORM_ARCH "android/armv7") ++ elseif(ARM) ++ set(PLATFORM_ARCH "android/arm") ++ elseif(X86) ++ set(PLATFORM_ARCH "android/x86") ++ endif() ++ elseif(BLACKBERRY) ++ set(PLATFORM_ARCH "blackberry/armv7") ++ elseif(IOS) ++ set(PLATFORM_ARCH "ios/universal") ++ elseif(MACOSX) ++ set(PLATFORM_ARCH "macosx/x86_64") ++ elseif(LINUX) ++ if(ARMV7) ++ set(PLATFORM_ARCH "linux/armv7") ++ elseif(ARM) ++ set(PLATFORM_ARCH "linux/arm") ++ elseif(MIPS) ++ set(PLATFORM_ARCH "linux/mips32") ++ elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) ++ set(PLATFORM_ARCH "linux/x86_64") ++ else() ++ set(PLATFORM_ARCH "linux/x86") ++ endif() ++ endif() ++ # Using static libraries ++ if (DEFINED PLATFORM_ARCH) ++ include_directories(ffmpeg/${PLATFORM_ARCH}/include) ++ link_directories(ffmpeg/${PLATFORM_ARCH}/lib) ++ set(FFMPEG_LIBRARIES libavformat.a libavcodec.a libavutil.a libswresample.a libswscale.a) ++ else() ++ # Manual definition of system library locations by the user. ++ if (DEFINED FFMPEG_INCLUDE_PATH) ++ include_directories(ffmpeg ${FFMPEG_INCLUDE_PATH}) ++ endif() ++ if (DEFINED AVFORMAT_PATH) ++ add_library(libavformat STATIC IMPORTED) ++ set_target_properties(libavformat PROPERTIES IMPORTED_LOCATION ${AVFORMAT_PATH}) ++ SET (FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} libavformat) ++ endif() ++ if (DEFINED AVCODEC_PATH) ++ add_library(libavcodec STATIC IMPORTED) ++ set_target_properties(libavcodec PROPERTIES IMPORTED_LOCATION ${AVCODEC_PATH}) ++ SET (FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} libavcodec) ++ endif() ++ if (DEFINED AVUTIL_PATH) ++ add_library(libavutil STATIC IMPORTED) ++ set_target_properties(libavutil PROPERTIES IMPORTED_LOCATION ${AVUTIL_PATH}) ++ SET (FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} libavutil) ++ endif() ++ if (DEFINED SWRESAMPLE_PATH) ++ add_library(libswresample STATIC IMPORTED) ++ set_target_properties(libswresample PROPERTIES IMPORTED_LOCATION ${SWRESAMPLE_PATH}) ++ SET (FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} libswresample) ++ endif() ++ if (DEFINED SWSCALE_PATH) ++ add_library(libswscale STATIC IMPORTED) ++ set_target_properties(libswscale PROPERTIES IMPORTED_LOCATION ${SWSCALE_PATH}) ++ SET (FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} libswscale) ++ endif() ++ endif(DEFINED PLATFORM_ARCH) ++ else(NOT DEFINED FFMPEG_BUILDDIR) ++ # Using shared libraries ++ include_directories(ffmpeg ${FFMPEG_BUILDDIR}) ++ + add_library(libavformat STATIC IMPORTED) +- set_target_properties(libavformat PROPERTIES IMPORTED_LOCATION ${AVFORMAT_PATH}) +- SET (FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} libavformat) +- endif() +- if (DEFINED AVCODEC_PATH) ++ set_target_properties(libavformat PROPERTIES IMPORTED_LOCATION ${FFMPEG_BUILDDIR}/libavformat/libavformat.a) + add_library(libavcodec STATIC IMPORTED) +- set_target_properties(libavcodec PROPERTIES IMPORTED_LOCATION ${AVCODEC_PATH}) +- SET (FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} libavcodec) +- endif() +- if (DEFINED AVUTIL_PATH) ++ set_target_properties(libavcodec PROPERTIES IMPORTED_LOCATION ${FFMPEG_BUILDDIR}/libavcodec/libavcodec.a) + add_library(libavutil STATIC IMPORTED) +- set_target_properties(libavutil PROPERTIES IMPORTED_LOCATION ${AVUTIL_PATH}) +- SET (FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} libavutil) +- endif() +- if (DEFINED SWRESAMPLE_PATH) ++ set_target_properties(libavutil PROPERTIES IMPORTED_LOCATION ${FFMPEG_BUILDDIR}/libavutil/libavutil.a) + add_library(libswresample STATIC IMPORTED) +- set_target_properties(libswresample PROPERTIES IMPORTED_LOCATION ${SWRESAMPLE_PATH}) +- SET (FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} libswresample) +- endif() +- if (DEFINED SWSCALE_PATH) ++ set_target_properties(libswresample PROPERTIES IMPORTED_LOCATION ${FFMPEG_BUILDDIR}/libswresample/libswresample.a) + add_library(libswscale STATIC IMPORTED) +- set_target_properties(libswscale PROPERTIES IMPORTED_LOCATION ${SWSCALE_PATH}) +- SET (FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} libswscale) +- endif() +- endif(DEFINED PLATFORM_ARCH) +-endif(USE_FFMPEG AND NOT DEFINED FFMPEG_BUILDDIR) +- +-if(USE_FFMPEG) +- # Using shared libraries +- if(DEFINED FFMPEG_BUILDDIR) +- include_directories(ffmpeg ${FFMPEG_BUILDDIR}) +- +- add_library(libavformat STATIC IMPORTED) +- set_target_properties(libavformat PROPERTIES IMPORTED_LOCATION ${FFMPEG_BUILDDIR}/libavformat/libavformat.a) +- add_library(libavcodec STATIC IMPORTED) +- set_target_properties(libavcodec PROPERTIES IMPORTED_LOCATION ${FFMPEG_BUILDDIR}/libavcodec/libavcodec.a) +- add_library(libavutil STATIC IMPORTED) +- set_target_properties(libavutil PROPERTIES IMPORTED_LOCATION ${FFMPEG_BUILDDIR}/libavutil/libavutil.a) +- add_library(libswresample STATIC IMPORTED) +- set_target_properties(libswresample PROPERTIES IMPORTED_LOCATION ${FFMPEG_BUILDDIR}/libswresample/libswresample.a) +- add_library(libswscale STATIC IMPORTED) +- set_target_properties(libswscale PROPERTIES IMPORTED_LOCATION ${FFMPEG_BUILDDIR}/libswscale/libswscale.a) +- +- SET (FFMPEG_LIBRARIES +- libavformat +- libavcodec +- libavutil +- libswresample +- libswscale +- ) +- endif() ++ set_target_properties(libswscale PROPERTIES IMPORTED_LOCATION ${FFMPEG_BUILDDIR}/libswscale/libswscale.a) ++ ++ SET (FFMPEG_LIBRARIES ++ libavformat ++ libavcodec ++ libavutil ++ libswresample ++ libswscale ++ ) ++ endif(NOT DEFINED FFMPEG_BUILDDIR) ++ endif(NOT FFMPEG_FOUND) + + find_library(ICONV_LIBRARY NAMES iconv) + if (ICONV_LIBRARY) +@@ -514,15 +520,25 @@ if(USE_FFMPEG) + endif() + endif(APPLE) + +- set(LinkCommon ${LinkCommon} ${FFMPEG_LIBRARIES}) ++ if(FFMPEG_FOUND) ++ set(nativeExtraLibs ${nativeExtraLibs} ${FFMPEG_LIBRARIES}) ++ else() ++ set(LinkCommon ${LinkCommon} ${FFMPEG_LIBRARIES}) ++ endif() ++ target_link_libraries(Common ${FFMPEG_LIBRARIES}) + add_definitions(-DUSE_FFMPEG) + endif(USE_FFMPEG) + + # Modification to show where we are pulling the ffmpeg libraries from. + if(USE_FFMPEG AND DEFINED FFMPEG_LIBRARIES) +- target_link_libraries(Common ${FFMPEG_LIBRARIES}) + message(STATUS "FFMPEG library locations:") +- if(DEFINED PLATFORM_ARCH) ++ if(FFMPEG_FOUND) ++ message(STATUS "libavcodec location: ${FFMPEG_avcodec_LIBRARY}") ++ message(STATUS "libavformat location: ${FFMPEG_avformat_LIBRARY}") ++ message(STATUS "libavutil location: ${FFMPEG_avutil_LIBRARY}") ++ message(STATUS "libswresample location: ${FFMPEG_swresample_LIBRARY}") ++ message(STATUS "libswscale location: ${FFMPEG_swscale_LIBRARY}") ++ elseif(DEFINED PLATFORM_ARCH) + set(TEMP ${CMAKE_SOURCE_DIR}/ffmpeg/${PLATFORM_ARCH}/lib) + message(STATUS "libavcodec location: ${TEMP}/libavcodec.a") + message(STATUS "libavformat location: ${TEMP}/libavformat.a") +@@ -540,7 +556,7 @@ if(USE_FFMPEG AND DEFINED FFMPEG_LIBRARIES) + message(STATUS "libswresample location: ${TEMP}") + get_target_property(TEMP libswscale IMPORTED_LOCATION) + message(STATUS "libswscale location: ${TEMP}") +- endif(DEFINED PLATFORM_ARCH) ++ endif() + else() + message(STATUS "ERROR: No FFMPEG library locations") + endif() +diff --git a/CMakeTests/FindFFMPEG.cmake b/CMakeTests/FindFFMPEG.cmake +new file mode 100644 +index 0000000..8fac08f +--- /dev/null ++++ b/CMakeTests/FindFFMPEG.cmake +@@ -0,0 +1,167 @@ ++# FindFFMPEG ++# ---------- ++# ++# Find the native FFMPEG includes and libraries ++# ++# This module defines: ++# ++# FFMPEG_INCLUDE_DIR, where to find avformat.h, avcodec.h... ++# FFMPEG_LIBRARIES, the libraries to link against to use FFMPEG. ++# FFMPEG_FOUND, If false, do not try to use FFMPEG. ++# ++# also defined, but not for general use are: ++# ++# FFMPEG_avformat_LIBRARY, where to find the FFMPEG avformat library. ++# FFMPEG_avcodec_LIBRARY, where to find the FFMPEG avcodec library. ++# ++# This is useful to do it this way so that we can always add more libraries ++# if needed to ``FFMPEG_LIBRARIES`` if ffmpeg ever changes... ++ ++#============================================================================= ++# Copyright: 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen ++# ++# Distributed under the OSI-approved BSD License (the "License"); ++# see accompanying file Copyright.txt for details. ++# ++# This software is distributed WITHOUT ANY WARRANTY; without even the ++# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ++# See the License for more information. ++#============================================================================= ++# (To distribute this file outside of ppsspp, substitute the full ++# License text for the above reference.) ++ ++find_path(FFMPEG_INCLUDE_DIR1 avformat.h ++ $ENV{FFMPEG_DIR} ++ $ENV{FFMPEG_DIR}/ffmpeg ++ $ENV{FFMPEG_DIR}/libavformat ++ $ENV{FFMPEG_DIR}/include/libavformat ++ $ENV{FFMPEG_DIR}/include/ffmpeg ++ /usr/local/include/ffmpeg ++ /usr/include/ffmpeg ++ /usr/include/libavformat ++ /usr/include/ffmpeg/libavformat ++ /usr/local/include/libavformat ++) ++ ++find_path(FFMPEG_INCLUDE_DIR2 avcodec.h ++ $ENV{FFMPEG_DIR} ++ $ENV{FFMPEG_DIR}/ffmpeg ++ $ENV{FFMPEG_DIR}/libavcodec ++ $ENV{FFMPEG_DIR}/include/libavcodec ++ $ENV{FFMPEG_DIR}/include/ffmpeg ++ /usr/local/include/ffmpeg ++ /usr/include/ffmpeg ++ /usr/include/libavcodec ++ /usr/include/ffmpeg/libavcodec ++ /usr/local/include/libavcodec ++) ++ ++find_path(FFMPEG_INCLUDE_DIR3 avutil.h ++ $ENV{FFMPEG_DIR} ++ $ENV{FFMPEG_DIR}/ffmpeg ++ $ENV{FFMPEG_DIR}/libavutil ++ $ENV{FFMPEG_DIR}/include/libavutil ++ $ENV{FFMPEG_DIR}/include/ffmpeg ++ /usr/local/include/ffmpeg ++ /usr/include/ffmpeg ++ /usr/include/libavutil ++ /usr/include/ffmpeg/libavutil ++ /usr/local/include/libavutil ++) ++ ++find_path(FFMPEG_INCLUDE_DIR4 swresample.h ++ $ENV{FFMPEG_DIR} ++ $ENV{FFMPEG_DIR}/ffmpeg ++ $ENV{FFMPEG_DIR}/libswresample ++ $ENV{FFMPEG_DIR}/include/libswresample ++ $ENV{FFMPEG_DIR}/include/ffmpeg ++ /usr/local/include/ffmpeg ++ /usr/include/ffmpeg ++ /usr/include/libswresample ++ /usr/include/ffmpeg/libswresample ++ /usr/local/include/libswresample ++) ++ ++find_path(FFMPEG_INCLUDE_DIR5 swscale.h ++ $ENV{FFMPEG_DIR} ++ $ENV{FFMPEG_DIR}/ffmpeg ++ $ENV{FFMPEG_DIR}/libswscale ++ $ENV{FFMPEG_DIR}/include/libswscale ++ $ENV{FFMPEG_DIR}/include/ffmpeg ++ /usr/local/include/ffmpeg ++ /usr/include/ffmpeg ++ /usr/include/libswscale ++ /usr/include/ffmpeg/libswscale ++ /usr/local/include/libswscale ++) ++ ++if(FFMPEG_INCLUDE_DIR1 AND ++ FFMPEG_INCLUDE_DIR2 AND ++ FFMPEG_INCLUDE_DIR3 AND ++ FFMPEG_INCLUDE_DIR4 AND ++ FFMPEG_INCLUDE_DIR5 ++) ++ set(FFMPEG_INCLUDE_DIR ${FFMPEG_INCLUDE_DIR1} ++ ${FFMPEG_INCLUDE_DIR2} ++ ${FFMPEG_INCLUDE_DIR3} ++ ${FFMPEG_INCLUDE_DIR4} ++ ${FFMPEG_INCLUDE_DIR5} ++ ) ++endif() ++ ++find_library(FFMPEG_avformat_LIBRARY avformat ++ $ENV{FFMPEG_DIR} ++ $ENV{FFMPEG_DIR}/lib ++ $ENV{FFMPEG_DIR}/libavformat ++ /usr/local/lib ++ /usr/lib ++) ++ ++find_library(FFMPEG_avcodec_LIBRARY avcodec ++ $ENV{FFMPEG_DIR} ++ $ENV{FFMPEG_DIR}/lib ++ $ENV{FFMPEG_DIR}/libavcodec ++ /usr/local/lib ++ /usr/lib ++) ++ ++find_library(FFMPEG_avutil_LIBRARY avutil ++ $ENV{FFMPEG_DIR} ++ $ENV{FFMPEG_DIR}/lib ++ $ENV{FFMPEG_DIR}/libavutil ++ /usr/local/lib ++ /usr/lib ++) ++ ++find_library(FFMPEG_swresample_LIBRARY swresample ++ $ENV{FFMPEG_DIR} ++ $ENV{FFMPEG_DIR}/lib ++ $ENV{FFMPEG_DIR}/libswresample ++ /usr/local/lib ++ /usr/lib ++) ++ ++find_library(FFMPEG_swscale_LIBRARY swscale ++ $ENV{FFMPEG_DIR} ++ $ENV{FFMPEG_DIR}/lib ++ $ENV{FFMPEG_DIR}/libswscale ++ /usr/local/lib ++ /usr/lib ++) ++ ++if(FFMPEG_INCLUDE_DIR) ++ if(FFMPEG_avformat_LIBRARY AND ++ FFMPEG_avcodec_LIBRARY AND ++ FFMPEG_avutil_LIBRARY AND ++ FFMPEG_swresample_LIBRARY AND ++ FFMPEG_swscale_LIBRARY ++ ) ++ set(FFMPEG_FOUND "YES") ++ set(FFMPEG_LIBRARIES ${FFMPEG_avformat_LIBRARY} ++ ${FFMPEG_avcodec_LIBRARY} ++ ${FFMPEG_avutil_LIBRARY} ++ ${FFMPEG_swresample_LIBRARY} ++ ${FFMPEG_swscale_LIBRARY} ++ ) ++ endif() ++endif() +-- +2.4.2 + diff --git a/ppsspp-gcc5.1.patch b/ppsspp-gcc5.1.patch new file mode 100644 index 0000000..e046206 --- /dev/null +++ b/ppsspp-gcc5.1.patch @@ -0,0 +1,40 @@ +diff -rupN ppsspp.orig/ext/xbrz/xbrz.cpp ppsspp/ext/xbrz/xbrz.cpp +--- ppsspp.orig/ext/xbrz/xbrz.cpp 2015-06-01 14:16:20.005738417 +0200 ++++ ppsspp/ext/xbrz/xbrz.cpp 2015-06-01 14:21:30.365765974 +0200 +@@ -648,23 +648,21 @@ void scalePixel(const Kernel_3x3& ker, + auto eq = [&](uint32_t pix1, uint32_t pix2) { return ColorDistance::dist(pix1, pix2, cfg.luminanceWeight_) < cfg.equalColorTolerance_; }; + auto dist = [&](uint32_t pix1, uint32_t pix2) { return ColorDistance::dist(pix1, pix2, cfg.luminanceWeight_); }; + +- const bool doLineBlend = [&]() -> bool +- { +- if (getBottomR(blend) >= BLEND_DOMINANT) +- return true; ++ bool doLineBlend; + +- //make sure there is no second blending in an adjacent rotation for this pixel: handles insular pixels, mario eyes +- if (getTopR(blend) != BLEND_NONE && !eq(e, g)) //but support double-blending for 90° corners +- return false; +- if (getBottomL(blend) != BLEND_NONE && !eq(e, c)) +- return false; ++ if (getBottomR(blend) >= BLEND_DOMINANT) ++ doLineBlend = true; + +- //no full blending for L-shapes; blend corner only (handles "mario mushroom eyes") +- if (!eq(e, i) && eq(g, h) && eq(h , i) && eq(i, f) && eq(f, c)) +- return false; +- +- return true; +- }(); ++ //make sure there is no second blending in an adjacent rotation for this pixel: handles insular pixels, mario eyes ++ else if (getTopR(blend) != BLEND_NONE && !eq(e, g)) //but support double-blending for 90° corners ++ doLineBlend = false; ++ else if (getBottomL(blend) != BLEND_NONE && !eq(e, c)) ++ doLineBlend = false; ++ //no full blending for L-shapes; blend corner only (handles "mario mushroom eyes") ++ else if (!eq(e, i) && eq(g, h) && eq(h , i) && eq(i, f) && eq(f, c)) ++ doLineBlend = false; ++ else ++ doLineBlend = true; + + const uint32_t px = dist(e, f) <= dist(e, h) ? f : h; //choose most similar color +