]> git.pld-linux.org Git - packages/fftw3.git/blobdiff - fftw3.spec
- up to 3.2
[packages/fftw3.git] / fftw3.spec
index fee932b391f638c2a253f2d4ac5847baec4deb5f..100023a03229beeadeac5d85310871c270c4cf58 100644 (file)
@@ -1,19 +1,33 @@
-# TODO: move single and long-double libs to subpackages
-Summary:       Fast Fourier transform library
-Summary(pl):   Biblioteka z funkacjami szybkiej transformaty Fouriera
-Summary(pt_BR):        biblioteca fast fourier transform
+#
+# Conditional build:
+%bcond_without fftwl   # don't build "long" subpackages
+#
+Summary:       Fast Fourier Transform library
+Summary(pl.UTF-8):     Biblioteka z funkcjami szybkiej transformaty Fouriera
+Summary(pt_BR.UTF-8):  biblioteca fast fourier transform
 Name:          fftw3
-Version:       3.0
+Version:       3.2
 Release:       1
-License:       GPL
+License:       GPL v2+
 Group:         Libraries
 Source0:       ftp://ftp.fftw.org/pub/fftw/fftw-%{version}.tar.gz
+# Source0-md5: 280960ddbad368ebb96c073a2b642f5d
 Patch0:                %{name}-info.patch
-Icon:          fftw-logo-thumb.gif
+Patch1:                %{name}-link.patch
+Patch2:                %{name}-ac_simd.patch
 URL:           http://www.fftw.org/
 BuildRequires: autoconf
 BuildRequires: automake
+%ifarch alpha ppc s390 s390x sparc sparcv9
+%if %{with fftwl}
+# for 128-bit long double support
+BuildRequires: gcc-fortran >= 5:4.1.0-1
+BuildRequires: glibc >= 6:2.4-1
+%endif
+%endif
 BuildRequires: libtool
+BuildRequires: texinfo
+Requires:      %{name}-common = %{version}-%{release}
 BuildRoot:     %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 %description
@@ -23,94 +37,222 @@ real, and parallel transforms, and can handle arbitrary array sizes
 efficiently. This RPM package includes the double precision FFTW
 uniprocessor and threads libraries.
 
-%description -l pl
+%description -l pl.UTF-8
 FFTW jest zbiorem szybkich funkcji C do obliczania dyskretnych
-transformat Fouriera w jednym lub wiêcej wymiarach. Zawiera równie¿
-zespolone, rzeczywiste oraz równoleg³e transformaty i potrafi wydajnie
-radziæ sobie z tablicami o dowolnych rozmiarach. Ten pakiet RPM
-zawiera wersje FFTW o podwójnej precyzji dla architektur
-jednoprocesorowych oraz z obs³ug± w±tków.
-
-%description -l pt_BR
-FFTW é uma coleção de rotinas rápidas em C para computar a Discrete
-Fourier Transform em uma ou mais dimensões. Incluindo transformações
-complexas, reais e paralelas, também pode manipular vetores de tamanho
-arbitrário eficientemente. Esse pacote RPM inclui bibliotecas FFTW com
-suporte a threads, normal e dupla precisão (Os arquivos de precisão
+transformat Fouriera w jednym lub więcej wymiarach. Zawiera również
+zespolone, rzeczywiste oraz równoległe transformaty i potrafi wydajnie
+radzić sobie z tablicami o dowolnych rozmiarach. Ten pakiet RPM
+zawiera wersje FFTW o podwójnej precyzji dla architektur
+jednoprocesorowych oraz z obsługą wątków.
+
+%description -l pt_BR.UTF-8
+FFTW é uma coleção de rotinas rápidas em C para computar a Discrete
+Fourier Transform em uma ou mais dimensões. Incluindo transformações
+complexas, reais e paralelas, também pode manipular vetores de tamanho
+arbitrário eficientemente. Esse pacote RPM inclui bibliotecas FFTW com
+suporte a threads, normal e dupla precisão (Os arquivos de precisão
 normal tem um prefixo "s").
 
 %package devel
-Summary:       Header files and documentation for fftw
-Summary(pl):   Pliki nag³ówkowe oraz dokumentacja do fftw
-Summary(pt_BR):        Headers e documentação do pacote FFTW
+Summary:       Development files for fftw
+Summary(pl.UTF-8):     Pliki programistyczne do fftw
+Summary(pt_BR.UTF-8):  Headers e documentação do pacote FFTW
 Group:         Development/Libraries
-Requires:      %{name} = %{version}
+Requires:      %{name} = %{version}-%{release}
+Requires:      %{name}-common-devel = %{version}-%{release}
 
 %description devel
-This package contains the header files and documentation you need to
-develop programs using the FFTW (fast fourier transform library).
+This package contains the files you need to develop programs using the
+FFTW (fast fourier transform library).
 
-%description devel -l pl
-Ten pakiet zawiera pliki nag³ówkowe oraz dokumetacjê potrzebne do
-tworzenia programów u¿ywaj±cych biblioteki FFTW (wykonuj±cej szybk±
-transformatê Fouriera).
+%description devel -l pl.UTF-8
+Ten pakiet zawiera pliki potrzebne do tworzenia programów używających
+biblioteki FFTW (wykonującej szybką transformatę Fouriera).
 
-%description devel -l pt_BR
-Este pacote contém documentação e headers adicionais para desenvolver
+%description devel -l pt_BR.UTF-8
+Este pacote contém documentação e headers adicionais para desenvolver
 programas usando a FFTW.
 
 %package static
 Summary:       Static fftw libraries
-Summary(pl):   Statyczne biblioteki fftw
-Summary(pt_BR):        Bibliotecas estáticas do pacote FFTW
+Summary(pl.UTF-8):     Statyczne biblioteki fftw
+Summary(pt_BR.UTF-8):  Bibliotecas estáticas do pacote FFTW
 Group:         Development/Libraries
-Requires:      %{name}-devel = %{version}
+Requires:      %{name}-devel = %{version}-%{release}
 
 %description static
 Static fftw libraries.
 
-%description static -l pl
+%description static -l pl.UTF-8
 Statyczne biblioteki fftw.
 
-%description static -l pt_BR
-Este pacote contém as bibliotecas estáticas do pacote FFTW.
+%description static -l pt_BR.UTF-8
+Este pacote contém as bibliotecas estáticas do pacote FFTW.
+
+%package single
+Summary:       Fast Fourier Transform library - single precision
+Summary(pl.UTF-8):     Biblioteka z funkcjami szybkiej transformaty Fouriera - pojedynczej precyzji
+Group:         Libraries
+Requires:      %{name}-common = %{version}-%{release}
+
+%description single
+FFTW is a collection of fast C routines for computing the Discrete
+Fourier Transform in one or more dimensions. It includes complex,
+real, and parallel transforms, and can handle arbitrary array sizes
+efficiently. This RPM package includes the single precision FFTW
+uniprocessor and threads libraries.
+
+%description single -l pl.UTF-8
+FFTW jest zbiorem szybkich funkcji C do obliczania dyskretnych
+transformat Fouriera w jednym lub więcej wymiarach. Zawiera również
+zespolone, rzeczywiste oraz równoległe transformaty i potrafi wydajnie
+radzić sobie z tablicami o dowolnych rozmiarach. Ten pakiet RPM
+zawiera wersje FFTW o pojedynczej precyzji dla architektur
+jednoprocesorowych oraz z obsługą wątków.
+
+%package single-devel
+Summary:       Development files for single precision fftw
+Summary(pl.UTF-8):     Pliki programistyczne do fftw pojedynczej precyzji
+Group:         Development/Libraries
+Requires:      %{name}-common-devel = %{version}-%{release}
+Requires:      %{name}-single = %{version}-%{release}
+
+%description single-devel
+This package contains the files you need to develop programs using the
+single precision FFTW (fast fourier transform library).
+
+%description single-devel -l pl.UTF-8
+Ten pakiet zawiera pliki potrzebne do tworzenia programów używających
+biblioteki FFTW pojedynczej precyzji (wykonującej szybką transformatę
+Fouriera).
+
+%package single-static
+Summary:       Static fftw single precision libraries
+Summary(pl.UTF-8):     Statyczne biblioteki fftw pojedynczej precyzji
+Group:         Development/Libraries
+Requires:      %{name}-single-devel = %{version}-%{release}
+
+%description single-static
+Static fftw single precision libraries.
+
+%description single-static -l pl.UTF-8
+Statyczne biblioteki fftw pojedynczej precyzji.
+
+%package long
+Summary:       Fast Fourier Transform library - long double precision
+Summary(pl.UTF-8):     Biblioteka z funkcjami szybkiej transformaty Fouriera - rozszerzonej precyzji
+Group:         Libraries
+Requires:      %{name}-common = %{version}-%{release}
+
+%description long
+FFTW is a collection of fast C routines for computing the Discrete
+Fourier Transform in one or more dimensions. It includes complex,
+real, and parallel transforms, and can handle arbitrary array sizes
+efficiently. This RPM package includes the long double precision FFTW
+uniprocessor and threads libraries.
+
+%description long -l pl.UTF-8
+FFTW jest zbiorem szybkich funkcji C do obliczania dyskretnych
+transformat Fouriera w jednym lub więcej wymiarach. Zawiera również
+zespolone, rzeczywiste oraz równoległe transformaty i potrafi wydajnie
+radzić sobie z tablicami o dowolnych rozmiarach. Ten pakiet RPM
+zawiera wersje FFTW o rozszerzonej precyzji dla architektur
+jednoprocesorowych oraz z obsługą wątków.
+
+%package long-devel
+Summary:       Development files for long double precision fftw
+Summary(pl.UTF-8):     Pliki programistyczne do fftw rozszerzonej precyzji
+Group:         Development/Libraries
+Requires:      %{name}-common-devel = %{version}-%{release}
+Requires:      %{name}-long = %{version}-%{release}
+
+%description long-devel
+This package contains the files you need to develop programs using the
+long double precision FFTW (fast fourier transform library).
+
+%description long-devel -l pl.UTF-8
+Ten pakiet zawiera pliki potrzebne do tworzenia programów używających
+biblioteki FFTW rozszerzonej precyzji (wykonującej szybką transformatę
+Fouriera).
+
+%package long-static
+Summary:       Static fftw long double precision libraries
+Summary(pl.UTF-8):     Statyczne biblioteki fftw rozszerzonej precyzji
+Group:         Development/Libraries
+Requires:      %{name}-long-devel = %{version}-%{release}
+
+%description long-static
+Static fftw long double precision libraries.
+
+%description long-static -l pl.UTF-8
+Statyczne biblioteki fftw rozszerzonej precyzji.
+
+%package common
+Summary:       Files common for all versions of fftw libraries
+Summary(pl.UTF-8):     Pliki wspólne dla wszystkich wersji bibliotek fftw
+Group:         Libraries
+
+%description common
+Files common for all versions of fftw libraries (basic documentation,
+fftw-wisdom-to-conf utility).
+
+%description common -l pl.UTF-8
+Pliki wspólne dla wszystkich wersji bibliotek fftw (podstawowa
+dokumentacja, narzędzie fftw-wisdom-to-conf).
+
+%package common-devel
+Summary:       Development files common for all versions of fftw libraries
+Summary(pl.UTF-8):     Pliki programistyczne wspólne dla wszystkich wersji bibliotek fftw
+Group:         Development/Libraries
+Requires:      %{name}-common = %{version}-%{release}
+
+%description common-devel
+Development files common for all versions of fftw libraries (header
+files, development documentation).
+
+%description common-devel -l pl.UTF-8
+Pliki programistyczne wspólne dla wszystkich wersji bibliotek fftw
+(pliki nagłówkowe, dokumentacja programisty).
 
 %prep
 %setup -q -n fftw-%{version}
-%patch -p1
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
 
 %build
 %{__libtoolize}
-%{__aclocal}
+%{__aclocal} -I m4
 %{__autoconf}
 %{__automake}
-# it seems to be safe because of runtime CPU detection
-for ver in single double long-double ; do
+
+# MMX/SSE/etc. seem to be safe because of runtime CPU detection
+for ver in single double %{?with_fftwl:long-double}; do
        OPTS=""
        # k7,SSE,3dnow,altivec only for single
        if [ "$ver" = "single" ]; then
-               OPTS="
-%ifarch athlon
-               --enable-k7
-%endif
-%ifarch i686 athlon
-       --enable-sse
+%ifarch i686
+               OPTS="--enable-sse"
 %endif
-%ifarch i586 k6
-       --enable-3dnow
+%ifarch athlon
+               OPTS="--enable-sse" # no "--enable-k7" - conflicts with shared, SEGV on athlons
 %endif
 %ifarch ppc
-       --enable-altivec
+               OPTS="--enable-altivec"
+%endif
+%ifnarch i686 k6 athlon ppc
+               :       # keep sh happy about syntax
 %endif
-               "
        fi
 %ifarch i686
        # SSE2 only for double
        if [ "$ver" = "double" ]; then
                OPTS="--enable-sse2"
-       endif
+       fi
 %endif
-%configure \
+install -d build-${ver}
+cd build-${ver}
+../%configure \
        --enable-shared \
        --enable-threads \
        --enable-$ver \
@@ -118,28 +260,22 @@ for ver in single double long-double ; do
        --%{!?debug:dis}%{?debug:en}able-debug
 
 %{__make}
-%{__make} install DESTDIR=`pwd`/inst-$ver
-       if [ "$ver" != "long-double" ]; then
-%{__make} clean
-       fi
+cd ..
 done
 
-# remake docs removed by make clean
-%{__make} fftw-faq.html -C doc/FAQ
-
 %install
 rm -rf $RPM_BUILD_ROOT
 
-# this installs last configured version (long-double)
-%{__make} install DESTDIR=$RPM_BUILD_ROOT
+%{__make} install -C build-single \
+       DESTDIR=$RPM_BUILD_ROOT
 
-# duplicates
-rm -rf inst-*{%{_bindir}/fftw-wisdom-to-conf,%{_includedir}} \
-       inst-*{%{_infodir},%{_mandir}/man1/fftw-wisdom-to-conf.1}
+%{__make} install -C build-double \
+       DESTDIR=$RPM_BUILD_ROOT
 
-# install prepared remaining versions
-tar cf - -C inst-single . | tar xf - -C $RPM_BUILD_ROOT
-tar cf - -C inst-double . | tar xf - -C $RPM_BUILD_ROOT
+%if %{with fftwl}
+%{__make} install -C build-long-double \
+       DESTDIR=$RPM_BUILD_ROOT
+%endif
 
 %clean
 rm -rf $RPM_BUILD_ROOT
@@ -147,28 +283,95 @@ rm -rf $RPM_BUILD_ROOT
 %post  -p /sbin/ldconfig
 %postun        -p /sbin/ldconfig
 
-%post devel
-[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
+%post  single -p /sbin/ldconfig
+%postun        single -p /sbin/ldconfig
 
-%postun devel
-[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
+%post  long -p /sbin/ldconfig
+%postun        long -p /sbin/ldconfig
+
+%post common-devel     -p      /sbin/postshell
+-/usr/sbin/fix-info-dir -c %{_infodir}
+
+%postun common-devel   -p      /sbin/postshell
+-/usr/sbin/fix-info-dir -c %{_infodir}
 
 %files
 %defattr(644,root,root,755)
-%doc AUTHORS COPYRIGHT ChangeLog NEWS README TODO
-%attr(755,root,root) %{_bindir}/fftw*-wisdom*
-%attr(755,root,root) %{_libdir}/libfftw3*.so.*.*.*
-%{_mandir}/man1/fftw*-wisdom*.1*
+%attr(755,root,root) %{_bindir}/fftw-wisdom
+%attr(755,root,root) %{_libdir}/libfftw3.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libfftw3.so.3
+%attr(755,root,root) %{_libdir}/libfftw3_threads.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libfftw3_threads.so.3
+%{_mandir}/man1/fftw-wisdom.1*
 
 %files devel
 %defattr(644,root,root,755)
-%doc doc/html doc/FAQ/fftw-faq.html
-%attr(755,root,root) %{_libdir}/libfftw3*.so
-%{_libdir}/libfftw3*.la
-%{_includedir}/fftw3.*
-%{_infodir}/fftw3.info*
-%{_pkgconfigdir}/fftw3*.pc
+%attr(755,root,root) %{_libdir}/libfftw3.so
+%attr(755,root,root) %{_libdir}/libfftw3_threads.so
+%{_libdir}/libfftw3.la
+%{_libdir}/libfftw3_threads.la
+%{_pkgconfigdir}/fftw3.pc
 
 %files static
 %defattr(644,root,root,755)
-%{_libdir}/libfftw3*.a
+%{_libdir}/libfftw3.a
+%{_libdir}/libfftw3_threads.a
+
+%files single
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/fftwf-wisdom
+%attr(755,root,root) %{_libdir}/libfftw3f.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libfftw3f.so.3
+%attr(755,root,root) %{_libdir}/libfftw3f_threads.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libfftw3f_threads.so.3
+%{_mandir}/man1/fftwf-wisdom.1*
+
+%files single-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libfftw3f.so
+%attr(755,root,root) %{_libdir}/libfftw3f_threads.so
+%{_libdir}/libfftw3f.la
+%{_libdir}/libfftw3f_threads.la
+%{_pkgconfigdir}/fftw3f.pc
+
+%files single-static
+%defattr(644,root,root,755)
+%{_libdir}/libfftw3f.a
+%{_libdir}/libfftw3f_threads.a
+
+%if %{with fftwl}
+%files long
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/fftwl-wisdom
+%attr(755,root,root) %{_libdir}/libfftw3l.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libfftw3l.so.3
+%attr(755,root,root) %{_libdir}/libfftw3l_threads.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libfftw3l_threads.so.3
+%{_mandir}/man1/fftwl-wisdom.1*
+
+%files long-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libfftw3l.so
+%attr(755,root,root) %{_libdir}/libfftw3l_threads.so
+%{_libdir}/libfftw3l.la
+%{_libdir}/libfftw3l_threads.la
+%{_pkgconfigdir}/fftw3l.pc
+
+%files long-static
+%defattr(644,root,root,755)
+%{_libdir}/libfftw3l.a
+%{_libdir}/libfftw3l_threads.a
+%endif
+
+%files common
+%defattr(644,root,root,755)
+%doc AUTHORS COPYRIGHT ChangeLog NEWS README TODO
+%attr(755,root,root) %{_bindir}/fftw-wisdom-to-conf
+%{_mandir}/man1/fftw-wisdom-to-conf.1*
+
+%files common-devel
+%defattr(644,root,root,755)
+%doc doc/html doc/FAQ/fftw-faq.html
+%{_includedir}/fftw3.f
+%{_includedir}/fftw3.h
+%{_infodir}/fftw3.info*
This page took 0.102101 seconds and 4 git commands to generate.