From cee5c2e75504cd6e33394d5d9551289c9c33e2e6 Mon Sep 17 00:00:00 2001
From: Josh Essman <68349992+joshessman-llnl@users.noreply.github.com>
Date: Tue, 20 Oct 2020 16:26:34 -0500
Subject: mfem: Fix support for SUNDIALS and PETSc features (#19326)

* mfem: specify PETSC_DIR, link correct sundials libraries

* fix: only use PETSC_DIR directly for static builds

* fix: only use sundials nvecmpiplusx for MFEM 4.2+
---
 var/spack/repos/builtin/packages/mfem/package.py | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/var/spack/repos/builtin/packages/mfem/package.py b/var/spack/repos/builtin/packages/mfem/package.py
index d59db3d4f6..28287c48ee 100644
--- a/var/spack/repos/builtin/packages/mfem/package.py
+++ b/var/spack/repos/builtin/packages/mfem/package.py
@@ -474,10 +474,14 @@ class Mfem(Package):
                 ld_flags_from_library_list(spec[sun_spec].libs)]
 
         if '+petsc' in spec:
-            options += [
-                'PETSC_OPT=%s' % spec['petsc'].headers.cpp_flags,
-                'PETSC_LIB=%s' %
-                ld_flags_from_library_list(spec['petsc'].libs)]
+            if '+shared' in spec:
+                options += [
+                    'PETSC_OPT=%s' % spec['petsc'].headers.cpp_flags,
+                    'PETSC_LIB=%s' %
+                    ld_flags_from_library_list(spec['petsc'].libs)]
+            else:
+                options += [
+                    'PETSC_DIR=%s' % spec['petsc'].prefix]
 
         if '+pumi' in spec:
             pumi_libs = ['pumi', 'crv', 'ma', 'mds', 'apf', 'pcu', 'gmi',
@@ -676,9 +680,12 @@ class Mfem(Package):
     @property
     def sundials_components(self):
         """Return the SUNDIALS components needed by MFEM."""
-        sun_comps = 'arkode,cvode,nvecserial,kinsol'
+        sun_comps = 'arkode,cvodes,nvecserial,kinsol'
         if '+mpi' in self.spec:
-            sun_comps += ',nvecparhyp,nvecparallel'
+            if self.spec.satisfies('@4.2:'):
+                sun_comps += ',nvecparallel,nvecmpiplusx'
+            else:
+                sun_comps += ',nvecparhyp,nvecparallel'
         return sun_comps
 
     @property
-- 
cgit v1.2.3-70-g09d2