summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2021-02-25 03:17:49 +0000
committerSam James <sam@gentoo.org>2021-02-25 03:17:49 +0000
commit6b4b4c06e34415fb725320ccf9ec904fb1283638 (patch)
tree1acae0c4d7158b48dea6e4f4d7a99e53e37391bf
parentsci-libs/fftw: add github remote-id (diff)
downloadgentoo-6b4b4c06e34415fb725320ccf9ec904fb1283638.tar.gz
gentoo-6b4b4c06e34415fb725320ccf9ec904fb1283638.tar.bz2
gentoo-6b4b4c06e34415fb725320ccf9ec904fb1283638.zip
Revert "sci-libs/fftw: cleanup old"
This reverts commit ee56d7da7ed08caf5546958342eceebc4d9de5ff. Slot :2.1 needed by media-gfx/videorbits. Signed-off-by: Sam James <sam@gentoo.org>
-rw-r--r--sci-libs/fftw/Manifest2
-rw-r--r--sci-libs/fftw/fftw-2.1.5-r9.ebuild137
-rw-r--r--sci-libs/fftw/fftw-3.3.8-r1.ebuild186
-rw-r--r--sci-libs/fftw/files/fftw-2.1.5-as-needed.patch112
-rw-r--r--sci-libs/fftw/files/fftw-2.1.5-cc.patch19
-rw-r--r--sci-libs/fftw/files/fftw-2.1.5-configure.in.patch226
-rw-r--r--sci-libs/fftw/files/fftw-2.1.5-no-test.patch33
-rw-r--r--sci-libs/fftw/files/fftw-2.1.5-parallel-tests.patch105
-rw-r--r--sci-libs/fftw/files/fftw-2.1.5-texinfo5.1.patch21
-rw-r--r--sci-libs/fftw/metadata.xml3
10 files changed, 844 insertions, 0 deletions
diff --git a/sci-libs/fftw/Manifest b/sci-libs/fftw/Manifest
index a43277669038..edf9d7c5f503 100644
--- a/sci-libs/fftw/Manifest
+++ b/sci-libs/fftw/Manifest
@@ -1 +1,3 @@
+DIST fftw-2.1.5.tar.gz 1256888 BLAKE2B 61e2eed91459479ab893a423c1a6f38dd7e9637e0466fa0a59fccfa2cec930e8870a5febfccfacfe44e876e40534c34e05dc62b8e7bf188b43fe3a65c6a7bdba SHA512 8724a7f66aa19b271aa0ffb0e3762919f08082ac4400f52d11b50aef9b9d23a7d4fc5d6b2eae0ac166e2bb30a4d38a52c878e8bf8e24aba01ab1c3ddf5ebec15
+DIST fftw-3.3.8.tar.gz 4110137 BLAKE2B 555ac1401a5a41b7661afd0288c2353398f2c9b73695742459079ebf050dfa4c371484ea65324fd4b7d374f70d88a5942ff8abaad167b0d44d485bf1dc9e208c SHA512 ab918b742a7c7dcb56390a0a0014f517a6dff9a2e4b4591060deeb2c652bf3c6868aa74559a422a276b853289b4b701bdcbd3d4d8c08943acf29167a7be81a38
DIST fftw-3.3.9.tar.gz 4146999 BLAKE2B 6ea6966f3c5056102e6c3e4628b072c7e9832e3250b292808ed934b3a82515fd77658cbaff50d7b1268fb8c9444b10e39b22d100b7c31ea2452f3cee59c9f280 SHA512 52ebc2a33063a41fd478f6ea2acbf3b511867f736591d273dd57f9dfca5d3e0b0c73157921b3a36f1a7cfd741a8a6bde0fd80de578040ae730ea168b5ba466cf
diff --git a/sci-libs/fftw/fftw-2.1.5-r9.ebuild b/sci-libs/fftw/fftw-2.1.5-r9.ebuild
new file mode 100644
index 000000000000..0d4eae2fdb7b
--- /dev/null
+++ b/sci-libs/fftw/fftw-2.1.5-r9.ebuild
@@ -0,0 +1,137 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+FORTRAN_NEEDED=fortran
+
+inherit autotools flag-o-matic fortran-2 multibuild toolchain-funcs
+
+DESCRIPTION="Fast C library for the Discrete Fourier Transform"
+HOMEPAGE="http://www.fftw.org"
+SRC_URI="http://www.fftw.org/${P}.tar.gz"
+
+KEYWORDS="~alpha amd64 arm ~arm64 hppa ~ia64 ppc ppc64 ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos"
+
+LICENSE="GPL-2+"
+SLOT="2.1"
+IUSE="doc float fortran mpi openmp threads static-libs"
+
+RDEPEND="mpi? ( virtual/mpi )"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-as-needed.patch
+ "${FILESDIR}"/${P}-configure.in.patch
+ "${FILESDIR}"/${P}-no-test.patch
+ "${FILESDIR}"/${P}-cc.patch
+ "${FILESDIR}"/${P}-texinfo5.1.patch
+ "${FILESDIR}"/${P}-parallel-tests.patch
+)
+
+pkg_pretend() {
+ [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+pkg_setup() {
+ if [[ ${MERGE_TYPE} != binary ]] && use openmp; then
+ tc-check-openmp
+ FORTRAN_NEED_OPENMP=1
+ fi
+
+ fortran-2_pkg_setup
+
+ MULTIBUILD_VARIANTS=( single double )
+}
+
+src_prepare() {
+ default
+
+ # fix info files
+ local infofile
+ for infofile in doc/fftw*info*; do
+ cat >> ${infofile} <<-EOF || die
+ INFO-DIR-SECTION Libraries
+ START-INFO-DIR-ENTRY
+ * fftw: (fftw). ${DESCRIPTION}
+ END-INFO-DIR-ENTRY
+ EOF
+ done
+
+ mv configure.{in,ac} || die
+ sed -i 's/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/g' configure.ac || die
+
+ eautoreconf
+
+ # 'FAQ' is actually a dir and causes issues with einstalldocs
+ rm -r FAQ || die
+
+ multibuild_copy_sources
+}
+
+fftw_src_configure() {
+ local myconf=(
+ --with-gcc=$(tc-getCC)
+ --enable-shared
+ --enable-type-prefix
+ --enable-vec-recurse
+ $(use_enable fortran)
+ $(use_enable mpi)
+ $(use_enable static-libs static)
+ $(use_enable x86 i386-hacks)
+ $(use_with openmp)
+ )
+
+ if use openmp || use threads; then
+ myconf+=( --enable-threads )
+ else
+ myconf+=( --disable-threads )
+ fi
+
+ [[ $MULTIBUILD_VARIANT == single ]] && myconf+=( --enable-float )
+
+ econf "${myconf[@]}"
+}
+
+src_configure() {
+ # this one is reported to cause trouble on pentium4 m series
+ filter-mfpmath sse
+
+ # here I need (surprise) to increase optimization:
+ # --enable-i386-hacks requires -fomit-frame-pointer to work properly
+ if use x86; then
+ is-flag -fomit-frame-pointer || append-flags -fomit-frame-pointer
+ fi
+ use openmp && [[ $(tc-getCC)$ == icc* ]] && append-ldflags $(no-as-needed)
+
+ multibuild_foreach_variant run_in_build_dir fftw_src_configure
+}
+
+src_compile() {
+ multibuild_foreach_variant run_in_build_dir default_src_compile
+}
+
+src_test() {
+ multibuild_foreach_variant run_in_build_dir default_src_test
+}
+
+src_install() {
+ use doc && HTML_DOCS=( doc/*.{html,gif} )
+ multibuild_foreach_variant run_in_build_dir default_src_install
+
+ doheader fortran/fftw_f77.i
+
+ create_fftw_symlinks() {
+ local i f letter=$1
+ for i in fft rfft; do
+ for f in "${ED%/}"/usr/{include,$(get_libdir)}/*${letter}${i}*; do
+ ln -s $(basename ${f}) ${f/${letter}${i}/${i}} || die
+ done
+ done
+ }
+ create_fftw_symlinks $(usex float s d)
+
+ if ! use static-libs; then
+ find "${D}" -name '*.la' -delete || die
+ fi
+}
diff --git a/sci-libs/fftw/fftw-3.3.8-r1.ebuild b/sci-libs/fftw/fftw-3.3.8-r1.ebuild
new file mode 100644
index 000000000000..ae84f01be618
--- /dev/null
+++ b/sci-libs/fftw/fftw-3.3.8-r1.ebuild
@@ -0,0 +1,186 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+FORTRAN_NEEDED=fortran
+
+inherit flag-o-matic fortran-2 multibuild multilib-minimal toolchain-funcs
+
+DESCRIPTION="Fast C library for the Discrete Fourier Transform"
+HOMEPAGE="http://www.fftw.org/"
+
+MY_P=${PN}-${PV/_p/-pl}
+
+if [[ ${PV} = *9999 ]]; then
+ inherit autotools git-r3
+ EGIT_REPO_URI="https://github.com/FFTW/fftw3.git"
+else
+ SRC_URI="http://www.fftw.org/${PN}-${PV/_p/-pl}.tar.gz"
+ KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~mips ppc ppc64 ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+fi
+
+LICENSE="GPL-2+"
+SLOT="3.0/3"
+IUSE="cpu_flags_ppc_altivec cpu_flags_x86_avx cpu_flags_x86_avx2 cpu_flags_x86_fma3 cpu_flags_x86_fma4 cpu_flags_x86_sse cpu_flags_x86_sse2 doc fortran mpi neon openmp quad static-libs test threads zbus"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ mpi? ( >=virtual/mpi-2.0-r4[${MULTILIB_USEDEP}] )"
+DEPEND="${RDEPEND}
+ quad? ( sys-devel/gcc[fortran] )
+ test? ( dev-lang/perl )"
+
+S=${WORKDIR}/${MY_P}
+HTML_DOCS=( doc/html/. )
+
+pkg_pretend() {
+ [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+pkg_setup() {
+ if [[ ${MERGE_TYPE} != binary ]] && use openmp; then
+ tc-check-openmp
+ FORTRAN_NEED_OPENMP=1
+ fi
+
+ fortran-2_pkg_setup
+
+ MULTIBUILD_VARIANTS=( single double longdouble )
+ if use quad; then
+ if ! tc-is-gcc; then
+ ewarn "quad precision only available for gcc >= 4.6"
+ die "need quad precision capable gcc"
+ fi
+ MULTIBUILD_VARIANTS+=( quad )
+ fi
+}
+
+src_prepare() {
+ default
+
+ # fix info file for category directory
+ if [[ ${PV} = *9999 ]]; then
+ sed -i -e
+ 's/Texinfo documentation system/Libraries/' \
+ doc/fftw3."info" || die "failed to fix info file"
+
+ eautoreconf
+ fi
+}
+
+multilib_src_configure() {
+ # jlec reported USE=quad on abi_x86_32 has too few registers
+ # stub Makefiles
+ if [[ ${MULTILIB_ABI_FLAG} == abi_x86_32 && ${MULTIBUILD_ID} == quad-* ]]; then
+ mkdir -p "${BUILD_DIR}/tests" || die
+ echo "all: ;" > "${BUILD_DIR}/Makefile" || die
+ echo "install: ;" >> "${BUILD_DIR}/Makefile" || die
+ echo "smallcheck: ;" > "${BUILD_DIR}/tests/Makefile" || die
+ return 0
+ fi
+
+ local myconf=(
+ --enable-shared
+ $(use_enable static-libs static)
+ $(use_enable "cpu_flags_x86_fma$(usex cpu_flags_x86_fma3 3 4)" fma)
+ $(use_enable fortran)
+ $(use_enable zbus mips-zbus-timer)
+ $(use_enable threads)
+ $(use_enable openmp)
+ )
+ case "${MULTIBUILD_ID}" in
+ single-*)
+ # altivec, sse, single-paired only work for single
+ myconf+=(
+ --enable-single
+ $(use_enable cpu_flags_ppc_altivec altivec)
+ $(use_enable cpu_flags_x86_avx avx)
+ $(use_enable cpu_flags_x86_avx2 avx2)
+ $(use_enable cpu_flags_x86_sse sse)
+ $(use_enable cpu_flags_x86_sse2 sse2)
+ $(use_enable neon)
+ $(use_enable mpi)
+ )
+ ;;
+
+ double-*)
+ myconf+=(
+ $(use_enable cpu_flags_x86_avx avx)
+ $(use_enable cpu_flags_x86_avx2 avx2)
+ $(use_enable cpu_flags_x86_sse2 sse2)
+ $(use_enable mpi)
+ )
+ ;;
+
+ longdouble-*)
+ myconf+=(
+ --enable-long-double
+ $(use_enable mpi)
+ )
+ ;;
+
+ quad-*)
+ # quad does not support mpi
+ myconf+=(
+ --enable-quad-precision
+ )
+ ;;
+
+ *)
+ die "${MULTIBUILD_ID%-*} precision not implemented in this ebuild"
+ ;;
+ esac
+
+ ECONF_SOURCE="${S}" econf "${myconf[@]}" MPICC="$(tc-getCC)"
+}
+
+src_configure() {
+ # upstream does not append proper -m flags
+ # https://bugs.gentoo.org/698572
+ use cpu_flags_x86_avx2 && append-flags -mavx2
+
+ multibuild_foreach_variant multilib-minimal_src_configure
+}
+
+src_compile() {
+ multibuild_foreach_variant multilib-minimal_src_compile
+}
+
+multilib_src_test() {
+ emake -C tests smallcheck
+}
+
+src_test() {
+ # We want this to be a reasonably quick test, but that is still hard...
+ ewarn "This test series will take 30 minutes on a modern 2.5Ghz machine"
+ # Do not increase the number of threads, it will not help your performance
+ # local testbase="perl check.pl --nthreads=1 --estimate"
+ # ${testbase} -${p}d || die "Failure: $n"
+
+ multibuild_foreach_variant multilib-minimal_src_test
+}
+
+src_install() {
+ multibuild_foreach_variant multilib-minimal_src_install
+ dodoc CONVENTIONS
+
+ if use doc; then
+ dodoc doc/*.pdf
+ docinto faq
+ dodoc -r doc/FAQ/fftw-faq.html/.
+ else
+ rm -r "${ED%/}"/usr/share/doc/${PF}/html || die
+ fi
+
+ local x
+ for x in "${ED%/}"/usr/lib*/pkgconfig/*.pc; do
+ local u
+ for u in $(usev mpi) $(usev threads) $(usex openmp omp ""); do
+ sed -e "s|-lfftw3[flq]\?|&_${u} &|" "$x" > "${x%.pc}_${u}.pc" || die
+ done
+ done
+
+ # fftw uses pkg-config to record its private dependencies
+ find "${D}" -name '*.la' -delete || die
+}
diff --git a/sci-libs/fftw/files/fftw-2.1.5-as-needed.patch b/sci-libs/fftw/files/fftw-2.1.5-as-needed.patch
new file mode 100644
index 000000000000..63f46dccc4fd
--- /dev/null
+++ b/sci-libs/fftw/files/fftw-2.1.5-as-needed.patch
@@ -0,0 +1,112 @@
+--- a/rfftw/Makefile.am
++++ b/rfftw/Makefile.am
+@@ -18,6 +18,7 @@
+ rfftw.h
+
+ lib@FFTW_PREFIX@rfftw_la_LDFLAGS = -version-info @SHARED_VERSION_INFO@
++lib@FFTW_PREFIX@rfftw_la_LIBADD = ../fftw/lib@FFTW_PREFIX@fftw.la
+ MAINTAINERCLEANFILES = $(CODELETS) rconfig.c
+ DISTCLEANFILES = srfftw.h drfftw.h
+
+--- a/threads/Makefile.am
++++ b/threads/Makefile.am
+@@ -28,6 +28,10 @@
+ -version-info @SHARED_VERSION_INFO@ \
+ -rpath $(libdir)
+
++lib@FFTW_PREFIX@fftw_threads_la_LIBADD = \
++ $(FFTWDIR)/lib@FFTW_PREFIX@fftw.la \
++ @THREADLIBS@
++
+ @FFTW_PREFIX1@fftw_threads.h: fftw_threads.h
+ rm -f $@
+ sed 's/\"fftw/\"@FFTW_PREFIX@fftw/g;s/\"rfftw/\"@FFTW_PREFIX@rfftw/g' $(srcdir)/fftw_threads.h > $@
+@@ -49,6 +53,11 @@
+ -version-info @SHARED_VERSION_INFO@ \
+ -rpath $(libdir)
+
++lib@FFTW_PREFIX@rfftw_threads_la_LIBADD = \
++ $(RFFTWDIR)/lib@FFTW_PREFIX@rfftw.la \
++ $(FFTWDIR)/lib@FFTW_PREFIX@fftw.la \
++ @THREADLIBS@
++
+ @FFTW_PREFIX1@rfftw_threads.h: rfftw_threads.h
+ rm -f $@
+ sed 's/\"fftw/\"@FFTW_PREFIX@fftw/g;s/\"rfftw/\"@FFTW_PREFIX@rfftw/g' $(srcdir)/rfftw_threads.h > $@
+--- a/mpi/Makefile.am
++++ b/mpi/Makefile.am
+@@ -28,6 +28,9 @@
+ -version-info @SHARED_VERSION_INFO@ \
+ -rpath $(libdir)
+
++lib@FFTW_PREFIX@fftw_mpi_la_LIBADD = \
++ @MPILIBS@ $(FFTWDIR)/lib@FFTW_PREFIX@fftw.la
++
+ @FFTW_PREFIX1@fftw_mpi.h: fftw_mpi.h
+ rm -f $@
+ sed 's/\"fftw/\"@FFTW_PREFIX@fftw/g;s/\"rfftw/\"@FFTW_PREFIX@rfftw/g' $(srcdir)/fftw_mpi.h > $@
+@@ -39,32 +42,38 @@
+ -version-info @SHARED_VERSION_INFO@ \
+ -rpath $(libdir)
+
+-@FFTW_PREFIX1@rfftw_mpi.h: rfftw_mpi.h
++lib@FFTW_PREFIX@rfftw_mpi_la_LIBADD = \
++ @MPILIBS@ \
++ $(RFFTWDIR)/lib@FFTW_PREFIX@rfftw.la \
++ $(FFTWDIR)/lib@FFTW_PREFIX@fftw.la
++
++@FFTW_PREFIX1@rfftw_mpi.h: rfftw_mpi.h
+ rm -f $@
+ sed 's/\"fftw/\"@FFTW_PREFIX@fftw/g;s/\"rfftw/\"@FFTW_PREFIX@rfftw/g' $(srcdir)/rfftw_mpi.h > $@
+
+ CLEANFILES = @FFTW_PREFIX1@fftw_mpi.h @FFTW_PREFIX1@rfftw_mpi.h
+
+ test_sched_SOURCES = test_sched.c
+-test_sched_LDADD = lib@FFTW_PREFIX@fftw_mpi.la \
+- $(FFTWDIR)/lib@FFTW_PREFIX@fftw.la @MPILIBS@
++test_sched_LDADD = @MPILIBS@ lib@FFTW_PREFIX@fftw_mpi.la \
++ $(FFTWDIR)/lib@FFTW_PREFIX@fftw.la
+
+ test_transpose_mpi_SOURCES = test_transpose_mpi.c
+-test_transpose_mpi_LDADD = lib@FFTW_PREFIX@fftw_mpi.la \
+- $(FFTWDIR)/lib@FFTW_PREFIX@fftw.la @MPILIBS@
++test_transpose_mpi_LDADD = @MPILIBS@ lib@FFTW_PREFIX@fftw_mpi.la \
++ $(FFTWDIR)/lib@FFTW_PREFIX@fftw.la
+
+ fftw_mpi_test_SOURCES = fftw_mpi_test.c
+ fftw_mpi_test_LDADD = ../tests/test_main.o \
++ @MPILIBS@ \
+ lib@FFTW_PREFIX@fftw_mpi.la \
+- $(FFTWDIR)/lib@FFTW_PREFIX@fftw.la @MPILIBS@
++ $(FFTWDIR)/lib@FFTW_PREFIX@fftw.la
+
+ rfftw_mpi_test_SOURCES = rfftw_mpi_test.c
+ rfftw_mpi_test_LDADD = ../tests/test_main.o \
++ @MPILIBS@ \
+ lib@FFTW_PREFIX@rfftw_mpi.la \
+ lib@FFTW_PREFIX@fftw_mpi.la \
+ $(RFFTWDIR)/lib@FFTW_PREFIX@rfftw.la \
+- $(FFTWDIR)/lib@FFTW_PREFIX@fftw.la \
+- @MPILIBS@
++ $(FFTWDIR)/lib@FFTW_PREFIX@fftw.la
+
+ # for some reason, automake tries to use autoheader in order to
+ # generate config.h.in, and fails because config.h.in is GNU-lly
+--- a/mpi/test_sched.c
++++ b/mpi/test_sched.c
+@@ -27,6 +27,8 @@
+ int **sched;
+ int npes = -1, sortpe = -1, steps;
+
++ /* needed to link with proper mpi libs */
++ MPI_Init(&argc,&argv);
+ if (argc >= 2) {
+ npes = atoi(argv[1]);
+ if (npes <= 0) {
+@@ -121,5 +123,6 @@
+ }
+ }
+
++ MPI_Finalize();
+ return 0;
+ }
diff --git a/sci-libs/fftw/files/fftw-2.1.5-cc.patch b/sci-libs/fftw/files/fftw-2.1.5-cc.patch
new file mode 100644
index 000000000000..aa5c6db038c8
--- /dev/null
+++ b/sci-libs/fftw/files/fftw-2.1.5-cc.patch
@@ -0,0 +1,19 @@
+--- a/configure.in
++++ b/configure.in
+@@ -25,6 +25,8 @@
+ AC_ARG_WITH(gcc, [ --with-gcc use gcc instead of the native compiler cc], ok=$withval, ok=no)
+ if test "$ok" = "yes"; then
+ CC=gcc
++else
++ CC=$withval
+ fi
+
+ AC_ARG_ENABLE(float, [ --enable-float compile fftw for single precision], enable_float=$enableval, enable_float=no)
+@@ -96,6 +96,7 @@
+ AM_PROG_LIBTOOL
+ AC_CHECK_PROG(PERL, perl, perl, echo perl)
+ AC_SUBST(PERL)
++AC_SUBST(CC)
+
+ dnl -----------------------------------------------------------------------
+
diff --git a/sci-libs/fftw/files/fftw-2.1.5-configure.in.patch b/sci-libs/fftw/files/fftw-2.1.5-configure.in.patch
new file mode 100644
index 000000000000..7abe3e751d5d
--- /dev/null
+++ b/sci-libs/fftw/files/fftw-2.1.5-configure.in.patch
@@ -0,0 +1,226 @@
+--- a/configure.in
++++ b/configure.in
+@@ -1,6 +1,8 @@
++
+ dnl Process this file with autoconf to produce a configure script.
+ AC_INIT(fftw/planner.c)
+ AM_INIT_AUTOMAKE(fftw, 2.1.5)
++AM_MAINTAINER_MODE
+
+ dnl This is the version info according to the libtool versioning system.
+ dnl It does *not* correspond to the release number.
+@@ -27,7 +29,7 @@
+
+ AC_ARG_ENABLE(float, [ --enable-float compile fftw for single precision], enable_float=$enableval, enable_float=no)
+ if test "$enable_float" = "yes"; then
+- AC_DEFINE(FFTW_ENABLE_FLOAT)
++ AC_DEFINE(FFTW_ENABLE_FLOAT,1,[Compile fftw for single precision])
+ fi
+
+ FFTW_PREFIX=""
+@@ -56,27 +58,27 @@
+
+ AC_ARG_ENABLE(i386-hacks, [ --enable-i386-hacks enable gcc/x86 specific performance hacks], ok=$enableval, ok=no)
+ if test "$ok" = "yes"; then
+- AC_DEFINE(FFTW_ENABLE_I386_HACKS)
++ AC_DEFINE(FFTW_ENABLE_I386_HACKS,1,[Enable x86 specific performance hacks])
+ fi
+
+ AC_ARG_ENABLE(pentium-timer, [ --enable-pentium-timer enable high resolution Pentium timer], ok=$enableval, ok=no)
+ if test "$ok" = "yes"; then
+- AC_DEFINE(FFTW_ENABLE_PENTIUM_TIMER)
++ AC_DEFINE(FFTW_ENABLE_PENTIUM_TIMER,1,[Enable high resolution Pentium timer])
+ fi
+
+ AC_ARG_ENABLE(debug, [ --enable-debug compile fftw with extra runtime checks for debugging], ok=$enableval, ok=no)
+ if test "$ok" = "yes"; then
+- AC_DEFINE(FFTW_DEBUG)
++ AC_DEFINE(FFTW_DEBUG,1,[Compile with extra rutime checks for debugging])
+ fi
+
+ AC_ARG_ENABLE(debug-alignment, [ --enable-debug-alignment enable runtime checks for alignment on x86], ok=$enableval, ok=no)
+ if test "$ok" = "yes"; then
+- AC_DEFINE(FFTW_DEBUG_ALIGNMENT)
++ AC_DEFINE(FFTW_DEBUG_ALIGNMENT,1,[Enable rutime checks for alignment on x86])
+ fi
+
+ AC_ARG_ENABLE(vec-recurse, [ --enable-vec-recurse enable experimental performance hack], ok=$enableval, ok=no)
+ if test "$ok" = "yes"; then
+- AC_DEFINE(FFTW_ENABLE_VECTOR_RECURSE)
++ AC_DEFINE(FFTW_ENABLE_VECTOR_RECURSE,1,[Enable experimental performance hack])
+ fi
+
+ dnl -----------------------------------------------------------------------
+@@ -90,7 +92,6 @@
+ ACX_PROG_CC_EGCS
+ AC_PROG_INSTALL
+ AC_PROG_MAKE_SET
+-AC_PROG_RANLIB
+ AC_PROG_LN_S
+ AM_PROG_LIBTOOL
+ AC_CHECK_PROG(PERL, perl, perl, echo perl)
+@@ -115,7 +116,7 @@
+ dnl -----------------------------------------------------------------------
+
+ AC_SUBST(SHARED_VERSION_INFO)
+-AC_DEFINE_UNQUOTED(FFTW_VERSION, "$VERSION")
++AC_DEFINE_UNQUOTED(FFTW_VERSION, "$VERSION",[Fftw Version])
+
+ # Get the version number that will be appended to shared libraries:
+ SHARED_VERSION=`echo $SHARED_VERSION_INFO | awk -F':' '{ print $1 "." $3 "." $2 }'`
+@@ -123,7 +124,7 @@
+
+ ACX_PROG_CC_MAXOPT
+
+-ACX_GCC_ALIGNS_STACK(AC_DEFINE(FFTW_GCC_ALIGNS_STACK), [
++ACX_GCC_ALIGNS_STACK(AC_DEFINE(FFTW_GCC_ALIGNS_STACK,1,[Gcc align stack]), [
+ if test "$enable_i386_hacks" = yes; then
+ if test "${acx_gcc_stack_align_bug-no}" = yes; then
+ # we are using a gcc with a stack alignment bug, and we should
+@@ -183,7 +184,7 @@
+ AC_TRY_LINK([#include <math.h>
+ ], if (!isnan(3.14159)) isnan(2.7183);, ok=yes, ok=no)
+ if test "$ok" = "yes"; then
+- AC_DEFINE(HAVE_ISNAN)
++ AC_DEFINE(HAVE_ISNAN,1,[Have isnan])
+ fi
+ AC_MSG_RESULT(${ok})
+
+@@ -196,7 +197,7 @@
+ #endif
+ ], [hrtime_t foobar;], ok=yes, ok=no)
+ if test "$ok" = "yes"; then
+- AC_DEFINE(HAVE_HRTIME_T)
++ AC_DEFINE(HAVE_HRTIME_T,1,[Have hrtime_t type])
+ fi
+ AC_MSG_RESULT(${ok})
+
+@@ -205,7 +206,7 @@
+
+ AC_ARG_ENABLE(unsafe-mulmod, [ --enable-unsafe-mulmod risk overflow for large prime sizes], enable_unsafe_mulmod=$enableval, enable_unsafe_mulmod=no)
+ if test "$enable_unsafe_mulmod" = "yes"; then
+- AC_DEFINE(FFTW_ENABLE_UNSAFE_MULMOD)
++ AC_DEFINE(FFTW_ENABLE_UNSAFE_MULMOD,1,[Risk overflow for lar prime sizes])
+ fi
+
+
+@@ -221,15 +222,25 @@
+ FFTW_THREADS_INCLUDELIST=""
+ FFTW_THREADS_PROGLIST=""
+ THREADLIBS=""
++omp_enabler=unknown
+ if test "$enable_threads" = "yes"; then
+ if test "$with_openmp"x != nox; then
+ AC_MSG_CHECKING(how to enable OpenMP)
+- omp_enabler=unknown
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$save_CFLAGS -omp"
+ AC_TRY_LINK_FUNC(omp_set_num_threads,THREADLIBS=" "
+ omp_enabler="$CC -omp")
+ if test -z "$THREADLIBS"; then
++ CFLAGS="$save_CFLAGS -fopenmp"
++ AC_TRY_LINK_FUNC(omp_set_num_threads,THREADLIBS="-lgomp"
++ omp_enabler="$CC -fopenmp")
++ fi
++ if test -z "$THREADLIBS"; then
++ CFLAGS="$save_CFLAGS -openmp"
++ AC_TRY_LINK_FUNC(omp_set_num_threads,THREADLIBS=" "
++ omp_enabler="$CC -openmp")
++ fi
++ if test -z "$THREADLIBS"; then
+ CFLAGS="$save_CFLAGS -mp"
+ AC_TRY_LINK_FUNC(omp_set_num_threads,THREADLIBS=" "
+ omp_enabler="$CC -mp")
+@@ -240,68 +251,70 @@
+ omp_enabler="automatic")
+ fi
+ AC_MSG_RESULT($omp_enabler)
+- if test -z "$THREADLIBS"; then
+- AC_MSG_ERROR([don't know how to enable OpenMP])
++ if test x"$omp_enabler" != x"unknown"; then
++ AC_DEFINE(FFTW_USING_OPENMP_THREADS,1,[Using OpenMP threads])
++ else
++ AC_MSG_WARN([don't know how to enable OpenMP, reverting to POSIX threads])
+ fi
+- AC_DEFINE(FFTW_USING_OPENMP_THREADS)
++
+ fi
+ if test "$with_sgimp"x != nox; then
+ AC_MSG_CHECKING(how to enable SGI MP)
+ mp_enabler=unknown
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$save_CFLAGS -mp"
+- AC_TRY_LINK_FUNC(mp_set_numthreads,THREADLIBS=" "
++ AC_TRY_LINK_FUNC(mp_set_numthreads,THREADLIBS=""
+ mp_enabler="$CC -mp")
+ if test -z "$THREADLIBS"; then
+ CFLAGS="$save_CFLAGS"
+- AC_TRY_LINK_FUNC(mp_numthreads,THREADLIBS=" "
++ AC_TRY_LINK_FUNC(mp_numthreads,THREADLIBS=""
+ mp_enabler="automatic")
+ fi
+ AC_MSG_RESULT($mp_enabler)
+ if test -z "$THREADLIBS"; then
+ AC_MSG_ERROR([don't know how to enable SGI MP])
+ fi
+- AC_DEFINE(FFTW_USING_SGIMP_THREADS)
++ AC_DEFINE(FFTW_USING_SGIMP_THREADS,1,[Using SGIMP Threads])
+ fi
+
+ # POSIX threads, the default choice:
+- if test -z "$THREADLIBS"; then
++ if test x"$omp_enabler" = x"unknown" ; then
+ sinclude(acx_pthread.m4)
+ ACX_PTHREAD([THREADLIBS="$PTHREAD_LIBS "
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+ CC="$PTHREAD_CC"
+- AC_DEFINE(FFTW_USING_POSIX_THREADS)])
++ AC_DEFINE(FFTW_USING_POSIX_THREADS,1,[Using POSIX Threads])])
+ fi
+ # Solaris threads:
+ if test -z "$THREADLIBS"; then
+ AC_CHECK_LIB(thread, thr_create,
+ [THREADLIBS="-lthread"
+- AC_DEFINE(FFTW_USING_SOLARIS_THREADS)])
++ AC_DEFINE(FFTW_USING_SOLARIS_THREADS,1,[Using SOLARIS Threads])])
+ fi
+ # Mach C threads:
+ if test -z "$THREADLIBS"; then
+ AC_CHECK_FUNC(cthread_fork,
+ [THREADLIBS=" "
+- AC_DEFINE(FFTW_USING_MACH_THREADS)])
++ AC_DEFINE(FFTW_USING_MACH_THREADS,1,[Using Mach Threads])])
+ AC_CHECK_HEADERS(mach/cthreads.h cthreads.h cthread.h)
+ fi
+ if test -z "$THREADLIBS"; then
+ AC_CHECK_LIB(cthread, cthread_fork,
+ [THREADLIBS="-lcthread"
+- AC_DEFINE(FFTW_USING_MACH_THREADS)])
++ AC_DEFINE(FFTW_USING_MACH_THREADS,1,[Using Mach Threads])])
+ AC_CHECK_HEADERS(mach/cthreads.h cthreads.h cthread.h)
+ fi
+ if test -z "$THREADLIBS"; then
+ AC_CHECK_LIB(cthreads, cthread_fork,
+ [THREADLIBS="-lcthreads"
+- AC_DEFINE(FFTW_USING_MACH_THREADS)])
++ AC_DEFINE(FFTW_USING_MACH_THREADS,1,[Using Mach Threads])])
+ AC_CHECK_HEADERS(mach/cthreads.h cthreads.h cthread.h)
+ fi
+ # BeOS threads:
+ if test -z "$THREADLIBS"; then
+ AC_CHECK_FUNC(spawn_thread,
+ [THREADLIBS=" "
+- AC_DEFINE(FFTW_USING_BEOS_THREADS)])
++ AC_DEFINE(FFTW_USING_BEOS_THREADS,1,[Using BEOS Threads])])
+ fi
+ if test -z "$THREADLIBS"; then
+ AC_MSG_ERROR(couldn't find threads library for --enable-threads)
+@@ -334,7 +347,7 @@
+ CC="$MPICC"
+ ok=yes
+ AC_TRY_LINK([#include <mpi.h>
+- ], [MPI_Comm_f2c(0);], [AC_DEFINE(HAVE_MPI_COMM_F2C)], [ok=no])
++ ], [MPI_Comm_f2c(0);], [AC_DEFINE(HAVE_MPI_COMM_F2C,1,[Has MPI COMM F2C])], [ok=no])
+ AC_MSG_RESULT($ok)
+ CC="$save_CC"
+ else
diff --git a/sci-libs/fftw/files/fftw-2.1.5-no-test.patch b/sci-libs/fftw/files/fftw-2.1.5-no-test.patch
new file mode 100644
index 000000000000..cc844a455e66
--- /dev/null
+++ b/sci-libs/fftw/files/fftw-2.1.5-no-test.patch
@@ -0,0 +1,33 @@
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -1,4 +1,4 @@
+-noinst_PROGRAMS = fftw_test rfftw_test
++check_PROGRAMS = fftw_test rfftw_test
+ noinst_HEADERS = test_main.h
+
+ FFTWDIR=../fftw
+--- a/mpi/Makefile.am
++++ b/mpi/Makefile.am
+@@ -4,8 +4,8 @@
+
+ lib_LTLIBRARIES = @FFTW_MPI_LIBLIST@
+ include_HEADERS = @FFTW_MPI_INCLUDELIST@
+-noinst_PROGRAMS = @FFTW_MPI_PROGLIST@
++check_PROGRAMS = @FFTW_MPI_PROGLIST@
+
+ EXTRA_LTLIBRARIES = lib@FFTW_PREFIX@fftw_mpi.la \
+ lib@FFTW_PREFIX@rfftw_mpi.la
+ EXTRA_HEADERS = @FFTW_PREFIX@fftw_mpi.h @FFTW_PREFIX@rfftw_mpi.h
+--- a/threads/Makefile.am
++++ b/threads/Makefile.am
+@@ -4,9 +4,9 @@
+
+ lib_LTLIBRARIES = @FFTW_THREADS_LIBLIST@
+ include_HEADERS = @FFTW_THREADS_INCLUDELIST@
+-noinst_PROGRAMS = @FFTW_THREADS_PROGLIST@
++check_PROGRAMS = @FFTW_THREADS_PROGLIST@
+
+ EXTRA_LTLIBRARIES = lib@FFTW_PREFIX@fftw_threads.la \
+ lib@FFTW_PREFIX@rfftw_threads.la
+ EXTRA_HEADERS = @FFTW_PREFIX@fftw_threads.h \
+ @FFTW_PREFIX@rfftw_threads.h
diff --git a/sci-libs/fftw/files/fftw-2.1.5-parallel-tests.patch b/sci-libs/fftw/files/fftw-2.1.5-parallel-tests.patch
new file mode 100644
index 000000000000..b92e6dad299c
--- /dev/null
+++ b/sci-libs/fftw/files/fftw-2.1.5-parallel-tests.patch
@@ -0,0 +1,105 @@
+Fix failure of parallel test suite. This is due to
+misspecification of the test suite, which requires
+first compiling $(check_PROGRAMS) and only then
+running $(TESTS):
+
+* check-am: all-am
+* $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+* $(MAKE) $(AM_MAKEFLAGS) check-TESTS
+
+The old build system never specified $(TESTS) and
+erroneously made the check target depend on the
+two tests.
+See also: https://bugs.gentoo.org/show_bug.cgi?id=603352
+
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -12,22 +12,7 @@
+ rfftw_test_LDADD = $(RFFTWDIR)/lib@FFTW_PREFIX@rfftw.la \
+ $(FFTWDIR)/lib@FFTW_PREFIX@fftw.la
+
+-check: fftw-tests rfftw-tests
++TESTS = myfftwtests.sh myrfftwtests.sh
+
+-fftw-tests: fftw_test
+- ./fftw_test -p 0
+- ./fftw_test -x 128 -a 0
+- ./fftw_test -x 32 -a 2
+- ./fftw_test -x 100 -r 0
+- @echo "--------------------------------------------------------------"
+- @echo " FFTW complex-complex transforms passed tests!"
+- @echo "--------------------------------------------------------------"
+-
+-rfftw-tests: rfftw_test
+- ./rfftw_test -p 0
+- ./rfftw_test -x 128 -a 0
+- ./rfftw_test -x 32 -a 2
+- ./rfftw_test -x 100 -r 0
+- @echo "--------------------------------------------------------------"
+- @echo " RFFTW real-complex transforms passed tests!"
+- @echo "--------------------------------------------------------------"
++TEST_EXTENSIONS = .sh
++SH_LOG_COMPILER = $(SHELL)
+--- a/tests/myfftwtests.sh
++++ b/tests/myfftwtests.sh
+@@ -0,0 +1,4 @@
++./fftw_test -p 0 && \
++./fftw_test -x 128 -a 0 && \
++./fftw_test -x 32 -a 2 && \
++./fftw_test -x 100 -r 0
+--- a/tests/myrfftwtests.sh
++++ b/tests/myrfftwtests.sh
+@@ -0,0 +1,4 @@
++./rfftw_test -p 0 && \
++./rfftw_test -x 128 -a 0 && \
++./rfftw_test -x 32 -a 2 && \
++./rfftw_test -x 100 -r 0
+--- a/threads/fftw_threads_test_check.sh
++++ b/threads/fftw_threads_test_check.sh
+@@ -0,0 +1,4 @@
++./fftw_threads_test 1 -x 100 -r 0 && \
++./fftw_threads_test 2 -x 100 -r 0 && \
++./fftw_threads_test 3 -x 100 -r 0 && \
++./fftw_threads_test 10 -x 100 -r 0
+--- a/threads/Makefile.am
++++ b/threads/Makefile.am
+@@ -78,29 +78,7 @@
+ # incorrect. Just disable autoheader
+ AUTOHEADER=echo
+
+-check: @FFTW_THREADS_PROGLIST@
+- @set fnord $(MAKEFLAGS); amf=$$2; \
+- list='@FFTW_THREADS_PROGLIST@'; for prog in $$list; do \
+- target="$$prog""-check"; \
+- echo "Making $$target"; \
+- ($(MAKE) $$target) \
+- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+- done && test -z "$$fail"
++TESTS = fftw_threads_test_check.sh rfftw_threads_test_check.sh
+
+-fftw_threads_test-check: fftw_threads_test
+- ./fftw_threads_test 1 -x 100 -r 0
+- ./fftw_threads_test 2 -x 100 -r 0
+- ./fftw_threads_test 3 -x 100 -r 0
+- ./fftw_threads_test 10 -x 100 -r 0
+- @echo "--------------------------------------------------------------"
+- @echo " FFTW complex-complex threads transforms passed tests!"
+- @echo "--------------------------------------------------------------"
+-
+-rfftw_threads_test-check: rfftw_threads_test
+- ./rfftw_threads_test 1 -x 100 -r 0
+- ./rfftw_threads_test 2 -x 100 -r 0
+- ./rfftw_threads_test 3 -x 100 -r 0
+- ./rfftw_threads_test 10 -x 100 -r 0
+- @echo "--------------------------------------------------------------"
+- @echo " RFFTW real-complex threads transforms passed tests!"
+- @echo "--------------------------------------------------------------"
++TEST_EXTENSIONS = .sh
++SH_LOG_COMPILER = $(SHELL)
+--- a/threads/rfftw_threads_test_check.sh
++++ b/threads/rfftw_threads_test_check.sh
+@@ -0,0 +1,4 @@
++./rfftw_threads_test 1 -x 100 -r 0 && \
++./rfftw_threads_test 2 -x 100 -r 0 && \
++./rfftw_threads_test 3 -x 100 -r 0 && \
++./rfftw_threads_test 10 -x 100 -r 0
diff --git a/sci-libs/fftw/files/fftw-2.1.5-texinfo5.1.patch b/sci-libs/fftw/files/fftw-2.1.5-texinfo5.1.patch
new file mode 100644
index 000000000000..1947bef8f21f
--- /dev/null
+++ b/sci-libs/fftw/files/fftw-2.1.5-texinfo5.1.patch
@@ -0,0 +1,21 @@
+ doc/fftw.texi | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/doc/fftw.texi b/doc/fftw.texi
+index 90e8bb6..85a7a53 100644
+--- a/doc/fftw.texi
++++ b/doc/fftw.texi
+@@ -46,10 +46,10 @@ approved by the Free Software Foundation.
+ @titlepage
+ @sp 10
+ @comment The title is printed in a large font.
+-@title{FFTW User's Manual}
++@title FFTW User's Manual
+ @subtitle For version @value{VERSION}, @value{UPDATED}
+-@author{Matteo Frigo}
+-@author{Steven G. Johnson}
++@author Matteo Frigo
++@author Steven G. Johnson
+
+ @c The following two commands start the copyright page.
+ @page
diff --git a/sci-libs/fftw/metadata.xml b/sci-libs/fftw/metadata.xml
index bf126e2d0802..bd41f1af108d 100644
--- a/sci-libs/fftw/metadata.xml
+++ b/sci-libs/fftw/metadata.xml
@@ -15,6 +15,9 @@
publicly available FFT software.
</longdescription>
<use>
+ <flag name="float">Link default library to single precision instead of
+ double (symlinks only and fftw-2.1)</flag>
+ <flag name="quad">Build quadruple precision lib</flag>
<flag name="zbus">Adds support for ZBus cycle-counter of mips</flag>
</use>
<upstream>