aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2021-06-13 15:40:23 -0400
committerEli Schwartz <eschwartz@archlinux.org>2021-06-17 13:22:25 -0400
commitd591353b7874816378f9f61df69829a5cf135b4b (patch)
tree8a3a06720c32469f960d364474c42eb00954eed5
parent493dc6ed100503e4df7492a73a5d5d559f5f266b (diff)
downloadmeson-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.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: