dependencies: Use DependencyFactory for gmock
This commit is contained in:
parent
626f73416f
commit
bc2bfcacbd
|
@ -20,7 +20,7 @@ from .base import ( # noqa: F401
|
||||||
ExternalDependency, NotFoundDependency, ExternalLibrary, ExtraFrameworkDependency, InternalDependency,
|
ExternalDependency, NotFoundDependency, ExternalLibrary, ExtraFrameworkDependency, InternalDependency,
|
||||||
PkgConfigDependency, CMakeDependency, find_external_dependency, get_dep_identifier, packages, _packages_accept_language,
|
PkgConfigDependency, CMakeDependency, find_external_dependency, get_dep_identifier, packages, _packages_accept_language,
|
||||||
DependencyFactory)
|
DependencyFactory)
|
||||||
from .dev import GMockDependency, ValgrindDependency, gtest_factory, llvm_factory
|
from .dev import ValgrindDependency, gmock_factory, gtest_factory, llvm_factory
|
||||||
from .coarrays import CoarrayDependency
|
from .coarrays import CoarrayDependency
|
||||||
from .mpi import MPIDependency
|
from .mpi import MPIDependency
|
||||||
from .scalapack import ScalapackDependency
|
from .scalapack import ScalapackDependency
|
||||||
|
@ -33,7 +33,7 @@ from .ui import GLDependency, GnuStepDependency, Qt4Dependency, Qt5Dependency, S
|
||||||
packages.update({
|
packages.update({
|
||||||
# From dev:
|
# From dev:
|
||||||
'gtest': gtest_factory,
|
'gtest': gtest_factory,
|
||||||
'gmock': GMockDependency,
|
'gmock': gmock_factory,
|
||||||
'llvm': llvm_factory,
|
'llvm': llvm_factory,
|
||||||
'valgrind': ValgrindDependency,
|
'valgrind': ValgrindDependency,
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
# This file contains the detection logic for external dependencies useful for
|
# This file contains the detection logic for external dependencies useful for
|
||||||
# development purposes, such as testing, debugging, etc..
|
# development purposes, such as testing, debugging, etc..
|
||||||
|
|
||||||
import functools
|
|
||||||
import glob
|
import glob
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
@ -26,11 +25,13 @@ from ..mesonlib import version_compare, stringlistify, extract_as_list, MachineC
|
||||||
from ..environment import get_llvm_tool_names
|
from ..environment import get_llvm_tool_names
|
||||||
from .base import (
|
from .base import (
|
||||||
DependencyException, DependencyMethods, ExternalDependency, PkgConfigDependency,
|
DependencyException, DependencyMethods, ExternalDependency, PkgConfigDependency,
|
||||||
strip_system_libdirs, ConfigToolDependency, CMakeDependency, process_method_kw,
|
strip_system_libdirs, ConfigToolDependency, CMakeDependency, DependencyFactory,
|
||||||
DependencyFactory,
|
|
||||||
)
|
)
|
||||||
from .misc import ThreadDependency
|
from .misc import ThreadDependency
|
||||||
|
|
||||||
|
if T.TYPE_CHECKING:
|
||||||
|
from .. environment import Environment
|
||||||
|
|
||||||
|
|
||||||
def get_shared_library_suffix(environment, for_machine: MachineChoice):
|
def get_shared_library_suffix(environment, for_machine: MachineChoice):
|
||||||
"""This is only guaranteed to work for languages that compile to machine
|
"""This is only guaranteed to work for languages that compile to machine
|
||||||
|
@ -112,9 +113,9 @@ class GTestDependencyPC(PkgConfigDependency):
|
||||||
super().__init__(name, environment, kwargs)
|
super().__init__(name, environment, kwargs)
|
||||||
|
|
||||||
|
|
||||||
class GMockDependency(ExternalDependency):
|
class GMockDependencySystem(ExternalDependency):
|
||||||
def __init__(self, environment, kwargs):
|
def __init__(self, name: str, environment, kwargs):
|
||||||
super().__init__('gmock', environment, kwargs, language='cpp')
|
super().__init__(name, environment, kwargs, language='cpp')
|
||||||
self.main = kwargs.get('main', False)
|
self.main = kwargs.get('main', False)
|
||||||
self._add_sub_dependency(ThreadDependency, environment, kwargs)
|
self._add_sub_dependency(ThreadDependency, environment, kwargs)
|
||||||
|
|
||||||
|
@ -171,25 +172,20 @@ class GMockDependency(ExternalDependency):
|
||||||
def log_tried(self):
|
def log_tried(self):
|
||||||
return 'system'
|
return 'system'
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def _factory(cls, environment, kwargs):
|
|
||||||
methods = process_method_kw(cls.get_methods(), kwargs)
|
|
||||||
candidates = []
|
|
||||||
|
|
||||||
if DependencyMethods.PKGCONFIG in methods:
|
|
||||||
pcname = 'gmock_main' if kwargs.get('main', False) else 'gmock'
|
|
||||||
candidates.append(functools.partial(PkgConfigDependency, pcname, environment, kwargs))
|
|
||||||
|
|
||||||
if DependencyMethods.SYSTEM in methods:
|
|
||||||
candidates.append(functools.partial(GMockDependency, environment, kwargs))
|
|
||||||
|
|
||||||
return candidates
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_methods():
|
def get_methods():
|
||||||
return [DependencyMethods.PKGCONFIG, DependencyMethods.SYSTEM]
|
return [DependencyMethods.PKGCONFIG, DependencyMethods.SYSTEM]
|
||||||
|
|
||||||
|
|
||||||
|
class GMockDependencyPC(PkgConfigDependency):
|
||||||
|
|
||||||
|
def __init__(self, name: str, environment: 'Environment', kwargs: T.Dict[str, T.Any]):
|
||||||
|
assert name == 'gmock'
|
||||||
|
if kwargs.get('main'):
|
||||||
|
name = 'gmock_main'
|
||||||
|
super().__init__(name, environment, kwargs)
|
||||||
|
|
||||||
|
|
||||||
class LLVMDependencyConfigTool(ConfigToolDependency):
|
class LLVMDependencyConfigTool(ConfigToolDependency):
|
||||||
"""
|
"""
|
||||||
LLVM uses a special tool, llvm-config, which has arguments for getting
|
LLVM uses a special tool, llvm-config, which has arguments for getting
|
||||||
|
@ -453,3 +449,10 @@ gtest_factory = DependencyFactory(
|
||||||
pkgconfig_class=GTestDependencyPC,
|
pkgconfig_class=GTestDependencyPC,
|
||||||
system_class=GTestDependencySystem,
|
system_class=GTestDependencySystem,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
gmock_factory = DependencyFactory(
|
||||||
|
'gmock',
|
||||||
|
[DependencyMethods.PKGCONFIG, DependencyMethods.SYSTEM],
|
||||||
|
pkgconfig_class=GMockDependencyPC,
|
||||||
|
system_class=GMockDependencySystem,
|
||||||
|
)
|
||||||
|
|
Loading…
Reference in New Issue