From d7c5aa46fe1e90a554a3f14430112eb68a187267 Mon Sep 17 00:00:00 2001 From: Weston Ortiz Date: Tue, 14 Sep 2021 00:53:53 -0600 Subject: trilinos: variant for libx11 (#25823) --- .../repos/builtin/packages/trilinos/package.py | 29 ++++++++++++++++------ 1 file changed, 21 insertions(+), 8 deletions(-) (limited to 'var') diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index 8f57fc2d9e..038cd8bc63 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -3,9 +3,11 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os import sys from spack import * +from spack.build_environment import dso_suffix from spack.operating_systems.mac_os import macos_version 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', default=False, description='Compile with SuperLU 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') # Package options (alphabet order) @@ -323,7 +326,7 @@ class Trilinos(CMakePackage, CudaPackage): # Variant requirements from packages depends_on('metis', when='+zoltan') - depends_on('libx11', when='+exodus') + depends_on('libx11', when='+x11') depends_on('matio', when='+exodus') depends_on('netcdf-c', when="+exodus") depends_on('netcdf-c+mpi+parallel-netcdf', when="+exodus+mpi@12.12.1:") @@ -685,14 +688,24 @@ class Trilinos(CMakePackage, CudaPackage): # ################# System-specific ###################### # 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']): - mpifc = Executable(spec['mpi'].mpifc) - libgfortran = mpifc('--print-file-name', 'libgfortran.a', output=str) - options.append(define( - 'Trilinos_EXTRA_LINK_FLAGS', - '-L%s/ -lgfortran' % (libgfortran), - )) + fc = Executable(spec['mpi'].mpifc) if ( + '+mpi' in spec) else Executable(spack_fc) + libgfortran = fc('--print-file-name', + 'libgfortran.' + dso_suffix, + output=str).strip() + # if libgfortran is equal to "libgfortran." 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 -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'): # use @rpath on Sierra due to limit of dynamic loader -- cgit v1.2.3-70-g09d2