File cava.spec of Package cava
#
# spec file for package cava
#
# Copyright (c) 2025 SUSE LLC and contributors
#
# 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/
#
%global _lto_cflags %{nil}
Name: cava
Version: 0.10.4
Release: 0
Summary: Console-based Audio Visualizer for Alsa
License: MIT
Group: Productivity/Multimedia/Sound/Visualization
URL: https://github.com/karlstav/cava
Source: https://github.com/karlstav/%{name}/archive/%{version}.tar.gz
Patch1: cmakelist.patch
BuildRequires: alsa-devel
BuildRequires: fftw3-devel
# Use system ini parser instead of building own lib
BuildRequires: libiniparser-devel >= 4.0
BuildRequires: SDL2
BuildRequires: SDL2_image-devel
BuildRequires: SDL2_mixer-devel
BuildRequires: SDL2_sound-devel
BuildRequires: automake
BuildRequires: cmake
BuildRequires: gcc-c++
BuildRequires: glibc-devel
BuildRequires: libpulse-devel
BuildRequires: libtool
BuildRequires: ncurses-devel
BuildRequires: ninja
BuildRequires: pipewire-devel
BuildRequires: pkgconfig
BuildRequires: portaudio-devel
# Installing the psf in a directory that comes from kbd
Requires: kbd
%description
C.A.V.A. is a bar spectrum audio visualizer for the Linux terminal using ALSA, pulseaudio or fifo buffer for input.
%package devel
Provides: cavacore-devel
Summary: Development files for %{name}
Group: Development/Libraries/Other
%description devel
Development files and libraries for cava and cavacore.
%prep
%autosetup -p1
./autogen.sh
%configure FONT_DIR="%{_datadir}/kbd/consolefonts"
%build
%cmake
%cmake_build
%make_build
%install
pushd %{builddir}/%{buildsubdir}/build
mkdir -p %{buildroot}/%{_libdir}
cp libcavacore.so %{buildroot}/%{_libdir}/libcavacore.so
popd
mkdir -p %{buildroot}/%{_includedir}/cava/input/
cp input/*.h %{buildroot}/%{_includedir}/cava/input/
mkdir -p %{buildroot}/%{_includedir}/cava/output/
cp output/*.h %{buildroot}/%{_includedir}/cava/output/
cp *.h %{buildroot}/%{_includedir}/cava/
ln -sfv %{_libdir}/libcavacore.so %{buildroot}%{_libdir}/libcava.so
mkdir -p %{buildroot}%{_libdir}/pkgconfig/
cat > %{buildroot}%{_libdir}/pkgconfig/cava.pc <<-SH
prefix=/usr
includedir=${prefix}/include
libdir=${prefix}/lib64
Name: cava
Description: Cross-platform Audio Visualizer
URL: https://github.com/karlstav/cava
Version: %{version}
Libs: -L${libdir} -lcava -lcavacore
Cflags: -I${includedir}
SH
%make_install
%files devel
%dir %{_includedir}/cava
%dir %{_includedir}/cava/input
%dir %{_includedir}/cava/output
%{_includedir}/cava/cavacore.h
%{_includedir}/cava/config.h
%{_includedir}/cava/debug.h
%{_includedir}/cava/util.h
%{_includedir}/cava/input/alsa.h
%{_includedir}/cava/input/common.h
%{_includedir}/cava/input/fifo.h
%{_includedir}/cava/input/jack.h
%{_includedir}/cava/input/oss.h
%{_includedir}/cava/input/pipewire.h
%{_includedir}/cava/input/portaudio.h
%{_includedir}/cava/input/pulse.h
%{_includedir}/cava/input/shmem.h
%{_includedir}/cava/input/sndio.h
%{_includedir}/cava/input/winscap.h
%{_includedir}/cava/output/noritake.h
%{_includedir}/cava/output/raw.h
%{_includedir}/cava/output/sdl_cava.h
%{_includedir}/cava/output/sdl_glsl.h
%{_includedir}/cava/output/terminal_bcircle.h
%{_includedir}/cava/output/terminal_ncurses.h
%{_includedir}/cava/output/terminal_noncurses.h
%{_libdir}/libcava.so
%{_libdir}/libcavacore.so
%{_libdir}/pkgconfig/cava.pc
%files
%license LICENSE
%doc README.md
%{_bindir}/cava
%dir %{_datadir}/kbd/
%dir %{_datadir}/kbd/consolefonts/
%{_datadir}/kbd/consolefonts/cava.psf
%changelog