#
# spec file for package osmo-gbproxy
#
# Copyright (c) 2017, Martin Hauke <mardnh@gmx.de>
# Copyright (c) 2021, sysmocom - s.f.m.c. GmbH
#
# 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.

## Disable LTO for now since it breaks compilation of the tests
## https://osmocom.org/issues/4116
%define _lto_cflags %{nil}

Name:           osmo-gbproxy
Version:        @VERSION@
Release:        0
Summary:        Osmocom GPRS Gb Interface Proxy
License:        AGPL-3.0-or-later AND GPL-2.0-or-later
Group:          Productivity/Telephony/Servers
URL:            https://osmocom.org/projects/osmo-gbproxy
Source:         %{name}-%{version}.tar.xz
BuildRequires:  autoconf
BuildRequires:  automake
BuildRequires:  libtool
BuildRequires:  pkgconfig
%if 0%{?suse_version}
BuildRequires:  systemd-rpm-macros
%endif
BuildRequires:  pkgconfig(libcrypto) >= 0.9.5
BuildRequires:  pkgconfig(libosmocore) >= 1.8.0
BuildRequires:  pkgconfig(libosmoctrl) >= 1.8.0
BuildRequires:  pkgconfig(libosmogb) >= 1.8.0
BuildRequires:  pkgconfig(libosmogsm) >= 1.8.0
BuildRequires:  pkgconfig(libosmovty) >= 1.8.0
%{?systemd_requires}

%description
The purpose of the Gb proxy is to aggregate the Gb links of multiple
BSS's and present them in one Gb link to the SGSN.

%prep
%setup -q

%build
echo "%{version}" >.tarball-version
autoreconf -fi
%configure \
  --docdir=%{_docdir}/%{name} \
  --with-systemdsystemunitdir=%{_unitdir}
make %{?_smp_mflags}

%install
%make_install

%if 0%{?suse_version}
%preun  %service_del_preun  %{name}.service
%postun %service_del_postun %{name}.service
%pre    %service_add_pre    %{name}.service
%post   %service_add_post   %{name}.service
%endif

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

%files
%doc AUTHORS README.md
%dir %{_docdir}/%{name}/examples
%dir %{_docdir}/%{name}/examples/osmo-gbproxy
%{_docdir}/%{name}/examples/osmo-gbproxy/osmo-gbproxy.cfg
%{_docdir}/%{name}/examples/osmo-gbproxy/osmo-gbproxy-legacy.cfg
%{_docdir}/%{name}/examples/osmo-gbproxy/osmo-gbproxy-pool.cfg
%{_bindir}/osmo-gbproxy
%dir %{_sysconfdir}/osmocom
%config(noreplace) %{_sysconfdir}/osmocom/osmo-gbproxy.cfg
%{_unitdir}/%{name}.service

%changelog
