summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sci-libs/fftw/fftw-9999.ebuild')
-rw-r--r--sci-libs/fftw/fftw-9999.ebuild194
1 files changed, 98 insertions, 96 deletions
diff --git a/sci-libs/fftw/fftw-9999.ebuild b/sci-libs/fftw/fftw-9999.ebuild
index ec07ce4c95d..bb09666b045 100644
--- a/sci-libs/fftw/fftw-9999.ebuild
+++ b/sci-libs/fftw/fftw-9999.ebuild
@@ -2,46 +2,43 @@
# Distributed under the terms of the GNU General Public License v2
# $Id$
-EAPI=5
+EAPI=6
FORTRAN_NEEDED=fortran
-inherit autotools-multilib eutils flag-o-matic fortran-2 multibuild toolchain-funcs versionator
+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 git-r3
+ inherit autotools git-r3
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"
+ 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"
+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"
+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 )"
+RDEPEND="
+ mpi? ( virtual/mpi )"
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() {
if [[ ${MERGE_TYPE} != binary ]] && 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"
+ 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
@@ -50,7 +47,7 @@ pkg_setup() {
MULTIBUILD_VARIANTS=( single double longdouble )
if use quad; then
- if [[ $(tc-getCC) == *gcc ]] && ! version_is_at_least 4.6 $(gcc-version); 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
@@ -59,123 +56,128 @@ pkg_setup() {
}
src_prepare() {
+ default
+
# 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"
+ if [[ ${PV} = *9999 ]]; then
+ sed -i -e
+ 's/Texinfo documentation system/Libraries/' \
+ doc/fftw3."info" || die "failed to fix info file"
- autotools-utils_src_prepare
+ eautoreconf
+ fi
}
-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%-${ABI}}
- 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 use amd64 && ! multilib_is_native_abi && [[ $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
+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
- 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
+ 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
- myeconfargs+=(
+ 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}
- $(use_enable neon)
)
- elif [[ $x == double ]]; then
- myeconfargs+=(
+ ;;
+
+ 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}
)
- elif [[ $x == longdouble ]]; then
- myeconfargs+=(
+ ;;
+
+ longdouble-*)
+ myconf+=(
--enable-long-double
${enable_mpi}
- )
- elif [[ $x == quad ]]; then
+ )
+ ;;
+
+ quad-*)
#quad does not support mpi
- myeconfargs+=( --enable-quad-precision )
- else
- die "${x} precision not implemented in this ebuild"
- fi
+ myconf+=(
+ --enable-quad-precision
+ )
+ ;;
- autotools-utils_src_configure
- }
+ *)
+ die "${MULTIBUILD_ID%-*} precision not implemented in this ebuild"
+ ;;
+ esac
- multibuild_foreach_variant multilib_parallel_foreach_abi my_configure
+ ECONF_SOURCE="${S}" econf "${myconf[@]}"
+}
+
+src_configure() {
+ multibuild_foreach_variant multilib-minimal_src_configure
}
src_compile() {
- multibuild_foreach_variant autotools-multilib_src_compile
+ multibuild_foreach_variant multilib-minimal_src_compile
}
-src_test () {
+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 autotools-multilib_src_compile -C tests smallcheck
+ # local testbase="perl check.pl --nthreads=1 --estimate"
+ # ${testbase} -${p}d || die "Failure: $n"
+
+ multibuild_foreach_variant multilib-minimal_src_test
}
-src_install () {
- local u x
+src_install() {
DOCS=( AUTHORS ChangeLog NEWS README TODO COPYRIGHT CONVENTIONS )
HTML_DOCS=( doc/html/ )
- #copied from autotools-multilib_secure_install
- my_abi_src_install() {
- autotools-utils_src_install
- #https://github.com/FFTW/fftw3/pull/6
- # f03 are installed unconditionally, not a big problem as the quad
- # header is the only one to be wrapped.
- [[ ${BUILD_DIR} = *-quad* ]] || rm -f "${ED}/usr/include/fftw3q.f03"
- if [[ ${#MULTIBUILD_VARIANTS[@]} -gt 1 ]]; then
- multilib_prepare_wrappers
- multilib_check_headers
- fi
- }
- multibuild_foreach_variant multilib_foreach_abi my_abi_src_install
- multilib_install_wrappers
+ multibuild_foreach_variant multilib-minimal_src_install
if use doc; then
dodoc doc/*.pdf
- insinto /usr/share/doc/${PF}/faq
- doins -r doc/FAQ/fftw-faq.html/*
+ docinto faq
+ dodoc -r doc/FAQ/fftw-faq.html/.
else
- rm -r "${ED}"/usr/share/doc/${PF}/html
+ 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
+ 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
}