#
# spec file for package libosmo-abis
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# 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.

Name:           libosmo-abis
Version:        @VERSION@
Release:        0
Summary:        Osmocom library for A-bis interface between BTS and BSC
License:        AGPL-3.0-or-later AND GPL-2.0-or-later
Group:          Productivity/Telephony/Utilities
Url:            https://osmocom.org/projects/libosmo-abis/wiki/Libosmo-abis

Source:         %name-%version.tar.xz
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
BuildRequires:  automake >= 1.6
#BuildRequires:  dahdi-linux-devel
BuildRequires:  libtool >= 2
BuildRequires:  pkgconfig >= 0.20
BuildRequires:  xz
BuildRequires:  pkgconfig(libosmocore) >= 1.9.0
BuildRequires:  pkgconfig(libosmogsm) >= 1.9.0
BuildRequires:  pkgconfig(libosmovty) >= 1.9.0
BuildRequires:  pkgconfig(libosmocodec) >= 1.9.0
BuildRequires:  pkgconfig(ortp) >= 0.22.0
BuildRequires:  pkgconfig(talloc)

%description
In GSM, A-bis is a BSS-internal interface link between the BTS and
BSC. This interface allows control of the radio equipment and radio
frequency allocation in the BTS.

%package -n libosmoabis13
Summary:        Osmocom GSM A-bis interface library
License:        AGPL-3.0-or-later
Group:          System/Libraries

%description -n libosmoabis13
In the GSM system architecture, A-bis is a Base Station
System-internal interface linking the Base Transceiver Stations (BTS)
and Base Station Controller (BSC). This interface allows control of
the radio equipment and radio frequency allocation in the BTS.

This library contains common/shared code regarding this A-bis
interface. It also implements drivers for mISDN and DAHDI-based E1
cards, as well as some A-bis/IP dialects.

%package -n libosmoabis-devel
Summary:        Development files for the Osmocom GSM A-bis library
License:        AGPL-3.0-or-later
Group:          Development/Libraries/C and C++
Requires:       libosmoabis13 = %version
Requires:       libosmocore-devel >= 1.9.0
Requires:       libosmogsm-devel >= 1.9.0

%description -n libosmoabis-devel
This library contains common/shared code regarding the GSM A-bis
interface. It also implements drivers for mISDN and DAHDI-based E1
cards, as well as some A-bis/IP dialects.

This subpackage contains libraries and header files for developing
applications that want to make use of libosmoabis.

%package -n libosmotrau2
Summary:        Osmocom GSM TRAU (E1/RTP) library
License:        GPL-2.0-or-later
Group:          System/Libraries

%description -n libosmotrau2
This library implements the Transcoder and Rate Adaptation Unit (TRAU) for
GSM systems.
The TRAU enables the use of lower rates (32, 16 or 8 kbps) over the
A-bis interface instead of the 64 kbps ISDN rate for which the Mobile
Switching Center (MSC) is designed.

%package -n libosmotrau-devel
Summary:        Development files for the Osmocom TRAU (E1/RTP) library
License:        GPL-2.0-or-later
Group:          Development/Libraries/C and C++
Requires:       libosmotrau2 = %version

%description -n libosmotrau-devel
This library implements the Transcoder and Rate Adaptation Unit
(TRAU) for GSM systems.

This subpackage contains libraries and header files for developing
applications that want to make use of libosmotrau.

%prep
%setup -q

%build
echo "%version" >.tarball-version
autoreconf -fiv
# FIXME: Compiler warnings with ortp 0.24.2 result in hard-errors during rpm-postbuild-checks - should be fixed upstream
%if 0%{?sle_version}
export CFLAGS='%{optflags} -Wno-int-conversion'
%endif
%configure \
  --enable-shared \
  --disable-static \
  --disable-dahdi \
  --includedir="%_includedir/%name"
make %{?_smp_mflags}

%install
b="%buildroot"
make %{?_smp_mflags} install DESTDIR="$b"
find "$b/%_libdir" -type f -name "*.la" -delete

%check
make %{?_smp_mflags} check || (find . -name testsuite.log -exec cat {} +)

%post   -n libosmoabis13 -p /sbin/ldconfig
%postun -n libosmoabis13 -p /sbin/ldconfig
%post   -n libosmotrau2 -p /sbin/ldconfig
%postun -n libosmotrau2 -p /sbin/ldconfig

%files -n libosmoabis13
%defattr(-,root,root)
%_libdir/libosmoabis.so.13*

%files -n libosmoabis-devel
%defattr(-,root,root)
%doc COPYING
%dir %_includedir/%name
%dir %_includedir/%name/osmocom
%_includedir/%name/osmocom/abis/
%_libdir/libosmoabis.so
%_libdir/pkgconfig/libosmoabis.pc

%files -n libosmotrau2
%defattr(-,root,root)
%_libdir/libosmotrau.so.2*

%files -n libosmotrau-devel
%defattr(-,root,root)
%doc COPYING
%dir %_includedir/%name
%dir %_includedir/%name/osmocom
%_includedir/%name/osmocom/trau
%_libdir/libosmotrau.so
%_libdir/pkgconfig/libosmotrau.pc

%changelog
