diff options
-rw-r--r-- | mesonbuild/dependencies/base.py | 19 | ||||
-rw-r--r-- | mesonbuild/dependencies/factory.py | 4 |
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: |