aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/dependencies/base.py19
-rw-r--r--mesonbuild/dependencies/factory.py4
2 files changed, 22 insertions, 1 deletions
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py
index 66fbc85..515edcf 100644
--- a/mesonbuild/dependencies/base.py
+++ b/mesonbuild/dependencies/base.py
@@ -42,6 +42,8 @@ class DependencyMethods(Enum):
AUTO = 'auto'
PKGCONFIG = 'pkg-config'
CMAKE = 'cmake'
+ # The dependency is provided by the standard library and does not need to be linked
+ BUILTIN = 'builtin'
# Just specify the standard link arguments, assuming the operating system provides the library.
SYSTEM = 'system'
# This is only supported on OSX - search the frameworks directory by name.
@@ -551,3 +553,20 @@ class SystemDependency(ExternalDependency):
def log_tried(self) -> str:
return 'system'
+
+
+class BuiltinDependency(ExternalDependency):
+
+ """Dependency base for Builtin type dependencies."""
+
+ def __init__(self, name: str, env: 'Environment', kwargs: T.Dict[str, T.Any],
+ language: T.Optional[str] = None) -> None:
+ super().__init__(DependencyTypeName('builtin'), env, kwargs, language=language)
+ self.name = name
+
+ @staticmethod
+ def get_methods() -> T.List[DependencyMethods]:
+ return [DependencyMethods.BUILTIN]
+
+ def log_tried(self) -> str:
+ return 'builtin'
diff --git a/mesonbuild/dependencies/factory.py b/mesonbuild/dependencies/factory.py
index 774e88e..048e3bc 100644
--- a/mesonbuild/dependencies/factory.py
+++ b/mesonbuild/dependencies/factory.py
@@ -20,7 +20,7 @@ from ..mesonlib import MachineChoice
from .base import DependencyException, DependencyMethods
from .base import ExternalDependency
from .base import process_method_kw
-from .base import SystemDependency
+from .base import BuiltinDependency, SystemDependency
from .cmake import CMakeDependency
from .framework import ExtraFrameworkDependency
from .pkgconfig import PkgConfigDependency
@@ -81,6 +81,7 @@ class DependencyFactory:
configtool_class: 'T.Optional[T.Type[ConfigToolDependency]]' = None,
framework_name: T.Optional[str] = None,
framework_class: 'T.Type[ExtraFrameworkDependency]' = ExtraFrameworkDependency,
+ builtin_class: 'T.Type[BuiltinDependency]' = BuiltinDependency,
system_class: 'T.Type[SystemDependency]' = SystemDependency):
if DependencyMethods.CONFIG_TOOL in methods and not configtool_class:
@@ -98,6 +99,7 @@ class DependencyFactory:
DependencyMethods.PKGCONFIG: lambda env, kwargs: pkgconfig_class(pkgconfig_name or name, env, kwargs),
DependencyMethods.CMAKE: lambda env, kwargs: cmake_class(cmake_name or name, env, kwargs),
DependencyMethods.SYSTEM: lambda env, kwargs: system_class(name, env, kwargs),
+ DependencyMethods.BUILTIN: lambda env, kwargs: builtin_class(name, env, kwargs),
DependencyMethods.CONFIG_TOOL: None,
}
if configtool_class is not None: