diff options
Diffstat (limited to 'var/spack/repos/builtin/packages/openpmd-api/package.py')
-rw-r--r-- | var/spack/repos/builtin/packages/openpmd-api/package.py | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/openpmd-api/package.py b/var/spack/repos/builtin/packages/openpmd-api/package.py new file mode 100644 index 0000000000..93082d3b85 --- /dev/null +++ b/var/spack/repos/builtin/packages/openpmd-api/package.py @@ -0,0 +1,85 @@ +# Copyright 2013-2018 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 import * + + +class OpenpmdApi(CMakePackage): + """API for easy reading and writing of openPMD files""" + + homepage = "http://www.openPMD.org" + git = "https://github.com/openPMD/openPMD-api.git" + + maintainers = ['ax3l'] + + version('develop', branch='dev') + + variant('mpi', default=True, + description='Enable parallel I/O') + variant('hdf5', default=True, + description='Enable HDF5 support') + variant('adios1', default=False, + description='Enable ADIOS1 support') + variant('adios2', default=False, + description='Enable ADIOS2 support') + # variant('json', default=True, + # description='Enable JSON support') + variant('python', default=True, + description='Enable Python bindings') + + depends_on('cmake@3.10.0:', type='build') + depends_on('mpark-variant@1.3.0:') + depends_on('catch@2.3.0: ~single_header', type='test') + depends_on('mpi@2.3:', when='+mpi') # might become MPI 3.0+ + depends_on('hdf5@1.8.13:', when='+hdf5') + depends_on('hdf5@1.8.13: ~mpi', when='~mpi +hdf5') + depends_on('hdf5@1.8.13: +mpi', when='+mpi +hdf5') + depends_on('adios@1.10.0:', when='+adios1') + depends_on('adios@1.10.0: ~mpi', when='~mpi +adios1') + depends_on('adios@1.10.0: +mpi', when='+mpi +adios1') + depends_on('adios2@2.1.0:', when='+adios2') + depends_on('adios2@2.1.0: ~mpi', when='~mpi +adios2') + depends_on('adios2@2.1.0: +mpi', when='+mpi +adios2') + # ideally we want 2.3.0+ for full C++11 CT function signature support + depends_on('py-pybind11@2.2.3:', when='+python') + depends_on('py-numpy@1.15.1:', when='+python', type=['test', 'run']) + + extends('python', when='+python') + + def cmake_args(self): + spec = self.spec + + args = [ + # variants + '-DopenPMD_USE_MPI:BOOL={0}'.format( + 'ON' if '+mpi' in spec else 'OFF'), + '-DopenPMD_USE_HDF5:BOOL={0}'.format( + 'ON' if '+hdf5' in spec else 'OFF'), + '-DopenPMD_USE_ADIOS1:BOOL={0}'.format( + 'ON' if '+adios1' in spec else 'OFF'), + '-DopenPMD_USE_ADIOS2:BOOL={0}'.format( + 'ON' if '+adios2' in spec else 'OFF'), + # '-DopenPMD_USE_JSON:BOOL={0}'.format( + # 'ON' if '+json' in spec else 'OFF'), + '-DopenPMD_USE_PYTHON:BOOL={0}'.format( + 'ON' if '+python' in spec else 'OFF'), + # tests and examples + '-DBUILD_TESTING:BOOL={0}'.format( + 'ON' if self.run_tests else 'OFF'), + '-DBUILD_EXAMPLES:BOOL={0}'.format( + 'ON' if self.run_tests else 'OFF'), + ] + + if spec.satisfies('+python'): + args.append('-DopenPMD_USE_INTERNAL_PYBIND11:BOOL=OFF') + args.append('-DPYTHON_EXECUTABLE:FILEPATH={0}'.format( + self.spec['python'].command.path)) + + # switch internally shipped third-party libraries for spack + args.append('-DopenPMD_USE_INTERNAL_VARIANT:BOOL=OFF') + if self.run_tests: + args.append('-DopenPMD_USE_INTERNAL_CATCH:BOOL=OFF') + + return args |