File linuxsampler.spec of Package linuxsampler

#
# spec file for package linuxsampler
#
# Copyright (c) 2021 SUSE LLC
# Copyright (c) 2012 Pascal Bleser <pascal.bleser@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/
#


%define sover	6
Name:           linuxsampler
Version:        2.2.0
Release:        0
Summary:        Modular, streaming capable sampler
License:        GPL-2.0-or-later
Group:          Productivity/Multimedia/Sound/Utilities
URL:            https://www.linuxsampler.org/
Source0:        http://download.linuxsampler.org/packages/linuxsampler-%{version}.tar.bz2
Source1:        linuxsampler.png
%if 0%{?suse_version} == 1500
BuildRequires:  gcc9-c++
%else
BuildRequires:  gcc-c++
%endif
BuildRequires:  alsa-devel >= 1.0.9
BuildRequires:  autoconf
BuildRequires:  automake
BuildRequires:  bison
BuildRequires:  dos2unix
BuildRequires:  doxygen
BuildRequires:  dssi-devel
BuildRequires:  flex
BuildRequires:  libtool
BuildRequires:  perl-XML-Parser
BuildRequires:  pkgconfig
BuildRequires:  update-desktop-files
BuildRequires:  pkgconfig(gig) >= 4.2.0
BuildRequires:  pkgconfig(jack)
BuildRequires:  pkgconfig(sndfile) >= 1.0
BuildRequires:  pkgconfig(sqlite3) >= 3.3
Requires:       alsa >= 1.0.9
Requires:       jack >= 0.103
Conflicts:      nilfs-utils
ExclusiveArch:  %{ix86} x86_64
BuildRequires:  pkgconfig(lv2) >= 1.0.0

%description
LinuxSampler is a work in progress. The goal is to produce a free,
open source pure software audio sampler with professional grade
features, comparable to both hardware and commercial Windows/Mac
software samplers and to introduce new features not yet available
by any other sampler in the world.

LinuxSampler was designed as a sampler backend, decoupled from any
user interface. It provides a network interface using an ASCII based
protocol called LSCP for full control of the sampler like for setup
and altering sampler sessions. But don't be afraid, with QSampler we
already have a convenient GUI frontend (based on the cross-platform
GUI library Qt) for LinuxSampler and due to the decoupled design you
can even control the sampler with the GUI frontend from another
computer, probably even running another OS like Windows or OSX.
Beside our own custom network control layer we planned to add
existing ones as well (e.g. OSC). With the planned SMP and cluster
support LinuxSampler might become a standard for high-end studios
and concerts.

It is planned to support all common sampler formats in LinuxSampler,
but at the moment we chose to concentrate on the Gigasampler format,
because we think it's currently the best sampler format in regards
of quality and power, especially for the synthesis of natural
instruments like pianos, brass and bowed instruments.
But we already made good advance in implementing this format, so we
are optimistic to start with adding other formats soon. Beside that
we also planned to design our own, sophisticated sampler format to
introduce a more powerful and more flexible sampler format compared
to any sampler format currently available in the world. Be encouraged
to share your ideas about such a new format with us!

%package -n liblinuxsampler%{sover}
Summary:        Shared libraries for linuxsampler
Group:          System/Libraries

%description -n liblinuxsampler%{sover}
This package contains the shared libraries for linuxsampler.

%package -n liblinuxsampler-devel
Summary:        Development files for linuxsampler
Group:          Development/Languages/C and C++
Requires:       dssi-devel
Requires:       ladspa-devel
Requires:       liblinuxsampler%{sover} = %{version}

%description -n liblinuxsampler-devel
This package contains header files, libraries and documentation for
writing and compiling programs using linuxsampler.

%package doc
Summary:        Documentation for linuxampler
Group:          Documentation/HTML

%description doc
This package contains the documentation for linuxampler.

%package -n dssi-linuxsampler
Summary:        DSSI plugin
Group:          System/Libraries
Requires:       dssi

%description -n dssi-linuxsampler
This package contains the dssi-plugin for package linuxsampler.

%package -n lv2-linuxsampler
Summary:        LV2 plugin
Group:          System/Libraries

%description -n lv2-linuxsampler
This package contains the lv2-plugin for package linuxsampler.

%prep
%autosetup -p1
dos2unix Documentation/lscp.xml

%build
rm -fv src/network/lscpparser.cpp
test -x "$(type -p gcc)"    && CC="$_"
test -x "$(type -p g++)"    && CXX="$_"
test -x "$(type -p gcc-9)" && CC="$_"
test -x "$(type -p g++-9)" && CXX="$_"
export CC="$(readlink -f ${CC})"
export CXX="$(readlink -f ${CXX})"
%configure \
    --disable-static \
    --disable-arts-driver \
    --enable-plugin-dir="%{_libexecdir}/%{name}/plugins" \
    --enable-signed-triang-algo=intmath \
    --enable-unsigned-triang-algo=intmath \
    --enable-default-instruments-db-location="%{_var}/lib/%{name}/instruments.db"

%make_build

%install
%make_install

# icon and menu-entry
install -dm 755 %{buildroot}%{_datadir}/pixmaps
install -m 644 %{SOURCE1} \
    %{buildroot}%{_datadir}/pixmaps

cat > %{name}.desktop << EOF
[Desktop Entry]
Comment=LinuxSampler - modular, streaming capable sampler
Comment[de]=LinuxSampler - modularer, streaming faehiger sampler
Exec=%{name}
GenericName=%{name}
GenericName[de]=%{name}
Icon=%{name}
Name=LinuxSampler
Name[de]=LinuxSampler
StartupNotify=true
Terminal=false
Type=Application
X-DCOP-ServiceType=
X-KDE-SubstituteUID=false
Encoding=UTF-8
Categories=AudioVideo;Sequencer;
EOF
%if 0%{?suse_version}
%suse_update_desktop_file -n -i %{name} AudioVideo Sequencer
%else
mkdir %{buildroot}%{_datadir}/applications
cp %{name}.desktop %{buildroot}%{_datadir}/applications/%{name}.desktop
%endif

touch src/engines/InstrumentEditor.h
touch src/engines/InstrumentEditorFactory.h
make docs

find %{buildroot} -type f -name "*.la" -delete -print
rm Documentation/Engines/gig/Makefile*

install -d "%{buildroot}%{_usr}/lib/%{name}/plugins"

mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d/
  echo "%{_libdir}/%{name}" > "%{buildroot}%{_sysconfdir}/ld.so.conf.d/liblinuxsampler%{sover}.conf"

%post   -n liblinuxsampler%{sover} -p /sbin/ldconfig
%postun -n liblinuxsampler%{sover} -p /sbin/ldconfig

%files
%license COPYING
%doc AUTHORS ChangeLog NEWS README
%{_bindir}/linuxsampler
%{_bindir}/ls_instr_script
%{_bindir}/lscp
%{_mandir}/man1/linuxsampler.1%{?ext_man}
%{_mandir}/man1/lscp.1%{?ext_man}
%{_datadir}/pixmaps/%{name}.png
%{_datadir}/applications/%{name}.desktop
%dir %{_usr}/lib/%{name}
%dir %{_usr}/lib/%{name}/plugins
%dir %{_var}/lib/%{name}
%{_var}/lib/%{name}/instruments.db

%files -n liblinuxsampler%{sover}
%dir %{_libdir}/%{name}
%{_libdir}/%{name}/lib%{name}.so.%{sover}
%{_libdir}/%{name}/lib%{name}.so.%{sover}.*
%config %{_sysconfdir}/ld.so.conf.d/liblinuxsampler%{sover}.conf

%files -n liblinuxsampler-devel
%{_includedir}/*
%dir %{_libdir}/%{name}
%{_libdir}/%{name}/*.so
%{_libdir}/pkgconfig/%{name}.pc

%files doc
%doc Documentation/*

%files -n dssi-linuxsampler
%dir %{_libdir}/dssi
%{_libdir}/dssi/%{name}.so

%files -n lv2-linuxsampler
%dir %{_libdir}/lv2
%dir %{_libdir}/lv2/%{name}.lv2
%{_libdir}/lv2/%{name}.lv2/%{name}.so
%{_libdir}/lv2/%{name}.lv2/*.ttl

%changelog