trilinos: variant for libx11 (#25823)

This commit is contained in:
Weston Ortiz 2021-09-14 00:53:53 -06:00 committed by GitHub
parent f6eb16982a
commit d7c5aa46fe
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -3,9 +3,11 @@
# #
# SPDX-License-Identifier: (Apache-2.0 OR MIT) # SPDX-License-Identifier: (Apache-2.0 OR MIT)
import os
import sys import sys
from spack import * from spack import *
from spack.build_environment import dso_suffix
from spack.operating_systems.mac_os import macos_version from spack.operating_systems.mac_os import macos_version
from spack.pkg.builtin.kokkos import Kokkos from spack.pkg.builtin.kokkos import Kokkos
@ -83,6 +85,7 @@ class Trilinos(CMakePackage, CudaPackage):
variant('superlu-dist', default=False, description='Compile with SuperluDist solvers') variant('superlu-dist', default=False, description='Compile with SuperluDist solvers')
variant('superlu', default=False, description='Compile with SuperLU solvers') variant('superlu', default=False, description='Compile with SuperLU solvers')
variant('strumpack', default=False, description='Compile with STRUMPACK solvers') variant('strumpack', default=False, description='Compile with STRUMPACK solvers')
variant('x11', default=False, description='Compile with X11 when +exodus')
variant('zlib', default=False, description='Compile with zlib') variant('zlib', default=False, description='Compile with zlib')
# Package options (alphabet order) # Package options (alphabet order)
@ -323,7 +326,7 @@ class Trilinos(CMakePackage, CudaPackage):
# Variant requirements from packages # Variant requirements from packages
depends_on('metis', when='+zoltan') depends_on('metis', when='+zoltan')
depends_on('libx11', when='+exodus') depends_on('libx11', when='+x11')
depends_on('matio', when='+exodus') depends_on('matio', when='+exodus')
depends_on('netcdf-c', when="+exodus") depends_on('netcdf-c', when="+exodus")
depends_on('netcdf-c+mpi+parallel-netcdf', when="+exodus+mpi@12.12.1:") depends_on('netcdf-c+mpi+parallel-netcdf', when="+exodus+mpi@12.12.1:")
@ -685,14 +688,24 @@ def define_enable(suffix, value=None):
# ################# System-specific ###################### # ################# System-specific ######################
# Fortran lib (assumes clang is built with gfortran!) # Fortran lib (assumes clang is built with gfortran!)
if ('+fortran +mpi' in spec if ('+fortran' in spec
and spec.compiler.name in ['gcc', 'clang', 'apple-clang']): and spec.compiler.name in ['gcc', 'clang', 'apple-clang']):
mpifc = Executable(spec['mpi'].mpifc) fc = Executable(spec['mpi'].mpifc) if (
libgfortran = mpifc('--print-file-name', 'libgfortran.a', output=str) '+mpi' in spec) else Executable(spack_fc)
options.append(define( libgfortran = fc('--print-file-name',
'Trilinos_EXTRA_LINK_FLAGS', 'libgfortran.' + dso_suffix,
'-L%s/ -lgfortran' % (libgfortran), output=str).strip()
)) # if libgfortran is equal to "libgfortran.<dso_suffix>" then
# print-file-name failed, use static library instead
if libgfortran == 'libgfortran.' + dso_suffix:
libgfortran = fc('--print-file-name',
'libgfortran.a',
output=str).strip()
# -L<libdir> -lgfortran required for OSX
# https://github.com/spack/spack/pull/25823#issuecomment-917231118
options.append(
define('Trilinos_EXTRA_LINK_FLAGS',
'-L%s/ -lgfortran' % os.path.dirname(libgfortran)))
if sys.platform == 'darwin' and macos_version() >= Version('10.12'): if sys.platform == 'darwin' and macos_version() >= Version('10.12'):
# use @rpath on Sierra due to limit of dynamic loader # use @rpath on Sierra due to limit of dynamic loader