summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2024-04-08 10:21:22 -0700
committerDylan Baker <dylan@pnwbakers.com>2024-04-23 11:27:12 -0700
commit4f94284013d257bf361b18da6c6d8c80e64cf24f (patch)
tree92ee44399945080bcbf98cd2ee7e504299a516b6
parentffa235213cf8b45569abdde84cd1c9aa4e63d6a3 (diff)
downloadmeson-4f94284013d257bf361b18da6c6d8c80e64cf24f.tar.gz
interpreter: implement the `name()` method for `ExternalLibraryHolder`
This allows `cc.find_library().name()` to work, just like `dependency().name()`. Fixes: #13053
-rw-r--r--docs/markdown/snippets/find_library_name.md3
-rw-r--r--docs/yaml/objects/dep.yaml3
-rw-r--r--mesonbuild/interpreter/interpreterobjects.py8
3 files changed, 14 insertions, 0 deletions
diff --git a/docs/markdown/snippets/find_library_name.md b/docs/markdown/snippets/find_library_name.md
new file mode 100644
index 000000000..ffb18eb85
--- /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 52e28faca..76543d2c1 100644
--- a/docs/yaml/objects/dep.yaml
+++ b/docs/yaml/objects/dep.yaml
@@ -15,6 +15,9 @@ methods:
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 edf785c0d..0360e4450 100644
--- a/mesonbuild/interpreter/interpreterobjects.py
+++ b/mesonbuild/interpreter/interpreterobjects.py
@@ -644,6 +644,7 @@ class ExternalLibraryHolder(ObjectHolder[ExternalLibrary]):
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 @@ class ExternalLibraryHolder(ObjectHolder[ExternalLibrary]):
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'):