#
# 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.5.0
BuildRequires:  pkgconfig(libosmogsm) >= 1.5.0
BuildRequires:  pkgconfig(libosmovty) >= 1.5.0
BuildRequires:  pkgconfig(libosmocodec) >= 1.5.0
BuildRequires:  pkgconfig(ortp) >= 0.22
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 libosmoabis10
Summary:        Osmocom GSM A-bis interface library
License:        AGPL-3.0-or-later
Group:          System/Libraries

%description -n libosmoabis10
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:       libosmoabis10 = %version
Requires:       libosmocore-devel >= 0.3.0
Requires:       libosmogsm-devel >= 0.3.10

%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 libosmoabis10 -p /sbin/ldconfig
%postun -n libosmoabis10 -p /sbin/ldconfig
%post   -n libosmotrau2 -p /sbin/ldconfig
%postun -n libosmotrau2 -p /sbin/ldconfig

%files -n libosmoabis10
%defattr(-,root,root)
%_libdir/libosmoabis.so.9*

%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
