Name: m4ri
Version: 20140914
Release: 10%{?dist}
Summary: Linear Algebra over F_2
License: GPLv2+
URL: https://bitbucket.org/malb/%{name}
Source0: https://bitbucket.org/malb/%{name}/downloads/%{name}-%{version}.tar.gz
# This patch will not be sent upstream, as it is Fedora-specific.
# Permanently disable SSE3 and SSSE3 detection. Without this patch, the
# config file tends to be regenerated at inconvenient times.
Patch0: %{name}-no-sse3.patch
# Fix a format specifier.
Patch1: %{name}-printf.patch
BuildRequires: doxygen-latex
BuildRequires: gcc
BuildRequires: libpng-devel
%description
M4RI is a library for fast arithmetic with dense matrices over F_2.
The name M4RI comes from the first implemented algorithm: The "Method
of the Four Russians" inversion algorithm published by Gregory Bard.
M4RI is used by the Sage mathematics software and the PolyBoRi library.
%package devel
Summary: Development files for %{name}
Requires: %{name}%{?_isa} = %{version}-%{release}
Provides: bundled(jquery)
%description devel
The %{name}-devel package contains libraries and header files for
developing applications that use %{name}.
%package static
Summary: Static library files for %{name}
Requires: %{name}%{?_isa} = %{version}-%{release}
%description static
The %{name}-static package contains the static %{name} library.
%prep
%setup -q
%patch0
%patch1
# Remove an unnecessary direct library dependency from the pkgconfig file,
# and also cflags used to compile m4ri, but not needed by consumers of m4ri.
sed -i "s/ -lm$//;s/ @CFLAGS@ @SIMD_CFLAGS@ @OPENMP_CFLAGS@//" m4ri.pc.in
# Die, rpath, die! Also workaround libtool reordering -Wl,--as-needed after
# all the libraries
sed -e "s|\(hardcode_libdir_flag_spec=\)'.*|\1|" \
-e "s|\(runpath_var=\)LD_RUN_PATH|\1|" \
-e 's|CC="\(g..\)"|CC="\1 -Wl,--as-needed"|' \
-i configure
%build
%ifarch %ix86
# Build an SSE2-enabled version,
%configure --enable-openmp CFLAGS="$RPM_OPT_FLAGS -march=pentium4"
sed -e 's/^#undef HAVE_MMX/#define HAVE_MMX/' \
-e 's/^#undef HAVE_SSE$/#define HAVE_SSE/' \
-e 's/^#undef HAVE_SSE2/#define HAVE_SSE2/' \
-i m4ri/config.h
sed -e 's/^\(#define __M4RI_HAVE_SSE2[[:blank:]]*\)0/\11/' \
-e 's/^\(#define __M4RI_SIMD_CFLAGS[[:blank:]]*\).*/\1" -mmmx -msse -msse2"/' \
-i m4ri/m4ri_config.h
sed -i 's/^SIMD_CFLAGS =.*/SIMD_CFLAGS = -mmmx -msse -msse2/' Makefile
%else
%configure --enable-openmp
%endif
make %{?_smp_mflags}
%ifarch %ix86
# Build an SSE2-disabled version
cp -a .libs .libs.sse2
make clean
rm -fr .deps
%configure --enable-openmp --disable-sse2
make %{?_smp_mflags}
%endif
# Build documentation
cd m4ri
doxygen
%install
make install DESTDIR=$RPM_BUILD_ROOT
%ifarch %ix86
mkdir $RPM_BUILD_ROOT%{_libdir}/sse2
mv $RPM_BUILD_ROOT%{_libdir}/libm4ri-*.so $RPM_BUILD_ROOT%{_libdir}/sse2
mv .libs .libs.nosse2
mv .libs.sse2 .libs
make install DESTDIR=$RPM_BUILD_ROOT
%endif
rm -f $RPM_BUILD_ROOT%{_libdir}/lib%{name}.la
%check
make check LD_LIBRARY_PATH=`pwd`/.libs
%ldconfig_scriptlets
%files
%doc AUTHORS
%license COPYING
%{_libdir}/lib%{name}-*.so
%ifarch %ix86
%{_libdir}/sse2/lib%{name}-*.so
%endif
%files devel
%doc doc/html
%{_includedir}/%{name}
%{_libdir}/lib%{name}.so
%{_libdir}/pkgconfig/%{name}.pc
%files static
%{_libdir}/lib%{name}.a
%changelog
* Thu Feb 08 2018 Fedora Release Engineering <releng@fedoraproject.org> - 20140914-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 20140914-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 20140914-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 20140914-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 20140914-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Fri Oct 16 2015 Jerry James <loganjerry@gmail.com> - 20140914-5
- Update URLs
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 20140914-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Fri Mar 6 2015 Jerry James <loganjerry@gmail.com> - 20140914-3
- Remove more unnecessary CFLAGS from the pkgconfig file
* Tue Mar 3 2015 Jerry James <loganjerry@gmail.com> - 20140914-2
- Fix CFLAGS in pkgconfig file (bz 1196519)
- Note bundled jquery
* Tue Oct 28 2014 Jerry James <loganjerry@gmail.com> - 20140914-1
- New upstream version
- Fix license handling
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 20130416-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 20130416-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 20130416-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Tue Jun 18 2013 Jerry James <loganjerry@gmail.com> - 20130416-2
- Rebuild for libpng 1.6
* Mon May 6 2013 Jerry James <loganjerry@gmail.com> - 20130416-1
- New upstream version
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 20121224-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Mon Dec 31 2012 Jerry James <loganjerry@gmail.com> - 20121224-1
- New upstream version
- Installed headers no longer need an update
* Mon Dec 10 2012 Jerry James <loganjerry@gmail.com> - 20120613-1
- New upstream version
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 20120415-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Mon Apr 16 2012 Jerry James <loganjerry@gmail.com> - 20120415-1
- New upstream version
- New approach to eliminating unnecessary direct shared library dependencies
- More robust way of updating installed headers
- Fix the tests
* Mon Jan 30 2012 Jerry James <loganjerry@gmail.com> - 20111203-1
- New upstream version
- Add libpng-devel BR
* Fri Jan 6 2012 Jerry James <loganjerry@gmail.com> - 20111004-2
- Rebuild for GCC 4.7
* Mon Oct 10 2011 Jerry James <loganjerry@gmail.com> - 20111004-1
- New upstream version
- Install the pkgconfig file, but remove the libm requirement
* Thu Jul 21 2011 Jerry James <loganjerry@gmail.com> - 20110715-1
- New upstream version
- Preserve timestamps on modified header files
* Fri Jun 17 2011 Jerry James <loganjerry@gmail.com> - 20110613-1
- New upstream version
- Rebase no-sse3 patch
- Drop defattr
* Wed Apr 20 2011 Jerry James <loganjerry@gmail.com> - 20100817-1
- New upstream version
- Drop license clarification; fixed in the source
- Compile both SSE2 and non-SSE2 variants for i686
- Disable SSE3 and SSSE3 extensions
- Build doxygen documentation
- Drop BuildRoot tag, clean script, and clean at start of install script
- Add check script
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 20081028-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Sat Jul 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 20081028-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
* Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 20081028-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
* Fri Nov 7 2008 Conrad Meyer <konrad@tylerc.org> - 20081028-3
- Add ldconfig.
- Move static libraries to -static subpackage.
* Thu Nov 6 2008 Conrad Meyer <konrad@tylerc.org> - 20081028-2
- Move the header files to -devel subpackage.
* Wed Nov 5 2008 Conrad Meyer <konrad@tylerc.org> - 20081028-1
- Initial package.