summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sci-libs/fftw')
-rw-r--r--sci-libs/fftw/Manifest1
-rw-r--r--sci-libs/fftw/fftw-3.3.5.ebuild183
2 files changed, 184 insertions, 0 deletions
diff --git a/sci-libs/fftw/Manifest b/sci-libs/fftw/Manifest
index b1d9259e0381..8e7135c09c9d 100644
--- a/sci-libs/fftw/Manifest
+++ b/sci-libs/fftw/Manifest
@@ -1,2 +1,3 @@
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
+DIST fftw-3.3.5.tar.gz 4148447 SHA256 8ecfe1b04732ec3f5b7d279fdb8efcad536d555f9d1e8fabd027037d45ea8bcf SHA512 a81f02d884cfe4171fab479b0e5ec76eceb9c5da6d4eda1f89281b7e1efa2d8176c9ba87051595c402889eb32172d216ce40eb2bef41289c646f01002fb4ba8e WHIRLPOOL dc044c73dbb1b9fa595a0f1e71b5958d3e023c38cd6b1bb8a486adcad506fc6e411a3d8d0657a32346ff6636cf25396bd9bcdbcd720e8c799f6e40f1e04bfd65
diff --git a/sci-libs/fftw/fftw-3.3.5.ebuild b/sci-libs/fftw/fftw-3.3.5.ebuild
new file mode 100644
index 000000000000..1218d51567e1
--- /dev/null
+++ b/sci-libs/fftw/fftw-3.3.5.ebuild
@@ -0,0 +1,183 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+FORTRAN_NEEDED=fortran
+
+inherit flag-o-matic fortran-2 toolchain-funcs versionator multibuild multilib-minimal
+
+DESCRIPTION="Fast C library for the Discrete Fourier Transform"
+HOMEPAGE="http://www.fftw.org/"
+
+if [[ ${PV} = *9999 ]]; then
+ inherit autotools git-2
+ EGIT_REPO_URI="https://github.com/FFTW/fftw3.git"
+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 cpu_flags_x86_avx2 cpu_flags_x86_fma3 cpu_flags_x86_fma4 cpu_flags_x86_sse cpu_flags_x86_sse2 doc fortran mpi openmp quad static-libs test threads zbus"
+
+RDEPEND="
+ mpi? ( virtual/mpi )"
+DEPEND="${RDEPEND}
+ test? ( dev-lang/perl )"
+
+pkg_setup() {
+ if [[ ${MERGE_TYPE} != binary ]] && use openmp; then
+ if ! tc-has-openmp; then
+ ewarn "OpenMP is not available in your current selected compiler"
+
+ if tc-is-clang; then
+ ewarn "OpenMP support in sys-devel/clang is provided by sys-libs/libomp,"
+ ewarn "which you will need to build ${CATEGORY}/${PN} with USE=\"openmp\""
+ fi
+
+ die "need openmp capable compiler"
+ fi
+ FORTRAN_NEED_OPENMP=1
+ fi
+
+ fortran-2_pkg_setup
+
+ MULTIBUILD_VARIANTS=( single double longdouble )
+ if use quad; then
+ if tc-is-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() {
+ 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() {
+ # there is no abi_x86_32 port of virtual/mpi right now, bug 519700
+ local enable_mpi=$(multilib_native_use_enable mpi)
+
+ # 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=(
+ $(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 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)
+ ${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)
+ ${enable_mpi}
+ )
+ ;;
+
+ longdouble-*)
+ myconf+=(
+ --enable-long-double
+ ${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[@]}"
+}
+
+src_configure() {
+ 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() {
+ DOCS=( AUTHORS ChangeLog NEWS README TODO COPYRIGHT CONVENTIONS )
+ HTML_DOCS=( doc/html/ )
+
+ multibuild_foreach_variant multilib-minimal_src_install
+
+ 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 "${ED}" -name '*.la' -delete || die
+}