build: Introduce introspection flags for Target

Using <target>.add_introspection_flag high level concepts can mark a
specific target in the introspection data.
pull/13800/head
Florian "sp1rit"​ 3 months ago
parent 9f54498d82
commit a67d1e56e6
No known key found for this signature in database
GPG Key ID: B1F4055D8460CE34
  1. 7
      mesonbuild/build.py
  2. 3
      mesonbuild/mintro.py
  3. 1
      mesonbuild/modules/gnome.py

@ -525,6 +525,7 @@ class Target(HoldableObject, metaclass=abc.ABCMeta):
build_always_stale: bool = False
extra_files: T.List[File] = field(default_factory=list)
override_options: InitVar[T.Optional[T.Dict[OptionKey, str]]] = None
introspection_flags: T.Optional[T.List[str]] = None
@abc.abstractproperty
def typename(self) -> str:
@ -637,6 +638,12 @@ class Target(HoldableObject, metaclass=abc.ABCMeta):
return subdir_part + '@@' + my_id
return my_id
def add_introspection_flag(self, flag: str) -> None:
if self.introspection_flags is None:
self.introspection_flags = [flag]
else:
self.introspection_flags.append(flag)
def get_id(self) -> str:
name = self.name
if getattr(self, 'name_suffix_set', False):

@ -263,6 +263,9 @@ def list_targets(builddata: build.Build, installdata: backends.InstallData, back
'depends': [lib.get_id() for lib in getattr(target, 'dependencies', [])]
}
if target.introspection_flags:
t['flags'] = target.introspection_flags
vs_module_defs = getattr(target, 'vs_module_defs', None)
if vs_module_defs is not None:
t['vs_module_defs'] = vs_module_defs.relative_name()

@ -2222,6 +2222,7 @@ class GnomeModule(ExtensionModule):
target = state.add_target(args, kwargs, build.SharedLibrary)
glue = state.dependency('gtk4-android-glue')
target.add_deps([glue])
target.add_introspection_flag('gnome:has-android-glue')
else:
target = state.add_target(args, kwargs, build.Executable)
return ModuleReturnValue(target, [])

Loading…
Cancel
Save