summaryrefslogtreecommitdiff
path: root/sci-libs/fftw
diff options
context:
space:
mode:
Diffstat (limited to 'sci-libs/fftw')
-rw-r--r--sci-libs/fftw/Manifest4
-rw-r--r--sci-libs/fftw/fftw-3.3.9.ebuild183
-rw-r--r--sci-libs/fftw/fftw-9999.ebuild33
3 files changed, 201 insertions, 19 deletions
diff --git a/sci-libs/fftw/Manifest b/sci-libs/fftw/Manifest
index 1dea304452b7..6fba8b8da1cb 100644
--- a/sci-libs/fftw/Manifest
+++ b/sci-libs/fftw/Manifest
@@ -6,7 +6,9 @@ AUX fftw-2.1.5-parallel-tests.patch 3720 BLAKE2B 6b18c68e121035c517cf8eae245d32a
AUX fftw-2.1.5-texinfo5.1.patch 596 BLAKE2B f45dcfef53cfb374c2022e88632934b48f2a19e5e75734a5c7d7901b8464403ceb675efcf6e43b00f10779776a8e9789956bb77e937b754c0a070e15821f4877 SHA512 71dd3c13784f9bd1b518827a6784e2619145377cbc88764c69830519096f61863140b90c8138d6a65e3994487cb12cd06baba826d48735c2cbddc1d2320a4214
DIST fftw-2.1.5.tar.gz 1256888 BLAKE2B 61e2eed91459479ab893a423c1a6f38dd7e9637e0466fa0a59fccfa2cec930e8870a5febfccfacfe44e876e40534c34e05dc62b8e7bf188b43fe3a65c6a7bdba SHA512 8724a7f66aa19b271aa0ffb0e3762919f08082ac4400f52d11b50aef9b9d23a7d4fc5d6b2eae0ac166e2bb30a4d38a52c878e8bf8e24aba01ab1c3ddf5ebec15
DIST fftw-3.3.8.tar.gz 4110137 BLAKE2B 555ac1401a5a41b7661afd0288c2353398f2c9b73695742459079ebf050dfa4c371484ea65324fd4b7d374f70d88a5942ff8abaad167b0d44d485bf1dc9e208c SHA512 ab918b742a7c7dcb56390a0a0014f517a6dff9a2e4b4591060deeb2c652bf3c6868aa74559a422a276b853289b4b701bdcbd3d4d8c08943acf29167a7be81a38
+DIST fftw-3.3.9.tar.gz 4146999 BLAKE2B 6ea6966f3c5056102e6c3e4628b072c7e9832e3250b292808ed934b3a82515fd77658cbaff50d7b1268fb8c9444b10e39b22d100b7c31ea2452f3cee59c9f280 SHA512 52ebc2a33063a41fd478f6ea2acbf3b511867f736591d273dd57f9dfca5d3e0b0c73157921b3a36f1a7cfd741a8a6bde0fd80de578040ae730ea168b5ba466cf
EBUILD fftw-2.1.5-r9.ebuild 3146 BLAKE2B 8f899d8142cd8a90a887240756c501e2d736385d636734a9ddbcebb0b0d479e8006d5cbc75d20f41aa4deacfad469870ec5d387082da20f7a75333d667c190f1 SHA512 7648d4c60ad453a2b8be1a687918278941b54a99c06b59af5121dcdf259eb40f423969ab6d5b861668c4216fdfd9167043c72c51d3fbfb8e0da0cb50da6ce945
EBUILD fftw-3.3.8-r1.ebuild 4642 BLAKE2B 4f265100799145da3dcee72571a62692e1e6a2502d3a696b729fc7405f27803a92a4d830e60a9acc0a7c6e386be4690992c3eed9bf683eb1c56c82a97ccc94d9 SHA512 1fcd0eb3eda21f150d4931f5077b379d32c7681e44ea212084a33155e82962ad9bf0fd0364824b8de38aa4e72d6ebd06b68447eef6edd1ffaf8a130257c0fa50
-EBUILD fftw-9999.ebuild 4518 BLAKE2B 41047e346e12e633d2faa45341cff1eb02959295f3000d0c5dc2b74ae366a72ef9c9b5724193c3c4b9ee2e7de4a2c76f2f19451156cae8d7ca6c201c9aab60dc SHA512 122471201bc246cc815abaf074a310ec9e91a9e3bbd9b58ceb3572114318e18f6e3def64d4e027d0022163565d35ba792daa1cc7e4b85150dd4cd7c62ec59422
+EBUILD fftw-3.3.9.ebuild 4603 BLAKE2B 3033b5e15660913bffdf5642ade8f3dcefb2f4b62d005af23818a365e62cceee5f60c175ce3d151ebbc19928eb287504d831341ff6281ba40ad1e7fbf75bb4e9 SHA512 ebb5bc0e22828dc791d70c27e2a7f64b4db915fe942f96e01b734a11f04e7165842dda12d758c986798d68ece684341c6bab7be6787dfd4d67b82605309f6447
+EBUILD fftw-9999.ebuild 4477 BLAKE2B 0691ee5b800343e0cb2549357e844e1efd373b777e33a57be2712807ef8b7bd7a6a25fa34a2b488366436d58a17e5485856cb01b2d755ddd8cff83f21536724c SHA512 0d35dbe8bebe0affda3040e9ca51793f3f873e30443fa87808329279b536b664953ea5a015fe64d39a822470131a183840fa6a5b882821c1aea5da32e069ef3a
MISC metadata.xml 1088 BLAKE2B 308c6b8e2b7388d41c5ee6c3336b7b61037277b4563cb212cccaf25c894d350434eaa0f282172f943cf26496345b4c7e58afa55f50b9cf07fc04aea7a5d25244 SHA512 df52860deccf7e7139affaad8cfb837b7f3770a22c621f668db24d916cee5b27acc1486884797e8d0881d8887874627b919816f8245101982e963a8db43f3c98
diff --git a/sci-libs/fftw/fftw-3.3.9.ebuild b/sci-libs/fftw/fftw-3.3.9.ebuild
new file mode 100644
index 000000000000..3e76f1f265de
--- /dev/null
+++ b/sci-libs/fftw/fftw-3.3.9.ebuild
@@ -0,0 +1,183 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+FORTRAN_NEEDED=fortran
+
+inherit flag-o-matic fortran-2 multibuild multilib-minimal toolchain-funcs
+
+DESCRIPTION="Fast C library for the Discrete Fourier Transform"
+HOMEPAGE="http://www.fftw.org/"
+
+MY_P=${PN}-${PV/_p/-pl}
+
+if [[ ${PV} == *9999 ]]; then
+ inherit autotools git-r3
+ EGIT_REPO_URI="https://github.com/FFTW/fftw3.git"
+else
+ SRC_URI="http://www.fftw.org/${PN}-${PV/_p/-pl}.tar.gz"
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
+fi
+
+LICENSE="GPL-2+"
+SLOT="3.0/3"
+IUSE="cpu_flags_arm_neon cpu_flags_ppc_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 test threads zbus"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ mpi? ( >=virtual/mpi-2.0-r4[${MULTILIB_USEDEP}] )"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ quad? ( sys-devel/gcc[fortran] )
+ test? ( dev-lang/perl )"
+
+S="${WORKDIR}/${MY_P}"
+HTML_DOCS=( doc/html/. )
+
+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 longdouble )
+ if use quad; then
+ if ! tc-is-gcc; 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
+ [[ ${PV} == *9999 ]] && eautoreconf
+}
+
+multilib_src_configure() {
+ # 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=(
+ --enable-shared
+ --disable-static
+ $(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)
+ )
+ [[ ${PV} == *9999 ]] && myconf+=( --enable-maintainer-mode )
+
+ case "${MULTIBUILD_ID}" in
+ single-*)
+ # altivec, sse, single-paired only work for single
+ myconf+=(
+ --enable-single
+ $(use_enable cpu_flags_ppc_altivec 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)
+ $(use_enable cpu_flags_arm_neon neon)
+ $(use_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)
+ $(use_enable mpi)
+ )
+ ;;
+
+ longdouble-*)
+ myconf+=(
+ --enable-long-double
+ $(use_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[@]}" MPICC="$(tc-getCC)"
+}
+
+src_configure() {
+ # upstream does not append proper -m flags
+ # https://bugs.gentoo.org/698572
+ use cpu_flags_x86_avx2 && append-flags -mavx2
+
+ 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() {
+ multibuild_foreach_variant multilib-minimal_src_install
+ dodoc CONVENTIONS
+
+ 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
+}
diff --git a/sci-libs/fftw/fftw-9999.ebuild b/sci-libs/fftw/fftw-9999.ebuild
index d92ed1ac2ad5..3d5b307ce05a 100644
--- a/sci-libs/fftw/fftw-9999.ebuild
+++ b/sci-libs/fftw/fftw-9999.ebuild
@@ -1,7 +1,7 @@
# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
-EAPI=6
+EAPI=7
FORTRAN_NEEDED=fortran
@@ -12,26 +12,27 @@ HOMEPAGE="http://www.fftw.org/"
MY_P=${PN}-${PV/_p/-pl}
-if [[ ${PV} = *9999 ]]; then
+if [[ ${PV} == *9999 ]]; then
inherit autotools git-r3
EGIT_REPO_URI="https://github.com/FFTW/fftw3.git"
else
SRC_URI="http://www.fftw.org/${PN}-${PV/_p/-pl}.tar.gz"
- KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
fi
LICENSE="GPL-2+"
SLOT="3.0/3"
-IUSE="cpu_flags_ppc_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 neon openmp quad static-libs test threads zbus"
+IUSE="cpu_flags_arm_neon cpu_flags_ppc_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 test threads zbus"
RESTRICT="!test? ( test )"
RDEPEND="
mpi? ( >=virtual/mpi-2.0-r4[${MULTILIB_USEDEP}] )"
-DEPEND="${RDEPEND}
+DEPEND="${RDEPEND}"
+BDEPEND="
quad? ( sys-devel/gcc[fortran] )
test? ( dev-lang/perl )"
-S=${WORKDIR}/${MY_P}
+S="${WORKDIR}/${MY_P}"
HTML_DOCS=( doc/html/. )
pkg_pretend() {
@@ -60,13 +61,7 @@ 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
+ [[ ${PV} == *9999 ]] && eautoreconf
}
multilib_src_configure() {
@@ -82,13 +77,15 @@ multilib_src_configure() {
local myconf=(
--enable-shared
- $(use_enable static-libs static)
+ --disable-static
$(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)
)
+ [[ ${PV} == *9999 ]] && myconf+=( --enable-maintainer-mode )
+
case "${MULTIBUILD_ID}" in
single-*)
# altivec, sse, single-paired only work for single
@@ -99,7 +96,7 @@ multilib_src_configure() {
$(use_enable cpu_flags_x86_avx2 avx2)
$(use_enable cpu_flags_x86_sse sse)
$(use_enable cpu_flags_x86_sse2 sse2)
- $(use_enable neon)
+ $(use_enable cpu_flags_arm_neon neon)
$(use_enable mpi)
)
;;
@@ -166,11 +163,11 @@ src_install() {
docinto faq
dodoc -r doc/FAQ/fftw-faq.html/.
else
- rm -r "${ED%/}"/usr/share/doc/${PF}/html || die
+ rm -r "${ED}"/usr/share/doc/${PF}/html || die
fi
local x
- for x in "${ED%/}"/usr/lib*/pkgconfig/*.pc; do
+ 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
@@ -178,5 +175,5 @@ src_install() {
done
# fftw uses pkg-config to record its private dependencies
- find "${D}" -name '*.la' -delete || die
+ find "${ED}" -name '*.la' -delete || die
}