%define optflags_lto -flto=thin
%define llvm_version 17.0
# git describe mainline-0-%version
%define git_descr mainline-636-14434-g537296095ab
%define sirit_commit ab75463999f4f3291976b079d42d52ee91eebf3f
%define mbedtls_commit 8c88150ca139e06aa2aae8349df8292a88148ea1
%define simpleini_version 4.20
%define tzdb_to_nx_date 221202
Name: yuzu
Version: 1734
Release: alt2
Summary: Nintendo Switch emulator/debugger
License: GPLv3+
Group: Emulators
Url: https://%name-emu.org/
Packager: Nazarov Denis <nenderus@altlinux.org>
ExclusiveArch: x86_64
BuildRequires(pre): libavfilter-devel
# https://github.com/%name-emu/%name-mainline/archive/mainline-0-%version/%name-mainline-mainline-0-%version.tar.gz
Source0: %name-mainline-mainline-0-%version.tar
# https://github.com/ReinUsesLisp/sirit/archive/%sirit_commit/sirit-%sirit_commit.tar.gz
Source1: sirit-%sirit_commit.tar
# https://github.com/yuzu-emu/mbedtls/archive/%mbedtls_commit/mbedtls-%mbedtls_commit.tar.gz
Source2: mbedtls-%mbedtls_commit.tar
# https://github.com/brofield/simpleini/archive/v%simpleini_version/simpleini-%simpleini_version.tar.gz
Source3: simpleini-%simpleini_version.tar
Source4: https://github.com/lat9nq/tzdb_to_nx/releases/download/%tzdb_to_nx_date/%tzdb_to_nx_date.zip
Patch0: %name-cpp-jwt-version-alt.patch
Patch1: %name-xbyak-version-alt.patch
BuildRequires: /proc
BuildRequires: boost-asio-devel
BuildRequires: boost-filesystem-devel
BuildRequires: catch-devel
BuildRequires: clang%llvm_version
BuildRequires: clang%llvm_version-tools
BuildRequires: glslang
BuildRequires: libSDL2-devel
BuildRequires: libVulkanUtilityLibraries-devel
BuildRequires: libavcodec-devel
BuildRequires: libavfilter-devel
BuildRequires: libbrotli-devel
BuildRequires: libcpp-httplib-devel
BuildRequires: libcpp-jwt-devel
BuildRequires: libcubeb-devel
BuildRequires: libdynarmic-devel
BuildRequires: libedit-devel
BuildRequires: libenet-devel
BuildRequires: libffi-devel
BuildRequires: libgamemode-devel
BuildRequires: liblz4-devel
BuildRequires: libopus-devel
BuildRequires: libstb-devel
BuildRequires: libswscale-devel
BuildRequires: libusb-devel
BuildRequires: libvulkan-memory-allocator-devel
BuildRequires: libxml2-devel
BuildRequires: libzstd-devel
BuildRequires: lld%llvm_version
BuildRequires: llvm%llvm_version-devel
BuildRequires: llvm%llvm_version-gold
BuildRequires: ninja-build
BuildRequires: nlohmann-json-devel
BuildRequires: python-modules-encodings
BuildRequires: python3-dev
BuildRequires: python3-module-mpl_toolkits
BuildRequires: qt6-tools-devel
BuildRequires: spirv-headers
BuildRequires: unzip
BuildRequires: zlib-devel
%description
%name is an open source Nintendo Switch emulator/debugger.
%prep
%setup -n %name-mainline-mainline-0-%version -b 1 -b 2 -b 3
%patch0 -p1
%patch1 -p1
%__mv -Tf ../sirit-%sirit_commit externals/sirit
%__mv -Tf ../mbedtls-%mbedtls_commit externals/mbedtls
%__mv -Tf ../simpleini-%simpleini_version externals/simpleini
# Enforce package versioning in GUI
sed -i \
-e 's|@GIT_BRANCH@|HEAD|g' \
-e 's|@GIT_DESC@|%git_descr|g' \
-e 's|@TITLE_BAR_FORMAT_IDLE@|%name %version|g' \
-e 's|@TITLE_BAR_FORMAT_RUNNING@|%name %version|g' \
src/common/scm_rev.cpp.in
%__rm .gitmodules
%build
export ALTWRAP_LLVM_VERSION=%llvm_version
sed -i -e 's/-Werror=shadow-uncaptured-local/-Wno-error=shadow-uncaptured-local/' src/CMakeLists.txt
%__mkdir_p %_target_platform/externals/nx_tzdb/nx_tzdb
unzip %SOURCE4 -d %_target_platform/externals/nx_tzdb/nx_tzdb
%cmake \
-DCMAKE_C_COMPILER:STRING=clang \
-DCMAKE_CXX_COMPILER:STRING=clang++ \
-DCMAKE_RANLIB:PATH=%_bindir/llvm-ranlib \
-DCMAKE_AR:PATH=%_bindir/llvm-ar \
-DCMAKE_NM:PATH=%_bindir/llvm-nm \
-DCMAKE_EXE_LINKER_FLAGS:STRING="-fuse-ld=lld" \
-DENABLE_QT6:BOOL=TRUE \
-DENABLE_QT_TRANSLATION:BOOL=TRUE \
-DYUZU_USE_EXTERNAL_SDL2:BOOL=FALSE \
-DYUZU_USE_EXTERNAL_VULKAN_HEADERS:BOOL=FALSE \
-DYUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES:BOOL=FALSE \
-DYUZU_ENABLE_LTO:BOOL=TRUE \
-DYUZU_DOWNLOAD_TIME_ZONE_DATA:BOOL=TRUE \
-DSIRIT_USE_SYSTEM_SPIRV_HEADERS:BOOL=TRUE \
-DLLVM_DIR:PATH=%_libexecdir/llvm-%llvm_version/%_lib/cmake/llvm \
-GNinja \
-Wno-dev
%cmake_build
%install
%cmake_install
%files
%doc CONTRIBUTING.md README.md
%_bindir/%name
%_bindir/%name-cmd
%_bindir/%name-room
%_desktopdir/org.%{name}_emu.%name.desktop
%_datadir/metainfo/org.%{name}_emu.%name.metainfo.xml
%_datadir/mime/packages/org.%{name}_emu.%name.xml
%_iconsdir/hicolor/scalable/apps/org.%{name}_emu.%name.svg
%changelog
* Sat Mar 09 2024 Nazarov Denis <nenderus@altlinux.org> 1734-alt2
- Remove vulkan version patch
* Fri Mar 08 2024 Nazarov Denis <nenderus@altlinux.org> 1734-alt1
- Version 1734
* Thu Feb 08 2024 Nazarov Denis <nenderus@altlinux.org> 1563-alt1.1
- Fix FTBFS
* Tue Sep 19 2023 Nazarov Denis <nenderus@altlinux.org> 1563-alt1
- Version 1563
* Sun Sep 10 2023 Nazarov Denis <nenderus@altlinux.org> 1553-alt1
- Version 1553
* Thu Sep 07 2023 Nazarov Denis <nenderus@altlinux.org> 1550-alt1
- Version 1550
* Tue Sep 05 2023 Nazarov Denis <nenderus@altlinux.org> 1546-alt1
- Version 1546 (ALT #47009)
* Mon Sep 04 2023 Nazarov Denis <nenderus@altlinux.org> 1487-alt1
- Version 1487
* Thu Jul 27 2023 Nazarov Denis <nenderus@altlinux.org> 1452-alt3.1
- Fix FTBFS
* Wed May 31 2023 Nazarov Denis <nenderus@altlinux.org> 1452-alt3
- Build with Clang
* Tue May 30 2023 Nazarov Denis <nenderus@altlinux.org> 1452-alt2
- Build on AArch64
- Enable link-time optimization
* Tue May 30 2023 Nazarov Denis <nenderus@altlinux.org> 1452-alt1
- Version 1452
* Sun May 28 2023 Nazarov Denis <nenderus@altlinux.org> 1448-alt1
- Version 1448
* Thu Apr 13 2023 Nazarov Denis <nenderus@altlinux.org> 1139-alt1.1
- Add zstd patch
* Sun Aug 21 2022 Nazarov Denis <nenderus@altlinux.org> 1139-alt1
- Version 1139
* Thu Jun 02 2022 Nazarov Denis <nenderus@altlinux.org> 1040-alt1
- Version 1040
* Mon Jan 10 2022 Nazarov Denis <nenderus@altlinux.org> 875-alt1
- Version 875
* Wed Jan 05 2022 Nazarov Denis <nenderus@altlinux.org> 869-alt1
- Version 869
* Tue Jan 04 2022 Nazarov Denis <nenderus@altlinux.org> 868-alt1
- Version 868
* Sat Nov 06 2021 Nazarov Denis <nenderus@altlinux.org> 801-alt1
- Version 801
* Sat Nov 06 2021 Nazarov Denis <nenderus@altlinux.org> 800-alt1
- Version 800
* Mon May 31 2021 Arseny Maslennikov <arseny@altlinux.org> 620-alt1.1
- NMU: spec: adapted to new cmake macros.
* Thu May 13 2021 Nazarov Denis <nenderus@altlinux.org> 620-alt1
- Version 620
* Fri Mar 19 2021 Nazarov Denis <nenderus@altlinux.org> 567-alt1
- Version 567
* Thu Mar 11 2021 Nazarov Denis <nenderus@altlinux.org> 0.559-alt3
- Enable translations
* Thu Mar 11 2021 Nazarov Denis <nenderus@altlinux.org> 0.559-alt2
- Enforce package versioning in GUI
* Wed Mar 10 2021 Nazarov Denis <nenderus@altlinux.org> 0.559-alt1
- Initial build for ALT Linux