From a88c6da9acc234484d34acf6588c838bef09e8c4 Mon Sep 17 00:00:00 2001
From: Denis Davydov <davydden@gmail.com>
Date: Sat, 2 Apr 2016 12:02:29 +0200
Subject: [PATCH] suite-sparse: fix a bug where interla metis was used; add TBB
 variant

---
 .../builtin/packages/suite-sparse/package.py  | 36 +++++++++++++++----
 1 file changed, 29 insertions(+), 7 deletions(-)

diff --git a/var/spack/repos/builtin/packages/suite-sparse/package.py b/var/spack/repos/builtin/packages/suite-sparse/package.py
index c2196dcec4..f2e71f7479 100644
--- a/var/spack/repos/builtin/packages/suite-sparse/package.py
+++ b/var/spack/repos/builtin/packages/suite-sparse/package.py
@@ -10,10 +10,13 @@ class SuiteSparse(Package):
 
     version('4.5.1', 'f0ea9aad8d2d1ffec66a5b6bfeff5319')
 
+    variant('tbb', default=True, description='Build with Intel TBB')
+
     depends_on('blas')
     depends_on('lapack')
 
     depends_on('metis@5.1.0', when='@4.5.1')
+    depends_on('tbb', when='+tbb')
 
     def install(self, spec, prefix):
         # The build system of SuiteSparse is quite old-fashioned
@@ -21,16 +24,35 @@ def install(self, spec, prefix):
         # with a lot of convoluted logic in it.
         # Any kind of customization will need to go through filtering of that file
 
-        # FIXME : this actually uses the current workaround
-        # FIXME : (blas / lapack always provide libblas and liblapack as aliases)
-        make('install', 'INSTALL=%s' % prefix,
+        make_args = ['INSTALL=%s' % prefix]
 
-             # inject Spack compiler wrappers
+        # inject Spack compiler wrappers
+        make_args.extend([
              'AUTOCC=no',
              'CC=cc',
              'CXX=c++',
              'F77=f77',
+        ])
+
+        # use Spack's metis in CHOLMOD/Partition module,
+        # otherwise internal Metis will be compiled
+        make_args.extend([
+             'MY_METIS_LIB=-L%s -lmetis' % spec['metis'].prefix.lib,
+             'MY_METIS_INC=%s' % spec['metis'].prefix.include,
+        ])
+
+        # Intel TBB in SuiteSparseQR
+        if '+tbb' in spec:
+            make_args.extend([
+                'SPQR_CONFIG=-DHAVE_TBB',
+                'TBB=-L%s -ltbb' % spec['tbb'].prefix.lib,
+            ])
+
+        # BLAS arguments require path to libraries
+        # FIXME : (blas / lapack always provide libblas and liblapack as aliases)
+        make_args.extend([
+            'BLAS=-lblas',
+            'LAPACK=-llapack'
+        ])
 
-             # BLAS arguments require path to libraries
-             'BLAS=-lblas',
-             'LAPACK=-llapack')
+        make('install', *make_args)
-- 
GitLab