File mixxx.spec of Package mixxx

# vim: set sw=4 ts=4 et:
#
# spec file for package mixxx
#
# Copyright (c) 2020 SUSE LLC
# Copyright (c) 2010-2012 Pascal Bleser <pascal.bleser@opensuse.org>
# Copyright (c) 2005-2010 oc2pus
#
# 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/
#

%if 0%{?sle_version} && 0%{?sle_version} < 160000
%global force_gcc_version 13
%endif

Name:           mixxx
Version:        2.4.2
Release:        0
Summary:        Open Source DJ tool
License:        GPL-2.0-or-later
Group:          Productivity/Multimedia/Sound/Players
URL:            https://mixxx.org
Source0:        https://github.com/mixxxdj/mixxx/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz
Patch0:         4e4d4e866ef86bb4d196a1903778697552cca05a.patch
BuildRequires:  alsa-devel
BuildRequires:  fdupes
BuildRequires:  gperftools-devel
BuildRequires:  gtest
BuildRequires:  gmock
BuildRequires:  gcc%{?force_gcc_version}
BuildRequires:  gcc%{?force_gcc_version}-c++
BuildRequires:  ms-gsl-devel
BuildRequires:  libgudev-1_0-devel
BuildRequires:  libebur128-devel
BuildRequires:  liblilv-0-devel
BuildRequires:  libqt5-linguist
BuildRequires:  pkgconfig
BuildRequires:  portmidi-devel
BuildRequires:  libmp3lame-devel
BuildRequires:  cmake(Qt5Keychain)
BuildRequires:  pkgconfig(Qt5Concurrent)
BuildRequires:  pkgconfig(Qt5Core)
BuildRequires:  pkgconfig(Qt5DBus)
BuildRequires:  pkgconfig(Qt5Gui)
BuildRequires:  pkgconfig(Qt5Network)
BuildRequires:  pkgconfig(Qt5OpenGL)
BuildRequires:  pkgconfig(Qt5Script)
BuildRequires:  pkgconfig(Qt5ScriptTools)
BuildRequires:  pkgconfig(Qt5Sql)
BuildRequires:  pkgconfig(Qt5Svg)
BuildRequires:  pkgconfig(Qt5Test)
BuildRequires:  pkgconfig(Qt5Widgets)
BuildRequires:  pkgconfig(Qt5X11Extras)
BuildRequires:  pkgconfig(Qt5Xml)
BuildRequires:  pkgconfig(Qt5PrintSupport)
BuildRequires:  pkgconfig(Qt5Qml)
BuildRequires:  pkgconfig(fftw3)
BuildRequires:  pkgconfig(flac)
BuildRequires:  pkgconfig(gl)
BuildRequires:  pkgconfig(glut)
BuildRequires:  pkgconfig(id3tag)
BuildRequires:  pkgconfig(libavcodec) >= 58
BuildRequires:  pkgconfig(libavformat) >= 58
BuildRequires:  pkgconfig(libavutil)
BuildRequires:  pkgconfig(libavfilter)
BuildRequires:  pkgconfig(libswscale)
BuildRequires:  pkgconfig(libchromaprint)
BuildRequires:  pkgconfig(libpostproc)
BuildRequires:  pkgconfig(libmodplug)
BuildRequires:  pkgconfig(libusb-1.0)
BuildRequires:  pkgconfig(mad)
BuildRequires:  pkgconfig(ogg)
BuildRequires:  pkgconfig(opus)
BuildRequires:  pkgconfig(opusfile)
BuildRequires:  pkgconfig(portaudio-2.0)
BuildRequires:  pkgconfig(protobuf)
BuildRequires:  pkgconfig(rubberband)
BuildRequires:  pkgconfig(shout)
BuildRequires:  pkgconfig(sndfile)
BuildRequires:  pkgconfig(soundtouch)
BuildRequires:  pkgconfig(taglib)
BuildRequires:  pkgconfig(upower-glib)
BuildRequires:  pkgconfig(vorbis)
BuildRequires:  pkgconfig(vorbisenc)
BuildRequires:  pkgconfig(vorbisfile)
BuildRequires:  pkgconfig(wavpack)
BuildRequires:  pkgconfig(x11)
BuildRequires:  pkgconfig(libkeyfinder)
BuildRequires:  pkgconfig(shout-idjc)
BuildRequires:  pkgconfig(udev)
BuildRequires:  pkgconfig(sqlite3)
BuildRequires:  pkgconfig(benchmark)
BuildRequires:  pkgconfig(djinterop)
ExclusiveArch:  %{ix86} x86_64
%if 0%{?is_opensuse}
BuildRequires:  pkgconfig(hidapi-libusb)
%endif

%description
Mixxx is an free and open-source audio mixing program.
Mixxx is cross-platform and supports most common music file formats.
It can be controlled with MIDI and HID controllers and timecode vinyl
records in addition to computer keyboards and mice.

%prep
%autosetup -p1

%build
%if 0%{?force_gcc_version}
export CC="gcc-%{?force_gcc_version}"
export CXX="g++-%{?force_gcc_version}"
%endif
%cmake -DSoundTouch_STATIC=NO -DCMAKE_INSTALL_DOCDIR=%{_defaultdocdir}/%{name}
%cmake_build

%install

%cmake_install

L="$PWD/%{name}.lang"
echo -n > "$L"
pushd "%{buildroot}%{_datadir}/mixxx/translations"
/bin/ls -1 mixxx_*.qm | while read f; do
    [ -e "$f" ] || continue
    l="${f#mixxx_}"
    l="${l%.qm}"
    echo "%lang($l) %{_datadir}/mixxx/translations/$f" >> "$L"
done
popd

%fdupes %{buildroot}

%files -f %{name}.lang
%{_bindir}/mixxx
%dir %{_datadir}/mixxx
%dir %{_datadir}/mixxx/translations
%dir %{_datadir}/mixxx/effects
%dir %{_datadir}/mixxx/effects/chains
%{_datadir}/mixxx/controllers
%{_datadir}/mixxx/effects/chains/*.xml
%{_datadir}/mixxx/keyboard
%{_datadir}/mixxx/skins
%{_datadir}/applications/org.mixxx.Mixxx.desktop
%{_datadir}/icons/*
%dir %{_datadir}/metainfo
%{_datadir}/metainfo/org.mixxx.Mixxx.metainfo.xml
%{_docdir}/*
%{_udevrulesdir}/*-usb-uaccess.rules

%changelog
openSUSE Build Service is sponsored by