#
# spec file for package osmo-ggsn
#
# 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.

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

Name:           osmo-ggsn
Version:        @VERSION@
Release:        0
Summary:        GPRS Support Node
License:        GPL-2.0-only AND LGPL-2.1-or-later
Group:          Productivity/Telephony/Servers
URL:            https://osmocom.org/projects/openggsn
Source:         %{name}-%{version}.tar.xz
BuildRequires:  libtool >= 2
BuildRequires:  pkgconfig >= 0.20
%if 0%{?suse_version}
BuildRequires:  systemd-rpm-macros
%endif
BuildRequires:  pkgconfig(libgtpnl) >= 1.2.0
BuildRequires:  pkgconfig(libosmocore) >= 1.7.0
BuildRequires:  pkgconfig(libosmoctrl) >= 1.7.0
BuildRequires:  pkgconfig(libosmovty) >= 1.7.0
Obsoletes:      openggsn
%{?systemd_requires}

%description
Osmo-GGSN is a C-language implementation of a GGSN (Gateway GPRS
Support Node), a core network element of ETSI/3GPP cellular networks
such as GPRS, EDGE, UMTS or HSPA.

%package -n libgtp6
Summary:        Library implementing GTP between SGSN and GGSN
License:        GPL-2.0-only
Group:          System/Libraries

%description -n libgtp6
libgtp implements the GPRS Tunneling Protocol between SGSN and GGSN.

%package -n libgtp-devel
Summary:        Development files for the GTP library
License:        GPL-2.0-only
Group:          Development/Libraries/C and C++
Requires:       libgtp6 = %{version}

%description -n libgtp-devel
libgtp implements the GPRS Tunneling Protocol between SGSN and GGSN.

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

%package -n gtp-echo-responder
Summary:        Small program answering GTP ECHO Request with GTP ECHO Response
License:        MIT
Group:          System/Libraries

%description -n gtp-echo-responder
Small program answering GTP ECHO Request with GTP ECHO Response for both GTPCv1
and GTPCv2.

%prep
%setup -q

%build
echo "%{version}" >.tarball-version
autoreconf -fi
%configure \
  --enable-gtp-linux \
  --disable-static \
  --docdir="%{_docdir}/%{name}" \
  --with-systemdsystemunitdir=%{_unitdir} \
  --includedir="%{_includedir}/%{name}"
make %{?_smp_mflags} V=1

%install
%make_install
find %{buildroot} -type f -name "*.la" -delete -print

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

%if 0%{?suse_version}
%pre
%service_add_pre %{name}.service

%post
%service_add_post %{name}.service

%preun
%service_del_preun %{name}.service

%postun
%service_del_postun %{name}.service
%endif

%post   -n libgtp6 -p /sbin/ldconfig
%postun -n libgtp6 -p /sbin/ldconfig

%files
%license COPYING
%doc AUTHORS README.md
%{_bindir}/osmo-ggsn
%{_bindir}/sgsnemu
%{_mandir}/man8/osmo-ggsn.8%{?ext_man}
%{_mandir}/man8/sgsnemu.8%{?ext_man}
%{_unitdir}/%{name}.service
%dir %{_docdir}/%{name}/examples
%{_docdir}/%{name}/examples/osmo-ggsn-kernel-gtp.cfg
%{_docdir}/%{name}/examples/osmo-ggsn.cfg
%{_docdir}/%{name}/examples/sgsnemu.conf
%dir %{_sysconfdir}/osmocom
%config(noreplace) %{_sysconfdir}/osmocom/osmo-ggsn.cfg

%files -n libgtp6
%{_libdir}/libgtp.so.6*

%files -n libgtp-devel
%{_includedir}/%{name}/
%{_libdir}/libgtp.so
%{_libdir}/pkgconfig/libgtp.pc

%files -n gtp-echo-responder
%{_bindir}/gtp-echo-responder

%changelog
