aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2023-08-11 09:18:10 -0700
committerDylan Baker <dylan@pnwbakers.com>2023-08-14 09:55:18 -0700
commit09bc028c7120b78e01a6be285f9961c58bff7462 (patch)
treea68f74fa2e05e7df2b7542a1f9c500c25f4cfac9
parentcd676e229b3b5d34550a9a39fa41c2d686c48596 (diff)
downloadmeson-09bc028c7120b78e01a6be285f9961c58bff7462.zip
meson-09bc028c7120b78e01a6be285f9961c58bff7462.tar.gz
meson-09bc028c7120b78e01a6be285f9961c58bff7462.tar.bz2
interpreter: use typed_kwargs for shared_library(soversion)
-rw-r--r--mesonbuild/build.py12
-rw-r--r--mesonbuild/interpreter/kwargs.py1
-rw-r--r--mesonbuild/interpreter/type_checking.py1
3 files changed, 5 insertions, 9 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 979672a..c1427be 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.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.
diff --git a/mesonbuild/interpreter/kwargs.py b/mesonbuild/interpreter/kwargs.py
index e92f700..c463288 100644
--- a/mesonbuild/interpreter/kwargs.py
+++ b/mesonbuild/interpreter/kwargs.py
@@ -340,6 +340,7 @@ class StaticLibrary(_BuildTarget):
class _SharedLibMixin(TypedDict):
+ soversion: T.Optional[str]
version: T.Optional[str]
diff --git a/mesonbuild/interpreter/type_checking.py b/mesonbuild/interpreter/type_checking.py
index 5ae189a..87a4d43 100644
--- a/mesonbuild/interpreter/type_checking.py
+++ b/mesonbuild/interpreter/type_checking.py
@@ -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)
]