File surge-xt-release.spec of Package surge-xt-release

#
# spec file for package surge-xt-release
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2024 Konstantin Voinov konstantin.voinov@gmail.com
#
# 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/
#


%define surgename surge-xt
%define packagesuffix release
%define conflictsuffix nightly
Name:           %{surgename}-%{packagesuffix}
Version:        1.3.1
Release:        0
Summary:        Subtractive hybrid synthesizer virtual instrument
License:        GPL-3.0-only
Group:          Productivity/Multimedia/Sound/Midi
URL:            https://surge-synth-team.org/
Source0:        https://github.com/surge-synthesizer/releases-xt/releases/download/%{version}/surge-src-%{version}.tar.gz
BuildRequires:  cmake >= 3.22
BuildRequires:  pkgconfig
BuildRequires:  pkgconfig(alsa)
BuildRequires:  pkgconfig(fftw3f)
BuildRequires:  pkgconfig(freetype2)
BuildRequires:  pkgconfig(gl)
BuildRequires:  pkgconfig(x11)
BuildRequires:  pkgconfig(xcursor)
BuildRequires:  pkgconfig(xext)
BuildRequires:  pkgconfig(xinerama)
BuildRequires:  pkgconfig(xrandr)
Requires:       %{name}-standalone = %{version}
Requires:       %{surgename}-fx-%{packagesuffix}-standalone = %{version}
Requires:       clap-%{name} = %{version}
Requires:       clap-%{surgename}-fx-%{packagesuffix} = %{version}
Requires:       lv2-%{name} = %{version}
Requires:       lv2-%{surgename}-fx-%{packagesuffix} = %{version}
Requires:       vst3-%{name} = %{version}
Requires:       vst3-%{surgename}-fx-%{packagesuffix} = %{version}
Conflicts:      %{surgename}-%{conflictsuffix}
%if 0%{?is_opensuse} && 0%{?suse_version} <= 1600
BuildRequires:  gcc12
BuildRequires:  gcc12-c++
%else
BuildRequires:  gcc-c++
%endif
%if %{defined fedora}
BuildRequires:  jack-audio-connection-kit-devel
%else
BuildRequires:  libjack-devel
%endif

%description
Subtractive hybrid synthesizer virtual instrument.
Surge XT includes CLAP/LV2/VST3 instrument formats for use in compatible hosts and a standalone executable

This is a full installer meta-package, providing rpms of all Surge XT binaries (or each can be installed separately):

surge-xt-release-standalone
surge-xt-fx-release-standalone

clap-surge-xt-release
lv2-surge-xt-release
vst3-surge-xt-release

clap-surge-xt-fx-release
lv2-surge-xt-fx-release
vst3-surge-xt-fx-release

%package standalone
Summary:        Subtractive hybrid synthesizer virtual instrument (Standalone JACK/ALSA)
Requires:       %{name}-common
Conflicts:      %{surgename}-%{conflictsuffix}-standalone

%description standalone
Subtractive hybrid synthesizer virtual instrument.
Surge XT includes CLAP/LV2/VST3 instrument formats for use in compatible hosts and a standalone executable

%package common
Summary:        Common files for surge-xt
Conflicts:      %{surgename}-%{conflictsuffix}-common
BuildArch:      noarch

%description common
Data files for surge-xt (Presets, Skins, Wavetables)

%package -n vst3-%{name}
Summary:        Subtractive hybrid synthesizer virtual instrument (VST3)
Requires:       %{name}-common
Conflicts:      vst3-%{surgename}-%{conflictsuffix}

%description -n vst3-%{name}
Subtractive hybrid synthesizer virtual instrument.
Surge XT includes CLAP/LV2/VST3 instrument formats for use in compatible hosts and a standalone executable

%package -n clap-%{name}
Summary:        Subtractive hybrid synthesizer virtual instrument (CLAP)
Requires:       %{name}-common
Conflicts:      clap-%{surgename}-%{conflictsuffix}

%description -n clap-%{name}
Subtractive hybrid synthesizer virtual instrument.
Surge XT includes CLAP/LV2/VST3 instrument formats for use in compatible hosts and a standalone executable

%package -n lv2-%{name}
Summary:        Subtractive hybrid synthesizer virtual instrument (LV2)
Requires:       %{name}-common
Conflicts:      lv2-%{surgename}-%{conflictsuffix}

%description -n lv2-%{name}
Subtractive hybrid synthesizer virtual instrument.
Surge XT includes CLAP/LV2/VST3 instrument formats for use in compatible hosts and a standalone executable

%package -n %{surgename}-fx-%{packagesuffix}-standalone
Summary:        Surge XT Effects Plugin (Standalone JACK/ALSA)
Requires:       %{name}-common
Conflicts:      %{surgename}-fx-%{conflictsuffix}-standalone

%description -n %{surgename}-fx-%{packagesuffix}-standalone
Surge XT Effects Plugin

%package -n vst3-%{surgename}-fx-%{packagesuffix}
Summary:        Surge XT Effects Plugin (VST3)
Requires:       %{name}-common
Conflicts:      vst3-%{surgename}-fx-%{conflictsuffix}

%description -n vst3-%{surgename}-fx-%{packagesuffix}
Surge XT Effects VST3 Plugin

%package -n clap-%{surgename}-fx-%{packagesuffix}
Summary:        Surge XT Effects Plugin (CLAP)
Requires:       %{name}-common
Conflicts:      clap-%{surgename}-fx-%{conflictsuffix}

%description -n clap-%{surgename}-fx-%{packagesuffix}
Surge XT Effects CLAP Plugin

%package -n lv2-%{surgename}-fx-%{packagesuffix}
Summary:        Surge XT Effects Plugin (LV2)
Requires:       %{name}-common
Conflicts:      lv2-%{surgename}-fx-%{conflictsuffix}

%description -n lv2-%{surgename}-fx-%{packagesuffix}
Surge XT Effects LV2 Plugin

%prep
%setup -q -n surge
%autopatch -p1

# too many errors with -Werror and -Wall both
sed -i -e "/Werror=/d" CMakeLists.txt
sed -i -e "/:-Werror/d" CMakeLists.txt

%build
%cmake -DBUILD_SHARED_LIBS:BOOL=OFF \
       -DSURGE_BUILD_LV2=TRUE \
%if 0%{?is_opensuse} && 0%{?suse_version} <= 1600
                     -DCMAKE_CXX_COMPILER=g++-12
%endif

%cmake_build

%install
%cmake_install

# Readme for main meta-package.
install -m 755 -d %{buildroot}%{_docdir}/%{name}
cat > %{buildroot}%{_docdir}/%{name}/%{name}.txt <<EOF
This is a full installer meta-package, providing rpms of all Surge XT binaries (or each can be installed separately):

surge-xt-release-standalone
surge-xt-fx-release-standalone

clap-surge-xt-release
lv2-surge-xt-release
vst3-surge-xt-release

clap-surge-xt-fx-release
lv2-surge-xt-fx-release
vst3-surge-xt-fx-release
EOF

%files
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/%{name}.txt

%files standalone
"%{_bindir}/Surge XT"
%{_bindir}/surge-xt-cli

%files -n %{surgename}-fx-%{packagesuffix}-standalone
%license LICENSE
"%{_bindir}/Surge XT Effects"

%files common
%doc README.md AUTHORS
%license LICENSE
%exclude %{_docdir}/%{name}/%{name}.txt
%dir %{_datadir}/%{surgename}
%{_datadir}/%{surgename}/*

%files -n vst3-%{name}
%license LICENSE
%dir %{_libdir}/vst3
"%{_libdir}/vst3/Surge XT.vst3"

%files -n clap-%{name}
%license LICENSE
%dir %{_libdir}/clap
"%{_libdir}/clap/Surge XT.clap"

%files -n lv2-%{name}
%license LICENSE
%dir %{_libdir}/lv2
"%{_libdir}/lv2/Surge XT.lv2"

%files -n vst3-%{surgename}-fx-%{packagesuffix}
%license LICENSE
%dir %{_libdir}/vst3
"%{_libdir}/vst3/Surge XT Effects.vst3"

%files -n clap-%{surgename}-fx-%{packagesuffix}
%license LICENSE
%dir %{_libdir}/clap
"%{_libdir}/clap/Surge XT Effects.clap"

%files -n lv2-%{surgename}-fx-%{packagesuffix}
%license LICENSE
%dir %{_libdir}/lv2
"%{_libdir}/lv2/Surge XT Effects.lv2"

%changelog
openSUSE Build Service is sponsored by