aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2023-07-19 13:12:30 -0700
committerXavier Claessens <xclaesse@gmail.com>2023-07-20 14:20:46 -0400
commita62a42b272923f95b7aeb30f0196cfdf3b251264 (patch)
tree7ae0efcb71defaed1cb8227b20707a7c313da084 /mesonbuild/interpreter
parent096869ad63157f666773bd93bd14bdd6bd0602aa (diff)
downloadmeson-a62a42b272923f95b7aeb30f0196cfdf3b251264.zip
meson-a62a42b272923f95b7aeb30f0196cfdf3b251264.tar.gz
meson-a62a42b272923f95b7aeb30f0196cfdf3b251264.tar.bz2
interpreter: use kwarginfo for build_target(target_type)
Which lets us remove a bunch of validation code
Diffstat (limited to 'mesonbuild/interpreter')
-rw-r--r--mesonbuild/interpreter/interpreter.py12
-rw-r--r--mesonbuild/interpreter/kwargs.py4
-rw-r--r--mesonbuild/interpreter/type_checking.py12
3 files changed, 17 insertions, 11 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py
index 853d858..235f048 100644
--- a/mesonbuild/interpreter/interpreter.py
+++ b/mesonbuild/interpreter/interpreter.py
@@ -1877,17 +1877,12 @@ class Interpreter(InterpreterBase, HoldableObject):
kwargs: kwtypes.BuildTarget
) -> T.Union[build.Executable, build.StaticLibrary, build.SharedLibrary,
build.SharedModule, build.BothLibraries, build.Jar]:
- if 'target_type' not in kwargs:
- raise InterpreterException('Missing target_type keyword argument')
- target_type = kwargs.pop('target_type')
+ target_type = kwargs['target_type']
if target_type == 'executable':
return self.build_target(node, args, kwargs, build.Executable)
elif target_type == 'shared_library':
return self.build_target(node, args, kwargs, build.SharedLibrary)
elif target_type == 'shared_module':
- FeatureNew.single_use(
- 'build_target(target_type: \'shared_module\')',
- '0.51.0', self.subproject, location=node)
return self.build_target(node, args, kwargs, build.SharedModule)
elif target_type == 'static_library':
return self.build_target(node, args, kwargs, build.StaticLibrary)
@@ -1895,10 +1890,7 @@ class Interpreter(InterpreterBase, HoldableObject):
return self.build_both_libraries(node, args, kwargs)
elif target_type == 'library':
return self.build_library(node, args, kwargs)
- elif target_type == 'jar':
- return self.build_target(node, args, kwargs, build.Jar)
- else:
- raise InterpreterException('Unknown target_type.')
+ return self.build_target(node, args, kwargs, build.Jar)
@noPosargs
@typed_kwargs(
diff --git a/mesonbuild/interpreter/kwargs.py b/mesonbuild/interpreter/kwargs.py
index 4254c30..31c96e2 100644
--- a/mesonbuild/interpreter/kwargs.py
+++ b/mesonbuild/interpreter/kwargs.py
@@ -348,7 +348,9 @@ class Library(_BuildTarget):
class BuildTarget(Library):
- pass
+
+ target_type: Literal['executable', 'shared_library', 'static_library',
+ 'shared_module', 'both_libraries', 'library', 'jar']
class Jar(_BaseBuildTarget):
diff --git a/mesonbuild/interpreter/type_checking.py b/mesonbuild/interpreter/type_checking.py
index 38e4257..7c615c2 100644
--- a/mesonbuild/interpreter/type_checking.py
+++ b/mesonbuild/interpreter/type_checking.py
@@ -556,4 +556,16 @@ BUILD_TARGET_KWS = [
*LIBRARY_KWS,
*_EXCLUSIVE_EXECUTABLE_KWS,
*_EXCLUSIVE_JAR_KWS,
+ KwargInfo(
+ 'target_type',
+ str,
+ required=True,
+ validator=in_set_validator({
+ 'executable', 'shared_library', 'static_library', 'shared_module',
+ 'both_libraries', 'library', 'jar'
+ }),
+ since_values={
+ 'shared_module': '0.51.0',
+ }
+ )
]