File pcsx2.spec of Package pcsx2
#
# spec file for package pcsx2
#
# copyright (c) 2025 munix9@googlemail.com
#
%define _patches %(basename -s .tar.gz %{_sourcedir}/%{name}_patches-*.tar.gz | cut -d'-' -f2)
Name: pcsx2
Version: 2.5.0
Release: 0
Summary: Sony PlayStation 2 Emulator
License: GPL-2.0-only AND GPL-3.0-only AND LGPL-2.1-only AND LGPL-3.0-only
URL: https://pcsx2.net/
Source0: %{name}-%{version}.tar.gz
Source1: %{name}_patches-%{_patches}.tar.gz
Source99: %{name}.rpmlintrc
ExclusiveArch: x86_64
BuildRequires: 7zip
BuildRequires: clang
BuildRequires: cmake
BuildRequires: desktop-file-utils
BuildRequires: extra-cmake-modules
BuildRequires: fdupes
BuildRequires: git
BuildRequires: hicolor-icon-theme
BuildRequires: libbacktrace-devel
BuildRequires: lld
BuildRequires: llvm-gold
BuildRequires: ninja
BuildRequires: pkgconfig
BuildRequires: qt6-gui-private-devel
BuildRequires: cmake(KDDockWidgets-qt6)
BuildRequires: pkgconfig(Qt6Concurrent)
BuildRequires: pkgconfig(Qt6Core)
BuildRequires: pkgconfig(Qt6Gui)
BuildRequires: pkgconfig(Qt6Linguist)
BuildRequires: pkgconfig(Qt6Network)
BuildRequires: pkgconfig(Qt6WaylandClient)
BuildRequires: pkgconfig(Qt6WaylandCompositor)
BuildRequires: pkgconfig(Qt6Widgets)
BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(egl)
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(gl)
BuildRequires: pkgconfig(jack)
BuildRequires: pkgconfig(libavcodec)
BuildRequires: pkgconfig(libavformat)
BuildRequires: pkgconfig(libavutil)
BuildRequires: pkgconfig(libcurl)
BuildRequires: pkgconfig(libjpeg)
BuildRequires: pkgconfig(liblz4)
BuildRequires: pkgconfig(liblzma)
BuildRequires: pkgconfig(libpcap)
BuildRequires: pkgconfig(libpng16)
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(libswresample)
BuildRequires: pkgconfig(libswscale)
BuildRequires: pkgconfig(libudev)
BuildRequires: pkgconfig(libwebp)
BuildRequires: pkgconfig(libzstd)
BuildRequires: pkgconfig(plutosvg)
BuildRequires: pkgconfig(samplerate)
BuildRequires: pkgconfig(sdl3)
BuildRequires: pkgconfig(shaderc)
BuildRequires: pkgconfig(sndio)
BuildRequires: pkgconfig(vulkan)
BuildRequires: pkgconfig(wayland-egl)
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xrender)
BuildRequires: pkgconfig(zlib)
Provides: bundled(%{name}_patches) = %{_patches}
%description
Sony PlayStation 2 emulator. Requires a BIOS image in %{_datadir}/PCSX2/bios
or in ~/.config/PCSX2/bios in your HOME directory (will be created when you
first run PCSX2).
Check https://pcsx2.net/docs/setup/bios for details on which files you need
and how to obtain them.
Includes %{name}_patches %{_patches}
%prep
%autosetup -a1 -p1
sed -e 's/PCSX2_GIT_REV "Unknown"/PCSX2_GIT_REV "%{version}"/' \
-i cmake/Pcsx2Utils.cmake
%build
%define __builder ninja
%cmake \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_C_COMPILER_AR=%{_bindir}/ar \
-DCMAKE_C_COMPILER_RANLIB=%{_bindir}/ranlib \
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_CXX_COMPILER_AR=%{_bindir}/ar \
-DCMAKE_CXX_COMPILER_RANLIB=%{_bindir}/ranlib \
-DCMAKE_EXE_LINKER_FLAGS_INIT="-fuse-ld=lld" \
-DCMAKE_MODULE_LINKER_FLAGS_INIT="-fuse-ld=lld" \
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \
-DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON \
-DDISABLE_ADVANCE_SIMD=ON \
-DENABLE_SETCAP=OFF \
-DPACKAGE_MODE=ON \
-DUSE_LINKED_FFMPEG=ON
%cmake_build
%install
%cmake_install
7z a -r %{buildroot}%{_datadir}/PCSX2/resources/patches.zip \
%{name}_patches-%{_patches}/patches/.
echo "%{_patches}" > %{buildroot}%{_datadir}/PCSX2/resources/patches.version
install -d -m 0755 %{buildroot}%{_datadir}/PCSX2/bios
install -D -m 0644 bin/resources/icons/AppIconLarge.png \
%{buildroot}%{_datadir}/icons/hicolor/512x512/apps/PCSX2.png
install -D -m 0644 .github/workflows/scripts/linux/%{name}-qt.desktop \
%{buildroot}%{_datadir}/applications/net.%{name}.PCSX2.desktop
install -d -m 0755 %{buildroot}%{_datadir}/metainfo
_date="$(date -u -d@$SOURCE_DATE_EPOCH -I)"
sed -e "s/@GIT_VERSION@/%{version}/;s/@GIT_DATE@/$_date/" \
-e '/<custom>/d;/flathub/d;/<\/custom>/d' \
.github/workflows/scripts/linux/%{name}-qt.metainfo.xml.in \
> %{buildroot}%{_datadir}/metainfo/net.%{name}.PCSX2.appdata.xml
%fdupes -s %{buildroot}%{_datadir}
%check
desktop-file-validate %{buildroot}%{_datadir}/applications/net.%{name}.PCSX2.desktop
%ctest --parallel 1 --timeout 60 --verbose
%files
%license COPYING.GPLv3
%doc README.md
%caps(cap_net_raw=eip cap_net_admin=eip) %{_bindir}/%{name}-qt
%{_datadir}/PCSX2
%{_datadir}/applications/net.%{name}.PCSX2.desktop
%{_datadir}/icons/hicolor/512x512/apps/PCSX2.png
%{_datadir}/metainfo/net.%{name}.PCSX2.appdata.xml
%changelog