-# RPM spec file for FFTW.
-# This file is used to build Redhat Package Manager packages for the
-# FFTW library. Such packages make it easy to install and uninstall
-# the library and related files from binaries or source.
#
-# This spec file is for version 2.1.2 of FFTW, and will need to be
-# modified for future releases. First, the string "2.1.2" should
-# be replaced everywhere in this file with the new version number.
-# Second, the shared library version numbers (in the %files list)
-# will need to be updated. Any other changes in the installed files
-# list, build commands, etcetera will of course also require changes.
+# Conditional build
+%bcond_without single # without single precision library
#
-# The icon associated with this package can be downloaded from:
-# http://theory.lcs.mit.edu/~fftw/fftw-logo-thumb.gif
-# and will need to be placed in the SOURCES directory to build the RPM.
-#
-Name: fftw
-Summary: fast fourier transform library
-Version: 2.1.2
-Release: 3
-Copyright: GPL
-Icon: fftw-logo-thumb.gif
-Group: Libraries
-Prefix: /usr
-Source: ftp://theory.lcs.mit.edu/pub/fftw/fftw-2.1.2.tar.gz
-URL: http://theory.lcs.mit.edu/~fftw
-BuildRoot: /var/tmp/fftw-%{PACKAGE_VERSION}-root
+Summary: Fast Fourier Transform library
+Summary(pl): Biblioteka z funkcjami szybkiej transformaty Fouriera
+Summary(pt_BR): Biblioteca fast Fourier transform
+Name: fftw
+Version: 2.1.5
+Release: 4
+License: GPL
+Group: Libraries
+Source0: ftp://ftp.fftw.org/pub/fftw/%{name}-%{version}.tar.gz
+# Source0-md5: 8d16a84f3ca02a785ef9eb36249ba433
+Patch0: %{name}-info.patch
+Patch1: %{name}-link.patch
+URL: http://www.fftw.org/
+BuildRequires: autoconf
+BuildRequires: automake
+# to detect proper F77 name mangling for fortran binding functions
+BuildRequires: gcc-g77
+BuildRequires: libtool
+BuildRequires: texinfo
+BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
-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 both the double- and single-precision FFTW
-uniprocessor and threads libraries.
+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 and double precision
+FFTW uniprocessor and threads libraries.
+
+%description -l pl
+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 pojedyñczej i 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
+normal tem um prefixo "s").
+
%package devel
-Summary: headers, libraries, & docs for FFTW fast fourier transform library
-Group: Development/Libraries
-Prefix: /usr
-Requires: fftw = 2.1.2
+Summary: Header files and development documentation for FFTW library
+Summary(pl): Pliki nag³ówkowe i dokumentacja programisty do biblioteki FFTW
+Summary(pt_BR): Headers e documentação do pacote FFTW
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+
%description devel
-This package contains the additional header files, documentation, and
-libraries you need to develop programs using the FFTW fast fourier
-transform library.
+This package contains the additional header files and documentation
+you need to develop programs using the FFTW (fast Fourier transform
+library).
+
+%description devel -l pl
+Ten pakiet zawiera dodatkowe pliki nag³ówkowe oraz dokumentacjê do
+tworzenia programów u¿ywaj±cych biblioteki FFTW (fast Fourier
+transform library).
+
+%description devel -l pt_BR
+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
+Group: Development/Libraries
+Requires: %{name}-devel = %{version}-%{release}
+
+%description static
+Static FFTW libraries.
+
+%description static -l pl
+Statyczne biblioteki FFTW.
+
+%description static -l pt_BR
+Este pacote contém as bibliotecas estáticas do pacote FFTW.
+
+%package single
+Summary: Single-precision Fast Fourier Transform libraries
+Summary(pl): Biblioteki szybkiej transformaty Fouriera pojedynczej precyzji
+Group: Libraries
+Conflicts: fftw < 2.1.5-4
+
+%description single
+Single-precision Fast Fourier Transform libraries.
+
+%description single -l pl
+Biblioteki szybkiej transformaty Fouriera pojedynczej precyzji.
+
+%package single-devel
+Summary: Header files for single-precision FFTW libraries
+Summary(pl): Pliki nag³ówkowe bibliotek FFTW pojedynczej precyzji
+Group: Development/Libraries
+Requires: %{name}-single = %{version}-%{release}
+
+%description single-devel
+Header files for single-precision FFTW libraries.
+
+%description single-devel -l pl
+Pliki nag³ówkowe bibliotek FFTW pojedynczej precyzji.
+
+%package single-static
+Summary: Static single-precision FFTW libraries
+Summary(pl): Statyczne biblioteki FFTW pojedynczej precyzji
+Group: Development/Libraries
+Requires: %{name}-single-devel = %{version}-%{release}
+
+%description single-static
+Static single-precision FFTW libraries.
+
+%description single-static -l pl
+Statyczne biblioteki FFTW pojedynczej precyzji.
%prep
-%setup
+%setup -q
+%patch0 -p1
+%patch1 -p1
-%ifarch i386
-./configure --enable-shared --enable-type-prefix --enable-i386-hacks --enable-threads --prefix=%prefix
-%else
-./configure --enable-shared --enable-type-prefix --enable-threads --prefix=%prefix
-%endif
+# don't use pregenerated file
+rm -f fftw/config.h
%build
+%{__libtoolize}
+%{__aclocal}
+%{__autoconf}
+%{__automake}
+
+%if %{with single}
+install -d build-single
+cd build-single
+../%configure \
+%ifarch %{ix86}
+ --enable-i386-hacks \
+%endif
+ --enable-shared \
+ --enable-threads \
+ --enable-float \
+ --enable-type-prefix \
+ --%{!?debug:dis}%{?debug:en}able-debug
+
+%{__make}
+cd ..
+%endif
-make
+install -d build-double
+cd build-double
+../%configure \
+%ifarch %{ix86}
+ --enable-i386-hacks \
+%endif
+ --enable-shared \
+ --enable-threads \
+ --%{!?debug:dis}%{?debug:en}able-debug
+
+%{__make}
%install
rm -rf $RPM_BUILD_ROOT
-make prefix=$RPM_BUILD_ROOT%{prefix} install
+%{__make} -C build-single install \
+ DESTDIR=$RPM_BUILD_ROOT
-# hack to also compile/install single-precision version:
-make distclean
-%ifarch i386
-./configure --enable-shared --enable-type-prefix --enable-threads --enable-float --prefix=%prefix --enable-i386-hacks
-%else
-./configure --enable-shared --enable-type-prefix --enable-threads --enable-float --prefix=%prefix
-%endif
-make prefix=$RPM_BUILD_ROOT%{prefix} install
+%{__make} -C build-double install \
+ DESTDIR=$RPM_BUILD_ROOT
+
+%clean
+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
+
+%postun 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
%files
-/usr/lib/libdfftw.so.2.0.4
-/usr/lib/libdfftw_threads.so.2.0.4
-/usr/lib/libdrfftw.so.2.0.4
-/usr/lib/libdrfftw_threads.so.2.0.4
-/usr/lib/libsfftw.so.2.0.4
-/usr/lib/libsfftw_threads.so.2.0.4
-/usr/lib/libsrfftw.so.2.0.4
-/usr/lib/libsrfftw_threads.so.2.0.4
-/usr/lib/libdfftw.so.2
-/usr/lib/libdfftw_threads.so.2
-/usr/lib/libdrfftw.so.2
-/usr/lib/libdrfftw_threads.so.2
-/usr/lib/libsfftw.so.2
-/usr/lib/libsfftw_threads.so.2
-/usr/lib/libsrfftw.so.2
-/usr/lib/libsrfftw_threads.so.2
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libfftw.so.*.*.*
+%attr(755,root,root) %{_libdir}/libfftw_threads.so.*.*.*
+%attr(755,root,root) %{_libdir}/librfftw.so.*.*.*
+%attr(755,root,root) %{_libdir}/librfftw_threads.so.*.*.*
+
%files devel
-/usr/info/fftw.info
-/usr/info/fftw.info-1
-/usr/info/fftw.info-2
-/usr/info/fftw.info-3
-/usr/info/fftw.info-4
-/usr/info/fftw.info-5
-/usr/include/dfftw.h
-/usr/include/dfftw_threads.h
-/usr/include/drfftw.h
-/usr/include/drfftw_threads.h
-/usr/include/sfftw.h
-/usr/include/sfftw_threads.h
-/usr/include/srfftw.h
-/usr/include/srfftw_threads.h
-/usr/lib/libdfftw.a
-/usr/lib/libdfftw.la
-/usr/lib/libdfftw.so
-/usr/lib/libdfftw_threads.a
-/usr/lib/libdfftw_threads.la
-/usr/lib/libdfftw_threads.so
-/usr/lib/libdrfftw.a
-/usr/lib/libdrfftw.la
-/usr/lib/libdrfftw.so
-/usr/lib/libdrfftw_threads.a
-/usr/lib/libdrfftw_threads.la
-/usr/lib/libdrfftw_threads.so
-/usr/lib/libsfftw.a
-/usr/lib/libsfftw.la
-/usr/lib/libsfftw.so
-/usr/lib/libsfftw_threads.a
-/usr/lib/libsfftw_threads.la
-/usr/lib/libsfftw_threads.so
-/usr/lib/libsrfftw.a
-/usr/lib/libsrfftw.la
-/usr/lib/libsrfftw.so
-/usr/lib/libsrfftw_threads.a
-/usr/lib/libsrfftw_threads.la
-/usr/lib/libsrfftw_threads.so
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libfftw.so
+%attr(755,root,root) %{_libdir}/libfftw_threads.so
+%attr(755,root,root) %{_libdir}/librfftw.so
+%attr(755,root,root) %{_libdir}/librfftw_threads.so
+%{_libdir}/libfftw.la
+%{_libdir}/libfftw_threads.la
+%{_libdir}/librfftw.la
+%{_libdir}/librfftw_threads.la
+%{_includedir}/fftw*.h
+%{_includedir}/rfftw*.h
+%{_infodir}/fftw.info*
-%clean
-rm -rf $RPM_BUILD_ROOT
+%files static
+%defattr(644,root,root,755)
+%{_libdir}/libfftw.a
+%{_libdir}/libfftw_threads.a
+%{_libdir}/librfftw.a
+%{_libdir}/librfftw_threads.a
+
+%files single
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libsfftw.so.*.*.*
+%attr(755,root,root) %{_libdir}/libsfftw_threads.so.*.*.*
+%attr(755,root,root) %{_libdir}/libsrfftw.so.*.*.*
+%attr(755,root,root) %{_libdir}/libsrfftw_threads.so.*.*.*
+
+%files single-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libsfftw.so
+%attr(755,root,root) %{_libdir}/libsfftw_threads.so
+%attr(755,root,root) %{_libdir}/libsrfftw.so
+%attr(755,root,root) %{_libdir}/libsrfftw_threads.so
+%{_libdir}/libsfftw.la
+%{_libdir}/libsfftw_threads.la
+%{_libdir}/libsrfftw.la
+%{_libdir}/libsrfftw_threads.la
+%{_includedir}/sfftw*.h
+%{_includedir}/srfftw*.h
-%changelog
-* Tue Aug 03 1999 Dax Kelson <dax@gurulabs.com>
-- Set prefix to /usr so there is no need to futz with ldconfig
+%files single-static
+%defattr(644,root,root,755)
+%{_libdir}/libsfftw.a
+%{_libdir}/libsfftw_threads.a
+%{_libdir}/libsrfftw.a
+%{_libdir}/libsrfftw_threads.a