interpreter: implement the `name()` method for `ExternalLibraryHolder`

This allows `cc.find_library().name()` to work, just like
`dependency().name()`.

Fixes: #13053
This commit is contained in:
Dylan Baker 2024-04-08 10:21:22 -07:00
parent ffa235213c
commit 4f94284013
3 changed files with 14 additions and 0 deletions

View File

@ -0,0 +1,3 @@
## dependencies created by compiler.find_library implement the `name()` method
Which would previously result in Meson crashing.

View File

@ -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

View File

@ -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'):