More variants for MFEM (#4533)
* fixes #967 * Version bump to 0.9.1 - Bugfixes for spack find - 0.9.1 can read specs from current develop. * Don't assume spack is in the path when building docs. * adding mfem variants; do not assume build defaults * adjusting format to clarify options * fixing some build issues * fixing mfem+sundials * removing mesquite variant...turns out it is obsolete * adding examples to mfem; fixing sundials darwin installs * adding some additional variants and setting some configure flags by fiat * switching most check_variants logic to conflicts() directives * adding comment about cmake config * fixing flake8 issues; thought I had already done that * moving func def into install method * switch yes_no to no_yes; fix miss-spelling of miniapps * switching make target all to lib * changing yes_no to function as requested; fix problem with same in sundials * fix missing import sys directive * adding master and develop versions to amrex
This commit is contained in:
parent
71c5b19464
commit
39cb589510
@ -33,8 +33,9 @@ class Amrex(CMakePackage):
|
||||
homepage = "https://ccse.lbl.gov/AMReX/index.html"
|
||||
url = "https://github.com/AMReX-Codes/amrex.git"
|
||||
|
||||
version('develop', git='https://github.com/AMReX-Codes/amrex.git', tag='master')
|
||||
version('17.06', git='https://github.com/AMReX-Codes/amrex.git', commit='836d3c7')
|
||||
version('master', git='https://github.com/AMReX-Codes/amrex.git', tag='master')
|
||||
version('develop', git='https://github.com/AMReX-Codes/amrex.git', tag='develop')
|
||||
|
||||
variant('dims',
|
||||
default='3',
|
||||
|
@ -23,6 +23,7 @@
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
##############################################################################
|
||||
from spack import *
|
||||
import re
|
||||
|
||||
|
||||
class Mfem(Package):
|
||||
@ -62,132 +63,194 @@ class Mfem(Package):
|
||||
'841ea5cf58de6fae4de0f553b0e01ebaab9cd9c67fa821e8a715666ecf18fc57',
|
||||
url='http://goo.gl/xrScXn', extension='.tar.gz')
|
||||
|
||||
variant('metis', default=False, description='Activate support for metis')
|
||||
variant('hypre', default=False, description='Activate support for hypre')
|
||||
variant('suite-sparse', default=False,
|
||||
description='Activate support for SuiteSparse')
|
||||
variant('mpi', default=True, description='Activate support for MPI')
|
||||
variant('mpi', default=True,
|
||||
description='Enable MPI parallelism')
|
||||
variant('hypre', default=True,
|
||||
description='Required for MPI parallelism')
|
||||
variant('openmp', default=False,
|
||||
description='Enable OpenMP parallelism')
|
||||
variant('threadsafe', default=False,
|
||||
description=('Enable thread safe features.'
|
||||
' Required for OpenMP.'
|
||||
' May cause minor performance issues.'))
|
||||
variant('superlu-dist', default=False,
|
||||
description='Activate support for SuperLU_Dist')
|
||||
variant('lapack', default=False, description='Activate support for LAPACK')
|
||||
variant('debug', default=False, description='Build debug version')
|
||||
variant('netcdf', default=False, description='Activate NetCDF support')
|
||||
description='Enable MPI parallel, sparse direct solvers')
|
||||
variant('suite-sparse', default=False,
|
||||
description='Enable serial, sparse direct solvers')
|
||||
variant('petsc', default=False,
|
||||
description='Enable PETSc solvers, preconditioners, etc..')
|
||||
variant('sundials', default=False,
|
||||
description='Enable Sundials time integrators')
|
||||
variant('mpfr', default=False,
|
||||
description='Enable precise, 1D quadrature rules')
|
||||
variant('lapack', default=False,
|
||||
description='Use external blas/lapack routines')
|
||||
variant('debug', default=False,
|
||||
description='Build debug instead of optimized version')
|
||||
variant('netcdf', default=False,
|
||||
description='Enable Cubit/Genesis reader')
|
||||
variant('gzstream', default=True,
|
||||
description='Support zip\'d streams for I/O')
|
||||
variant('examples', default=False,
|
||||
description='Build and install examples')
|
||||
variant('miniapps', default=False,
|
||||
description='Build and install miniapps')
|
||||
|
||||
conflicts('+mpi', when='~hypre')
|
||||
conflicts('+suite-sparse', when='~lapack')
|
||||
conflicts('+superlu-dist', when='@:3.1')
|
||||
conflicts('+netcdf', when='@:3.1')
|
||||
|
||||
depends_on('blas', when='+lapack')
|
||||
depends_on('blas', when='+suite-sparse')
|
||||
depends_on('lapack', when='+lapack')
|
||||
depends_on('lapack', when='+suite-sparse')
|
||||
|
||||
depends_on('mpi', when='+mpi')
|
||||
depends_on('metis', when='+mpi')
|
||||
depends_on('hypre', when='+mpi')
|
||||
|
||||
depends_on('hypre', when='+hypre')
|
||||
|
||||
depends_on('metis@4:', when='+metis')
|
||||
|
||||
depends_on('suite-sparse', when='+suite-sparse')
|
||||
depends_on('blas', when='+suite-sparse')
|
||||
depends_on('lapack', when='+suite-sparse')
|
||||
depends_on('metis')
|
||||
depends_on('parmetis', when='+superlu-dist')
|
||||
depends_on('metis@5:', when='+superlu-dist')
|
||||
depends_on('metis@5:', when='+suite-sparse ^suite-sparse@4.5:')
|
||||
depends_on('cmake', when='^metis@5:', type='build')
|
||||
depends_on('hypre~internal-superlu', when='+mpi')
|
||||
depends_on('hypre@develop~internal-superlu', when='+petsc +hypre')
|
||||
|
||||
depends_on('sundials@2.7:+hypre', when='+sundials')
|
||||
depends_on('suite-sparse', when='+suite-sparse')
|
||||
depends_on('superlu-dist', when='@3.2: +superlu-dist')
|
||||
depends_on('petsc@develop', when='+petsc')
|
||||
|
||||
depends_on('mpfr', when='+mpfr')
|
||||
depends_on('cmake', when='^metis@5:', type='build')
|
||||
depends_on('netcdf', when='@3.2: +netcdf')
|
||||
depends_on('zlib', when='@3.2: +netcdf')
|
||||
depends_on('hdf5', when='@3.2: +netcdf')
|
||||
depends_on('libunwind', when='+debug')
|
||||
depends_on('zlib', when='+gzstream')
|
||||
|
||||
patch('mfem_ppc_build.patch', when='@3.2:3.3 arch=ppc64le')
|
||||
|
||||
def check_variants(self, spec):
|
||||
if '+mpi' in spec and ('+hypre' not in spec or '+metis' not in spec):
|
||||
raise InstallError('mfem+mpi must be built with +hypre ' +
|
||||
'and +metis!')
|
||||
if '+suite-sparse' in spec and ('+metis' not in spec or
|
||||
'+lapack' not in spec):
|
||||
raise InstallError('mfem+suite-sparse must be built with ' +
|
||||
'+metis and +lapack!')
|
||||
if 'metis@5:' in spec and '%clang' in spec and (
|
||||
'^cmake %gcc' not in spec):
|
||||
raise InstallError('To work around CMake bug with clang, must ' +
|
||||
'build mfem with mfem[+variants] %clang ' +
|
||||
'^cmake %gcc to force CMake to build with gcc')
|
||||
if '@:3.1' in spec and '+superlu-dist' in spec:
|
||||
raise InstallError('MFEM does not support SuperLU_DIST for ' +
|
||||
'versions 3.1 and earlier')
|
||||
if '@:3.1' in spec and '+netcdf' in spec:
|
||||
raise InstallError('MFEM does not support NetCDF for versions' +
|
||||
'3.1 and earlier')
|
||||
return
|
||||
|
||||
#
|
||||
# Note: Although MFEM does support CMake configuration, MFEM
|
||||
# development team indicates that vanilla GNU Make is the
|
||||
# preferred mode of configuration of MFEM and the mode most
|
||||
# likely to be up to date in supporting *all* of MFEM's
|
||||
# configuration options. So, don't use CMake
|
||||
#
|
||||
def install(self, spec, prefix):
|
||||
self.check_variants(spec)
|
||||
|
||||
options = ['PREFIX=%s' % prefix]
|
||||
def yes_no(varstr):
|
||||
return 'YES' if varstr in self.spec else 'NO'
|
||||
|
||||
metis5_str = 'NO'
|
||||
if '+superlu-dist' in spec or \
|
||||
spec.satisfies('+suite-sparse ^suite-sparse@4.5:') or \
|
||||
spec['metis'].satisfies('@5:'):
|
||||
metis5_str = 'YES'
|
||||
|
||||
threadsafe_str = 'NO'
|
||||
if '+openmp' in spec or '+threadsafe' in spec:
|
||||
threadsafe_str = 'YES'
|
||||
|
||||
options = [
|
||||
'PREFIX=%s' % prefix,
|
||||
'MFEM_USE_MEMALLOC=YES',
|
||||
'MFEM_DEBUG=%s' % yes_no('+debug'),
|
||||
'MFEM_USE_LIBUNWIND=%s' % yes_no('+debug'),
|
||||
'MFEM_USE_GZSTREAM=%s' % yes_no('+gzstream'),
|
||||
'MFEM_USE_METIS_5=%s' % metis5_str,
|
||||
'MFEM_THREAD_SAFE=%s' % threadsafe_str,
|
||||
'MFEM_USE_MPI=%s' % yes_no('+mpi'),
|
||||
'MFEM_USE_LAPACK=%s' % yes_no('+lapack'),
|
||||
'MFEM_USE_SUPERLU=%s' % yes_no('+superlu-dist'),
|
||||
'MFEM_USE_SUITESPARSE=%s' % yes_no('+suite-sparse'),
|
||||
'MFEM_USE_SUNDIALS=%s' % yes_no('+sundials'),
|
||||
'MFEM_USE_PETSC=%s' % yes_no('+petsc'),
|
||||
'MFEM_USE_NETCDF=%s' % yes_no('+netcdf'),
|
||||
'MFEM_USE_MPFR=%s' % yes_no('+mpfr'),
|
||||
'MFEM_USE_OPENMP=%s' % yes_no('+openmp')]
|
||||
|
||||
if '+hypre' in spec:
|
||||
options += [
|
||||
'HYPRE_DIR=%s' % spec['hypre'].prefix,
|
||||
'HYPRE_OPT=-I%s' % spec['hypre'].prefix.include,
|
||||
'HYPRE_LIB=-L%s' % spec['hypre'].prefix.lib + ' -lHYPRE']
|
||||
|
||||
if '+lapack' in spec:
|
||||
lapack_lib = (spec['lapack'].libs + spec['blas'].libs).ld_flags # NOQA: ignore=E501
|
||||
options.extend([
|
||||
'MFEM_USE_LAPACK=YES',
|
||||
options += [
|
||||
'LAPACK_OPT=-I%s' % spec['lapack'].prefix.include,
|
||||
'LAPACK_LIB=%s' % lapack_lib])
|
||||
|
||||
if '+hypre' in spec:
|
||||
options.extend([
|
||||
'HYPRE_DIR=%s' % spec['hypre'].prefix,
|
||||
'HYPRE_OPT=-I%s' % spec['hypre'].prefix.include,
|
||||
'HYPRE_LIB=-L%s' % spec['hypre'].prefix.lib +
|
||||
' -lHYPRE'])
|
||||
|
||||
if 'parmetis' in spec:
|
||||
metis_lib = '-L%s -lparmetis -lmetis' % spec['parmetis'].prefix.lib
|
||||
metis_str = 'MFEM_USE_METIS_5=YES'
|
||||
options.extend([metis_str,
|
||||
'METIS_DIR=%s' % spec['parmetis'].prefix,
|
||||
'METIS_OPT=-I%s' % spec['parmetis'].prefix.include,
|
||||
'METIS_LIB=%s' % metis_lib])
|
||||
elif 'metis' in spec:
|
||||
metis_lib = '-L%s -lmetis' % spec['metis'].prefix.lib
|
||||
if spec['metis'].satisfies('@5:'):
|
||||
metis_str = 'MFEM_USE_METIS_5=YES'
|
||||
else:
|
||||
metis_str = 'MFEM_USE_METIS_5=NO'
|
||||
options.extend([
|
||||
metis_str,
|
||||
'METIS_DIR=%s' % spec['metis'].prefix,
|
||||
'METIS_OPT=-I%s' % spec['metis'].prefix.include,
|
||||
'METIS_LIB=%s' % metis_lib])
|
||||
|
||||
if 'mpi' in spec:
|
||||
options.extend(['MFEM_USE_MPI=YES'])
|
||||
'LAPACK_LIB=%s' % lapack_lib]
|
||||
|
||||
if '+superlu-dist' in spec:
|
||||
metis_lib = '-L%s -lparmetis -lmetis' % spec['parmetis'].prefix.lib
|
||||
options += [
|
||||
'METIS_DIR=%s' % spec['parmetis'].prefix,
|
||||
'METIS_OPT=-I%s' % spec['parmetis'].prefix.include,
|
||||
'METIS_LIB=%s' % metis_lib]
|
||||
superlu_lib = '-L%s' % spec['superlu-dist'].prefix.lib
|
||||
superlu_lib += ' -lsuperlu_dist'
|
||||
sl_inc = 'SUPERLU_OPT=-I%s' % spec['superlu-dist'].prefix.include
|
||||
options.extend(['MFEM_USE_SUPERLU=YES',
|
||||
options += [
|
||||
'SUPERLU_DIR=%s' % spec['superlu-dist'].prefix,
|
||||
sl_inc,
|
||||
'SUPERLU_LIB=%s' % superlu_lib])
|
||||
'SUPERLU_OPT=-I%s' % spec['superlu-dist'].prefix.include,
|
||||
'SUPERLU_LIB=%s' % superlu_lib]
|
||||
else:
|
||||
metis_lib = '-L%s -lmetis' % spec['metis'].prefix.lib
|
||||
options += [
|
||||
'METIS_DIR=%s' % spec['metis'].prefix,
|
||||
'METIS_OPT=-I%s' % spec['metis'].prefix.include,
|
||||
'METIS_LIB=%s' % metis_lib]
|
||||
|
||||
if '+suite-sparse' in spec:
|
||||
ssp = spec['suite-sparse'].prefix
|
||||
ss_lib = '-L%s' % ssp.lib
|
||||
|
||||
if '@3.2:' in spec:
|
||||
ss_lib += ' -lklu -lbtf'
|
||||
|
||||
ss_lib += (' -lumfpack -lcholmod -lcolamd' +
|
||||
' -lamd -lcamd -lccolamd -lsuitesparseconfig')
|
||||
|
||||
no_rt = spec.satisfies('platform=darwin')
|
||||
if not no_rt:
|
||||
ss_lib += ' -lrt'
|
||||
ss_lib += (' ' + metis_lib + ' ' + lapack_lib)
|
||||
|
||||
options.extend(['MFEM_USE_SUITESPARSE=YES',
|
||||
options += [
|
||||
'SUITESPARSE_DIR=%s' % ssp,
|
||||
'SUITESPARSE_OPT=-I%s' % ssp.include,
|
||||
'SUITESPARSE_LIB=%s' % ss_lib])
|
||||
'SUITESPARSE_LIB=%s' % ss_lib]
|
||||
|
||||
if '+sundials' in spec:
|
||||
sundials_libs = (
|
||||
'-lsundials_arkode -lsundials_cvode'
|
||||
' -lsundials_nvecserial -lsundials_kinsol')
|
||||
if '+mpi' in spec:
|
||||
sundials_libs += (
|
||||
' -lsundials_nvecparhyp -lsundials_nvecparallel')
|
||||
options += [
|
||||
'SUNDIALS_DIR=%s' % spec['sundials'].prefix,
|
||||
'SUNDIALS_OPT=-I%s' % spec['sundials'].prefix.include,
|
||||
'SUNDIALS_LIB=-L%s %s' % (spec['sundials'].prefix.lib,
|
||||
sundials_libs)]
|
||||
|
||||
if '+petsc' in spec:
|
||||
f = open('%s/lib/pkgconfig/PETSc.pc' % spec['petsc'].prefix, 'r')
|
||||
for line in f:
|
||||
if re.search('^\s*Cflags: ', line):
|
||||
petsc_opts = re.sub('^\s*Cflags: (.*)', '\\1', line)
|
||||
elif re.search('^\s*Libs.*: ', line):
|
||||
petsc_libs = re.sub('^\s*Libs.*: (.*)', '\\1', line)
|
||||
f.close()
|
||||
options += [
|
||||
'PETSC_DIR=%s' % spec['petsc'].prefix,
|
||||
'PETSC_OPT=%s' % petsc_opts,
|
||||
'PETSC_LIB=-L%s -lpetsc %s' %
|
||||
(spec['petsc'].prefix.lib, petsc_libs)]
|
||||
|
||||
if '+netcdf' in spec:
|
||||
np = spec['netcdf'].prefix
|
||||
@ -196,28 +259,31 @@ def install(self, spec, prefix):
|
||||
nlib = '-L%s -lnetcdf ' % np.lib
|
||||
nlib += '-L%s -lhdf5_hl -lhdf5 ' % h5p.lib
|
||||
nlib += '-L%s -lz' % zp.lib
|
||||
options.extend(['MFEM_USE_NETCDF=YES',
|
||||
options += [
|
||||
'NETCDF_DIR=%s' % np,
|
||||
'HDF5_DIR=%s' % h5p,
|
||||
'ZLIB_DIR=%s' % zp,
|
||||
'NETCDF_OPT=-I%s' % np.include,
|
||||
'NETCDF_LIB=%s' % nlib])
|
||||
'NETCDF_LIB=%s' % nlib]
|
||||
|
||||
if '+debug' in spec:
|
||||
options.extend(['MFEM_DEBUG=YES'])
|
||||
if '+mpfr' in spec:
|
||||
options += ['MPFR_LIB=-L%s -lmpfr' % spec['mpfr'].prefix.lib]
|
||||
|
||||
if '+openmp' in spec:
|
||||
options += ['OPENMP_OPT = %s' % self.compiler.openmp_flag]
|
||||
|
||||
make('config', *options)
|
||||
make('all')
|
||||
make('lib')
|
||||
|
||||
# Run a small test before installation
|
||||
args = ['-m', join_path('data', 'star.mesh'), '--no-visualization']
|
||||
if '+mpi' in spec:
|
||||
Executable(join_path(spec['mpi'].prefix.bin,
|
||||
'mpirun'))('-np',
|
||||
'4',
|
||||
join_path('examples', 'ex1p'),
|
||||
*args)
|
||||
else:
|
||||
Executable(join_path('examples', 'ex1'))(*args)
|
||||
if self.run_tests:
|
||||
make('check')
|
||||
|
||||
make('install')
|
||||
|
||||
if '+examples' in spec:
|
||||
make('examples')
|
||||
install_tree('examples', join_path(prefix, 'examples'))
|
||||
|
||||
if '+miniapps' in spec:
|
||||
make('miniapps')
|
||||
install_tree('miniapps', join_path(prefix, 'miniapps'))
|
||||
|
@ -24,6 +24,7 @@
|
||||
##############################################################################
|
||||
from spack import *
|
||||
import os
|
||||
import sys
|
||||
|
||||
|
||||
class Sundials(Package):
|
||||
@ -33,21 +34,28 @@ class Sundials(Package):
|
||||
homepage = "http://computation.llnl.gov/casc/sundials/"
|
||||
url = "http://computation.llnl.gov/projects/sundials-suite-nonlinear-differential-algebraic-equation-solvers/download/sundials-2.6.2.tar.gz"
|
||||
|
||||
version('2.7.0', 'c304631b9bc82877d7b0e9f4d4fd94d3')
|
||||
version('2.6.2', '3deeb0ede9f514184c6bd83ecab77d95')
|
||||
|
||||
variant('mpi', default=True, description='Enable MPI support')
|
||||
variant('mpi', default=True,
|
||||
description='Enable MPI parallelism')
|
||||
variant('lapack', default=True,
|
||||
description='Build with external BLAS/LAPACK libraries')
|
||||
description='Use external BLAS/LAPACK libraries')
|
||||
variant('klu', default=False,
|
||||
description='Build with SuiteSparse KLU libraries')
|
||||
description='Enable KLU sparse, direct solver')
|
||||
variant('superlu', default=False,
|
||||
description='Build with SuperLU_MT libraries')
|
||||
variant('openmp', default=False, description='Enable OpenMP support')
|
||||
description='Enable SuperLU_MT sparse, direct solver')
|
||||
variant('openmp', default=False,
|
||||
description='Enable OpenMP parallelism')
|
||||
variant('pthread', default=True,
|
||||
description='Enable POSIX threads support')
|
||||
description='Enable Pthreads parallelism')
|
||||
variant('hypre', default=False,
|
||||
description='Enable Hypre parallel vector for MPI parallelism')
|
||||
|
||||
depends_on('cmake', type='build')
|
||||
depends_on('mpi', when='+mpi')
|
||||
depends_on('mpi', when='@2.7:+hypre')
|
||||
depends_on('hypre', when='@2.7:+hypre')
|
||||
depends_on('blas', when='+lapack')
|
||||
depends_on('lapack', when='+lapack')
|
||||
depends_on('suite-sparse', when='+klu')
|
||||
@ -55,6 +63,10 @@ class Sundials(Package):
|
||||
depends_on('superlu-mt+pthread', when='+superlu+pthread')
|
||||
|
||||
def install(self, spec, prefix):
|
||||
|
||||
def on_off(varstr):
|
||||
return 'ON' if varstr in self.spec else 'OFF'
|
||||
|
||||
cmake_args = std_cmake_args[:]
|
||||
cmake_args.extend([
|
||||
'-DBUILD_SHARED_LIBS=ON',
|
||||
@ -62,47 +74,53 @@ def install(self, spec, prefix):
|
||||
'-DCMAKE_Fortran_FLAGS={0}'.format(self.compiler.pic_flag),
|
||||
'-DEXAMPLES_ENABLE=ON',
|
||||
'-DEXAMPLES_INSTALL=ON',
|
||||
'-DFCMIX_ENABLE=ON'
|
||||
'-DFCMIX_ENABLE=ON',
|
||||
'-DMPI_ENABLE=%s' % on_off('+mpi'),
|
||||
'-DLAPACK_ENABLE=%s' % on_off('+lapack'),
|
||||
'-DKLU_ENABLE=%s' % on_off('+klu'),
|
||||
'-DHYPRE_ENABLE=%s' % on_off('+hypre'),
|
||||
'-DSUPERLUMT_ENABLE=%s' % on_off('+superlu'),
|
||||
'-DOPENMP_ENABLE=%s' % on_off('+openmp'),
|
||||
'-DPTHREAD_ENABLE=%s' % on_off('+pthread')
|
||||
])
|
||||
|
||||
# MPI support
|
||||
if '+mpi' in spec:
|
||||
cmake_args.extend([
|
||||
'-DMPI_ENABLE=ON',
|
||||
'-DMPI_MPICC={0}'.format(spec['mpi'].mpicc),
|
||||
'-DMPI_MPIF77={0}'.format(spec['mpi'].mpif77)
|
||||
])
|
||||
else:
|
||||
cmake_args.append('-DMPI_ENABLE=OFF')
|
||||
|
||||
# Building with Hypre
|
||||
if '+hypre' in spec and spec.satisfies('@2.7:'):
|
||||
cmake_args.extend([
|
||||
'-DHYPRE_INCLUDE_DIR={0}'.format(
|
||||
spec['hypre'].prefix.include),
|
||||
'-DHYPRE_LIBRARY_DIR={0}'.format(
|
||||
spec['hypre'].prefix.lib)
|
||||
])
|
||||
|
||||
# Building with LAPACK and BLAS
|
||||
if '+lapack' in spec:
|
||||
cmake_args.extend([
|
||||
'-DLAPACK_ENABLE=ON',
|
||||
'-DLAPACK_LIBRARIES={0}'.format(
|
||||
(spec['lapack'].libs +
|
||||
spec['blas'].libs).joined(';')
|
||||
)
|
||||
])
|
||||
else:
|
||||
cmake_args.append('-DLAPACK_ENABLE=OFF')
|
||||
|
||||
# Building with KLU
|
||||
if '+klu' in spec:
|
||||
cmake_args.extend([
|
||||
'-DKLU_ENABLE=ON',
|
||||
'-DKLU_INCLUDE_DIR={0}'.format(
|
||||
spec['suite-sparse'].prefix.include),
|
||||
'-DKLU_LIBRARY_DIR={0}'.format(
|
||||
spec['suite-sparse'].prefix.lib)
|
||||
])
|
||||
else:
|
||||
cmake_args.append('-DKLU_ENABLE=OFF')
|
||||
|
||||
# Building with SuperLU_MT
|
||||
if '+superlu' in spec:
|
||||
cmake_args.extend([
|
||||
'-DSUPERLUMT_ENABLE=ON',
|
||||
'-DSUPERLUMT_INCLUDE_DIR={0}'.format(
|
||||
spec['superlu-mt'].prefix.include),
|
||||
'-DSUPERLUMT_LIBRARY_DIR={0}'.format(
|
||||
@ -116,20 +134,6 @@ def install(self, spec, prefix):
|
||||
msg = 'You must choose either +openmp or +pthread when '
|
||||
msg += 'building with SuperLU_MT'
|
||||
raise RuntimeError(msg)
|
||||
else:
|
||||
cmake_args.append('-DSUPERLUMT_ENABLE=OFF')
|
||||
|
||||
# OpenMP support
|
||||
if '+openmp' in spec:
|
||||
cmake_args.append('-DOPENMP_ENABLE=ON')
|
||||
else:
|
||||
cmake_args.append('-DOPENMP_ENABLE=OFF')
|
||||
|
||||
# POSIX threads support
|
||||
if '+pthread' in spec:
|
||||
cmake_args.append('-DPTHREAD_ENABLE=ON')
|
||||
else:
|
||||
cmake_args.append('-DPTHREAD_ENABLE=OFF')
|
||||
|
||||
with working_dir('build', create=True):
|
||||
cmake('..', *cmake_args)
|
||||
@ -137,6 +141,9 @@ def install(self, spec, prefix):
|
||||
make()
|
||||
make('install')
|
||||
|
||||
if (sys.platform == 'darwin'):
|
||||
fix_darwin_install_name(prefix.lib)
|
||||
|
||||
install('LICENSE', prefix)
|
||||
|
||||
self.filter_compilers()
|
||||
|
Loading…
Reference in New Issue
Block a user