diff options
Diffstat (limited to 'mesonbuild/dependencies/coarrays.py')
| -rw-r--r-- | mesonbuild/dependencies/coarrays.py | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/mesonbuild/dependencies/coarrays.py b/mesonbuild/dependencies/coarrays.py index a4dbdc535..ddb50058f 100644 --- a/mesonbuild/dependencies/coarrays.py +++ b/mesonbuild/dependencies/coarrays.py @@ -3,10 +3,9 @@ from __future__ import annotations -import functools import typing as T -from .base import DependencyMethods, detect_compiler, SystemDependency +from .base import DependencyCandidate, DependencyMethods, detect_compiler, SystemDependency from .cmake import CMakeDependency from .detect import packages from .pkgconfig import PkgConfigDependency @@ -15,15 +14,15 @@ from .factory import factory_methods if T.TYPE_CHECKING: from . factory import DependencyGenerator from ..environment import Environment - from ..mesonlib import MachineChoice from .base import DependencyObjectKWs @factory_methods({DependencyMethods.PKGCONFIG, DependencyMethods.CMAKE, DependencyMethods.SYSTEM}) def coarray_factory(env: 'Environment', - for_machine: 'MachineChoice', kwargs: DependencyObjectKWs, methods: T.List[DependencyMethods]) -> T.List['DependencyGenerator']: + kwargs['language'] = 'fortran' + for_machine = kwargs['native'] fcid = detect_compiler('coarray', env, for_machine, 'fortran').get_id() candidates: T.List['DependencyGenerator'] = [] @@ -31,19 +30,24 @@ def coarray_factory(env: 'Environment', # OpenCoarrays is the most commonly used method for Fortran Coarray with GCC if DependencyMethods.PKGCONFIG in methods: for pkg in ['caf-openmpi', 'caf']: - candidates.append(functools.partial( - PkgConfigDependency, pkg, env, kwargs, language='fortran')) + candidates.append(DependencyCandidate.from_dependency( + pkg, PkgConfigDependency, (env, kwargs))) if DependencyMethods.CMAKE in methods: + nkwargs = kwargs if not kwargs.get('modules'): - kwargs['modules'] = ['OpenCoarrays::caf_mpi'] - candidates.append(functools.partial( - CMakeDependency, 'OpenCoarrays', env, kwargs, language='fortran')) + nkwargs = kwargs.copy() + nkwargs['modules'] = ['OpenCoarrays::caf_mpi'] + candidates.append(DependencyCandidate.from_dependency( + 'OpenCoarrays', CMakeDependency, (env, nkwargs))) if DependencyMethods.SYSTEM in methods: - candidates.append(functools.partial(CoarrayDependency, env, kwargs)) + candidates.append(DependencyCandidate.from_dependency( + 'coarray', CoarrayDependency, (env, kwargs))) return candidates + + packages['coarray'] = coarray_factory @@ -56,10 +60,9 @@ class CoarrayDependency(SystemDependency): Coarrays may be thought of as a high-level language abstraction of low-level MPI calls. """ - def __init__(self, environment: 'Environment', kwargs: DependencyObjectKWs) -> None: - super().__init__('coarray', environment, kwargs, language='fortran') - kwargs['required'] = False - kwargs['silent'] = True + def __init__(self, name: str, environment: 'Environment', kwargs: DependencyObjectKWs) -> None: + kwargs['language'] = 'fortran' + super().__init__(name, environment, kwargs) cid = self.get_compiler().get_id() if cid == 'gcc': |
