diff options
author | Eli Schwartz <eschwartz@archlinux.org> | 2021-06-13 15:40:23 -0400 |
---|---|---|
committer | Eli Schwartz <eschwartz@archlinux.org> | 2021-06-17 13:22:25 -0400 |
commit | d591353b7874816378f9f61df69829a5cf135b4b (patch) | |
tree | 8a3a06720c32469f960d364474c42eb00954eed5 | |
parent | 493dc6ed100503e4df7492a73a5d5d559f5f266b (diff) | |
download | meson-d591353b7874816378f9f61df69829a5cf135b4b.zip meson-d591353b7874816378f9f61df69829a5cf135b4b.tar.gz meson-d591353b7874816378f9f61df69829a5cf135b4b.tar.bz2 |
add new dependency type "builtin"
For dependencies that on some systems are built into libc etc. and don't
need to be separately linked. This is distinct from "system"
dependencies which add linker args.
-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: |