1 # Copyright 1999-2017 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
8 inherit autotools flag-o-matic fortran-2 multibuild toolchain-funcs
10 DESCRIPTION="Fast C library for the Discrete Fourier Transform"
11 HOMEPAGE="http://www.fftw.org"
12 SRC_URI="http://www.fftw.org/${P}.tar.gz"
14 KEYWORDS="alpha amd64 arm hppa ia64 ppc ppc64 ~s390 sparc x86 ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos"
18 IUSE="doc float fortran mpi openmp threads static-libs"
20 RDEPEND="mpi? ( virtual/mpi )"
24 "${FILESDIR}"/${P}-as-needed.patch
25 "${FILESDIR}"/${P}-configure.in.patch
26 "${FILESDIR}"/${P}-no-test.patch
27 "${FILESDIR}"/${P}-cc.patch
28 "${FILESDIR}"/${P}-texinfo5.1.patch
29 "${FILESDIR}"/${P}-parallel-tests.patch
33 [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
37 if [[ ${MERGE_TYPE} != binary ]] && use openmp; then
44 MULTIBUILD_VARIANTS=( single double )
52 for infofile in doc/fftw*info*; do
53 cat >> ${infofile} <<-EOF || die
54 INFO-DIR-SECTION Libraries
56 * fftw: (fftw). ${DESCRIPTION}
61 mv configure.{in,ac} || die
62 sed -i 's/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/g' configure.ac || die
66 # 'FAQ' is actually a dir and causes issues with einstalldocs
69 multibuild_copy_sources
72 fftw_src_configure() {
74 --with-gcc=$(tc-getCC)
80 $(use_enable static-libs static)
81 $(use_enable x86 i386-hacks)
85 if use openmp || use threads; then
86 myconf+=( --enable-threads )
88 myconf+=( --disable-threads )
91 [[ $MULTIBUILD_VARIANT == single ]] && myconf+=( --enable-float )
97 # this one is reported to cause trouble on pentium4 m series
100 # here I need (surprise) to increase optimization:
101 # --enable-i386-hacks requires -fomit-frame-pointer to work properly
103 is-flag -fomit-frame-pointer || append-flags -fomit-frame-pointer
105 use openmp && [[ $(tc-getCC)$ == icc* ]] && append-ldflags $(no-as-needed)
107 multibuild_foreach_variant run_in_build_dir fftw_src_configure
111 multibuild_foreach_variant run_in_build_dir default_src_compile
115 multibuild_foreach_variant run_in_build_dir default_src_test
119 use doc && HTML_DOCS=( doc/*.{html,gif} )
120 multibuild_foreach_variant run_in_build_dir default_src_install
122 doheader fortran/fftw_f77.i
124 create_fftw_symlinks() {
126 for i in fft rfft; do
127 for f in "${ED%/}"/usr/{include,$(get_libdir)}/*${letter}${i}*; do
128 ln -s $(basename ${f}) ${f/${letter}${i}/${i}} || die
132 create_fftw_symlinks $(usex float s d)
134 if ! use static-libs; then
135 find "${D}" -name '*.la' -delete || die