diff options
author | Michael Orlitzky <mjo@gentoo.org> | 2023-06-14 02:26:26 -0400 |
---|---|---|
committer | Michael Orlitzky <mjo@gentoo.org> | 2023-06-14 07:14:31 -0400 |
commit | 9ed8c182abf1232c57446017da57b24c4351a34c (patch) | |
tree | 8ee4895b4e5ce7cdef68b74ce0ca94cb6eea3ae0 /dev-libs/ntl | |
parent | dev-libs/libclc: Bump to 16.0.6 (diff) | |
download | gentoo-9ed8c182abf1232c57446017da57b24c4351a34c.tar.gz gentoo-9ed8c182abf1232c57446017da57b24c4351a34c.tar.bz2 gentoo-9ed8c182abf1232c57446017da57b24c4351a34c.zip |
dev-libs/ntl: another AVX FFT build fix, this time on amd64.
Even on amd64, detection of the CPU features needed for AVX FFT can
fail. In particular, it can fail when -march=native is absent from
CXXFLAGS. Since the upstream documentation calls the AVX FFT
experimental, we disable it entirely. We also bring back NATIVE=on,
which should somewhat hide the CXXFLAGS issue until it can be addressed
upstream.
Closes: https://bugs.gentoo.org/815775
Signed-off-by: Michael Orlitzky <mjo@gentoo.org>
Diffstat (limited to 'dev-libs/ntl')
-rw-r--r-- | dev-libs/ntl/ntl-11.5.1-r4.ebuild | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/dev-libs/ntl/ntl-11.5.1-r4.ebuild b/dev-libs/ntl/ntl-11.5.1-r4.ebuild new file mode 100644 index 000000000000..a7373655ffa1 --- /dev/null +++ b/dev-libs/ntl/ntl-11.5.1-r4.ebuild @@ -0,0 +1,91 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit toolchain-funcs gnuconfig + +DESCRIPTION="High-performance and portable C++ number theory library" +HOMEPAGE="https://www.shoup.net/ntl/ https://github.com/libntl/ntl" +SRC_URI="https://www.shoup.net/ntl/${P}.tar.gz" + +LICENSE="LGPL-2.1+" +SLOT="0/44" +KEYWORDS="~amd64 ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos" +IUSE="doc threads" + +BDEPEND="dev-lang/perl" +DEPEND="dev-libs/gmp:0= + dev-libs/gf2x + threads? ( >=dev-libs/gf2x-1.2 )" +RDEPEND="${DEPEND}" + +S="${WORKDIR}/${P}/src" + +DOCS=( "${WORKDIR}/${P}"/README ) + +src_unpack() { + default + gnuconfig_update "${S}/libtool-origin/" +} + +src_configure() { + # The DoConfig script builds its own libtool, but doesn't + # really try to set up the build environment (bug 718892). + export CC="$(tc-getCC)" + export CXX="$(tc-getCXX)" + + # Currently the build system can build a static library or both + # static and shared libraries, but not only shared libraries. The + # name NTL_GMP_LIP is *not* a typo. + # + # We have left NTL_ENABLE_AVX_FFT unconditionally disabled: NTL's + # AVX2 detection can fail even when the CPU supports it (bug + # 815775), and moreover, can fail due to CXXFLAGS. When that + # happens, and if we try to use the AVX FFT, the build fails. + # Finally, doc/config.txt says, "this is experimental at moment, and + # may lead to worse performance." So we are probably not missing out + # on much. + # + # The NATIVE=on option adds "-march=native" to CXXFLAGS and should + # not be enabled on Gentoo, but is currently necessary for NTL's CPU + # feature detection to work (bug 815775). See the upstream issue, + # + # https://github.com/libntl/ntl/issues/22 + # + perl DoConfig \ + PREFIX="${EPREFIX}"/usr \ + LIBDIR="${EPREFIX}"/usr/$(get_libdir) \ + CXXFLAGS="${CXXFLAGS}" \ + CPPFLAGS="${CPPFLAGS}" \ + LDFLAGS="${LDFLAGS}" \ + CXX="$(tc-getCXX)" \ + AR="$(tc-getAR)" \ + RANLIB="$(tc-getRANLIB)" \ + SHARED=on \ + NTL_GMP_LIP=on \ + NTL_GF2X_LIB=on \ + NTL_THREADS=$(usex threads on off) \ + NTL_ENABLE_AVX_FFT=off \ + NATIVE=on \ + || die "DoConfig failed" + + if use doc; then + DOCS+=( "${WORKDIR}/${P}"/doc/*.txt ) + HTML_DOCS=( "${WORKDIR}/${P}"/doc/*.html "${WORKDIR}/${P}"/doc/*.gif ) + fi + + # 780534 - Required for rlibtool so it can find the generated libtool + ln -sf libtool-build/libtool . || die +} + +src_install() { + default + find "${ED}" -name '*.la' -delete || die + + # Use rm -f because the static archive may not be created when + # using (for example) slibtool-shared. + rm -f "${ED}/usr/$(get_libdir)"/libntl.a || die + + rm -r "${ED}"/usr/share/doc/NTL || die +} |