Cabana: add test variants (#31776)

* Simplify Cabana build flags
* Add unit tests, examples, and performance options
This commit is contained in:
Sam Reeve 2022-07-28 14:21:53 -04:00 committed by GitHub
parent fc4d74b132
commit e8cce0f7cb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -36,6 +36,9 @@ class Cabana(CMakePackage):
variant('heffte', default=False, description='Build with heFFTe support') variant('heffte', default=False, description='Build with heFFTe support')
variant('hypre', default=False, description='Build with HYPRE support') variant('hypre', default=False, description='Build with HYPRE support')
variant('cajita', default=False, description='Build Cajita subpackage') variant('cajita', default=False, description='Build Cajita subpackage')
variant('testing', default=False, description='Build unit tests')
variant('examples', default=False, description='Build tutorial examples')
variant('performance_testing', default=False, description='Build performance tests')
depends_on("cmake@3.9:", type='build') depends_on("cmake@3.9:", type='build')
depends_on("googletest", type='build') depends_on("googletest", type='build')
@ -72,31 +75,24 @@ class Cabana(CMakePackage):
conflicts("+sycl", when="@:0.3.0") conflicts("+sycl", when="@:0.3.0")
def cmake_args(self): def cmake_args(self):
options = [ options = [self.define_from_variant('BUILD_SHARED_LIBS', 'shared')]
'-DCabana_ENABLE_TESTING=ON',
'-DBUILD_SHARED_LIBS=%s' % (
'On' if '+shared' in self.spec else 'Off')
]
# Enable Cabana submodules based on flags above enable = ['CAJITA', 'TESTING', 'EXAMPLES', 'PERFORMANCE_TESTING']
if '+hypre' in self.spec: require = ['ARBORX', 'HEFFTE', 'HYPRE']
options.append('-DCabana_REQUIRE_HYPRE=ON')
if '+heffte' in self.spec:
options.append('-DCabana_REQUIRE_HEFFTE=ON')
options.append(self.define_from_variant('Cabana_ENABLE_CAJITA', 'cajita'))
# These variables were removed in 0.3.0 (where backends are # These variables were removed in 0.3.0 (where backends are
# automatically used from Kokkos) # automatically used from Kokkos)
if self.spec.satisfies('@:0.2.0'): if self.spec.satisfies('@:0.2.0'):
backends = {'serial': 'Serial', enable += ['Serial', 'OpenMP', 'Cuda']
'openmp': 'OpenMP', # MPI was changed from ENABLE to REQUIRE in 0.4.0
'cuda': 'Cuda'}
for backend in backends:
cbn_option = 'Cabana_ENABLE_' + backends[backend]
options.append(self.define_from_variant(cbn_option, backend))
if self.spec.satisfies('@:0.3.0'): if self.spec.satisfies('@:0.3.0'):
options.append(self.define_from_variant('Cabana_ENABLE_MPI', 'mpi')) enable += ['MPI']
else:
require += ['MPI']
for category, cname in zip([enable, require], ["ENABLE", "REQUIRE"]):
for var in category:
cbn_option = 'Cabana_{0}_{1}'.format(cname, var)
options.append(self.define_from_variant(cbn_option, var.lower()))
return options return options