interpreter: implement the `name()` method for `ExternalLibraryHolder`
This allows `cc.find_library().name()` to work, just like
`dependency().name()`.
Fixes: #13053
diff --git a/docs/markdown/snippets/find_library_name.md b/docs/markdown/snippets/find_library_name.md
new file mode 100644
index 0000000..ffb18eb
--- /dev/null
+++ b/docs/markdown/snippets/find_library_name.md
@@ -0,0 +1,3 @@
+## dependencies created by compiler.find_library implement the `name()` method
+
+Which would previously result in Meson crashing.
diff --git a/docs/yaml/objects/dep.yaml b/docs/yaml/objects/dep.yaml
index 52e28fa..76543d2 100644
--- a/docs/yaml/objects/dep.yaml
+++ b/docs/yaml/objects/dep.yaml
@@ -15,6 +15,9 @@
Returns `'internal'` for dependencies created with
[[declare_dependency]].
+ NOTE: This was not implemented for dep objects returned by
+ [[compiler.find_library]] until Meson 1.5.0
+
- name: get_pkgconfig_variable
since: 0.36.0
deprecated: 0.56.0
diff --git a/mesonbuild/interpreter/interpreterobjects.py b/mesonbuild/interpreter/interpreterobjects.py
index edf785c..0360e44 100644
--- a/mesonbuild/interpreter/interpreterobjects.py
+++ b/mesonbuild/interpreter/interpreterobjects.py
@@ -644,6 +644,7 @@
self.methods.update({'found': self.found_method,
'type_name': self.type_name_method,
'partial_dependency': self.partial_dependency_method,
+ 'name': self.name_method,
})
@noPosargs
@@ -663,6 +664,13 @@
pdep = self.held_object.get_partial_dependency(**kwargs)
return pdep
+ @FeatureNew('name', '1.5.0')
+ @noPosargs
+ @noKwargs
+ def name_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> str:
+ return self.held_object.name
+
+
# A machine that's statically known from the cross file
class MachineHolder(ObjectHolder['MachineInfo']):
def __init__(self, machine_info: 'MachineInfo', interpreter: 'Interpreter'):