Name: citron-git Version: 0.12.26 Release: 2%{?dist} Summary: A Nintendo Switch emulator License: GPL-2.0-only URL: https://gitlab.com/l4t-community/Citron # Source0: {name}-{version}.tar.gz BuildRequires: autoconf BuildRequires: boost BuildRequires: boost-devel BuildRequires: catch2-devel BuildRequires: clang BuildRequires: cmake BuildRequires: curl-devel BuildRequires: enet-devel BuildRequires: fmt-devel BuildRequires: ffmpeg-devel BuildRequires: gamemode-devel BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: git BuildRequires: glslang BuildRequires: mesa-libGLU-devel BuildRequires: hidapi-devel BuildRequires: libdecor-devel BuildRequires: libtool BuildRequires: libv4l-devel BuildRequires: libvpx-devel BuildRequires: libXi-devel BuildRequires: libxkbcommon-x11-devel BuildRequires: libXScrnSaver-devel BuildRequires: libzstd-devel BuildRequires: lld BuildRequires: llvm BuildRequires: lz4-devel BuildRequires: mbedtls-devel BuildRequires: mesa-dri-drivers BuildRequires: mesa-vulkan-drivers BuildRequires: nasm BuildRequires: ninja-build BuildRequires: nlohmann-json-devel BuildRequires: numactl-devel BuildRequires: nvidia-l4t-bsp BuildRequires: openal-soft-devel BuildRequires: pulseaudio-libs-devel BuildRequires: pulseaudio-utils BuildRequires: qt6-qtbase-devel BuildRequires: qt6-qtbase-private-devel BuildRequires: qt6-qtnetworkauth-devel BuildRequires: qt6-qtmultimedia-devel BuildRequires: qt6-qttools-devel BuildRequires: qt6-qtwayland-devel BuildRequires: qt6-qttranslations BuildRequires: SDL2-devel BuildRequires: systemd-devel BuildRequires: unzip BuildRequires: vulkan-headers BuildRequires: vulkan-validation-layers BuildRequires: wget BuildRequires: xcb-util-cursor-devel BuildRequires: xcb-util-image-devel BuildRequires: xcb-util-renderutil-devel BuildRequires: xcb-util-wm-devel BuildRequires: xorg-x11-server-Xvfb BuildRequires: zip BuildRequires: zsync BuildRequires: zstd ExclusiveArch: x86_64 aarch64 %description Citron is a Nintendo Switch emulator focused on performance, accuracy, and a clean Qt-based user interface. This package builds the latest development version directly from the upstream git repository. --- %global gitrev %(git ls-remote %{SOURCE0} HEAD | cut -c1-7) %global cflags %{optflags} -march=armv8-a+simd+crypto+crc -mtune=cortex-a57 %prep git clone --recursive %{URL} %{name}-%{version} cd %{name}-%{version} # Boost compatibility patches (same logic as PKGBUILD) find . -type f \( -name '*.cpp' -o -name '*.h' \) -print0 | \ xargs -0 sed -i \ -e 's/\bboost::asio::io_service\b/boost::asio::io_context/g' \ -e 's/\bboost::asio::io_service::strand\b/boost::asio::strand/g' \ -e 's|#include *|#include |g' \ -e 's/\bboost::process::async_pipe\b/boost::process::v1::async_pipe/g' %build cd %{name}-%{version} mkdir build cd build cmake .. -GNinja \ -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \ -DCITRON_BUILD_TYPE=Nightly \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=%{buildroot}%{_prefix} \ -DCITRON_USE_BUNDLED_VCPKG=OFF \ -DCITRON_USE_BUNDLED_QT=OFF \ -DUSE_SYSTEM_QT=ON \ -DCITRON_USE_BUNDLED_FFMPEG=OFF \ -DCITRON_USE_BUNDLED_SDL2=OFF \ -DCITRON_TESTS=OFF \ -DCITRON_CHECK_SUBMODULES=OFF \ -DCITRON_ENABLE_LTO=ON \ -DCITRON_USE_QT_MULTIMEDIA=ON \ -DENABLE_QT_TRANSLATION=ON \ -DCITRON_USE_EXTERNAL_Vulkan_HEADERS=ON \ -DCITRON_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES=ON \ -DCMAKE_CXX_FLAGS="${cflags}" \ -DCMAKE_C_FLAGS="${cflags}" \ -DCMAKE_SYSTEM_PROCESSOR="$(uname -m)" ninja -j$(nproc) %install cd %{name}-%{version} ninja -C build install %files %{_bindir}/citron* %{_datadir}/applications/* %{_datadir}/icons/* %{_datadir}/* %changelog %{autochangelog}