summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/suite-sparse/package.py
diff options
context:
space:
mode:
Diffstat (limited to 'var/spack/repos/builtin/packages/suite-sparse/package.py')
-rw-r--r--var/spack/repos/builtin/packages/suite-sparse/package.py68
1 files changed, 42 insertions, 26 deletions
diff --git a/var/spack/repos/builtin/packages/suite-sparse/package.py b/var/spack/repos/builtin/packages/suite-sparse/package.py
index 429a7f0706..3ab4f06068 100644
--- a/var/spack/repos/builtin/packages/suite-sparse/package.py
+++ b/var/spack/repos/builtin/packages/suite-sparse/package.py
@@ -1,27 +1,8 @@
-##############################################################################
-# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC.
-# Produced at the Lawrence Livermore National Laboratory.
+# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
-# This file is part of Spack.
-# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
-# LLNL-CODE-647188
-#
-# For details, see https://github.com/spack/spack
-# Please also see the NOTICE and LICENSE files for our notice and the LGPL.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License (as
-# published by the Free Software Foundation) version 2.1, February 1999.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
-# conditions of the GNU Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-##############################################################################
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
from spack import *
@@ -30,8 +11,11 @@ class SuiteSparse(Package):
SuiteSparse is a suite of sparse matrix algorithms
"""
homepage = 'http://faculty.cse.tamu.edu/davis/suitesparse.html'
- url = 'http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-4.5.1.tar.gz'
+ url = 'http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-5.2.0.tar.gz'
+ version('5.3.0', sha256='90e69713d8c454da5a95a839aea5d97d8d03d00cc1f667c4bdfca03f640f963d')
+ version('5.2.0', '8e625539dbeed061cc62fbdfed9be7cf')
+ version('5.1.0', '9c34d7c07ad5ce1624b8187faa132046')
version('4.5.5', '0a5b38af0016f009409a9606d2f1b555')
version('4.5.4', 'f6ab689442e64a1624a47aa220072d1b')
version('4.5.3', '8ec57324585df3c6483ad7f556afccbd')
@@ -44,6 +28,7 @@ class SuiteSparse(Package):
depends_on('blas')
depends_on('lapack')
+ depends_on('cmake', when='@5.2.0:', type='build')
depends_on('metis@5.1.0', when='@4.5.1:')
# in @4.5.1. TBB support in SPQR seems to be broken as TBB-related linkng
@@ -57,6 +42,12 @@ class SuiteSparse(Package):
# This patch removes unsupported flags for pgi compiler
patch('pgi.patch', when='%pgi')
+ # This patch adds '-lm' when linking libgraphblas and when using clang.
+ # Fixes 'libgraphblas.so.2.0.1: undefined reference to `__fpclassify''
+ patch('graphblas_libm_dep.patch', when='@5.2.0:5.2.99%clang')
+
+ conflicts('%gcc@:4.8', when='@5.2.0:', msg='gcc version must be at least 4.9 for suite-sparse@5.2.0:')
+
def install(self, spec, prefix):
# The build system of SuiteSparse is quite old-fashioned.
# It's basically a plain Makefile which include an header
@@ -94,10 +85,16 @@ class SuiteSparse(Package):
# with the TCOV path of SparseSuite 4.5.1's Suitesparse_config.mk,
# even though this fix is ugly
'BLAS=%s' % (spec['blas'].libs.ld_flags + (
- '-lstdc++' if '@4.5.1' in spec else '')),
+ ' -lstdc++' if '@4.5.1' in spec else '')),
'LAPACK=%s' % spec['lapack'].libs.ld_flags,
]
+ # 64bit blas in UMFPACK:
+ if (spec.satisfies('^openblas+ilp64') or
+ spec.satisfies('^intel-mkl+ilp64') or
+ spec.satisfies('^intel-parallel-studio+mkl+ilp64')):
+ make_args.append('UMFPACK_CONFIG=-DLONGBLAS="long long"')
+
# SuiteSparse defaults to using '-fno-common -fexceptions' in
# CFLAGS, but not all compilers use the same flags for these
# optimizations
@@ -107,7 +104,7 @@ class SuiteSparse(Package):
elif '%pgi' in spec:
make_args += ['CFLAGS+=--exceptions']
- if '%xl' in spec or '%xl_r' in spec:
+ if spack_f77.endswith('xlf') or spack_f77.endswith('xlf_r'):
make_args += ['CFLAGS+=-DBLAS_NO_UNDERSCORE']
# Intel TBB in SuiteSparseQR
@@ -118,3 +115,22 @@ class SuiteSparse(Package):
]
make('install', *make_args)
+
+ @property
+ def libs(self):
+ """Export the libraries of SuiteSparse.
+ Sample usage: spec['suite-sparse'].libs.ld_flags
+ spec['suite-sparse:klu,btf'].libs.ld_flags
+ """
+ # Component libraries, ordered by dependency. Any missing components?
+ all_comps = ['klu', 'btf', 'umfpack', 'cholmod', 'colamd', 'amd',
+ 'camd', 'ccolamd', 'cxsparse', 'ldl', 'rbio', 'spqr',
+ 'suitesparseconfig']
+ query_parameters = self.spec.last_query.extra_parameters
+ comps = all_comps if not query_parameters else query_parameters
+ libs = find_libraries(['lib' + c for c in comps], root=self.prefix.lib,
+ shared=True, recursive=False)
+ if not libs:
+ return None
+ libs += find_system_libraries('librt')
+ return libs