You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/sci-libs/fftw/fftw-2.1.5-r9.ebuild

138 lines
3.1 KiB

# 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
}