#
# spec file
#
# Copyright (c) 2023 SUSE LLC
#
# 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 https://bugs.opensuse.org/
#
%global _name bobcat
%global _lib_name lib%{_name}
%global _lib_version 6
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "light"
%global psuffix -light
%else
%global psuffix %{nil}
%endif
Name: %{_lib_name}%{?psuffix}
Version: 6.02.02
Release: 0
Summary: Shared library implementing C++ classes that are frequently used
License: GPL-3.0-only
Group: Development/Tools/Building
URL: https://gitlab.com/fbb-git/bobcat
Source0: https://gitlab.com/fbb-git/bobcat/-/archive/%{version}/bobcat-%{version}.tar.gz
Source1: initialbobcatlib
%if "%{name}" == "%{_lib_name}-light"
BuildRequires: the_silver_searcher
%endif
#BuildRequires: libX11-devel
#BuildRequires: libopenssl-1_1-devel
#BuildRequires: readline-devel
#BuildRequires: sendmail-devel
%if "%{name}" == "%{_lib_name}"
BuildRequires: icmake
# BuildRequires for man:
BuildRequires: yodl
%endif
BuildRequires: gcc-c++
%package devel-static
Summary: Bobcat static library
Group: Development/Libraries/C and C++
%if "%{name}" == "%{_lib_name}-light"
Conflicts: %{_lib_name}-devel
Conflicts: %{_lib_name}-devel-static
%endif
%if "%{name}" == "%{_lib_name}"
Requires: %{_lib_name}-devel = %{version}
%description
Bobcat is an acronym of `Brokken's Own Base Classes And Templates'. It is a
shared library implementing C++ classes that are frequently used in software
developed by Frank Brokken. All of Frank's C++ programs hosted at GitLab
depend on `bobcat'.
%package -n %{_lib_name}%{_lib_version}
Summary: Shared library implementing C++ classes that are frequently used
Group: Development/Tools/Building
Provides: %{_lib_name} = %{version}
Obsoletes: %{_lib_name} < %{version}
%description -n %{_lib_name}%{_lib_version}
Bobcat is an acronym of `Brokken's Own Base Classes And Templates'. It is a
shared library implementing C++ classes that are frequently used in software
developed by Frank Brokken. All of Frank's C++ programs hosted at GitLab
depend on `bobcat'.
%package devel
Summary: Headers and documentation for the Bobcat library
Group: Development/Libraries/C and C++
Requires: %{_lib_name}%{_lib_version} = %{version}
%description devel
Headers and documentation of classes defined in the Bobcat library.
%endif
%description devel-static
Bobcat static library
%prep
%setup -q -n %{_name}-%{version}
%if "%{name}" == "%{_lib_name}"
%build
# Incase we have to use specific version of gcc:
export CXXFLAGS="%{optflags} --std=c++2a -Werror -fdiagnostics-color=never -ffat-lto-objects"
export CXX="g++"
sed -i 's/^#define CXX/\/\/ #define CXX/g' %{_name}/INSTALL.im
sed -i 's/^#define CXXFLAGS/\/\/ #define CXXFLAGS/g' %{_name}/INSTALL.im
sed -i 's/^#define DOC/\/\/ #define DOC/g' %{_name}/INSTALL.im
sed -i 's/^#define HDR/\/\/ #define HDR/g' %{_name}/INSTALL.im
sed -i 's/^#define LIB/\/\/ #define LIB/g' %{_name}/INSTALL.im
sed -i 's/^#define MAN/\/\/ #define MAN/g' %{_name}/INSTALL.im
echo "/* created during rpmbuild */" >> %{_name}/INSTALL.im
echo "#define CXX \"${CXX}\"" >> %{_name}/INSTALL.im
echo "#define CXXFLAGS \"${CXXFLAGS}\"" >> %{_name}/INSTALL.im
echo "#define DOC \"%{_docdir}/%{_lib_name}%{_lib_version}-devel\"" >> %{_name}/INSTALL.im
echo "#define HDR \"%{_includedir}/%{_name}\"" >> %{_name}/INSTALL.im
echo "#define LIB \"%{_libdir}\"" >> %{_name}/INSTALL.im
echo "#define MAN \"%{_mandir}\"" >> %{_name}/INSTALL.im
pushd %{_name}
./build dep
./build light
#echo -e "y\nn\ny\ny\n" | ./build libraries
./build man
popd
%install
pushd %{_name}
./build install x %{buildroot}
popd
%post -n %{_lib_name}%{_lib_version} -p /sbin/ldconfig
%postun -n%{_lib_name}%{_lib_version} -p /sbin/ldconfig
%files -n %{_lib_name}%{_lib_version}
%doc README
%{_libdir}/%{_lib_name}.so.%{_lib_version}
%attr(755, -, -) %{_libdir}/%{_lib_name}.so.%{version}
%files devel
%{_libdir}/%{_lib_name}.so
%doc %{_docdir}/%{_lib_name}%{_lib_version}-devel/
%{_includedir}/%{_name}/
%{_mandir}/man3/*.3%{_name}.gz
%{_mandir}/man7/*.7%{_name}.gz
%{_mandir}/man7/%{_name}.7.gz
%files devel-static
%else
cp -a %{SOURCE1} ./bobcat/
%description
Bobcat is an acronym of `Brokken's Own Base Classes And Templates'. This is the light library
would be use to build icmake without required it.
%build
export CXXFLAGS="%{optflags} --std=c++2a -Werror -fdiagnostics-color=never -ffat-lto-objects"
export CXX="g++"
pushd %{_name}
bash ./$(basename %{SOURCE1})
popd
%install
pushd %{_name}
mkdir -p %{buildroot}%{_libdir}
install -m 644 tmp/%{_lib_name}.a %{buildroot}%{_libdir}/
mkdir -p %{buildroot}%{_includedir}/%{_name}
install -m 644 tmp/%{_name}/* %{buildroot}%{_includedir}/%{_name}/
popd
%files devel-static
%{_includedir}/%{_name}/
%endif
%{_libdir}/%{_lib_name}.a
%changelog