99 lines
3.9 KiB
Python
99 lines
3.9 KiB
Python
# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other
|
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
|
#
|
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
|
|
|
|
|
from spack.package import *
|
|
|
|
|
|
class XsdkExamples(CMakePackage, CudaPackage):
|
|
"""xSDK Examples show usage of libraries in the xSDK package."""
|
|
|
|
homepage = 'http://xsdk.info'
|
|
url = 'https://github.com/xsdk-project/xsdk-examples/archive/v0.1.0.tar.gz'
|
|
git = "https://github.com/xsdk-project/xsdk-examples"
|
|
|
|
maintainers = ['acfisher', 'balay', 'balos1', 'luszczek']
|
|
|
|
version('develop', branch='master')
|
|
version('0.3.0', sha256='e7444a403c0a69eeeb34a4068be4d6f4e5b54cbfd275629019b9236a538a739e')
|
|
version('0.2.0', sha256='cf26e3a16a83eba6fb297fb106b0934046f17cf978f96243b44d9d17ad186db6')
|
|
version('0.1.0', sha256='d24cab1db7c0872b6474d69e598df9c8e25d254d09c425fb0a6a8d6469b8018f')
|
|
|
|
depends_on('xsdk+cuda', when='+cuda')
|
|
for sm_ in CudaPackage.cuda_arch_values:
|
|
depends_on('xsdk+cuda cuda_arch={0}'.format(sm_),
|
|
when='+cuda cuda_arch={0}'.format(sm_))
|
|
|
|
depends_on('xsdk@develop', when='@develop')
|
|
depends_on('xsdk@0.7.0', when='@0.3.0')
|
|
depends_on('xsdk@0.7.0 ^mfem+strumpack', when='@0.3.0 ^xsdk+strumpack')
|
|
depends_on('xsdk@0.7.0 ^sundials+magma', when='@0.3.0 +cuda')
|
|
depends_on('xsdk@0.6.0', when='@0.2.0')
|
|
depends_on('xsdk@0.5.0', when='@0.1.0')
|
|
depends_on('mpi')
|
|
depends_on('cmake@3.21:', type='build', when='@0.3.0:')
|
|
|
|
def cmake_args(self):
|
|
spec = self.spec
|
|
|
|
args = [
|
|
'-DCMAKE_C_COMPILER=%s' % spec['mpi'].mpicc,
|
|
'-DCMAKE_CXX_COMPILER=%s' % spec['mpi'].mpicxx,
|
|
'-DENABLE_HYPRE=ON',
|
|
'-DHYPRE_DIR=%s' % spec['hypre'].prefix,
|
|
'-DENABLE_MFEM=ON',
|
|
'-DMETIS_DIR=%s' % spec['metis'].prefix,
|
|
'-DMFEM_DIR=%s' % spec['mfem'].prefix,
|
|
'-DENABLE_PETSC=ON',
|
|
'-DPETSc_DIR=%s' % spec['petsc'].prefix,
|
|
'-DENABLE_PLASMA=ON',
|
|
'-DPLASMA_DIR=%s' % spec['plasma'].prefix,
|
|
'-DENABLE_SUNDIALS=ON',
|
|
'-DSUNDIALS_DIR=%s' % spec['sundials'].prefix,
|
|
'-DENABLE_SUPERLU=ON',
|
|
'-DSUPERLUDIST_DIR=%s' % spec['superlu-dist'].prefix
|
|
]
|
|
|
|
if '+cuda' in spec: # if cuda variant was activated for xsdk
|
|
args.extend([
|
|
'-DENABLE_CUDA=ON',
|
|
'-DCMAKE_CUDA_ARCHITECTURES=%s' % spec.variants['cuda_arch'].value
|
|
])
|
|
if '+ginkgo' in spec: # if ginkgo variant was activated for xsdk
|
|
args.extend([
|
|
'-DENABLE_GINKGO=ON',
|
|
'-DGinkgo_DIR=%s' % spec['ginkgo'].prefix
|
|
])
|
|
if '+magma' in spec: # if magma variant was activated for xsdk
|
|
args.extend([
|
|
'-DENABLE_MAGMA=ON',
|
|
'-DMAGMA_DIR=%s' % spec['magma'].prefix
|
|
])
|
|
if '+strumpack' in spec: # if magma variant was activated for xsdk
|
|
args.extend([
|
|
'-DENABLE_STRUMPACK=ON',
|
|
'-DSTRUMPACK_DIR=%s' % spec['strumpack'].prefix
|
|
])
|
|
if '+slate' in spec: # if slate variant was activated for xsdk
|
|
args.extend([
|
|
'-DENABLE_SLATE=ON',
|
|
'-DSLATE_DIR=%s' % spec['slate'].prefix,
|
|
'-DBLASPP_DIR=%s' % spec['blaspp'].prefix,
|
|
'-DLAPACKPP_DIR=%s' % spec['lapackpp'].prefix
|
|
])
|
|
if 'trilinos' in spec: # if trilinos variant was activated for xsdk
|
|
args.extend([
|
|
'ENABLE_TRILINOS=ON',
|
|
'-DTRILINOS_DIR_PATH=%s' % spec['trilinos'].prefix
|
|
])
|
|
if 'zlib' in spec: # if zlib variant was activated for MFEM
|
|
args.append('-DZLIB_LIBRARY_DIR=%s' % spec['zlib'].prefix.lib)
|
|
|
|
return args
|
|
|
|
def check(self):
|
|
with working_dir(self.build_directory):
|
|
ctest(parallel=False)
|