# Copyright 2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 PYTHON_COMPAT=( python3_{11..14} ) inherit meson python-any-r1 toolchain-funcs LAPACK_VER=3.12.1 DESCRIPTION="BLAS/LAPACK wrappers for FlexiBLAS" HOMEPAGE="https://gitweb.gentoo.org/proj/blas-lapack-aux-wrapper.git/" SRC_URI=" https://dev.gentoo.org/~mgorny/dist/${P}.tar.xz test? ( https://github.com/Reference-LAPACK/lapack/archive/v${LAPACK_VER}.tar.gz -> lapack-${LAPACK_VER}.tar.gz ) " LICENSE="GPL-2+" SLOT="0" KEYWORDS="~amd64" IUSE="index64 test" RESTRICT="!test? ( test )" RDEPEND=" !sci-libs/lapack[-flexiblas(-)] >=sci-libs/flexiblas-3.4.82-r4:=[index64(-)?] " DEPEND=" ${RDEPEND} sci-libs/lapack:=[flexiblas(-),index64(-)?,lapacke] " BDEPEND=" ${PYTHON_DEPS} " # we do not call the compiler, only the linker QA_FLAGS_IGNORED=".*" src_configure() { local emesonargs=( -Dilp64=$(usex index64 true false) ) meson_src_configure } check_result() { local f=${1} if ! grep -q "flexiblas.*TRIGGER-WARNING" "${f}.out"; then die "No FlexiBLAS output found in ${f}.out" fi if grep -q -i "FAIL" "${f}.out"; then die "Test failed in ${f}.out" fi } run_test() { local f=${1} einfo "Running ${f} ..." "${f}" &> "${f}.out" || die "Running ${f} failed" check_result "${f}" } src_test() { # Force a nonexisting provider to: # a. get indication that FlexiBLAS is actually used on stderr. # b. force fallback to Netlib LAPACK. local -x FLEXIBLAS=trigger-warning tc-export CC FC AR RANLIB cd "${WORKDIR}/lapack-${LAPACK_VER}" || die cat > make.inc <<-EOF || die FFLAGS_DRV = \$(FFLAGS) FFLAGS_NOOPT = \$(FFLAGS) -O0 ARFLAGS = rv BLASLIB = ${BUILD_DIR}/libblas.so CBLASLIB = ${BUILD_DIR}/libcblas.so LAPACKLIB = ${BUILD_DIR}/liblapack.so TMGLIB = \$(TOPSRCDIR)/libtmglib.a LAPACKELIB = ${BUILD_DIR}/liblapacke.so EOF emake -C BLAS/TESTING xblat1d emake -C CBLAS include/cblas_mangling.h run_test BLAS/TESTING/xblat1d emake -C CBLAS/testing xdcblat1 run_test CBLAS/testing/xdcblat1 emake -C TESTING/MATGEN emake -C TESTING dbb.out check_result TESTING/dbb } src_install() { meson_src_install local f cd "${ED}/usr/$(get_libdir)" || die mkdir blas-lapack-aux-wrapper || die mv lib* blas-lapack-aux-wrapper/ || die for f in blas-lapack-aux-wrapper/*.so; do ln -s "${f}" || die done }