# # spec file for package fftw3 # # Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # Name: fftw3 BuildRequires: fdupes BuildRequires: gcc-fortran BuildRequires: pkgconfig %ifnarch s390 s390x BuildRequires: openmpi-devel %endif Version: 3.3.4 Release: 3.3 Summary: Discrete Fourier Transform (DFT) C Subroutine Library License: GPL-2.0+ Group: Productivity/Scientific/Math Url: http://www.fftw.org Source: http://www.fftw.org/fftw-%{version}.tar.gz Source1: %{name}-rpmlintrc BuildRoot: %{_tmppath}/%{name}-%{version}-build Requires(pre): %install_info_prereq %description FFTW is a C subroutine library for computing the Discrete Fourier Transform (DFT) in one or more dimensions, of both real and complex data, and of arbitrary input size. %package devel Summary: Include Files and Libraries mandatory for Development Group: Development/Libraries/C and C++ Requires: glibc-devel Requires: libfftw3-3 = %{version}-%{release} Provides: fftw-devel %description devel This package contains all necessary include files and libraries needed to develop applications that require these. %package -n libfftw3-3 Summary: Discrete Fourier Transform (DFT) C Subroutine Library Group: System/Libraries # Remove Prov/Obs when appropriate; were added 2011-Nov-21 (post-openSUSE-12.1) Provides: fftw3 = %{version}-%{release} Obsoletes: fftw3 < 3.3 %description -n libfftw3-3 FFTW is a C subroutine library for computing the Discrete Fourier Transform (DFT) in one or more dimensions, of both real and complex data, and of arbitrary input size. %package -n libfftw3_threads3 Summary: Discrete Fourier Transform (DFT) C subroutine library Group: Productivity/Scientific/Math Provides: fftw3-threads = %{version}-%{release} Obsoletes: fftw3-threads < 3.3 # libfftw3_threads.so does not have a DT_NEEDED entry for fftw symbols, since it # may be used with either libfftw3.so or libfftw3f.so. Hence, manual Requires. #Requires: libfftw3-3 = %%{version} %description -n libfftw3_threads3 FFTW is a C subroutine library for computing the Discrete Fourier Transform (DFT) in one or more dimensions, of both real and complex data, and of arbitrary input size. %package threads-devel Summary: Discrete Fourier Transform (DFT) C subroutine library Group: Development/Libraries/C and C++ Requires: fftw3-devel = %{version}-%{release} Requires: glibc-devel Requires: libfftw3_threads3 = %{version}-%{release} %description threads-devel FFTW is a C subroutine library for computing the Discrete Fourier Transform (DFT) in one or more dimensions, of both real and complex data, and of arbitrary input size. %package -n libfftw3_omp3 Summary: Discrete Fourier Transform (DFT) C subroutine library Group: Productivity/Scientific/Math Provides: fftw3-openmp = %{version}-%{release} Obsoletes: fftw3-openmp < 3.3 # Same as libfftw3_threads.so: manual Requires for fftw3 main lib #Requires: libfftw3-3 = %%{version} %description -n libfftw3_omp3 FFTW is a C subroutine library for computing the Discrete Fourier Transform (DFT) in one or more dimensions, of both real and complex data, and of arbitrary input size. %package openmp-devel Summary: Discrete Fourier Transform (DFT) C subroutine library Group: Development/Libraries/C and C++ Requires: fftw3-devel = %{version}-%{release} Requires: glibc-devel Requires: libfftw3_omp3 = %{version}-%{release} %description openmp-devel FFTW is a C subroutine library for computing the Discrete Fourier Transform (DFT) in one or more dimensions, of both real and complex data, and of arbitrary input size. %ifnarch s390 s390x %package -n libfftw3_mpi3 Summary: Discrete Fourier Transform (DFT) C subroutine library Group: Productivity/Scientific/Math Provides: fftw3-mpi = %{version}-%{release} Obsoletes: fftw3-mpi < 3.3 # Same as libfftw3_threads.so: manual Requires for fftw3 main lib #Requires: libfftw3-3 = %%{version} #Requires: openmpi %description -n libfftw3_mpi3 FFTW is a C subroutine library for computing the Discrete Fourier Transform (DFT) in one or more dimensions, of both real and complex data, and of arbitrary input size. %package mpi-devel Summary: Discrete Fourier Transform (DFT) C subroutine library Group: Development/Libraries/C and C++ Requires: fftw3-devel = %{version} Requires: glibc-devel Requires: libfftw3_mpi3 = %{version}-%{release} Requires: openmpi-devel %description mpi-devel FFTW is a C subroutine library for computing the Discrete Fourier Transform (DFT) in one or more dimensions, of both real and complex data, and of arbitrary input size. %endif %prep %setup -q -n fftw-%{version} %build %ifnarch s390 s390x source %_libdir/mpi/gcc/openmpi/bin/mpivars.sh %endif %configure --enable-shared --enable-threads --enable-openmp \ %ifnarch s390 s390x --enable-mpi \ %endif %ifarch %ix86 x86_64 --enable-sse2 \ --enable-avx \ %endif --enable-static make %{?_smp_mflags} %install %makeinstall # remove unneeded files rm -f %{buildroot}%{_libdir}/lib*.la # hack to also compile/install single-precision version: make distclean %ifnarch s390 s390x source %_libdir/mpi/gcc/openmpi/bin/mpivars.sh %endif %configure --enable-shared --enable-threads --enable-float --enable-openmp \ %ifnarch s390 s390x --enable-mpi \ %endif %ifarch %ix86 x86_64 --enable-sse2 \ %endif --enable-static make %{?_smp_mflags} %makeinstall # hack to also compile/install long-double-precision version: make distclean %ifnarch s390 s390x source %_libdir/mpi/gcc/openmpi/bin/mpivars.sh %endif %configure --enable-shared --enable-threads --enable-long-double --enable-openmp \ %ifnarch s390 s390x --enable-mpi \ %endif --enable-static make %{?_smp_mflags} %makeinstall # remove unneeded files rm -f %{buildroot}%{_libdir}/lib*.la # gzip -9nf %%{buildroot}%%{_infodir}/*.info* rm -f %{buildroot}%{_infodir}/dir # remove Makefiles in doc directory at last find doc -name 'Makefile*' | xargs rm %fdupes -s doc %postun devel %install_info_delete --info-dir=%{_infodir} %{_infodir}/fftw3.info.gz %post devel %install_info --info-dir=%{_infodir} %{_infodir}/fftw3.info.gz %post -n libfftw3-3 -p /sbin/ldconfig %postun -n libfftw3-3 -p /sbin/ldconfig %post -n libfftw3_threads3 -p /sbin/ldconfig %postun -n libfftw3_threads3 -p /sbin/ldconfig %post -n libfftw3_omp3 -p /sbin/ldconfig %postun -n libfftw3_omp3 -p /sbin/ldconfig %ifnarch s390 s390x %post -n libfftw3_mpi3 -p /sbin/ldconfig %postun -n libfftw3_mpi3 -p /sbin/ldconfig %endif %files -n libfftw3-3 %defattr(-,root,root) %{_libdir}/libfftw3.so.3* %{_libdir}/libfftw3f.so.3* %{_libdir}/libfftw3l.so.3* %files devel %defattr(-,root,root) %doc AUTHORS CONVENTIONS COPYING COPYRIGHT ChangeLog NEWS README TODO %doc doc/* %doc %{_mandir}/man?/* %{_infodir}/*.info* %{_includedir}/fftw3.* %{_includedir}/fftw3q.f03 %{_includedir}/fftw3l.f03 %{_libdir}/libfftw3.so %{_libdir}/libfftw3f.so %{_libdir}/libfftw3l.so %{_libdir}/lib*.a %{_libdir}/pkgconfig/*.pc %{_bindir}/* %files -n libfftw3_threads3 %defattr(-,root,root) %{_libdir}/libfftw3_threads.so.3* %{_libdir}/libfftw3f_threads.so.3* %{_libdir}/libfftw3l_threads.so.3* %files threads-devel %defattr(-,root,root) %{_libdir}/libfftw3_threads.so %{_libdir}/libfftw3f_threads.so %{_libdir}/libfftw3l_threads.so %files -n libfftw3_omp3 %defattr(-,root,root) %{_libdir}/libfftw3_omp.so.3* %{_libdir}/libfftw3f_omp.so.3* %{_libdir}/libfftw3l_omp.so.3* %files openmp-devel %defattr(-,root,root) %{_libdir}/libfftw3_omp.so %{_libdir}/libfftw3f_omp.so %{_libdir}/libfftw3l_omp.so %ifnarch s390 s390x %files -n libfftw3_mpi3 %defattr(-,root,root) %{_libdir}/libfftw3_mpi.so.3* %{_libdir}/libfftw3f_mpi.so.3* %{_libdir}/libfftw3l_mpi.so.3* %files mpi-devel %defattr(-,root,root) %{_libdir}/libfftw3_mpi.so %{_libdir}/libfftw3f_mpi.so %{_libdir}/libfftw3l_mpi.so %{_includedir}/fftw3-mpi.* %{_includedir}/fftw3l-mpi.f03 %{_includedir}/fftw3l-mpi.f03 %endif %changelog * Sat Apr 19 2014 mardnh@gmx.de - add support for long-double precision * Sat Apr 19 2014 mardnh@gmx.de - update to version 3.3.4 * New functions fftw_alignment_of (to check whether two arrays are equally aligned for the purposes of applying a plan) and fftw_sprint_plan (to output a description of plan to a string). * Bugfix in fftw-wisdom-to-conf; thanks to Florian Oppermann for the bug report. * Fixed manual to work with texinfo-5. * Increased timing interval on x86_64 to reduce timing errors. * Default to Win32 threads, not pthreads, if both are present. * Various build-script fixes. - Drop obsoleted 1_man_macro.patch * Sun Dec 16 2012 dhall@wustl.edu - update to version 3.3.3 * Fix deadlock bug in MPI transforms (thanks to Michael Pippig for the bug report and patch, and to Graham Dennis for the bug report). * Use 128-bit ARM NEON instructions instead of 64-bit instructions. This change appears to speed up even ARM processors with a 64-bit NEON pipe. * Speed improvements for single-precision AVX. * Speed up planner on machines without "official" cycle counters, such as ARM. * Tue Jul 3 2012 coolo@suse.com - update to 3.3.2 to fix crashes with gcc 4.7 * Removed an archaic stack-alignment hack that was failing with gcc-4.7/i386. * Added stack-alignment hack necessary for gcc on Windows/i386. We will regret this in ten years (see previous change). * Fix incompatibility with Intel icc which pretends to be gcc but does not support quad precision. * make libfftw{threads,mpi} depend upon libfftw when using libtool; this is consistent with most other libraries and simplifies the life of various distributors of GNU/Linux. * Tue May 29 2012 tiwai@suse.de - Enable AVX support (bnc#763657) * Thu Apr 26 2012 adrian@suse.de - fix build on %%arm * disable neon it would require --enable-single (precision) - enable openmpi for %%arm * Fri Mar 16 2012 alinm.elena@gmail.com - source the mpi environment * Tue Mar 6 2012 dhall@wustl.edu - delete INSTALL file * Tue Mar 6 2012 dhall@wustl.edu - patch macros in man files * Tue Mar 6 2012 dhall@wustl.edu - add use of neon extensions on ARM * Tue Mar 6 2012 dhall@wustl.edu - updated to version 3.3.1 * Reduced planning time in estimate mode for sizes with large prime factors. * Added AVX autodetection under Visual Studio. Thanks Carsten Steger for submitting the necessary code. * Modern Fortran interface now uses a separate fftw3l.f03 interface file for the long double interface, which is not supported by some Fortran compilers. Provided new fftw3q.f03 interface file to access the quadruple-precision FFTW routines with recent versions of gcc/gfortran. * Added support for the NEON extensions to the ARM ISA. * MPI code now compiles even if mpicc is a C++ compiler; thanks to Kyle Spyksma for the bug report. * Mon Nov 28 2011 idoenmez@suse.de - Ignore rpmlint fixed dependency errors * Mon Nov 28 2011 ro@suse.de - fix build on s390/s390x without openmpi * Mon Nov 21 2011 jengelh@medozas.de - Remove redundant/unwanted tags/section (cf. specfile guidelines) - Employ shlib naming (fftw3 -> libfftw3) * Sun Oct 9 2011 adrian@suse.de - enable sse only on supported architectures * Wed Sep 28 2011 dhall@wustl.edu - enable sse2 and sse code generation * Fri Aug 5 2011 dhall@wustl.edu - specfile cleanup * Remove authors from description * use %%makeinstall - fix devel and mpi-devel to include proper header files * Wed Aug 3 2011 dhall@wustl.edu - updated to version 3.3: * Compiling OpenMP support (--enable-openmp) now installs a fftw3_omp library, instead of fftw3_threads, so that OpenMP and POSIX threads (--enable-threads) libraries can be built and installed at the same time. * Add support for the AVX extensions to x86 and x86-64 * Added Fortran 2003 interface * Added MPI distributed-memory transforms * Add support for quad-precision __float128 in gcc 4.6 or later (on x86. x86-64, and Itanium). The new routines use the fftwq_ prefix. * New convenience functions fftw_alloc_real and fftw_alloc_complex to use fftw_malloc for real and complex arrays without typecasts or sizeof. * New convenience functions fftw_export_wisdom_to_filename and fftw_import_wisdom_from_filename that export/import wisdom to a file, which don't require you to open/close the file yourself. * New function fftw_cost to return FFTW's internal cost metric for a given plan * Remove --enable-portable-binary flag: we new produce portable binaries by default. * Fixed build problem failure when srand48 declaration is missing * Fixed bug in fftw_set_timelimit: ensure that a negative timelimit is equivalent to no timelimit in all cases * Fixed stack-overflow problem on OpenBSD caused by using alloca with too large a buffer. - added openmp library support - added mpi library support * Sun Apr 24 2011 toddrme2178@gmail.com - Add 32bit compatibility libraries - Changed -devel package groups to Development/Libraries/C and C++ (fix for RPMLINT warning) * Thu Apr 22 2010 davejplater@gmail.com - Added provides fftw-devel * Thu Jul 16 2009 tiwai@suse.de - updated to version 3.2.2: * Improve performance of some copy operations of complex arrays * Add configure flag to disable alloca() * Planning in FFTW_ESTIMATE mode for r2r transforms became slower between fftw-3.1.3 and 3.2. This regression has now been fixed. * Thu Apr 23 2009 tiwai@suse.de - remove obsolste fdupes check in spec file - avoid unnecessary autoreconf * Mon Feb 16 2009 tiwai@suse.de - updated to version 3.2: * major version up, performance improvements and SIMD support * Worked around apparent glibc bug that leads to rare hangs * Fixed segfault due to unaligned access * MPI transforms not included, as they are still in alpha - updated to version 3.2.1: * Performance improvements for some multidimensional r2c/c2r transforms * Compile with icc on MacOS X, use better icc compiler flags. * Compilation fixes for systems where snprintf is defined as a macro * Fortran documentation now recommends not using dfftw_execute, because of reports of problems with various Fortran compilers * Some documentation clarifications * FAQ was accidentally omitted from 3.2 tarball. * Remove some extraneous (harmless) files accidentally included in a subdirectory of the 3.2 tarball. * Sat Aug 2 2008 tiwai@suse.de - Reduce dependency without release number. This allows to install packages on different media with different release numbers. * Mon Apr 16 2007 tiwai@suse.de - follow library packaging policy * move docs to devel package * remove static libraries * Sat Oct 21 2006 schwab@suse.de - Fix broken macro. * Tue Aug 22 2006 tiwai@suse.de - updated to version 3.1.2: * correct bug in configure script * updated FAQ * use -maltivec when checking for altivec.h. - clean up spec file, using %%configure macro. * Thu May 18 2006 tiwai@suse.de - major update to version 3.1.1: * fixed texi files * lots of configure fixes * clean up and optimizations see ChangeLog for details - added missing glibc-devel to Requires of devel subpackages - removed -fno-strict-aliasing option * Wed Jan 25 2006 mls@suse.de - converted neededforbuild to BuildRequires * Wed Apr 13 2005 tiwai@suse.de - fixed neededforbuild. * Mon Apr 26 2004 ro@suse.de - add -fno-strict-aliasing * Sat Jan 10 2004 adrian@suse.de - add missing %%defattr and %%run_ldconfig * Fri Aug 29 2003 nashif@suse.de - #29586: info file installation in wrong post segment * Wed Jul 30 2003 nashif@suse.de - Initial release