File cln.spec of Package cln
#
# spec file for package cln
#
# Copyright (c) 2024 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/
#
Name: cln
Version: 1.3.7
Release: 0
Summary: Class Library for Numbers (C++)
License: GPL-2.0-or-later
Group: Productivity/Scientific/Math
URL: https://www.ginac.de/CLN/
Source0: https://www.ginac.de/CLN/cln-%{version}.tar.bz2
Source1: pi.tar.gz
BuildRequires: gcc-c++
BuildRequires: gmp-devel
BuildRequires: pkgconfig
BuildRequires: texinfo
Requires(pre): %{install_info_prereq}
Provides: libcln
Provides: pi
%description
CLN features a rich set of number classes: integer (unlimited
precision), rational, short float, single float, double float, long
float (unlimited precision), complex, modular integer, and univariate
polynomial. It implements elementary, logical, and transcendental
functions. C++ as the implementation language brings efficiency, type
safety, and algebraic syntax. Memory efficiency: small integers and
short floats are immediate, not heap allocated. Automatic,
noninterruptive garbage collection. Speed efficiency: assembly
language kernel for some CPUs, Karatsuba and Schoenhage-Strassen
multiplication. Interoperability: garbage collection with no burden on
the main application, hooks for memory allocation and exceptions.
The following C++ features are used: classes, member functions,
overloading of functions and operators, constructors and destructors,
inline, const, multiple inheritance, templates, and namespaces. The
following C++ features are not used: new, delete, virtual inheritance,
and exceptions.
%package devel
Summary: Class Library for Numbers (C++)
Group: Development/Libraries/C and C++
Requires: %{name} = %{version}
Requires(pre): %{install_info_prereq}
%description devel
CLN features a rich set of number classes: integer (unlimited
precision), rational, short float, single float, double float, long
float (unlimited precision), complex, modular integer, and univariate
polynomial. It implements elementary, logical, and transcendental
functions. C++ as the implementation language brings efficiency, type
safety, and algebraic syntax. Memory efficiency: small integers and
short floats are immediate, not heap allocated. Automatic,
noninterruptive garbage collection. Speed efficiency: assembly
language kernel for some CPUs, Karatsuba and Schoenhage-Strassen
multiplication. Interoperability: garbage collection with no burden on
the main application, hooks for memory allocation and exceptions.
The following C++ features are used: classes, member functions,
overloading of functions and operators, constructors and destructors,
inline, const, multiple inheritance, templates, and namespaces. The
following C++ features are not used: new, delete, virtual inheritance,
and exceptions.
%prep
%setup -q -a 1
%build
%ifarch %{arm}
%global XFLAGS %{optflags} -DNO_ASM
%else
%global XFLAGS %{optflags}
%endif
CFLAGS="%{XFLAGS} -fno-unit-at-a-time" \
CXXFLAGS="%{XFLAGS} -fno-strict-aliasing -fno-unit-at-a-time -fno-reorder-blocks" \
%configure --disable-static
make %{?_smp_mflags}
make %{?_smp_mflags} check
#cd benchmarks
#for i in a ap b ; do
# ./timebench2$i -r 10
#done
#cd ..
g++ %{optflags} -I./include pi.cc -o pi -L./src/.libs/ -lcln -lgmp
make %{?_smp_mflags} html
%install
mkdir -p %{buildroot}%{_docdir}/cln
make DESTDIR=%{buildroot} MANDIR=%{_mandir} htmldir=%{_docdir}/cln install
install -m 755 pi %{buildroot}%{_bindir}
rm -f %{buildroot}%{_libdir}/libcln.la
%check
make %{?_smp_mflags} check
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%post devel
%install_info --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz
%postun devel
%install_info_delete --info-dir=%{_infodir} %{_infodir}/%{name}.info.gz
%files
%doc ChangeLog README NEWS
%license COPYING
%{_bindir}/pi
%{_libdir}/libcln.so.*
%files devel
%doc ChangeLog README NEWS
%license COPYING
%{_includedir}/cln
%{_infodir}/cln.info%{?ext_info}
%{_mandir}/man1/pi.1%{?ext_man}
%{_libdir}/libcln.so
%{_libdir}/pkgconfig/cln.pc
%changelog