#
# spec file for package akode (version R14)
#
# Copyright (c) 2014 Trinity Desktop Environment
#
# 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 http://www.trinitydesktop.org/
#

# BUILD WARNING:
#  Remove qt-devel and qt3-devel and any kde*-devel on your system !
#  Having KDE libraries may cause FTBFS here !

# TDE variables
%define tde_epoch 2
%if "%{?tde_version}" == ""
%define tde_version 14.0.7
%endif
%define tde_prefix /opt/trinity
%define tde_bindir %{tde_prefix}/bin
%define tde_datadir %{tde_prefix}/share
%define tde_docdir %{tde_datadir}/doc
%define tde_includedir %{tde_prefix}/include
%define tde_libdir %{tde_prefix}/%{_lib}
%define tde_mandir %{tde_datadir}/man
%define tde_tdeappdir %{tde_datadir}/applications/tde
%define tde_tdedocdir %{tde_docdir}/tde
%define tde_tdeincludedir %{tde_includedir}/tde
%define tde_tdelibdir %{tde_libdir}/trinity

%if 0%{?mdkversion} || 0%{?mgaversion} || 0%{?pclinuxos}
%define libakode %{_lib}akode
%else
%define libakode libakode
%endif

Name:		trinity-akode 
Epoch:		%{tde_epoch}
Version:	2.0.2
Release:	%{?tde_version}_%{?!preversion:1}%{?preversion:0_%{preversion}}%{?dist}
Summary: 	Audio-decoding framework
Group: 		System Environment/Libraries
URL:		http://www.kde-apps.org/content/show.php?content=30375
#URL:		http://carewolf.com/akode/  

%if 0%{?suse_version}
License:	GPL-2.0+
%else
License:	GPLv2+
%endif

Source0:	%{name}-%{tde_version}%{?preversion:~%{preversion}}.tar.gz

Prefix:		%{tde_prefix}
BuildRoot:	%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires:	cmake >= 2.8
BuildRequires:  gcc-c++
BuildRequires:	libtool

# TQT support
BuildRequires:	libtqt4-devel
BuildRequires:	trinity-filesystem >= %{tde_version}

# FLAC support
%define _with_flac --with-flac
%if 0%{?mgaversion} || 0%{?mdkversion}
BuildRequires: libflac-devel
%endif
%if 0%{?rhel} || 0%{?fedora} || 0%{?suse_version}
BuildRequires: flac-devel
%endif

# JACK support
%if 0%{?rhel} >= 5 || 0%{?fedora} || 0%{?mgaversion} || 0%{?mdkversion} || 0%{?suse_version}
%define _with_jack --with-jack
%if 0%{?mgaversion} || 0%{?mdkversion}
BuildRequires: libjack-devel
%endif
%if 0%{?rhel} || 0%{?fedora} || 0%{?suse_version}
BuildRequires: jack-audio-connection-kit-devel
%endif
%endif

# SAMPLERATE support
%if 0%{?rhel} >= 4 || 0%{?fedora} || 0%{?mgaversion} || 0%{?mdkversion} || 0%{?suse_version}
%define _with_libsamplerate --with-libsamplerate
BuildRequires: libsamplerate-devel
%endif

# PULSEAUDIO support
%if 0%{?fedora} >= 15 || 0%{?rhel} >= 6 || 0%{?mgaversion} || 0%{?mdkversion} || 0%{?suse_version}
%define _with_pulseaudio --with-pulseaudio
%if 0%{?mgaversion} || 0%{?mdkversion}
BuildRequires: libpulseaudio-devel
%endif
%if 0%{?rhel} || 0%{?fedora}
BuildRequires: pulseaudio-libs-devel
%endif
%if 0%{?suse_version}
BuildRequires: pulseaudio-devel
%endif
%endif

# MAD support
%ifarch %{ix86} x86_64
%if 0%{?mdkversion} || 0%{?mgaversion} || 0%{?fedora} || 0%{?suse_version} || 0%{?rhel}
%define _with_libmad --with-libmad
BuildRequires:		libmad-devel
%endif
%endif

# ALSA support
%if 0%{?suse_version}
BuildRequires: alsa-devel
%else
BuildRequires: alsa-lib-devel
%endif

BuildRequires: libvorbis-devel
BuildRequires: speex-devel


%description
aKode is a simple audio-decoding frame-work that provides a uniform
interface to decode the most common audio-formats. It also has a direct
playback option for a number of audio-outputs.

aKode currently has the following decoder plugins:
* mpc: Decodes musepack aka mpc audio.
* xiph: Decodes FLAC, Ogg/FLAC, Speex and Ogg Vorbis audio. 

aKode also has the following audio outputs:
* alsa: Outputs to ALSA (dmix is recommended).
* jack
* pulseaudio

%files
%defattr(-,root,root,-)
%doc rpmdocs/* 
%{_bindir}/akodeplay
%{_libdir}/libakode.so.*
%{_libdir}/libakode_alsa_sink.la
%{_libdir}/libakode_alsa_sink.so
%{_libdir}/libakode_mpc_decoder.la
%{_libdir}/libakode_mpc_decoder.so
%{_libdir}/libakode_oss_sink.la
%{_libdir}/libakode_oss_sink.so
%{_libdir}/libakode_xiph_decoder.la
%{_libdir}/libakode_xiph_decoder.so

%post
/sbin/ldconfig

%postun 
/sbin/ldconfig

##########

%package devel
Summary: Headers for developing programs that will use %{name} 
Group:   Development/Libraries
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
%{?_with_jack:Requires: %{libakode}_jack_sink = %{?epoch:%{epoch}:}%{version}-%{release}}
%{?_with_pulseaudio:Requires: %{libakode}_pulse_sink = %{?epoch:%{epoch}:}%{version}-%{release}}
%{?_with_libsamplerate:Requires: %{libakode}_src_resampler = %{?epoch:%{epoch}:}%{version}-%{release}}
%{?_with_libmad:Requires: %{libakode}_mpeg_decoder  = %{?epoch:%{epoch}:}%{version}-%{release}}
Requires: pkgconfig

%description devel
This package contains the development files for Akode.
It is needed if you intend to build an application linked against Akode.

%files devel
%defattr(-,root,root,-)
%{_bindir}/akode-config
%{_includedir}/*
%{_libdir}/libakode.la
%{_libdir}/libakode.so
%{_libdir}/pkgconfig/akode.pc

%post devel
/sbin/ldconfig

%postun devel
/sbin/ldconfig

##########

%if "%{?_with_jack}" != ""

%package -n %{libakode}_jack_sink
Summary: Jack audio output backend for %{name}
Group:   Development/Libraries
Provides: libakode_jack_sink = %{version}-%{release}
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}

%description -n %{libakode}_jack_sink
This package contains the Jack audio output backend for Akode.

%files -n %{libakode}_jack_sink
%defattr(-,root,root,-)
%{_libdir}/libakode_jack_sink.la
%{_libdir}/libakode_jack_sink.so

%post -n %{libakode}_jack_sink
/sbin/ldconfig

%postun -n %{libakode}_jack_sink
/sbin/ldconfig

%endif

##########

%if "%{?_with_pulseaudio}" != ""

%package -n %{libakode}_pulse_sink
Summary: Pulseaudio output backend for %{name}
Group:   Development/Libraries
Provides: libakode_pulse_sink = %{version}-%{release}
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}

%description -n %{libakode}_pulse_sink
This package contains the pulseaudio backend for Akode.
Recommended for network transparent audio.

%files -n %{libakode}_pulse_sink
%defattr(-,root,root,-)
%{_libdir}/libakode_pulse_sink.la
%{_libdir}/libakode_pulse_sink.so

%post -n %{libakode}_pulse_sink
/sbin/ldconfig

%postun -n %{libakode}_pulse_sink
/sbin/ldconfig

%endif

##########

# Packaged separately to keep main/core %{akode} package LGPL-clean.
%if "%{?_with_libsamplerate:1}" == "1"

%package -n %{libakode}_src_resampler
Summary: Resampler based on libsamplerate for %{name}
Group:   Development/Libraries
Provides: libakode_src_resampler = %{version}-%{release}
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}

%description -n %{libakode}_src_resampler 
This package contains the samplerate decoder for Akode.

%files -n %{libakode}_src_resampler
%defattr(-,root,root,-)
%{_libdir}/libakode_src_resampler.la
%{_libdir}/libakode_src_resampler.so

%post -n %{libakode}_src_resampler
/sbin/ldconfig

%postun -n %{libakode}_src_resampler 
/sbin/ldconfig

%endif

##########

%if "%{?_with_libmad}" != ""

%package -n %{libakode}_mpeg_decoder
Summary: Decoder based on libmad for %{name}
Group:   Development/Libraries
Provides: libakode_mpeg_decoder = %{version}-%{release}
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}

%description -n %{libakode}_mpeg_decoder 
This package contains the mad decoder for Akode.

%files -n %{libakode}_mpeg_decoder
%defattr(-,root,root,-)
%{_libdir}/libakode_mpeg_decoder.la
%{_libdir}/libakode_mpeg_decoder.so

%post -n %{libakode}_mpeg_decoder
/sbin/ldconfig

%postun -n %{libakode}_mpeg_decoder 
/sbin/ldconfig

%endif

##########

%if 0%{?pclinuxos} || 0%{?suse_version} && 0%{?opensuse_bs} == 0
%debug_package
%endif

##########

%prep
%setup -q -n %{name}-%{tde_version}%{?preversion:~%{preversion}}


%build
unset QTDIR QTINC QTLIB

if ! rpm -E %%cmake|grep -q "cd build"; then
  %__mkdir_p build
  cd build
fi

%cmake \
  -DCMAKE_BUILD_TYPE="RelWithDebInfo" \
  -DCMAKE_C_FLAGS="${RPM_OPT_FLAGS} -DNDEBUG" \
  -DCMAKE_CXX_FLAGS="${RPM_OPT_FLAGS} -DNDEBUG" \
  -DCMAKE_SKIP_RPATH=ON \
  -DCMAKE_VERBOSE_MAKEFILE=ON \
  -DWITH_GCC_VISIBILITY=OFF \
   \
  -DINCLUDE_INSTALL_DIR=%{_includedir} \
  -DLIB_INSTALL_DIR=%{_libdir} \
  \
  -DWITH_ALL_OPTIONS="ON" \
  -DWITH_LIBLTDL="OFF" \
  -DWITH_ALSA_SINK="ON" \
  %{!?_with_jack:-DWITH_JACK_SINK="OFF"} %{?_with_jack:-DWITH_JACK_SINK="ON"} \
  %{!?_with_pulseaudio:-DWITH_PULSE_SINK="OFF"} %{?_with_pulseaudio:-DWITH_PULSE_SINK="ON"} \
  -DWITH_OSS_SINK="ON" \
  -DWITH_SUN_SINK="OFF" \
  \
  -DWITH_FFMPEG_DECODER="OFF" \
  -DWITH_MPC_DECODER="ON" \
  %{!?_with_libmad:-DWITH_MPEG_DECODER="OFF"} %{?_with_libmad:-DWITH_MPEG_DECODER="ON"} \
  -DWITH_SRC_RESAMPLER="ON" \
  -DWITH_XIPH_DECODER="ON" \
  ..

%__make %{?_smp_mflags} || %__make


%install
%__rm -rf %{buildroot} 
%__make install DESTDIR=%{?buildroot} -C build

# rpmdocs
for file in AUTHORS COPYING NEWS README TODO ; do
  test -s  "$file" && install -p -m644 -D "$file" "rpmdocs/$file"
done


%clean
%__rm -rf %{buildroot} 


%changelog