New package: sparskit (#23848)
This commit is contained in:
parent
d8cbd37aaa
commit
fb156ae4bc
76
var/spack/repos/builtin/packages/sparskit/package.py
Normal file
76
var/spack/repos/builtin/packages/sparskit/package.py
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
# Copyright 2013-2021 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 import *
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
class Sparskit(MakefilePackage):
|
||||||
|
"""SPARSKIT: A basic tool-kit for sparse matrix computations (Version 2).
|
||||||
|
|
||||||
|
Made by Yousef Saad, University of Minnesota.
|
||||||
|
"""
|
||||||
|
|
||||||
|
homepage = "https://www-users.cs.umn.edu/~saad/software/SPARSKIT/"
|
||||||
|
|
||||||
|
version('develop', sha256='ecdd0a9968d6b45153a328710a42fe87600f0bba0e3c53896090b8ae1c113b7a',
|
||||||
|
url='http://www-users.cs.umn.edu/~saad/software/SPARSKIT/SPARSKIT2.tar.gz')
|
||||||
|
|
||||||
|
# The library uses blas routine which needs to be known when the lib is used.
|
||||||
|
# A dependent package should add self.spec['blas'].libs.ld_flags
|
||||||
|
# at the end of its link line.
|
||||||
|
# But, asis, this packages compiles without needing to know about it.
|
||||||
|
# depends_on('blas', type='run')
|
||||||
|
|
||||||
|
variant('pic', default=True,
|
||||||
|
description='Compile with position independent code.')
|
||||||
|
variant('debug', default=False,
|
||||||
|
description='Builds a debug version of the library')
|
||||||
|
|
||||||
|
# We provide the standard Make flags here:
|
||||||
|
# https://spack.readthedocs.io/en/latest/packaging_guide.html?highlight=flag_handler#compiler-flags
|
||||||
|
def flag_handler(self, name, flags):
|
||||||
|
spec = self.spec
|
||||||
|
if '+pic' in spec:
|
||||||
|
if name == 'fflags':
|
||||||
|
flags.append(self.compiler.fc_pic_flag)
|
||||||
|
if name == 'fflags':
|
||||||
|
if 'gfortran' in self.compiler.fc:
|
||||||
|
flags.append('-std=legacy')
|
||||||
|
flags.append('-Wall')
|
||||||
|
if '+debug' in spec:
|
||||||
|
if '-g' in self.compiler.debug_flags:
|
||||||
|
flags.append('-g')
|
||||||
|
if '-O0' in self.compiler.opt_flags:
|
||||||
|
flags.append('-O0')
|
||||||
|
elif '-O' in self.compiler.opt_flags:
|
||||||
|
flags.append('-O')
|
||||||
|
else:
|
||||||
|
if '-O3' in self.compiler.opt_flags:
|
||||||
|
flags.append('-O3')
|
||||||
|
elif '-O2' in self.compiler.opt_flags:
|
||||||
|
flags.append('-O2')
|
||||||
|
|
||||||
|
return (None, flags, None)
|
||||||
|
|
||||||
|
def edit(self, spec, prefix):
|
||||||
|
mkfile = FileFilter('makefile')
|
||||||
|
mkfile.filter(r'^(OPT).*=.+', r'\1= -c $(FFLAGS)')
|
||||||
|
if os.path.exists('libskit.a'):
|
||||||
|
os.unlink('libskit.a')
|
||||||
|
|
||||||
|
def build(self, spec, prefix):
|
||||||
|
make('clean')
|
||||||
|
make('F77={0}'.format(spack_fc))
|
||||||
|
|
||||||
|
def install(self, spec, prefix):
|
||||||
|
mkdirp(prefix.lib)
|
||||||
|
install('libskit.*', prefix.lib)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def libs(self):
|
||||||
|
return find_libraries(
|
||||||
|
"libskit*", root=self.prefix, shared=False, recursive=True
|
||||||
|
)
|
Loading…
Reference in New Issue
Block a user