Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:X0F:branches:Emulators
ppsspp
ppsspp.spec
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ppsspp.spec of Package ppsspp
%define __builder ninja %define use_clang 1 %define use_lld 1 %define use_lto 1 # apparently, Qt version is obsolete and unmaintained, it lacks all new features like Vulkan support %define use_qt 0 %define use_qt6 0 # it's hardcoded for obsolete API from obsolete version and forcing the switch may lead to random hangs after pre-rendered videos # so let's try building it with statically-linked cut-down bundled version that is then cut-down some more by aggressive linker and LTO %define ffmpeg_system 0 %define ffmpeg_system_new 0 Name: ppsspp License: GPL-2.0+ Summary: PlayStation Portable Emulator Url: ppsspp.org Version: 1.17.1 Release: 0 Group: System/Emulators/Other Source0: %{name}-%{version}.tar.xz #Patch0: disable-buildtime-git-version-creation.patch %if 0%{?ffmpeg_system_new} # https://github.com/hrydgard/ppsspp/issues/15308#issuecomment-1374461222 Patch1: ppsspp-PR18670.patch %endif Patch3: ppsspp-stdio.patch Patch10: ppsspp-PR16277.patch Patch11: ppsspp-PR16303.patch BuildRequires: hicolor-icon-theme BuildRequires: update-desktop-files %if 0%{?use_clang} BuildRequires: clang-devel BuildRequires: npth-devel %if 0%{?use_lld} BuildRequires: lld %else BuildRequires: llvm-gold BuildRequires: binutils-gold %endif %else BuildRequires: gcc-c++ BuildRequires: binutils-gold %endif BuildRequires: ccache BuildRequires: cmake BuildRequires: ninja BuildRequires: libminiupnpc-devel BuildRequires: snappy-devel BuildRequires: pkgconfig BuildRequires: pkgconfig(gl) BuildRequires: pkgconfig(libglvnd) BuildRequires: pkgconfig(glew) BuildRequires: pkgconfig(libzstd) BuildRequires: pkgconfig(alsa) BuildRequires: pkgconfig(jack) BuildRequires: pkgconfig(libpng16) BuildRequires: pkgconfig(libpulse) BuildRequires: pkgconfig(libzip) BuildRequires: pkgconfig(openal) BuildRequires: pkgconfig(sdl2) BuildRequires: pkgconfig(zlib) BuildRequires: pkgconfig(SPIRV-Tools) BuildRequires: pkgconfig(spirv-cross-c-shared) BuildRequires: glslang-devel BuildRequires: vulkan-devel BuildRequires: vulkan-tools BuildRequires: wayland-devel BuildRequires: shaderc-devel BuildRequires: xz %if 0%{?use_qt} %if 0%{?use_qt6} BuildRequires: qt6-gui-private-devel BuildRequires: cmake(Qt6LinguistTools) BuildRequires: cmake(Qt6WaylandClient) BuildRequires: pkgconfig(Qt6Concurrent) BuildRequires: pkgconfig(Qt6Core) BuildRequires: pkgconfig(Qt6DBus) BuildRequires: pkgconfig(Qt6Network) BuildRequires: pkgconfig(Qt6Multimedia) BuildRequires: pkgconfig(Qt6MultimediaWidgets) BuildRequires: pkgconfig(Qt6OpenGL) BuildRequires: pkgconfig(Qt6Qml) BuildRequires: pkgconfig(Qt6Widgets) BuildRequires: pkgconfig(Qt6Svg) %else BuildRequires: libqt5-qtbase-private-headers-devel BuildRequires: libqt5-qttools-devel BuildRequires: cmake(Qt5LinguistTools) BuildRequires: pkgconfig(Qt5Concurrent) BuildRequires: pkgconfig(Qt5Core) BuildRequires: pkgconfig(Qt5DBus) BuildRequires: pkgconfig(Qt5Network) BuildRequires: pkgconfig(Qt5Multimedia) BuildRequires: pkgconfig(Qt5MultimediaWidgets) BuildRequires: pkgconfig(Qt5OpenGL) BuildRequires: pkgconfig(Qt5Qml) BuildRequires: pkgconfig(Qt5Widgets) BuildRequires: pkgconfig(Qt5Svg) %endif %endif %if 0%{?ffmpeg_system} %if 0%{?ffmpeg_system_new} BuildRequires: pkgconfig(libavcodec) BuildRequires: pkgconfig(libavdevice) BuildRequires: pkgconfig(libavformat) BuildRequires: pkgconfig(libavutil) BuildRequires: pkgconfig(libswresample) BuildRequires: pkgconfig(libswscale) BuildRequires: ffmpeg-6-private-devel %else BuildRequires: ffmpeg-4-private-devel BuildRequires: ffmpeg-4-libavdevice-devel BuildRequires: ffmpeg-4-libswscale-devel %endif %else # or use deps for bundled ffmpeg BuildRequires: libmp3lame-devel BuildRequires: pkgconfig(fdk-aac) BuildRequires: pkgconfig(twolame) BuildRequires: pkgconfig(x264) %endif Provides: %{name}-sdl = %{version} Provides: %{name}-common = %{version} Conflicts: %{name}-common Conflicts: %{name}-qt Obsoletes: %{name}-qt %description PPSSPP is a Playstation PSP emulator. download roms from pspshare.org %prep %autosetup -p1 #setup -q -n %{name}-%{version}.%{commit_timestamp}.%{revision} find . -iname "CMakeCache.txt" -delete sed -i -e "s: DEPENDS something_that_never_exists::g" CMakeLists.txt mkdir -v build echo "// This is a generated file. const char *PPSSPP_GIT_VERSION = \"%{version}\"; // If you don't want this file to update/recompile, change to 1. #define PPSSPP_GIT_VERSION_NO_UPDATE 1 " > build/git-version.cpp # try to force usage of system libraries #rm -rf ext/zlib #rm -rf ext/snappy #rm -rf native/ext/libzip %build ulimit -Sn 4000 export UCFLAGS="-fPIC -O3 -fno-strict-aliasing" %ifarch x86_64 export UCFLAGS="${UCFLAGS} -march=x86-64 -mtune=generic -mssse3 -msse4 -msse4.1 -msse4.2 -mavx -maes -mpclmul" %endif export ULDFLAGS="-Wl,--gc-sections -Wl,-O1 -Wl,--icf=safe" %if 0%{?use_lld} export UCFLAGS="${UCFLAGS} -fuse-ld=lld" export ULDFLAGS="${ULDFLAGS} -fuse-ld=lld" %ifnarch x86_64 export ULDFLAGS="${ULDFLAGS} -Wl,-z,notext" %endif export LD="ld.lld" alias ld=ld.lld %else export ULDFLAGS="${ULDFLAGS} -fuse-ld=gold -Wl,--sort-common -Wl,-O1" export LD=ld.gold alias ld=gold %endif %if 0%{?use_clang} export CC=clang export CXX=clang++ export UCFLAGS="${UCFLAGS} -v -fbracket-depth=1024 -fconstexpr-depth=1024 -relocatable-pch" export UCFLAGS="${UCFLAGS} -fexceptions" export UCXXFLAGS="${UCFLAGS} -fcxx-exceptions" export HOST="$(${CC} -print-target-triple)" %if 0%{?use_lto} %if 0%{?use_lld} %define _lto_cflags -flto=thin -Wl,--lto-O3 -Wl,--thinlto-jobs=3 %define _lto_ldlags -flto=thin -Wl,--lto-O3 -Wl,--thinlto-jobs=3 %else %define _lto_cflags -flto=thin %define _lto_ldlags -flto=thin %endif %else %define _lto_cflags %nil %define _lto_ldlags %nil %endif %else export CC=gcc export CXX=g++ export UCFLAGS="${UCFLAGS} -ftree-parallelize-loops=4 -ftree-vectorize -fvect-cost-model=cheap -fsimd-cost-model=cheap -fpredictive-commoning" export UCXXFLAGS="${UCFLAGS}" export HOST="%{_target_platform}" %if 0%{?use_lto} %define _lto_cflags -fuse-linker-plugin %_lto_cflags -ffat-lto-objects -flto-odr-type-merging %define _lto_ldlags -fuse-linker-plugin -flto=thin %else %define _lto_cflags %nil %define _lto_ldlags %nil %endif %endif # build stupid static bundled ffmpeg-4 ? avoid LTO for this part %if !0%{?ffmpeg_system} cd ffmpeg sed -i -e 's:${GENERAL} \\:${GENERAL} \\\ --cc="${CC}" \\\ --cxx="${CXX}" \\\ --objcc="${CC}" \\\ --extra-cflags="${UCFLAGS}" \\\ --extra-objcflags="${UCFLAGS}" \\\ --extra-cxxflags="${UCXXFLAGS}" \\\ --extra-ldflags="${UCFLAGS}" \\:g' *.sh %ifarch %ix86 ./linux_x86.sh || cat config.log %endif %ifarch x86_64 ./linux_x86-64.sh || cat config.log %endif cd .. %endif export TARGET="${HOST}" export UCFLAGS="${UCFLAGS} %_lto_cflags" export UCXXFLAGS="${UCXXFLAGS} %_lto_cflags" export ULDFLAGS="${ULDFLAGS} %_lto_cflags %_lto_ldlags" # override OBS defaults ? export CFLAGS="%{optflags} ${UCFLAGS}" export CXXFLAGS="${UCXXFLAGS}" export LDFLAGS="${ULDFLAGS}" # -DOpenGL_GL_PREFERENCE=GLVND \ # -DUSING_EGL=ON \ %cmake \ -DCMAKE_C_COMPILER="${CC}" \ -DCMAKE_CXX_COMPILER="${CXX}" \ -DCMAKE_LINKER="${LD}" \ -DCMAKE_C_FLAGS="${CFLAGS}" \ -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \ -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" \ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ -DCMAKE_SKIP_RPATH=TRUE \ -DBUILD_STATIC_LIBS=ON \ -DBUILD_SHARED_LIBS=OFF \ -DUSE_CCACHE=ON \ -DUSE_FFMPEG=ON \ %if 0%{?ffmpeg_system} -DUSE_SYSTEM_FFMPEG=ON \ %else -DUSE_SYSTEM_FFMPEG=OFF \ %endif -DUSE_SYSTEM_MINIUPNPC=ON \ -DUSE_SYSTEM_SNAPPY=ON \ -DUSE_SYSTEM_LIBSDL2=ON \ -DUSE_SYSTEM_LIBZIP=ON \ -DUSE_SYSTEM_ZSTD=ON \ %if 0%{?use_qt} -DUSING_QT_UI=ON \ %else -DUSING_QT_UI=OFF \ %endif -DUSE_VULKAN_DISPLAY_KHR=ON \ -DUSING_X11_VULKAN=ON \ -DUSE_WAYLAND_WSI=ON \ -DMOBILE_DEVICE=OFF \ -DSIMULATOR=OFF \ -DSKIP_GLSLANG_INSTALL=TRUE %cmake_build %install %cmake_install %post %desktop_database_post %icon_theme_cache_post %postun %desktop_database_postun %icon_theme_cache_postun %files %defattr(-,root,root) %{_bindir}/* %{_datadir}/%{name} %{_datadir}/icons/hicolor/*/*/* %{_datadir}/applications/*.desktop %{_datadir}/mime/packages/*.xml %changelog
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor