diff options
author | Christoph Junghans <ottxor@gentoo.org> | 2013-09-01 12:08:14 -0600 |
---|---|---|
committer | Christoph Junghans <ottxor@gentoo.org> | 2013-09-01 12:08:14 -0600 |
commit | 26069113fdc938df674f1aa53393cc0b3841a02f (patch) | |
tree | 7cdb2f696bff863701315b5fa811b2401935a71a /sci-libs/fftw | |
parent | Merge branch 'master' of git+ssh://git.overlays.gentoo.org/proj/sci (diff) | |
download | sci-26069113fdc938df674f1aa53393cc0b3841a02f.tar.gz sci-26069113fdc938df674f1aa53393cc0b3841a02f.tar.bz2 sci-26069113fdc938df674f1aa53393cc0b3841a02f.zip |
import from gx86
Package-Manager: portage-2.2.1
Diffstat (limited to 'sci-libs/fftw')
-rw-r--r-- | sci-libs/fftw/ChangeLog | 10 | ||||
-rw-r--r-- | sci-libs/fftw/Manifest | 1 | ||||
-rw-r--r-- | sci-libs/fftw/fftw-3.3.3-r3.ebuild | 197 | ||||
-rw-r--r-- | sci-libs/fftw/fftw-9999.ebuild | 197 | ||||
-rw-r--r-- | sci-libs/fftw/files/fftw-3.3.3-install-header.patch | 35 | ||||
-rw-r--r-- | sci-libs/fftw/metadata.xml | 23 |
6 files changed, 463 insertions, 0 deletions
diff --git a/sci-libs/fftw/ChangeLog b/sci-libs/fftw/ChangeLog new file mode 100644 index 000000000..d82a81d05 --- /dev/null +++ b/sci-libs/fftw/ChangeLog @@ -0,0 +1,10 @@ +# ChangeLog for sci-libs/fftw +# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2 +# $Header: $ + +*fftw-3.3.3-r3 (01 Sep 2013) +*fftw-9999 (01 Sep 2013) + + 01 Sep 2013; Christoph Junghans <ottxor@gentoo.org> +fftw-3.3.3-r3.ebuild, + +fftw-9999.ebuild, +files/fftw-3.3.3-install-header.patch, +metadata.xml: + import from gx86 diff --git a/sci-libs/fftw/Manifest b/sci-libs/fftw/Manifest new file mode 100644 index 000000000..2aab3f825 --- /dev/null +++ b/sci-libs/fftw/Manifest @@ -0,0 +1 @@ +DIST fftw-3.3.3.tar.gz 3920661 SHA256 85cdfc0a0ba10d8fa4f0f8e733aac1a5936c859832a9e3d5c0731fb5c54a97f3 SHA512 1d88b6376ba8c15cceafd3381de1d181a974b921b72b31dd89c297e5771e8d665aa3c121ef2504a70e7b0bb562b1e0612ac2a02121c412d27df06c4d687507c4 WHIRLPOOL b410cb4d854988f9a57f08344d9207ece4ebf218ec6fa605036235e472bef91f5037d852793fa6a7bc0f8a6a7081dc1e71b25b15ab1259e299bb95affca40d3b diff --git a/sci-libs/fftw/fftw-3.3.3-r3.ebuild b/sci-libs/fftw/fftw-3.3.3-r3.ebuild new file mode 100644 index 000000000..9af7694b7 --- /dev/null +++ b/sci-libs/fftw/fftw-3.3.3-r3.ebuild @@ -0,0 +1,197 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sci-libs/fftw/fftw-3.3.3-r2.ebuild,v 1.3 2013/06/27 14:30:29 aballier Exp $ + +EAPI=5 + +#AUTOTOOLS_AUTORECONF=1 +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="" + 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 ~x86-macos" + PATCHES=( "${FILESDIR}/${P}-install-header.patch" ) + AUTOTOOLS_AUTORECONF=1 +fi + +LICENSE="GPL-2" +SLOT="3.0" +IUSE="altivec avx doc fma fortran mpi neon openmp quad sse 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 )" + +#can go once mpi is multlib +MULTILIB_WRAPPED_HEADERS=( + /usr/include/fftw3-mpi.h + /usr/include/fftw3l-mpi.f03 + /usr/include/fftw3-mpi.f03 + /usr/include/fftw3q.f03 +) + +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() { + local ext="info" + [[ ${PV} = *9999 ]] && ext="texi" + # fix info file for category directory + sed -i \ + -e 's/Texinfo documentation system/Libraries/' \ + doc/fftw3."${ext}" || 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() { + local x=${FFTW_PRECISION} + # 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 + multilib_is_native_abi || [[ $x != quad ]] || return 0 + + myeconfargs=( + $(use_enable 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 avx) + $(use_enable sse) + ${enable_mpi} + $(use_enable neon) + ) + elif [[ $x == double ]]; then + myeconfargs+=( + $(use_enable avx) + $(use_enable 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 + } + + my_abi_configure() { + #multilib_parallel_foreach_abi changes MULTIBUILD_VARIANT + export FFTW_PRECISION=${MULTIBUILD_VARIANT} + multilib_parallel_foreach_abi my_configure + unset FFTW_PRECISION + } + + multibuild_foreach_variant my_abi_configure +} + +abi_has_precision() { + #not all abi have all precisions + [[ -f ${BUILD_DIR}/Makefile ]] || return 0 + "$@" +} + +src_compile() { + multibuild_foreach_variant multilib_foreach_abi abi_has_precision autotools-utils_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 multilib_foreach_abi abi_has_precision autotools-utils_src_compile -C tests smallcheck +} + +src_install () { + local u x + DOCS=( AUTHORS ChangeLog NEWS README TODO COPYRIGHT CONVENTIONS ) + HTML_DOCS=( doc/html/ ) + + #copied from autotools-multilib_secure_install + my_abi_src_install() { + my_abi_secure_install() { + autotools-utils_src_install + if [[ ${#MULTIBUILD_VARIANTS[@]} -gt 1 ]]; then + multilib_prepare_wrappers + multilib_check_headers + fi + } + + multilib_foreach_abi abi_has_precision my_abi_secure_install + #don't mix checksum of different precisions + rm -f "${T}"/.multilib_header_cksum + } + multibuild_foreach_variant my_abi_src_install + multilib_install_wrappers + + 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/fftw-9999.ebuild b/sci-libs/fftw/fftw-9999.ebuild new file mode 100644 index 000000000..9af7694b7 --- /dev/null +++ b/sci-libs/fftw/fftw-9999.ebuild @@ -0,0 +1,197 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sci-libs/fftw/fftw-3.3.3-r2.ebuild,v 1.3 2013/06/27 14:30:29 aballier Exp $ + +EAPI=5 + +#AUTOTOOLS_AUTORECONF=1 +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="" + 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 ~x86-macos" + PATCHES=( "${FILESDIR}/${P}-install-header.patch" ) + AUTOTOOLS_AUTORECONF=1 +fi + +LICENSE="GPL-2" +SLOT="3.0" +IUSE="altivec avx doc fma fortran mpi neon openmp quad sse 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 )" + +#can go once mpi is multlib +MULTILIB_WRAPPED_HEADERS=( + /usr/include/fftw3-mpi.h + /usr/include/fftw3l-mpi.f03 + /usr/include/fftw3-mpi.f03 + /usr/include/fftw3q.f03 +) + +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() { + local ext="info" + [[ ${PV} = *9999 ]] && ext="texi" + # fix info file for category directory + sed -i \ + -e 's/Texinfo documentation system/Libraries/' \ + doc/fftw3."${ext}" || 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() { + local x=${FFTW_PRECISION} + # 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 + multilib_is_native_abi || [[ $x != quad ]] || return 0 + + myeconfargs=( + $(use_enable 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 avx) + $(use_enable sse) + ${enable_mpi} + $(use_enable neon) + ) + elif [[ $x == double ]]; then + myeconfargs+=( + $(use_enable avx) + $(use_enable 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 + } + + my_abi_configure() { + #multilib_parallel_foreach_abi changes MULTIBUILD_VARIANT + export FFTW_PRECISION=${MULTIBUILD_VARIANT} + multilib_parallel_foreach_abi my_configure + unset FFTW_PRECISION + } + + multibuild_foreach_variant my_abi_configure +} + +abi_has_precision() { + #not all abi have all precisions + [[ -f ${BUILD_DIR}/Makefile ]] || return 0 + "$@" +} + +src_compile() { + multibuild_foreach_variant multilib_foreach_abi abi_has_precision autotools-utils_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 multilib_foreach_abi abi_has_precision autotools-utils_src_compile -C tests smallcheck +} + +src_install () { + local u x + DOCS=( AUTHORS ChangeLog NEWS README TODO COPYRIGHT CONVENTIONS ) + HTML_DOCS=( doc/html/ ) + + #copied from autotools-multilib_secure_install + my_abi_src_install() { + my_abi_secure_install() { + autotools-utils_src_install + if [[ ${#MULTIBUILD_VARIANTS[@]} -gt 1 ]]; then + multilib_prepare_wrappers + multilib_check_headers + fi + } + + multilib_foreach_abi abi_has_precision my_abi_secure_install + #don't mix checksum of different precisions + rm -f "${T}"/.multilib_header_cksum + } + multibuild_foreach_variant my_abi_src_install + multilib_install_wrappers + + 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-3.3.3-install-header.patch b/sci-libs/fftw/files/fftw-3.3.3-install-header.patch new file mode 100644 index 000000000..4456c189e --- /dev/null +++ b/sci-libs/fftw/files/fftw-3.3.3-install-header.patch @@ -0,0 +1,35 @@ +From f450afa1cc0bb962abecfc1ffdbef8e1f7b748e4 Mon Sep 17 00:00:00 2001 +From: Christoph Junghans <ottxor@gentoo.org> +Date: Sat, 31 Aug 2013 21:21:28 -0600 +Subject: [PATCH] Only install f03 header of the active precision + +--- + api/Makefile.am | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/api/Makefile.am b/api/Makefile.am +index e4eaad7..bb6c042 100644 +--- a/api/Makefile.am ++++ b/api/Makefile.am +@@ -4,8 +4,17 @@ AM_CFLAGS = $(STACK_ALIGN_CFLAGS) + + EXTRA_DIST = f03api.sh genf03.pl fftw3.f03.in + +-include_HEADERS = fftw3.h fftw3.f fftw3l.f03 fftw3q.f03 ++include_HEADERS = fftw3.h fftw3.f ++noinst_HEADERS = fftw3l.f03 fftw3q.f03 ++if LDOUBLE ++include_HEADERS += fftw3l.f03 ++else ++if QUAD ++include_HEADERS += fftw3q.f03 ++else + nodist_include_HEADERS = fftw3.f03 ++endif ++endif + noinst_LTLIBRARIES = libapi.la + + # pkgincludedir = $(includedir)/fftw3@PREC_SUFFIX@ +-- +1.8.1.5 + diff --git a/sci-libs/fftw/metadata.xml b/sci-libs/fftw/metadata.xml new file mode 100644 index 000000000..50e74c164 --- /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="avx">Adds support for Advanced Vector Extensions</flag> + <flag name="fma">Use the Fused Multiply Add instruction set (fma3/fma4 either one)</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> |