libatlas/libatlas.spec

565 lines
15 KiB
RPMSpec

%define major %(echo %version | cut -d. -f 1)
%ifarch arm
%define enable_native_atlas 0
%else
%define enable_native_atlas 1
%endif
%if %enable_native_atlas
%ifarch %ix86
%define types base 3dnow sse sse2 sse3
%define mode 32
%define pr_sse2 35
%endif
%ifarch x86_64
%define types base sse2
%define mode 64
%define pr_sse2 63
%endif
%else
%ifarch %ix86 arm
%define types base
%define mode 32
%endif
%ifarch x86_64
%define types base
%define mode 64
%endif
%endif
%define pr_base 32
%define pr_3dnow 33
%define pr_sse 34
%define pr_sse3 36
Name: libatlas
Version: 3.8.4
Release: 3mamba
Summary: ATLAS - Automatically Tuned Linear Algebra Software
Group: System/Libraries
Vendor: openmamba
Distribution: openmamba
Packager: Silvan Calarco <silvan.calarco@mambasoft.it>
URL: http://math-atlas.sourceforge.net/
Source0: http://downloads.sourceforge.net/project/math-atlas/Stable/%{version}/atlas%{version}.tar.bz2
Source1: ATLAS-README
# http://sourceforge.net/cvs/?group_id=23725
Source2: PPRO32.tgz
Source3: K7323DNow.tgz
Source4: USII64.tgz
Source5: USII32.tgz
Patch0: libatlas-3.8.4-shared.patch
Patch1: libatlas-3.8.4-fix-melf-link-flags.patch
# ARM patch diffed from:
# http://www.vesperix.com/arm/atlas-arm/source/atlas-%{version}-arm.tar.gz
Patch2: atlas-3.8.4-arm.patch
License: BSD
## AUTOBUILDREQ-BEGIN
BuildRequires: gcc-fortran
BuildRequires: glibc-devel
## AUTOBUILDREQ-END
BuildRequires: libblas-devel >= 3.4.2-3mamba
BuildRequires: liblapack-devel >= 3.4.2-5mamba
BuildRequires: libxblas-devel
BuildRequires: libgomp-devel
#ExclusiveArch: ix86 amd64 x86_64
BuildRoot: %{_tmppath}/%{name}-%{version}-root
%description
The ATLAS (Automatically Tuned Linear Algebra Software) project is an ongoing research effort focusing on applying empirical techniques in order to provide portable performance. At present, it provides C and Fortran77 interfaces to a portably efficient BLAS implementation, as well as a few routines from LAPACK.
%package devel
Group: Development/Libraries
Summary: Development libraries for ATLAS
Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release}
Requires: chkconfig
%description devel
ATLAS - Automatically Tuned Linear Algebra Software.
This package contains the libraries and headers for development with ATLAS.
%if %enable_native_atlas
%ifarch x86_64
%package sse2
Group: System/Libraries
Summary: ATLAS libraries for SSE2 extensions
%description sse2
ATLAS - Automatically Tuned Linear Algebra Software.
This package contains the ATLAS libraries compiled with optimizations for the SSE2 extensions to the x86_64 architecture.
%package sse2-devel
Group: Development/Libraries
Summary: Development libraries for ATLAS with SSE2 extensions
Requires: %{name}-sse2 = %{?epoch:%epoch:}%{version}-%{release}
Requires: chkconfig
%description sse2-devel
This package contains shared and static versions of the ATLAS libraries compiled with optimizations for the SSE2 extensions to the x86_64 architecture.
%endif
%ifarch %ix86
%package 3dnow
Group: System/Libraries
Summary: ATLAS libraries for 3DNow extensions
%description 3dnow
ATLAS - Automatically Tuned Linear Algebra Software.
This package contains the ATLAS libraries compiled with optimizations for the 3DNow extension to the ix86 architecture.
%package 3dnow-devel
Group: Development/Libraries
Summary: Development libraries for ATLAS with 3DNow extensions
Requires: %{name}-3dnow = %{version}-%{release}
Requires: chkconfig
%description 3dnow-devel
ATLAS - Automatically Tuned Linear Algebra Software.
This package contains headers and shared versions of the ATLAS libraries compiled with optimizations for the 3DNow extensions to the ix86 architecture.
%package sse
Group: System/Libraries
Summary: ATLAS libraries for SSE extensions
%description sse
ATLAS - Automatically Tuned Linear Algebra Software.
This package contains the ATLAS libraries compiled with optimizations for the SSE(1) extensions to the ix86 architecture.
%package sse-devel
Group: Development/Libraries
Summary: Development libraries for ATLAS with SSE extensions
Requires: %{name}-sse = %{version}-%{release}
Requires: chkconfig
%description sse-devel
ATLAS - Automatically Tuned Linear Algebra Software.
This package contains headers and shared versions of the ATLAS libraries compiled with optimizations for the SSE(1) extensions to the ix86 architecture.
%package sse2
Group: System/Libraries
Summary: ATLAS libraries for SSE2 extensions
%description sse2
ATLAS - Automatically Tuned Linear Algebra Software.
This package contains ATLAS shared libraries compiled with optimizations for the SSE2 extensions to the ix86 architecture.
%package sse2-devel
Group: Development/Libraries
Summary: Development libraries for ATLAS with SSE2 extensions
Requires: %{name}-sse2 = %{?epoch:%epoch:}%{version}-%{release}
Requires: chkconfig
%description sse2-devel
ATLAS - Automatically Tuned Linear Algebra Software.
This package contains ATLAS shared libraries compiled with optimizations for the SSE2 extensions to the ix86 architecture.
%package sse3
Group: System/Libraries
Summary: ATLAS libraries for SSE3 extensions
%description sse3
ATLAS - Automatically Tuned Linear Algebra Software.
This package contains the ATLAS libraries compiled with optimizations for the SSE3.
%package sse3-devel
Group: Development/Libraries
Summary: Development libraries for ATLAS with SSE3 extensions
Requires: %{name}-sse3 = %{?epoch:%epoch:}%{version}-%{release}
Requires: chkconfig
%description sse3-devel
ATLAS - Automatically Tuned Linear Algebra Software.
This package contains development libraries for ATLAS with SSE3 extensions to the ix86 architecture.
%endif
%endif
%package doc
Summary: Documentation for %{name}
Group: Documentation
Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release}
%description doc
ATLAS - Automatically Tuned Linear Algebra Software.
This package contains the documentation for %{name}.
%prep
%setup -q -c -a0
#-D -T
#:<< __EOF
cd ATLAS
%patch0 -p1
%patch1 -p1
%ifarch arm
%patch2 -p1
%endif
cp %{SOURCE1} openmamba-README
sed -i "s|@VER_REL@|%{version}-%{release}|" openmamba-README
%ifnarch arm
cp %{SOURCE2} CONFIG/ARCHS/
cp %{SOURCE3} CONFIG/ARCHS/
cp %{SOURCE4} CONFIG/ARCHS/
cp %{SOURCE5} CONFIG/ARCHS/
%endif
%build
#:<< _EOF
cd ATLAS
for type in %{types}; do
if [ "$type" = "base" ]; then
libname=atlas
else
libname=atlas-${type}
fi
mkdir -p %{_arch}_${type}
cd %{_arch}_${type}
../configure -b %{mode} -D c -DWALL -Fa alg '-g -Wa,--noexecstack -fPIC'\
%ifarch arm
-Si archdef 0 -Si cputhrchk 0 \
%endif
--prefix=%{buildroot}%{_prefix} \
--incdir=%{buildroot}%{_includedir} \
--libdir=%{buildroot}%{_libdir}/${libname} \
--with-netlib-lapack=%{_libdir}/liblapack.a
sed -i "s|LDFLAGS = \(.*\)|LDFLAGS = \1 -Wl,--allow-multiple-definition -lxblas|" Make.inc
# -Si cputhrchk 0
%ifarch x86_64
if [ "$type" = "sse2" ]; then
sed -i 's#ARCH =.*#ARCH = HAMMER64SSE2#' Make.inc
sed -i 's#-DATL_SSE3##' Make.inc
sed -i 's#-msse3#-msse2#' Make.inc
fi
%endif
%ifarch %ix86
if [ "$type" = "base" ]; then
sed -i 's#ARCH =.*#ARCH = PPRO32#' Make.inc
sed -i 's#-DATL_SSE3 -DATL_SSE2 -DATL_SSE1##' Make.inc
sed -i 's#-mfpmath=sse -msse3#-mfpmath=387#' Make.inc
elif [ "$type" = "3dnow" ]; then
sed -i 's#ARCH =.*#ARCH = K7323DNow#' Make.inc
sed -i 's#-DATL_SSE3 -DATL_SSE2 -DATL_SSE1##' Make.inc
sed -i 's#-mfpmath=sse -msse3#-mfpmath=387#' Make.inc
elif [ "$type" = "sse" ]; then
sed -i 's#ARCH =.*#ARCH = PIII32SSE1#' Make.inc
sed -i 's#-DATL_SSE3 -DATL_SSE2##' Make.inc
sed -i 's#-msse3#-msse#' Make.inc
elif [ "$type" = "sse2" ]; then
sed -i 's#ARCH =.*#ARCH = P432SSE2#' Make.inc
sed -i 's#-DATL_SSE3##' Make.inc
sed -i 's#-msse3#-msse2#' Make.inc
elif [ "$type" = "sse3" ]; then
sed -i 's#ARCH =.*#ARCH = P4E32SSE3#' Make.inc
fi
%endif
make build || make build || make build
cd lib
make shared
#%ifarch x86_64
# LDFLAGS=
#%endif
make ptshared
#%ifarch x86_64
# LDFLAGS=
#%endif
cd ..
done
%install
[ "%{buildroot}" != / ] && rm -rf "%{buildroot}"
cd ATLAS
for type in %{types}; do
cd %{_arch}_${type}
make DESTDIR=%{buildroot} install
mv %{buildroot}%{_includedir}/atlas %{buildroot}%{_includedir}/atlas-%{_arch}-${type}
if [ "$type" = "base" ]; then
cp -pr lib/*.so* %{buildroot}%{_libdir}/atlas/
rm -f %{buildroot}%{_libdir}/atlas/*.a
else
cp -pr lib/*.so* %{buildroot}%{_libdir}/atlas-${type}/
rm -f %{buildroot}%{_libdir}/atlas-${type}/*.a
fi
cd ..
mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d
if [ "$type" = "base" ]; then
echo "%{_libdir}/atlas" \
> %{buildroot}%{_sysconfdir}/ld.so.conf.d/atlas-%{_arch}.conf
else
echo "%{_libdir}/atlas-${type}" \
> %{buildroot}%{_sysconfdir}/ld.so.conf.d/atlas-%{_arch}-${type}.conf
fi
done
mkdir -p %{buildroot}%{_includedir}/atlas
%clean
[ "%{buildroot}" != / ] && rm -rf "%{buildroot}"
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%post devel
if [ $1 -ge 1 ]; then
/usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \
%{_includedir}/atlas-%{_arch}-base %{pr_base}
fi
exit 0
%preun devel
if [ $1 -eq 0 ]; then
/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-base
fi
exit 0
%postun devel
if [ $1 -eq 0 ]; then
/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-base
fi
:
%if %enable_native_atlas
%ifarch x86_64
%post sse2 -p /sbin/ldconfig
%postun sse2 -p /sbin/ldconfig
%post sse2-devel
if [ $1 -ge 1 ]; then
/usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \
%{_includedir}/atlas-%{_arch}-sse2 %{pr_sse2}
fi
exit 0
%preun sse2-devel
if [ $1 -eq 0 ]; then
/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse2
fi
exit 0
%postun sse2-devel
if [ $1 -eq 0 ]; then
/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse2
fi
:
%endif
%ifarch %ix86
%post 3dnow -p /sbin/ldconfig
%postun 3dnow -p /sbin/ldconfig
%post 3dnow-devel
if [ $1 -ge 1 ]; then
/usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \
%{_includedir}/atlas-%{_arch}-3dnow %{pr_3dnow}
fi
exit 0
%preun 3dnow-devel
if [ $1 -eq 0 ]; then
/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-3dnow
fi
exit 0
%postun 3dnow-devel
if [ $1 -eq 0 ]; then
/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-3dnow
fi
:
%post sse -p /sbin/ldconfig
%postun sse -p /sbin/ldconfig
%post sse-devel
if [ $1 -ge 1 ]; then
/usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \
%{_includedir}/atlas-%{_arch}-sse %{pr_sse}
fi
exit 0
%preun sse-devel
if [ $1 -eq 0 ]; then
/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse
fi
exit 0
%postun sse-devel
if [ $1 -eq 0 ]; then
/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse
fi
:
%post sse2 -p /sbin/ldconfig
%postun sse2 -p /sbin/ldconfig
%post sse2-devel
if [ $1 -ge 1 ]; then
/usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \
%{_includedir}/atlas-%{_arch}-sse2 %{pr_sse2}
fi
exit 0
%preun sse2-devel
if [ $1 -eq 0 ]; then
/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse2
fi
exit 0
%postun sse2-devel
if [ $1 -eq 0 ]; then
/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse2
fi
:
%post sse3 -p /sbin/ldconfig
%postun sse3 -p /sbin/ldconfig
%post sse3-devel
if [ $1 -ge 1 ]; then
/usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \
%{_includedir}/atlas-%{_arch}-sse3 %{pr_sse3}
fi
exit 0
%preun sse3-devel
if [ $1 -eq 0 ]; then
/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse3
fi
exit 0
%postun sse3-devel
if [ $1 -eq 0 ]; then
/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse3
fi
:
%endif
%endif
%files
%defattr(-,root,root)
%config(noreplace) %{_sysconfdir}/ld.so.conf.d/atlas-%{_arch}.conf
%dir %{_libdir}/atlas
%{_libdir}/atlas/*.so.*
%doc ATLAS/*README
%files devel
%defattr(-,root,root)
%dir %{_includedir}/atlas-%{_arch}-base
%{_includedir}/atlas-%{_arch}-base/*
%{_includedir}/*.h
%{_libdir}/atlas/*.so
%if %enable_native_atlas
%ifarch x86_64
%files sse2
%defattr(-,root,root)
%config(noreplace) %{_sysconfdir}/ld.so.conf.d/atlas-%{_arch}-sse2.conf
%dir %{_libdir}/atlas-sse2
%{_libdir}/atlas-sse2/*.so.*
%files sse2-devel
%defattr(-,root,root)
%{_libdir}/atlas-sse2/*.so
%{_includedir}/atlas-%{_arch}-sse2/
%{_includedir}/*.h
%ghost %{_includedir}/atlas
%endif
%ifarch %ix86
%files 3dnow
%defattr(-,root,root)
%config(noreplace) %{_sysconfdir}/ld.so.conf.d/atlas-%{_arch}-3dnow.conf
%dir %{_libdir}/atlas-3dnow
%{_libdir}/atlas-3dnow/*.so.*
%files 3dnow-devel
%defattr(-,root,root)
%{_libdir}/atlas-3dnow/*.so
%{_includedir}/atlas-%{_arch}-3dnow/
%{_includedir}/*.h
%ghost %{_includedir}/atlas
%files sse
%defattr(-,root,root)
%config(noreplace) %{_sysconfdir}/ld.so.conf.d/atlas-%{_arch}-sse.conf
%dir %{_libdir}/atlas-sse
%{_libdir}/atlas-sse/*.so.*
%files sse-devel
%defattr(-,root,root)
%{_libdir}/atlas-sse/*.so
%{_includedir}/atlas-%{_arch}-sse/
%{_includedir}/*.h
%ghost %{_includedir}/atlas
%files sse2
%defattr(-,root,root)
%config(noreplace) %{_sysconfdir}/ld.so.conf.d/atlas-%{_arch}-sse2.conf
%dir %{_libdir}/atlas-sse2
%{_libdir}/atlas-sse2/*.so.*
%files sse2-devel
%defattr(-,root,root)
%{_libdir}/atlas-sse2/*.so
%{_includedir}/atlas-%{_arch}-sse2/
%{_includedir}/*.h
%ghost %{_includedir}/atlas
%files sse3
%defattr(-,root,root)
%config(noreplace) %{_sysconfdir}/ld.so.conf.d/atlas-%{_arch}-sse3.conf
%dir %{_libdir}/atlas-sse3
%{_libdir}/atlas-sse3/*.so.*
%files sse3-devel
%defattr(-,root,root)
%{_libdir}/atlas-sse3/*.so
%{_includedir}/atlas-%{_arch}-sse3/
%{_includedir}/*.h
%ghost %{_includedir}/atlas
%endif
%endif
%files doc
%defattr(-,root,root)
%doc ATLAS/doc
%changelog
* Mon Aug 26 2013 Silvan Calarco <silvan.calarco@mambasoft.it> 3.8.4-3mamba
- rebuilt with liblapack-3.4.2-5mamba implementing extended precision routines (xblas)
* Thu Aug 22 2013 Silvan Calarco <silvan.calarco@mambasoft.it> 3.8.4-2mamba
- rebuild with liblapack-3.4.2-3mamba providing static library
* Wed Aug 14 2013 Silvan Calarco <silvan.calarco@mambasoft.it> 3.8.4-1mamba
- update to 3.8.4
* Wed Jan 05 2011 gil <puntogil@libero.it> 3.8.3-2mamba
- rebuilt devel
* Sat May 09 2009 gil <puntogil@libero.it> 3.8.3-1mamba
- update to 3.8.3
* Sat Oct 04 2008 gil <puntogil@libero.it> 3.8.2-1mamba
- package created by autospec