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.
This commit is contained in:
parent
493dc6ed10
commit
d591353b78
|
@ -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'
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue