Add preCICE xSDK support (#12356)
* Add preCICE xSDK support * Cleanup generation of cmake arguments * Generalize numpy include * Fix python spec Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com> * Fix numpy spec Co-Authored-By: Adam J. Stewart <ajstewart426@gmail.com>
This commit is contained in:
parent
0d4114b095
commit
33bec18cc2
@ -33,28 +33,26 @@ class Precice(CMakePackage):
|
|||||||
variant('python', default=False, description='Enable Python support')
|
variant('python', default=False, description='Enable Python support')
|
||||||
variant('shared', default=True, description='Build shared libraries')
|
variant('shared', default=True, description='Build shared libraries')
|
||||||
|
|
||||||
# Not yet
|
|
||||||
# variant(
|
|
||||||
# 'float', default=False,
|
|
||||||
# description='Use single precision for field data exchange')
|
|
||||||
# variant(
|
|
||||||
# 'int64',
|
|
||||||
# default=False, description='Use 64-bit integers for indices')
|
|
||||||
|
|
||||||
depends_on('cmake@3.5:', type='build')
|
depends_on('cmake@3.5:', type='build')
|
||||||
depends_on('cmake@3.9.6:', type='build', when='@1.4:')
|
depends_on('cmake@3.10.2:', type='build', when='@1.4:')
|
||||||
depends_on('boost@1.60.0:')
|
depends_on('boost@1.60.0:')
|
||||||
depends_on('boost@1.65.1:', when='@1.4:')
|
depends_on('boost@1.65.1:', when='@1.4:')
|
||||||
depends_on('eigen@3.2:')
|
depends_on('eigen@3.2:')
|
||||||
|
depends_on('eigen@:3.3.7', type='build', when='@:1.5') # bug in prettyprint
|
||||||
depends_on('libxml2')
|
depends_on('libxml2')
|
||||||
depends_on('mpi', when='+mpi')
|
depends_on('mpi', when='+mpi')
|
||||||
depends_on('petsc@3.6:', when='+petsc')
|
depends_on('petsc@3.6:', when='+petsc')
|
||||||
depends_on('python@2.7', when='+python', type=('build', 'run'))
|
depends_on('python@2.7:2.8', when='+python', type=('build', 'run'))
|
||||||
|
# numpy 1.17+ requires Python 3
|
||||||
|
depends_on('py-numpy@:1.16', when='+python', type=('build', 'run'))
|
||||||
|
|
||||||
def cmake_args(self):
|
def cmake_args(self):
|
||||||
"""Populate cmake arguments for precice."""
|
"""Populate cmake arguments for precice."""
|
||||||
spec = self.spec
|
spec = self.spec
|
||||||
|
|
||||||
|
# The xSDK installation policies were implemented after 1.5.2
|
||||||
|
xsdk_mode = spec.satisfies("@1.6:")
|
||||||
|
|
||||||
def variant_bool(feature, on='ON', off='OFF'):
|
def variant_bool(feature, on='ON', off='OFF'):
|
||||||
"""Ternary for spec variant to ON/OFF string"""
|
"""Ternary for spec variant to ON/OFF string"""
|
||||||
if feature in spec:
|
if feature in spec:
|
||||||
@ -62,9 +60,54 @@ def variant_bool(feature, on='ON', off='OFF'):
|
|||||||
return off
|
return off
|
||||||
|
|
||||||
cmake_args = [
|
cmake_args = [
|
||||||
'-DMPI:BOOL=%s' % variant_bool('+mpi'),
|
|
||||||
'-DPETSC:BOOL=%s' % variant_bool('+petsc'),
|
|
||||||
'-DPYTHON:BOOL=%s' % variant_bool('+python'),
|
|
||||||
'-DBUILD_SHARED_LIBS:BOOL=%s' % variant_bool('+shared'),
|
'-DBUILD_SHARED_LIBS:BOOL=%s' % variant_bool('+shared'),
|
||||||
|
'-DMPI:BOOL=%s' % variant_bool('+mpi'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# Boost
|
||||||
|
if xsdk_mode:
|
||||||
|
cmake_args.append('-DTPL_ENABLE_BOOST=ON')
|
||||||
|
cmake_args.append('-DBOOST_ROOT=%s' % spec['boost'].prefix)
|
||||||
|
|
||||||
|
# Eigen3
|
||||||
|
if xsdk_mode:
|
||||||
|
cmake_args.append('-DTPL_ENABLE_EIGEN3=ON')
|
||||||
|
cmake_args.append('-DEIGEN3_INCLUDE_DIR=%s' % spec['eigen'].prefix)
|
||||||
|
|
||||||
|
# LibXML2
|
||||||
|
if xsdk_mode:
|
||||||
|
cmake_args.append('-DTPL_ENABLE_LIBXML2=ON')
|
||||||
|
libxml2_includes = spec['libxml2'].headers.directories[0]
|
||||||
|
cmake_args.extend([
|
||||||
|
'-DLIBXML2_INCLUDE_DIRS=%s' % libxml2_includes,
|
||||||
|
'-DLIBXML2_LIBRARIES=%s' % spec['libxml2'].libs[0],
|
||||||
|
])
|
||||||
|
|
||||||
|
# PETSc
|
||||||
|
if '+petsc' in spec:
|
||||||
|
cmake_args.extend([
|
||||||
|
'-DTPL_ENABLE_PETSC:BOOL=ON' if xsdk_mode else '-DPETSC=ON',
|
||||||
|
'-DPETSC_DIR=%s' % spec['petsc'].prefix,
|
||||||
|
'-DPETSC_ARCH=.'
|
||||||
|
])
|
||||||
|
else:
|
||||||
|
cmake_args.append('-DPETSC:BOOL=OFF')
|
||||||
|
|
||||||
|
# Python
|
||||||
|
if '+python' in spec:
|
||||||
|
python_library = spec['python'].libs[0]
|
||||||
|
python_include = spec['python'].headers.directories[0]
|
||||||
|
numpy_include = join_path(
|
||||||
|
spec['py-numpy'].prefix,
|
||||||
|
spec['python'].package.site_packages_dir,
|
||||||
|
'numpy', 'core', 'include')
|
||||||
|
cmake_args.extend([
|
||||||
|
'-DTPL_ENABLE_PYTHON:BOOL=ON' if xsdk_mode else '-DPYTHON=ON',
|
||||||
|
'-DPYTHON_INCLUDE_DIR=%s' % python_include,
|
||||||
|
'-DNumPy_INCLUDE_DIR=%s' % numpy_include,
|
||||||
|
'-DPYTHON_LIBRARY=%s' % python_library
|
||||||
|
])
|
||||||
|
else:
|
||||||
|
cmake_args.append('-DPYTHON:BOOL=OFF')
|
||||||
|
|
||||||
return cmake_args
|
return cmake_args
|
||||||
|
Loading…
Reference in New Issue
Block a user