Sophie

Sophie

distrib > Altlinux > 4.1 > i586 > media > core-src > by-pkgid > 338876bc573fda35c173d6997fef3768 > files > 3

atlas-3.7.11-alt5.src.rpm

Name: atlas
Version: 3.7.11
Release: alt5

Summary: Automatically Tuned Linear Algebra Software (the BLAS library)
License: BSD
Group: System/Libraries

URL: http://math-atlas.sourceforge.net
Source: %name-%version.tar
Patch: %name-%version-%release.patch

ExclusiveArch: %ix86 amd64 x86_64

# Automatically added by buildreq on Fri Dec 08 2006
BuildRequires: gcc-fortran

%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.

%prep
%setup -q -n ATLAS
%patch -p1
ln -s atlas.mk Make.Linux_i586
ln -s atlas.mk Make.Linux_sse2
ln -s atlas.mk Make.Linux_amd64
chmod +x atlas-run.sh
ln -s ../atlas-run.sh CONFIG/ATLrun.Linux_i586
ln -s ../atlas-run.sh CONFIG/ATLrun.Linux_sse2
ln -s ../atlas-run.sh CONFIG/ATLrun.Linux_amd64

%build
%add_optflags -fPIC -falign-loops=4
%add_optflags -mfpmath=387
%define soffix .so.3
shared()
{
	lib=$1; shift
	${linker:-gcc} -shared -Wl,--whole-archive $lib.a -Wl,--no-whole-archive \
		-o $lib%soffix -Wl,-soname=$lib%soffix "$@" -lm -Wl,-z,defs
}
all_shared()
{
	cd $1
	linker=gcc shared libatlas
	linker=gcc shared libcblas ./libatlas%soffix
	linker=g77 shared libblas ./libatlas%soffix
	linker=g77 shared liblapack_atlas ./libatlas%soffix ./libblas%soffix ./libcblas%soffix
	cd -
}

%ifarch %ix86
make killall startup arch=Linux_i586
make install sanity_test arch=Linux_i586 ARCHDEFS='-DATL_OS_Linux -DATL_GAS_x8632' \
	MMDEF=$PWD/CONFIG/ARCHS/PII/gcc/gemm ARCHDEF=$PWD/CONFIG/ARCHS/PII/gcc/misc
all_shared lib/Linux_i586
make killall startup arch=Linux_sse2
make install sanity_test arch=Linux_sse2 ARCHDEFS='-DATL_OS_Linux -DATL_GAS_x8632 -DATL_ARCH_HAMMER32 -DATL_SSE1 -DATL_SSE2' \
	MMDEF=$PWD/CONFIG/ARCHS/HAMMER32SSE2/gcc/gemm ARCHDEF=$PWD/CONFIG/ARCHS/HAMMER32SSE2/gcc/misc
all_shared lib/Linux_sse2
%else
make killall startup arch=Linux_amd64
make install sanity_test arch=Linux_amd64 ARCHDEFS='-DATL_OS_Linux -DATL_GAS_x8664 -DATL_ARCH_HAMMER64 -DATL_SSE1 -DATL_SSE2 -DATL_USE64BITS' \
	MMDEF=$PWD/CONFIG/ARCHS/HAMMER64SSE2/gcc/gemm ARCHDEF=$PWD/CONFIG/ARCHS/HAMMER64SSE2/gcc/misc
all_shared lib/Linux_amd64
%endif

%install
mkdir -p %buildroot%_libdir %buildroot%_includedir/atlas
cp -p include/*.h %buildroot%_includedir/atlas/
ln -s atlas/cblas.h %buildroot%_includedir/cblas.h
ln -s atlas/clapack.h %buildroot%_includedir/clapack.h

%ifarch %ix86
cp -p include/Linux_i586/atlas*.h %buildroot%_includedir/atlas/
cp -p lib/Linux_i586/lib*%soffix %buildroot%_libdir/
cp -p lib/Linux_i586/lib*.a %buildroot%_libdir/
mkdir %buildroot%_libdir/sse2
cp -p lib/Linux_sse2/libatlas%soffix %buildroot%_libdir/sse2/
%else
cp -p include/Linux_amd64/atlas*.h %buildroot%_includedir/atlas/
cp -p lib/Linux_amd64/lib*%soffix %buildroot%_libdir/
cp -p lib/Linux_amd64/lib*.a %buildroot%_libdir/
%endif

ln -s libatlas%soffix %buildroot%_libdir/libatlas.so
ln -s libcblas%soffix %buildroot%_libdir/libcblas.so
ln -s libblas%soffix %buildroot%_libdir/libblas.so
ln -s libblas%soffix %buildroot%_libdir/libf77blas.so
ln -s liblapack_atlas%soffix %buildroot%_libdir/liblapack_atlas.so

mv %buildroot%_libdir/libatlas{,_}.a
echo 'GROUP(%_libdir/libatlas_.a -lm)' >%buildroot%_libdir/libatlas.a
mv %buildroot%_libdir/libcblas{,_}.a
echo 'GROUP(%_libdir/libcblas_.a %_libdir/libatlas.a)' >%buildroot%_libdir/libcblas.a
mv %buildroot%_libdir/libblas{,_}.a
echo 'GROUP(%_libdir/libblas_.a %_libdir/libatlas.a -lgfortran)' >%buildroot%_libdir/libblas.a
ln -s libblas.a %buildroot%_libdir/libf77blas.a
mv %buildroot%_libdir/liblapack_atlas{,_}.a
echo 'GROUP(%_libdir/liblapack_atlas_.a %_libdir/libcblas.a %_libdir/libblas.a)' >%buildroot%_libdir/liblapack_atlas.a

%define pkgdocdir %_docdir/atlas-3.7
mkdir -p %buildroot%pkgdocdir
cp -p README.ALT %buildroot%pkgdocdir/
cp -p doc/AtlasCredits.txt doc/ChangeLog doc/LibReadme.txt %buildroot%pkgdocdir/
cp -p doc/atlas_{contrib,devel,over}.ps doc/cblas.ps %buildroot%pkgdocdir/
gzip -9nf %buildroot%pkgdocdir/*.ps
%ifarch %ix86
cp -p bin/Linux_i586/INSTALL_LOG/SUMMARY.LOG %buildroot%pkgdocdir/SUMMARY.LOG
cp -p bin/Linux_sse2/INSTALL_LOG/SUMMARY.LOG %buildroot%pkgdocdir/SUMMARY.LOG.SSE2
%else
cp -p bin/Linux_amd64/INSTALL_LOG/SUMMARY.LOG %buildroot%pkgdocdir/SUMMARY.LOG
%endif

%package -n libatlas
Summary: Automatically Tuned Linear Algebra Software (the BLAS library)
Group: System/Libraries
Conflicts: liblapack < 1:3.0-alt3

%description -n libatlas
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.

%files -n libatlas
%_libdir/lib*%soffix
%ifarch %ix86
%dir %_libdir/sse2
%_libdir/sse2/libatlas%soffix
%endif
%dir %pkgdocdir
%pkgdocdir/README.ALT
%pkgdocdir/*.txt
%pkgdocdir/ChangeLog
%pkgdocdir/SUMMARY.LOG*

%post -n libatlas -p %post_ldconfig
%postun -n libatlas -p %post_ldconfig

%package -n libatlas-devel
Summary: Automatically Tuned Linear Algebra Software (the BLAS library)
Group: Development/Other
Requires: libatlas = %version-%release

%description -n libatlas-devel
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.

%files -n libatlas-devel
%_libdir/*.so
%_includedir/cblas.h
%_includedir/clapack.h
%dir %_includedir/atlas
%_includedir/atlas/*.h

%package -n libatlas-devel-static
Summary: Automatically Tuned Linear Algebra Software (the BLAS library)
Group: Development/Other
Requires: libatlas-devel = %version-%release
Requires: libgfortran-devel-static

%description -n libatlas-devel-static
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.

%files -n libatlas-devel-static
%_libdir/lib*.a
%exclude %_libdir/libtstatlas.a

%package doc
Summary: Automatically Tuned Linear Algebra Software (the BLAS library)
Group: Development/Other
Requires: libatlas = %version-%release

%description doc
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.

%files doc
%dir %pkgdocdir
%pkgdocdir/*.ps.gz

%changelog
* Mon Oct 29 2007 Alexey Tourbin <at@altlinux.ru> 3.7.11-alt5
- packaged static libraries (requested by Pavel A. Piminov);
  use e.g. "g77 -static test.f -lblas" for static linkage
- changed src.rpm packaging to keep separate upstream tarball

* Tue Jan 09 2007 Alexey Tourbin <at@altlinux.ru> 3.7.11-alt4
- backported bugfix for "complex C = A A' bug"
- backported fix for ilaenv.f which improves LAPACK performance

* Sun Dec 10 2006 Alexey Tourbin <at@altlinux.ru> 3.7.11-alt3
- compiled with -mfpmath=387 to fix LAPACK test suite on x86_64
- actually packaged README.ALT

* Fri Dec 08 2006 Alexey Tourbin <at@altlinux.ru> 3.7.11-alt2
- imported sources into git and built with gear
- removed PRM_OPT_FLAGS hack that broke SSE2
- enabled /usr/lib/sse2/libatlas.so.3 for i586
- libatlas.so.3, libblas.so.3: made some internal functions hidden
- packaged docs (atlas-doc package has postscript documentation)
- added README.ALT, which explains some performance issues

* Tue Jun 06 2006 Alexey Tourbin <at@altlinux.ru> 3.7.11-alt1
- initial revision, with debian fixes
- PII-optimized BLAS (for i586) yields three-fold improvement
  over plain fortran BLAS (matrix cross-product in R)
- SSE2-optimized /usr/lib/sse2/libatlas.so disabled by default
  because of segfaults (try to rebuild `--with sse2' and let me know)
- HAMMER64SSE2 for x86_64