interpreter: use typed_kwargs for shared_library(soversion)

pull/12125/head
Dylan Baker 2 years ago
parent cd676e229b
commit 09bc028c71
  1. 12
      mesonbuild/build.py
  2. 1
      mesonbuild/interpreter/kwargs.py
  3. 1
      mesonbuild/interpreter/type_checking.py

@ -2138,7 +2138,7 @@ class SharedLibrary(BuildTarget):
environment: environment.Environment,
compilers: T.Dict[str, 'Compiler'],
kwargs):
self.soversion = None
self.soversion: T.Optional[str] = None
self.ltversion: T.Optional[str] = None
# Max length 2, first element is compatibility_version, second is current_version
self.darwin_versions = []
@ -2351,14 +2351,8 @@ class SharedLibrary(BuildTarget):
if not self.environment.machines[self.for_machine].is_android():
# Shared library version
self.ltversion = T.cast('T.Optional[str]', kwargs.get('version'))
# Try to extract/deduce the soversion
if 'soversion' in kwargs:
self.soversion = kwargs['soversion']
if isinstance(self.soversion, int):
self.soversion = str(self.soversion)
if not isinstance(self.soversion, str):
raise InvalidArguments('Shared library soversion is not a string or integer.')
elif self.ltversion:
self.soversion = T.cast('T.Optional[str]', kwargs.get('soversion'))
if self.soversion is None and self.ltversion is not None:
# library version is defined, get the soversion from that
# We replicate what Autotools does here and take the first
# number of the version by default.

@ -340,6 +340,7 @@ class StaticLibrary(_BuildTarget):
class _SharedLibMixin(TypedDict):
soversion: T.Optional[str]
version: T.Optional[str]

@ -535,6 +535,7 @@ STATIC_LIB_KWS = [
# Arguments exclusive to SharedLibrary. These are separated to make integrating
# them into build_target easier
_EXCLUSIVE_SHARED_LIB_KWS: T.List[KwargInfo] = [
KwargInfo('soversion', (str, int, NoneType), convertor=lambda x: str(x) if x is not None else None),
KwargInfo('version', (str, NoneType), validator=_validate_shlib_version)
]

Loading…
Cancel
Save