aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/dependencies/__init__.py4
-rw-r--r--mesonbuild/dependencies/dev.py41
2 files changed, 23 insertions, 22 deletions
diff --git a/mesonbuild/dependencies/__init__.py b/mesonbuild/dependencies/__init__.py
index 14b7cba..18f1915 100644
--- a/mesonbuild/dependencies/__init__.py
+++ b/mesonbuild/dependencies/__init__.py
@@ -20,7 +20,7 @@ from .base import ( # noqa: F401
ExternalDependency, NotFoundDependency, ExternalLibrary, ExtraFrameworkDependency, InternalDependency,
PkgConfigDependency, CMakeDependency, find_external_dependency, get_dep_identifier, packages, _packages_accept_language,
DependencyFactory)
-from .dev import GMockDependency, GTestDependency, ValgrindDependency, llvm_factory
+from .dev import GMockDependency, ValgrindDependency, gtest_factory, llvm_factory
from .coarrays import CoarrayDependency
from .mpi import MPIDependency
from .scalapack import ScalapackDependency
@@ -32,7 +32,7 @@ from .ui import GLDependency, GnuStepDependency, Qt4Dependency, Qt5Dependency, S
packages.update({
# From dev:
- 'gtest': GTestDependency,
+ 'gtest': gtest_factory,
'gmock': GMockDependency,
'llvm': llvm_factory,
'valgrind': ValgrindDependency,
diff --git a/mesonbuild/dependencies/dev.py b/mesonbuild/dependencies/dev.py
index 2cedc97..e8d462f 100644
--- a/mesonbuild/dependencies/dev.py
+++ b/mesonbuild/dependencies/dev.py
@@ -44,9 +44,9 @@ def get_shared_library_suffix(environment, for_machine: MachineChoice):
return '.so'
-class GTestDependency(ExternalDependency):
- def __init__(self, environment, kwargs):
- super().__init__('gtest', environment, kwargs, language='cpp')
+class GTestDependencySystem(ExternalDependency):
+ def __init__(self, name: str, environment, kwargs):
+ super().__init__(name, environment, kwargs, language='cpp')
self.main = kwargs.get('main', False)
self.src_dirs = ['/usr/src/gtest/src', '/usr/src/googletest/googletest/src']
self.detect()
@@ -98,25 +98,20 @@ class GTestDependency(ExternalDependency):
def log_tried(self):
return 'system'
- @classmethod
- def _factory(cls, environment, kwargs):
- methods = process_method_kw(cls.get_methods(), kwargs)
- candidates = []
-
- if DependencyMethods.PKGCONFIG in methods:
- pcname = 'gtest_main' if kwargs.get('main', False) else 'gtest'
- candidates.append(functools.partial(PkgConfigDependency, pcname, environment, kwargs))
-
- if DependencyMethods.SYSTEM in methods:
- candidates.append(functools.partial(GTestDependency, environment, kwargs))
-
- return candidates
-
@staticmethod
def get_methods():
return [DependencyMethods.PKGCONFIG, DependencyMethods.SYSTEM]
+class GTestDependencyPC(PkgConfigDependency):
+
+ def __init__(self, name: str, environment: 'Environment', kwargs: T.Dict[str, T.Any]):
+ assert name == 'gtest'
+ if kwargs.get('main'):
+ name = 'gtest_main'
+ super().__init__(name, environment, kwargs)
+
+
class GMockDependency(ExternalDependency):
def __init__(self, environment, kwargs):
super().__init__('gmock', environment, kwargs, language='cpp')
@@ -132,11 +127,10 @@ class GMockDependency(ExternalDependency):
# GMock without GTest is pretty much useless
# this also mimics the structure given in WrapDB,
# where GMock always pulls in GTest
- gtest_dep = GTestDependency(environment, gtest_kwargs)
- if not gtest_dep.is_found:
+ found = self._add_sub_dependency2(gtest_factory(environment, self.for_machine, gtest_kwargs))
+ if not found:
self.is_found = False
return
- self.ext_deps.append(gtest_dep)
# GMock may be a library or just source.
# Work with both.
@@ -452,3 +446,10 @@ llvm_factory = DependencyFactory(
cmake_class=LLVMDependencyCMake,
configtool_class=LLVMDependencyConfigTool,
)
+
+gtest_factory = DependencyFactory(
+ 'gtest',
+ [DependencyMethods.PKGCONFIG, DependencyMethods.SYSTEM],
+ pkgconfig_class=GTestDependencyPC,
+ system_class=GTestDependencySystem,
+)