summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /sci-libs/fftw
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'sci-libs/fftw')
-rw-r--r--sci-libs/fftw/Manifest2
-rw-r--r--sci-libs/fftw/fftw-2.1.5-r8.ebuild157
-rw-r--r--sci-libs/fftw/fftw-3.3.4.ebuild164
-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-texinfo5.1.patch21
-rw-r--r--sci-libs/fftw/metadata.xml23
9 files changed, 757 insertions, 0 deletions
diff --git a/sci-libs/fftw/Manifest b/sci-libs/fftw/Manifest
new file mode 100644
index 000000000000..b1d9259e0381
--- /dev/null
+++ b/sci-libs/fftw/Manifest
@@ -0,0 +1,2 @@
+DIST fftw-2.1.5.tar.gz 1256888 SHA256 f8057fae1c7df8b99116783ef3e94a6a44518d49c72e2e630c24b689c6022630 SHA512 8724a7f66aa19b271aa0ffb0e3762919f08082ac4400f52d11b50aef9b9d23a7d4fc5d6b2eae0ac166e2bb30a4d38a52c878e8bf8e24aba01ab1c3ddf5ebec15 WHIRLPOOL 2ea64d246c12e14962b93e05411c5f06dd193a887acb3fe5e7f63231a1a2f1f21b3a41f75951e18c332b25105865633c87150f2107169f5487b6b9983b968e10
+DIST fftw-3.3.4.tar.gz 3940427 SHA256 8f0cde90929bc05587c3368d2f15cd0530a60b8a9912a8e2979a72dbe5af0982 SHA512 1ee2c7bec3657f6846e63c6dfa71410563830d2b951966bf0123bd8f4f2f5d6b50f13b76d9a7b0eae70e44856f829ca6ceb3d080bb01649d1572c9f3f68e8eb1 WHIRLPOOL 2a5733f5537ff55a1830994431f1750dd790a4df3e8b3d1e9018c1afba2c5172f4e456eaee1c3427a2b170d23b6928da462e067a6f4e94792cfc7ff1cbc38938
diff --git a/sci-libs/fftw/fftw-2.1.5-r8.ebuild b/sci-libs/fftw/fftw-2.1.5-r8.ebuild
new file mode 100644
index 000000000000..6c1df9055aa4
--- /dev/null
+++ b/sci-libs/fftw/fftw-2.1.5-r8.ebuild
@@ -0,0 +1,157 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=4
+
+FORTRAN_NEEDED=fortran
+
+inherit autotools eutils flag-o-matic fortran-2 toolchain-funcs
+
+DESCRIPTION="Fast C library for the Discrete Fourier Transform"
+SRC_URI="http://www.fftw.org/${P}.tar.gz"
+HOMEPAGE="http://www.fftw.org"
+
+DEPEND="mpi? ( virtual/mpi )"
+RDEPEND="${DEPEND}"
+
+SLOT="2.1"
+LICENSE="GPL-2+"
+IUSE="doc float fortran mpi openmp threads static-libs"
+
+KEYWORDS="alpha amd64 arm hppa ia64 ppc ppc64 s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos"
+
+pkg_setup() {
+ use openmp && FORTRAN_NEED_OPENMP="1"
+ fortran-2_pkg_setup
+ # 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
+ if use openmp && [[ $(tc-getCC) == *gcc* ]] && ! tc-has-openmp; then
+ ewarn "You are using gcc and OpenMP is only available with gcc >= 4.2 "
+ ewarn "If you want to build fftw with OpenMP, abort now,"
+ ewarn "and switch CC to an OpenMP capable compiler"
+ ewarn "Otherwise the configure script will select POSIX threads."
+ fi
+ use openmp && [[ $(tc-getCC)$ == icc* ]] && append-ldflags $(no-as-needed)
+}
+
+src_prepare() {
+ # doc suggests installing single and double precision versions
+ # via separate compilations. will do in two separate source trees
+ # since some sed'ing is done during the build
+ # (?if --enable-type-prefix is set?)
+
+ epatch \
+ "${FILESDIR}"/${P}-as-needed.patch \
+ "${FILESDIR}"/${P}-configure.in.patch \
+ "${FILESDIR}"/${P}-no-test.patch \
+ "${FILESDIR}"/${P}-cc.patch \
+ "${FILESDIR}"/${P}-texinfo5.1.patch
+
+ # fix info files
+ for infofile in doc/fftw*info*; do
+ cat >> ${infofile} <<-EOF
+ INFO-DIR-SECTION Libraries
+ START-INFO-DIR-ENTRY
+ * fftw: (fftw). ${DESCRIPTION}
+ END-INFO-DIR-ENTRY
+ EOF
+ done
+
+ sed -i 's/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/g' configure.in || die
+
+ eautoreconf
+
+ cd "${WORKDIR}"
+ cp -R ${P} ${P}-double
+ mv ${P} ${P}-single
+ ln -s ${P}-single ${P}
+}
+
+src_configure() {
+ local myconf="
+ --enable-shared
+ --enable-type-prefix
+ --enable-vec-recurse
+ $(use_enable fortran)
+ $(use_enable mpi)
+ $(use_enable static-libs static)
+ $(use_enable x86 i386-hacks)"
+ if use openmp; then
+ myconf="${myconf}
+ --enable-threads
+ --with-openmp"
+ elif use threads; then
+ myconf="${myconf}
+ --enable-threads
+ --without-openmp"
+ else
+ myconf="${myconf}
+ --disable-threads
+ --without-openmp"
+ fi
+ cd "${S}-single"
+ econf ${myconf} \
+ --enable-float \
+ --with-gcc=$(tc-getCC)
+
+ cd "${S}-double"
+ econf ${myconf} \
+ --with-gcc=$(tc-getCC)
+}
+
+src_compile() {
+ local dir
+ for dir in "${S}-single" "${S}-double"
+ do
+ einfo "Running compilation in ${dir}"
+ emake -C ${dir}
+ done
+}
+
+src_test() {
+ local dir
+ for dir in "${S}-single" "${S}-double"
+ do
+ einfo "Running tests in ${dir}"
+ emake -C ${dir} -j1 check
+ done
+}
+
+src_install () {
+ # both builds are installed in the same place
+ # libs are distinguished by prefix (s or d), see docs for details
+
+ local dir
+ for dir in "${S}-single" "${S}-double"
+ do
+ emake DESTDIR="${D}" -C ${dir} install
+ done
+
+ insinto /usr/include
+ doins fortran/fftw_f77.i
+ dodoc AUTHORS ChangeLog NEWS TODO README README.hacks
+ use doc && dohtml doc/*
+
+ if use float; then
+ for f in "${ED}"/usr/{include,$(get_libdir)}/*sfft*; do
+ ln -s $(basename ${f}) ${f/sfft/fft}
+ done
+ for f in "${ED}"/usr/{include,$(get_libdir)}/*srfft*; do
+ ln -s $(basename ${f}) ${f/srfft/rfft}
+ done
+ else
+ for f in "${ED}"/usr/{include,$(get_libdir)}/*dfft*; do
+ ln -s $(basename ${f}) ${f/dfft/fft}
+ done
+ for f in "${ED}"/usr/{include,$(get_libdir)}/*drfft*; do
+ ln -s $(basename ${f}) ${f/drfft/rfft}
+ done
+ fi
+}
diff --git a/sci-libs/fftw/fftw-3.3.4.ebuild b/sci-libs/fftw/fftw-3.3.4.ebuild
new file mode 100644
index 000000000000..c0e4b6f4a207
--- /dev/null
+++ b/sci-libs/fftw/fftw-3.3.4.ebuild
@@ -0,0 +1,164 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+FORTRAN_NEEDED=fortran
+
+inherit autotools-multilib eutils flag-o-matic fortran-2 multibuild toolchain-funcs versionator
+
+DESCRIPTION="Fast C library for the Discrete Fourier Transform"
+HOMEPAGE="http://www.fftw.org/"
+
+if [[ ${PV} = *9999 ]]; then
+ inherit git-2
+ EGIT_REPO_URI="https://github.com/FFTW/fftw3.git"
+ KEYWORDS="alpha amd64 arm hppa ia64 ppc ppc64 sparc x86"
+ AUTOTOOLS_AUTORECONF=1
+else
+ SRC_URI="http://www.fftw.org/${P}.tar.gz"
+ KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
+fi
+
+LICENSE="GPL-2+"
+SLOT="3.0/3"
+IUSE="altivec cpu_flags_x86_avx doc cpu_flags_x86_fma3 cpu_flags_x86_fma4 fortran mpi neon openmp quad cpu_flags_x86_sse cpu_flags_x86_sse2 static-libs test threads zbus"
+
+RDEPEND="
+ mpi? ( virtual/mpi )
+ abi_x86_32? ( !<=app-emulation/emul-linux-x86-soundlibs-20130224-r2
+ !app-emulation/emul-linux-x86-soundlibs[-abi_x86_32(-)] )"
+DEPEND="${RDEPEND}
+ test? ( dev-lang/perl )"
+
+pkg_setup() {
+ # XXX: this looks like it should be used with BUILD_TYPE!=binary
+ if use openmp; then
+ if [[ $(tc-getCC) == *gcc ]] && ! tc-has-openmp; then
+ ewarn "OpenMP is not available in your current selected gcc"
+ die "need openmp capable gcc"
+ fi
+ FORTRAN_NEED_OPENMP=1
+ fi
+
+ fortran-2_pkg_setup
+
+ MULTIBUILD_VARIANTS=( single double longdouble )
+ if use quad; then
+ if [[ $(tc-getCC) == *gcc ]] && ! version_is_at_least 4.6 $(gcc-version); then
+ ewarn "quad precision only available for gcc >= 4.6"
+ die "need quad precision capable gcc"
+ fi
+ MULTIBUILD_VARIANTS+=( quad )
+ fi
+}
+
+src_prepare() {
+ # fix info file for category directory
+ [[ ${PV} = *9999 ]] || sed -i \
+ -e 's/Texinfo documentation system/Libraries/' \
+ doc/fftw3."info" || die "failed to fix info file"
+
+ autotools-utils_src_prepare
+}
+
+src_configure() {
+ local x
+
+ # filter -Os according to docs
+ replace-flags -Os -O2
+
+ my_configure() {
+ #a bit hacky improve after #483758 is solved
+ local x=${BUILD_DIR%-*}
+ x=${x##*-}
+ # there is no abi_x86_32 port of virtual/mpi right now
+ local enable_mpi=$(use_enable mpi)
+ multilib_is_native_abi || enable_mpi="--disable-mpi"
+
+ #jlec reported USE=quad on abi_x86_32 has too less registers
+ #stub Makefiles
+ if [[ ${ABI} == x86 && ${x} == 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 myeconfargs=(
+ $(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)
+ )
+ if [[ $x == single ]]; then
+ #altivec, sse, single-paired only work for single
+ myeconfargs+=(
+ --enable-single
+ $(use_enable altivec)
+ $(use_enable cpu_flags_x86_avx avx)
+ $(use_enable cpu_flags_x86_sse sse)
+ ${enable_mpi}
+ $(use_enable neon)
+ )
+ elif [[ $x == double ]]; then
+ myeconfargs+=(
+ $(use_enable cpu_flags_x86_avx avx)
+ $(use_enable cpu_flags_x86_sse2 sse2)
+ ${enable_mpi}
+ )
+ elif [[ $x == longdouble ]]; then
+ myeconfargs+=(
+ --enable-long-double
+ ${enable_mpi}
+ )
+ elif [[ $x == quad ]]; then
+ #quad does not support mpi
+ myeconfargs+=( --enable-quad-precision )
+ else
+ die "${x} precision not implemented in this ebuild"
+ fi
+
+ autotools-utils_src_configure
+ }
+
+ multibuild_foreach_variant multilib_parallel_foreach_abi my_configure
+}
+
+src_compile() {
+ multibuild_foreach_variant autotools-multilib_src_compile
+}
+
+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 autotools-multilib_src_compile -C tests smallcheck
+}
+
+src_install () {
+ local u x
+ DOCS=( AUTHORS ChangeLog NEWS README TODO COPYRIGHT CONVENTIONS )
+ HTML_DOCS=( doc/html/ )
+
+ multibuild_foreach_variant multilib_foreach_abi autotools-utils_src_install
+
+ if use doc; then
+ dodoc doc/*.pdf
+ insinto /usr/share/doc/${PF}/faq
+ doins -r doc/FAQ/fftw-faq.html/*
+ else
+ rm -r "${ED}"/usr/share/doc/${PF}/html
+ fi
+
+ for x in "${ED}"/usr/lib*/pkgconfig/*.pc; do
+ 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
+}
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..2389f0e43f79
--- /dev/null
+++ b/sci-libs/fftw/files/fftw-2.1.5-as-needed.patch
@@ -0,0 +1,112 @@
+--- rfftw/Makefile.am.orig 2008-04-03 15:23:06.989019659 +0000
++++ rfftw/Makefile.am 2008-04-03 15:23:35.658653448 +0000
+@@ -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
+
+--- threads/Makefile.am.orig 2008-04-03 15:23:10.101197011 +0000
++++ threads/Makefile.am 2008-04-03 15:23:35.662653676 +0000
+@@ -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 > $@
+--- mpi/Makefile.am.orig 2008-04-03 15:22:43.811698858 +0000
++++ mpi/Makefile.am 2008-04-03 15:25:50.930362143 +0000
+@@ -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
+--- mpi/test_sched.c.orig 2008-04-03 16:58:01.969033125 +0000
++++ mpi/test_sched.c 2008-04-03 16:59:27.521908505 +0000
+@@ -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..718e74686f62
--- /dev/null
+++ b/sci-libs/fftw/files/fftw-2.1.5-configure.in.patch
@@ -0,0 +1,226 @@
+--- configure.in.orig 2008-07-09 17:52:16.762461233 +0100
++++ configure.in 2008-07-09 18:34:13.106471656 +0100
+@@ -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..f9f54f68eb14
--- /dev/null
+++ b/sci-libs/fftw/files/fftw-2.1.5-no-test.patch
@@ -0,0 +1,33 @@
+--- tests/Makefile.am.orig 2008-06-22 12:29:53.149138283 +0100
++++ tests/Makefile.am 2008-06-22 12:30:32.731595087 +0100
+@@ -1,4 +1,4 @@
+-noinst_PROGRAMS = fftw_test rfftw_test
++check_PROGRAMS = fftw_test rfftw_test
+ noinst_HEADERS = test_main.h
+
+ FFTWDIR=../fftw
+--- mpi/Makefile.am.orig 2008-06-22 17:21:16.998466390 +0100
++++ mpi/Makefile.am 2008-06-22 17:27:42.996463162 +0100
+@@ -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
+--- threads/Makefile.am.orig 2008-06-22 17:18:18.940409610 +0100
++++ threads/Makefile.am 2008-06-22 17:28:00.485459803 +0100
+@@ -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-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
new file mode 100644
index 000000000000..5221b542c560
--- /dev/null
+++ b/sci-libs/fftw/metadata.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>sci</herd>
+ <longdescription lang="en">
+ The Fastest Fourier Transform in the West 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. It is becoming the FFT library of choice for most
+ applications. Benchmarks, performed on a variety of platforms, show
+ that FFTW's performance is typically superior to that of other
+ 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>
+ <remote-id type="freecode">fftw</remote-id>
+ </upstream>
+</pkgmetadata>