diff options
Diffstat (limited to 'var/spack/repos/builtin/packages/netlib-lapack/package.py')
-rw-r--r-- | var/spack/repos/builtin/packages/netlib-lapack/package.py | 71 |
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() |