diff options
author | Seth R. Johnson <johnsonsr@ornl.gov> | 2021-11-05 09:07:33 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-05 09:07:33 -0400 |
commit | 42d8e9eeb5c99805d99d8214d127b243a59da787 (patch) | |
tree | c07aa0eb63e4111bc1efd28d80b139ee89a828d9 /var | |
parent | d2c26fef46b66935bda9bca386455d983eab510f (diff) | |
download | spack-42d8e9eeb5c99805d99d8214d127b243a59da787.tar.gz spack-42d8e9eeb5c99805d99d8214d127b243a59da787.tar.bz2 spack-42d8e9eeb5c99805d99d8214d127b243a59da787.tar.xz spack-42d8e9eeb5c99805d99d8214d127b243a59da787.zip |
trilinos: explicitly use variants instead of spec for TPLs (#27221)
Fixes https://github.com/spack/spack/pull/27188#issuecomment-961212214
Diffstat (limited to 'var')
-rw-r--r-- | var/spack/repos/builtin/packages/trilinos/package.py | 59 |
1 files changed, 34 insertions, 25 deletions
diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 3b03b9dc37..ae8cd1a43d 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -78,8 +78,8 @@ class Trilinos(CMakePackage, CudaPackage): variant('wrapper', default=False, description="Use nvcc-wrapper for CUDA build") # TPLs (alphabet order) - variant('boost', default=False, description='Compile with Boost') variant('adios2', default=False, description='Enable ADIOS2') + variant('boost', default=False, description='Compile with Boost') variant('hdf5', default=False, description='Compile with HDF5') variant('hypre', default=False, description='Compile with Hypre preconditioner') variant('mpi', default=True, description='Compile with MPI parallelism') @@ -556,48 +556,57 @@ class Trilinos(CMakePackage, CudaPackage): # ######################### TPLs ############################# - # Enable TPLs based on whether they're in our spec, not whether they're - # variant names: packages/features should disable availability - tpl_dep_map = [ + def define_tpl(trilinos_name, spack_name, have_dep): + options.append(define('TPL_ENABLE_' + trilinos_name, have_dep)) + if not have_dep: + return + depspec = spec[spack_name] + libs = depspec.libs + options.extend([ + define(trilinos_name + '_INCLUDE_DIRS', depspec.prefix.include), + define(trilinos_name + '_ROOT', depspec.prefix), + define(trilinos_name + '_LIBRARY_NAMES', libs.names), + define(trilinos_name + '_LIBRARY_DIRS', libs.directories), + ]) + + # Enable these TPLs explicitly from variant options. + tpl_variant_map = [ ('ADIOS2', 'adios2'), - ('BLAS', 'blas'), ('Boost', 'boost'), - ('CGNS', 'cgns'), ('CUDA', 'cuda'), ('HDF5', 'hdf5'), ('HYPRE', 'hypre'), + ('MUMPS', 'mumps'), + ('UMFPACK', 'suite-sparse'), + ('SuperLU', 'superlu'), + ('SuperLUDist', 'superlu-dist'), + ('X11', 'x11'), + ] + if spec.satisfies('@13.0.2:'): + tpl_variant_map.append(('STRUMPACK', 'strumpack')) + + for tpl_name, var_name in tpl_variant_map: + define_tpl(tpl_name, var_name, spec.variants[var_name].value) + + # Enable these TPLs based on whether they're in our spec; prefer to + # require this way so that packages/features disable availability + tpl_dep_map = [ + ('BLAS', 'blas'), + ('CGNS', 'cgns'), ('LAPACK', 'lapack'), ('Matio', 'matio'), ('METIS', 'metis'), - ('MUMPS', 'mumps'), ('Netcdf', 'netcdf-c'), ('SCALAPACK', 'scalapack'), - ('SuperLU', 'superlu'), - ('SuperLUDist', 'superlu-dist'), - ('UMFPACK', 'suite-sparse'), - ('X11', 'libx11'), ('Zlib', 'zlib'), ] if spec.satisfies('@12.12.1:'): tpl_dep_map.append(('Pnetcdf', 'parallel-netcdf')) if spec.satisfies('@13:'): tpl_dep_map.append(('HWLOC', 'hwloc')) - if spec.satisfies('@13.0.2:'): - tpl_dep_map.append(('STRUMPACK', 'strumpack')) for tpl_name, dep_name in tpl_dep_map: - have_dep = (dep_name in spec) - options.append(define('TPL_ENABLE_' + tpl_name, have_dep)) - if not have_dep: - continue - depspec = spec[dep_name] - libs = depspec.libs - options.extend([ - define(tpl_name + '_INCLUDE_DIRS', depspec.prefix.include), - define(tpl_name + '_ROOT', depspec.prefix), - define(tpl_name + '_LIBRARY_NAMES', libs.names), - define(tpl_name + '_LIBRARY_DIRS', libs.directories), - ]) + define_tpl(tpl_name, dep_name, dep_name in spec) # MPI settings options.append(define_tpl_enable('MPI')) |