summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/netlib-lapack/package.py
diff options
context:
space:
mode:
Diffstat (limited to 'var/spack/repos/builtin/packages/netlib-lapack/package.py')
-rw-r--r--var/spack/repos/builtin/packages/netlib-lapack/package.py71
1 files changed, 22 insertions, 49 deletions
diff --git a/var/spack/repos/builtin/packages/netlib-lapack/package.py b/var/spack/repos/builtin/packages/netlib-lapack/package.py
index 4908fc1b9d..387657d1ca 100644
--- a/var/spack/repos/builtin/packages/netlib-lapack/package.py
+++ b/var/spack/repos/builtin/packages/netlib-lapack/package.py
@@ -2,7 +2,7 @@
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
-
+import spack.build_systems.cmake
from spack.package import *
@@ -55,6 +55,8 @@ class NetlibLapack(CMakePackage):
# netlib-lapack is the reference implementation of LAPACK
for ver in [
+ "3.10.1",
+ "3.10.0",
"3.9.1",
"3.9.0",
"3.8.0",
@@ -182,82 +184,53 @@ class NetlibLapack(CMakePackage):
lapacke_h = join_path(include_dir, "lapacke.h")
return HeaderList([cblas_h, lapacke_h])
- @property
- def build_directory(self):
- return join_path(
- self.stage.source_path,
- "spack-build-shared" if self._building_shared else "spack-build-static",
- )
+class CMakeBuilder(spack.build_systems.cmake.CMakeBuilder):
def cmake_args(self):
- args = ["-DBUILD_SHARED_LIBS:BOOL=" + ("ON" if self._building_shared else "OFF")]
-
- if self.spec.satisfies("+lapacke"):
- args.extend(["-DLAPACKE:BOOL=ON", "-DLAPACKE_WITH_TMG:BOOL=ON"])
- else:
- args.extend(["-DLAPACKE:BOOL=OFF", "-DLAPACKE_WITH_TMG:BOOL=OFF"])
-
- if self.spec.satisfies("@3.6.0:"):
- args.append("-DCBLAS=ON") # always build CBLAS
+ args = [
+ self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
+ self.define_from_variant("LAPACKE", "lapacke"),
+ self.define_from_variant("LAPACKE_WITH_TMG", "lapacke"),
+ self.define("CBLAS", self.spec.satisfies("@3.6.0:")),
+ ]
if self.spec.satisfies("%intel"):
# Intel compiler finds serious syntax issues when trying to
# build CBLAS and LapackE
- args.extend(["-DCBLAS=OFF", "-DLAPACKE:BOOL=OFF"])
+ args.extend([self.define("CBLAS", False), self.define("LAPACKE", False)])
if self.spec.satisfies("%xl") or self.spec.satisfies("%xl_r"):
# use F77 compiler if IBM XL
args.extend(
[
- "-DCMAKE_Fortran_COMPILER=" + self.compiler.f77,
- "-DCMAKE_Fortran_FLAGS="
- + (" ".join(self.spec.compiler_flags["fflags"]))
- + " -O3 -qnohot",
+ self.define("CMAKE_Fortran_COMPILER", self.compiler.f77),
+ self.define(
+ "CMAKE_Fortran_FLAGS",
+ " ".join(self.spec.compiler_flags["fflags"]) + " -O3 -qnohot",
+ ),
]
)
# deprecated routines are commonly needed by, for example, suitesparse
# Note that OpenBLAS spack is built with deprecated routines
- args.append("-DBUILD_DEPRECATED:BOOL=ON")
+ args.append(self.define("BUILD_DEPRECATED", True))
if self.spec.satisfies("+external-blas"):
args.extend(
[
- "-DUSE_OPTIMIZED_BLAS:BOOL=ON",
- "-DBLAS_LIBRARIES:PATH=" + self.spec["blas"].libs.joined(";"),
+ self.define("USE_OPTIMIZED_BLAS", True),
+ self.define("BLAS_LIBRARIES:PATH", self.spec["blas"].libs.joined(";")),
]
)
if self.spec.satisfies("+xblas"):
args.extend(
[
- "-DXBLAS_INCLUDE_DIR=" + self.spec["netlib-xblas"].prefix.include,
- "-DXBLAS_LIBRARY=" + self.spec["netlib-xblas"].libs.joined(";"),
+ self.define("XBLAS_INCLUDE_DIR", self.spec["netlib-xblas"].prefix.include),
+ self.define("XBLAS_LIBRARY", self.spec["netlib-xblas"].libs.joined(";")),
]
)
- args.append("-DBUILD_TESTING:BOOL=" + ("ON" if self.run_tests else "OFF"))
+ args.append(self.define("BUILD_TESTING", self.pkg.run_tests))
return args
-
- # Build, install, and check both static and shared versions of the
- # libraries when +shared
- @when("+shared")
- def cmake(self, spec, prefix):
- for self._building_shared in (False, True):
- super(NetlibLapack, self).cmake(spec, prefix)
-
- @when("+shared")
- def build(self, spec, prefix):
- for self._building_shared in (False, True):
- super(NetlibLapack, self).build(spec, prefix)
-
- @when("+shared")
- def install(self, spec, prefix):
- for self._building_shared in (False, True):
- super(NetlibLapack, self).install(spec, prefix)
-
- @when("+shared")
- def check(self):
- for self._building_shared in (False, True):
- super(NetlibLapack, self).check()