86 lines
3.8 KiB
Python
86 lines
3.8 KiB
Python
# Copyright 2013-2019 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 Faodel(CMakePackage):
|
|
"""Flexible, Asynchronous, Object Data-Exchange Libraries"""
|
|
|
|
homepage = "https://github.com/faodel/faodel"
|
|
url = "https://github.com/faodel/faodel/archive/v1.1906.1.tar.gz"
|
|
git = "https://github.com/faodel/faodel.git"
|
|
|
|
maintainers = ['tkordenbrock', 'craigulmer']
|
|
|
|
version('1.1906.1', sha256='4b3caf469ae7db50e9bb8d652e4cb532d33d474279def0f8a483f69385648058')
|
|
version('1.1811.2', sha256='22feb502dad0f56fb8af492f6e2cdc53a97fd6c31f6fa3c655be0a6266c46996')
|
|
version('1.1811.1', sha256='8e95ee99b8c136ff687eb07a2481ee04560cb1526408eb22ab56cd9c60206916')
|
|
version('1.1803.1', sha256='70ce7125c02601e14abe5985243d67adf677ed9e7a4dd6d3eaef8a97cf281a16')
|
|
|
|
variant('shared', default=True, description='Build Faodel as shared libs')
|
|
variant('mpi', default=True, description='Enable MPI')
|
|
|
|
variant('cereal', default=False, description='Use Cereal to serialize NNTI data structures else XDR')
|
|
variant('hdf5', default=False, description="Build the HDF5-based IOM in Kelpie")
|
|
variant('tcmalloc', default=True, description='Use tcmalloc from gperftools in Lunasa, potentially other places')
|
|
|
|
variant('logging', default='stdout', values=('stdout', 'sbl', 'disabled'), description='Select where logging interface output is routed')
|
|
variant('network', default='nnti', values=('nnti', 'libfabric'), description='RDMA Network library to use for low-level communication')
|
|
|
|
depends_on('mpi', when='+mpi')
|
|
depends_on('boost@1.60.0:')
|
|
depends_on('cmake@3.8.0:', type='build')
|
|
depends_on('hdf5+mpi', when='+hdf5+mpi')
|
|
depends_on('hdf5~mpi', when='+hdf5~mpi')
|
|
depends_on('libfabric@1.5.3:', when='network=libfabric')
|
|
depends_on('googletest@1.7.0:', type='build')
|
|
|
|
# FAODEL requires C++11 support which starts with gcc 4.8.1
|
|
conflicts('%gcc@:4.8.0')
|
|
|
|
# Github issue #11267
|
|
# Requires master branch of `leveldb` which is not available in spack
|
|
# (only versions 1.20 and 1.18 are available).
|
|
# depends_on('leveldb', when='+leveldb')
|
|
# variant('leveldb', default=False,
|
|
# description='Build the LevelDB-based IOM in Kelpie')
|
|
|
|
# Only clang requires this patch, but it should be applied for all
|
|
patch('array.patch', when="@1.1803.1")
|
|
|
|
# FAODEL Github issue #4
|
|
patch('faodel_mpi.patch', when='@1.1811.1 ~mpi')
|
|
# FAODEL Github issue #5
|
|
patch('faodel_sbl.patch', when='@1.1811.1 logging=sbl')
|
|
|
|
def cmake_args(self):
|
|
spec = self.spec
|
|
|
|
args = [
|
|
'-DBUILD_SHARED_LIBS:BOOL={0}'.format(
|
|
'ON' if '+shared' in spec else 'OFF'),
|
|
'-DBUILD_TESTS:BOOL={0}'.format(
|
|
'ON' if '+mpi' in spec else 'OFF'),
|
|
'-DBOOST_ROOT:PATH={0}'.format(spec['boost'].prefix),
|
|
'-DGTEST_ROOT:PATH={0}'.format(spec['googletest'].prefix),
|
|
'-DBUILD_DOCS:BOOL=OFF',
|
|
'-DFaodel_ENABLE_IOM_HDF5:BOOL={0}'.format(
|
|
'ON' if '+hdf5' in spec else 'OFF'),
|
|
'-DFaodel_ENABLE_IOM_LEVELDB:BOOL={0}'.format(
|
|
'ON' if '+leveldb' in spec else 'OFF'),
|
|
'-DFaodel_ENABLE_MPI_SUPPORT:BOOL={0}'.format(
|
|
'ON' if '+mpi' in spec else 'OFF'),
|
|
'-DFaodel_ENABLE_TCMALLOC:BOOL={0}'.format(
|
|
'ON' if '+tcmalloc' in spec else 'OFF'),
|
|
'-DFaodel_LOGGING_METHOD:STRING={0}'.format(
|
|
spec.variants['logging'].value),
|
|
'-DFaodel_NETWORK_LIBRARY:STRING={0}'.format(
|
|
spec.variants['network'].value),
|
|
'-DFaodel_ENABLE_CEREAL:BOOL={0}'.format(
|
|
'ON' if '+cereal' in spec else 'OFF')
|
|
]
|
|
return args
|