Blob Blame History Raw
#
# spec file for package citra
#
# Copyright (c) 2021 SUSE LLC
# Copyright (c) 2017–2019 Markus S. <kamikazow@opensuse.org>
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#


Name:           citra
Version:        nightly1812
Release:        0
Summary:        Nintendo 3DS emulator
License:        GPL-2.0-or-later
Group:          System/Emulators/Other
URL:            https://citra-emu.org/
Source:         %{name}-%{version}.tar.xz
# PATCH-FIX-UPSTREAM https://github.com/neobrain/nihstro/pull/62
Patch0:         gcc-enablement.patch
# PATCH-FIX-OPENSUSE - fix_gcc12_errors.patch - keep gcc12 happy
# to discard once upstream makes the source gcc12 compatible
Patch1:         fix_gcc12_errors.patch
# PATCH-FIX-UPSTREAM https://github.com/catchorg/Catch2/pull/2611
Patch2:         fix_build_with_gcc_13.patch
BuildRequires:  cmake >= 3.6
BuildRequires:  hicolor-icon-theme
%if ( 0%{?sle_version} == 150400 || 0%{?sle_version} == 150500 ) && 0%{?is_opensuse}
BuildRequires:  gcc11
BuildRequires:  gcc11-c++
BuildRequires:  libboost_date_time1_75_0-devel
BuildRequires:  libboost_regex1_75_0-devel
BuildRequires:  libboost_serialization1_75_0-devel
BuildRequires:  libboost_system1_75_0-devel
%else
BuildRequires:  libboost_date_time-devel >= 1.70.0
BuildRequires:  libboost_regex-devel
BuildRequires:  libboost_serialization-devel
BuildRequires:  libboost_system-devel
%endif
BuildRequires:  libqt5-linguist-devel
BuildRequires:  pkgconfig
BuildRequires:  pkgconfig(Qt5Concurrent)
BuildRequires:  pkgconfig(Qt5Core)
BuildRequires:  pkgconfig(Qt5Multimedia)
BuildRequires:  pkgconfig(Qt5OpenGL)
BuildRequires:  pkgconfig(Qt5Widgets)
BuildRequires:  pkgconfig(libavdevice)
BuildRequires:  pkgconfig(libavfilter)
BuildRequires:  pkgconfig(libavformat)
BuildRequires:  pkgconfig(libavutil)
BuildRequires:  pkgconfig(libcurl)
BuildRequires:  pkgconfig(liblz4)
BuildRequires:  pkgconfig(liblzma)
BuildRequires:  pkgconfig(libpng)
BuildRequires:  pkgconfig(libpostproc)
BuildRequires:  pkgconfig(libswresample)
BuildRequires:  pkgconfig(libswscale)
BuildRequires:  pkgconfig(libzstd)
BuildRequires:  pkgconfig(sdl2)
ExclusiveArch:  x86_64

%description
Citra is an open-source Nintendo 3DS emulator and debugger, written with portability in mind.

%prep
%setup -q
%autopatch -p1

# Enforce package versioning in GUI
sed -i '$!N;s|#define GIT_REV.*"@GIT_REV@"\n#define GIT_BRANCH.*"@GIT_BRANCH@"|#define GIT_REV\t"%{release}"\n#define GIT_BRANCH\t"nightly"|g;P;D' src/common/scm_rev.cpp.in
sed -i 's|@GIT_DESC@|%{version}|g' src/common/scm_rev.cpp.in
sed -i 's|@BUILD_NAME@|%{name}|g' src/common/scm_rev.cpp.in

# Avoid submodule checks as OBS ensures source consistency
sed -i 's|check_submodules_present()||g' CMakeLists.txt

# Don't test during build phase
sed -i 's|enable_testing()||g' CMakeLists.txt

# do not use bundled libs
#sed -i -e 's|add_subdirectory(externals)||g' CMakeLists.txt

%build
# DYNARMIC_ENABLE_CPU_FEATURE_DETECTION - we can't rely on cpu detection
# CRYPTOPP_DISABLE_CXXFLAGS_OPTIMIZATIONS - use only system set optflags
# WEB_SERVICE/CUBEB/DISCORD_PRESENCE OFF because uses bundled libs and libressl, no-go for openSUSE integration
# SHARED/STATIC_LIBS - we don't do libs it is just bundled helpers we need to link into binaries
export CXXFLAGS="%{optflags} -fno-strict-aliasing"
%if ( 0%{?sle_version} == 150400 || 0%{?sle_version} == 150500 ) && 0%{?is_opensuse}
export CC=gcc-11
export CXX=g++-11
%endif
%cmake \
    -DBUILD_SHARED_LIBS=OFF \
    -DBUILD_STATIC_LIBS=ON \
    -DENABLE_WEB_SERVICE=OFF \
    -DENABLE_CUBEB=OFF \
    -DUSE_DISCORD_PRESENCE=OFF \
    -DDYNARMIC_ENABLE_CPU_FEATURE_DETECTION=OFF \
    -DCRYPTOPP_DISABLE_CXXFLAGS_OPTIMIZATIONS=OFF \
    -DENABLE_FFMPEG_AUDIO_DECODER=ON \
    -DENABLE_FFMPEG_VIDEO_DUMPER=ON \
    -DENABLE_FFMPEG_VIDEO_DUMPER=ON \
    -DCITRA_USE_BUNDLED_FFMPEG=OFF \
    -DENABLE_QT_TRANSLATION=ON \
    -DUSE_SYSTEM_BOOST=ON \
    -DZSTD_LZ4_SUPPORT=ON \
    -DZSTD_LZMA_SUPPORT=ON \
    -DZSTD_PROGRAMS_LINK_SHARED=ON \
    -DZSTD_ZLIB_SUPPORT=ON
%cmake_build

%install
%cmake_install
rm -r %buildroot%{_includedir}/tsl
rm -r %buildroot%{_datadir}/cmake/tsl-robin-map

%check
%ctest

%files
%doc README.md CONTRIBUTING.md
%license license.txt
%{_bindir}/%{name}
%{_bindir}/%{name}-qt
%{_bindir}/%{name}-room
%{_datadir}/applications/%{name}.desktop
%{_mandir}/man6/%{name}*
%{_datadir}/mime/packages/%{name}.xml
%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg

%changelog