From 0d1c5f72be5e38e658e388d4c2eae2cc0782c3cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eric=20M=C3=BCller?= <mueller@kip.uni-heidelberg.de> Date: Tue, 14 Nov 2023 10:27:00 +0100 Subject: [PATCH] fix(netlib-xblas): build There's a missing dependency on `m4`. --- packages/netlib-xblas/package.py | 72 ++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 packages/netlib-xblas/package.py diff --git a/packages/netlib-xblas/package.py b/packages/netlib-xblas/package.py new file mode 100644 index 00000000..01bdb992 --- /dev/null +++ b/packages/netlib-xblas/package.py @@ -0,0 +1,72 @@ +# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class NetlibXblas(AutotoolsPackage): + """XBLAS is a reference implementation for extra precision BLAS. + + XBLAS is a reference implementation for the dense and banded BLAS + routines, along with extended and mixed precision version. Extended + precision is only used internally; input and output arguments remain + the same as in the existing BLAS. Extra precisions is implemented as + double-double (i.e., 128-bit total, 106-bit significand). Mixed + precision permits some input/output arguments of different types + (mixing real and complex) or precisions (mixing single and + double). This implementation is proof of concept, and no attempt was + made to optimize performance; performance should be as good as + straightforward but careful code written by hand.""" + + homepage = "https://www.netlib.org/xblas" + url = "https://www.netlib.org/xblas/xblas.tar.gz" + + version("1.0.248", sha256="b5fe7c71c2da1ed9bcdc5784a12c5fa9fb417577513fe8a38de5de0007f7aaa1") + + variant("fortran", default=True, description="Build Fortran interfaces") + variant("plain_blas", default=True, description="As part of XBLAS, build plain BLAS routines") + + provides("blas", when="+plain_blas") + + depends_on("m4", type="build") + + @property + def libs(self): + return find_libraries(["libxblas"], root=self.prefix, shared=False, recursive=True) + + def configure_args(self): + args = [] + + if self.spec.satisfies("~fortran"): + args += ["--disable-fortran"] + + if self.spec.satisfies("~plain_blas"): + args += ["--disable-plain-blas"] + + return args + + def install(self, spec, prefix): + mkdirp(prefix.lib) + install("libxblas.a", prefix.lib) + + if self.spec.satisfies("+plain_blas"): + # XBLAS should be a drop-in BLAS replacement + install("libxblas.a", join_path(prefix.lib, "libblas.a")) + + headers = [ + "f2c-bridge.h", + "blas_dense_proto.h", + "blas_enum.h", + "blas_extended.h", + "blas_extended_private.h", + "blas_extended_proto.h", + "blas_fpu.h", + "blas_malloc.h", + ] + mkdirp(prefix.include) + for h in headers: + install(join_path("src", h), prefix.include) + + return -- GitLab