File ishiiruka-dolphin.spec of Package ishiiruka-dolphin

#
# Spec file for package Ishiiruka-Dolphin Emulator
#
# Copyright © 2014–2019 Markus S. <kamikazow@opensuse.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#

%define _localname ishiiruka
%define _prettyname Ishiiruka-Dolphin
%define _descAddendum This version differs from official Dolphin by prioritizing gaming performance over emulation accuracy.
%define _cxx g++

Name:             ishiiruka-dolphin
Summary:          %{_prettyname}, a GameCube and Wii Emulator
Version:          5.0.0
Release:          0
Group:            System/Emulators/Other
License:          GPL-2.0-or-later
URL:              https://github.com/Tinob/Ishiiruka
Source0:          %{name}-%{version}.tar.xz
Source1:          dolphin-emu.png
Source2:          dolphin-emu.appdata.xml
ExclusiveArch:    x86_64
Conflicts:        ishiiruka-dolphin-unstable

# Package names verified with Fedora and openSUSE.
# Should the packages in your distro be named differently,
# see http://en.opensuse.org/openSUSE:Build_Service_cross_distribution_howto
#
# All other distros should work as well as Dolphin bundles
# its dependencies for static linking.

BuildRequires:    cmake >= 2.8
BuildRequires:    desktop-file-utils
BuildRequires:    gcc gcc-c++
BuildRequires:    gtk2-devel
BuildRequires:    libevdev-devel
BuildRequires:    libSM-devel
BuildRequires:    libcurl-devel
BuildRequires:    lzo-devel
BuildRequires:    mbedtls-devel
BuildRequires:    portaudio-devel
BuildRequires:    pkgconfig(alsa)
BuildRequires:    pkgconfig(ao)
BuildRequires:    pkgconfig(bluez)
BuildRequires:    pkgconfig(gl)
BuildRequires:    pkgconfig(libpulse)
BuildRequires:    pkgconfig(libudev)
BuildRequires:    pkgconfig(libusb-1.0)
BuildRequires:    pkgconfig(sdl2)
BuildRequires:    pkgconfig(sfml-all)
BuildRequires:    pkgconfig(soundtouch)
BuildRequires:    pkgconfig(openal)
BuildRequires:    pkgconfig(xi)
BuildRequires:    pkgconfig(xext)
BuildRequires:    pkgconfig(xinerama)
BuildRequires:    pkgconfig(xrandr)
BuildRequires:    pkgconfig(xxf86vm)
BuildRequires:    pkgconfig(zlib)

%if 0%{?fedora} || 0%{?rhel_version} || 0%{?centos_version}
BuildRequires:    gettext
BuildRequires:    gtest-devel
BuildRequires:    hidapi-devel
BuildRequires:    libappstream-glib
BuildRequires:    miniupnpc-devel
BuildRequires:    SOIL-devel
%endif

%if 0%{?suse_version}
BuildRequires:    appstream-glib
BuildRequires:    googletest-devel
BuildRequires:    libhidapi-devel
BuildRequires:    libminiupnpc-devel
BuildRequires:    update-desktop-files
BuildRequires:    pkgconfig(libavcodec)
BuildRequires:    pkgconfig(libavformat)
BuildRequires:    pkgconfig(libavutil)
BuildRequires:    pkgconfig(libswscale)

# Not in default repos:
BuildRequires:    libSOIL-devel
#BuildRequires:    wxWidgets-3_2-devel
%endif

Recommends:       dolphin-emu-udevrules
Requires(post):   hicolor-icon-theme
Requires(postun): hicolor-icon-theme

%description
%{_prettyname} is an emulator for Nintendo GameCube and Wii.
It allows PC gamers to enjoy games for these two consoles in full HD with
several enhancements such as compatibility with all PC controllers, turbo
speed, networked multiplayer, and more.
Most games run perfectly or with minor bugs.

%{_descAddendum}


%package lang
Summary:          Translations for %{_prettyname} Emulator
BuildArch:        noarch

%description lang
Translations into various languages for %{_prettyname} Emulator

%files lang
%{_datadir}/locale


%prep
%setup -q -n %{name}-%{version}

%build
export CCFLAGS='%{optflags}'

# CMake options:
# - CMAKE_CXX_COMPILER: Set GCC version
# - ENABLE_ALSA: ALSA sound back-end (on by default, crashes Qt port)
# - ENABLE_ANALYTICS: Analytics on (turn off for forks)
# - ENABLE_OPENAL: OpenAL off (stuttering sound)
# - ENABLE_QT2: Qt GUI (on by default, turn off for wx-only builds)
# - ENABLE_WX: wxWidgets GUI (on by default)
# - DOLPHIN_WC_REVISION: Set vesion number for About window

cmake \
      -DCMAKE_CXX_COMPILER=%{_cxx} \
      -DENABLE_OPENAL=OFF \
      -DENABLE_ANALYTICS=OFF \
      -DDOLPHIN_WC_REVISION=%{version} \
      -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_INSTALL_PREFIX=%{_prefix} \
      .
make -j1

%install
export CCFLAGS='%{optflags}'
make %{?_smp_mflags} install DESTDIR="%{?buildroot}"

# Delete static libraries
cd ..
find %{buildroot} -name '*.a' -delete
# Delete dev files
rm -rf %{buildroot}%{_includedir}/

# Use current icon
rm -rf %{buildroot}%{_datadir}/icons/hicolor/scalable
install -Dm 755 %{S:1} "%{buildroot}/%{_datadir}/icons/hicolor/512x512/apps/%{_localname}.png"

# Install appdata.xml
install -p -D -m 0644 %{S:2} %{buildroot}/%{_datadir}/appdata/%{_localname}.appdata.xml

%if 0%{?suse_version}
# Replace desktop file category 'Game;Emulator;' with 'System;Emulator;'
# under openSUSE or else build fails.
# See https://en.opensuse.org/openSUSE:Packaging_Conventions_RPM_Macros#.25suse_update_desktop_file
# and https://build.opensuse.org/package/view_file/X11:common:Factory/update-desktop-files/suse_update_desktop_file.sh
%suse_update_desktop_file '%{_localname}' 'System;Emulator;'
%endif

%check
appstream-util validate-relax --nonet %{buildroot}/%{_datadir}/appdata/*.appdata.xml

%post
/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :

%postun
if [ $1 -eq 0 ] ; then
    /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null
    /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
fi

%posttrans
/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :

%clean
rm -rf %{buildroot}

%files
%defattr(-,root,root,-)
%doc license.txt Readme.md
%{_bindir}/%{_localname}*
%{_datadir}/%{_localname}
%{_datadir}/applications/%{_localname}.desktop
%{_datadir}/appdata/*.appdata.xml
%{_datadir}/icons/hicolor/48x48/apps/%{_localname}.png
%{_datadir}/icons/hicolor/512x512/apps/%{_localname}.png
%{_mandir}/man6/%{_localname}*

%changelog