aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter/interpreter.py
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2021-09-02 11:04:19 -0400
committerXavier Claessens <xclaesse@gmail.com>2021-09-30 12:26:19 -0400
commitd2fa6d50809e6a5955999152f43a461595c6bc4c (patch)
treefa5910692858d2b6c7371a8b0fbee87bd97e6f31 /mesonbuild/interpreter/interpreter.py
parente58b3adc7044980bbddca1ad9674ac7b0c5bac0a (diff)
downloadmeson-d2fa6d50809e6a5955999152f43a461595c6bc4c.zip
meson-d2fa6d50809e6a5955999152f43a461595c6bc4c.tar.gz
meson-d2fa6d50809e6a5955999152f43a461595c6bc4c.tar.bz2
Make custom_target() name argument optional
Diffstat (limited to 'mesonbuild/interpreter/interpreter.py')
-rw-r--r--mesonbuild/interpreter/interpreter.py13
1 files changed, 10 insertions, 3 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py
index c452251..8bd68b8 100644
--- a/mesonbuild/interpreter/interpreter.py
+++ b/mesonbuild/interpreter/interpreter.py
@@ -1633,8 +1633,8 @@ external dependencies (including libraries) must go to "dependencies".''')
'build_always', 'capture', 'depends', 'depend_files', 'depfile',
'build_by_default', 'build_always_stale', 'console', 'env',
'feed', 'install_tag'})
- @typed_pos_args('custom_target', str)
- def func_custom_target(self, node: mparser.FunctionNode, args: T.Tuple[str], kwargs: 'TYPE_kwargs') -> build.CustomTarget:
+ @typed_pos_args('custom_target', optargs=[str])
+ def func_custom_target(self, node: mparser.FunctionNode, args: T.Tuple[T.Optional[str]], kwargs: 'TYPE_kwargs') -> build.CustomTarget:
if 'depfile' in kwargs and ('@BASENAME@' in kwargs['depfile'] or '@PLAINNAME@' in kwargs['depfile']):
FeatureNew.single_use('substitutions in custom_target depfile', '0.47.0', self.subproject)
return self._func_custom_target_impl(node, args, kwargs)
@@ -1642,6 +1642,13 @@ external dependencies (including libraries) must go to "dependencies".''')
def _func_custom_target_impl(self, node, args, kwargs):
'Implementation-only, without FeatureNew checks, for internal use'
name = args[0]
+ if name is None:
+ # name will default to first output, but we cannot do that yet because
+ # they could need substitutions (e.g. @BASENAME@) first. CustomTarget()
+ # will take care of setting a proper default but name must be an empty
+ # string in the meantime.
+ FeatureNew('custom_target() with no name argument', '0.60.0').use(self.subproject)
+ name = ''
kwargs['install_mode'] = self._get_kwarg_install_mode(kwargs)
if 'input' in kwargs:
try:
@@ -1654,7 +1661,7 @@ This will become a hard error in the future.''' % kwargs['input'], location=self
if isinstance(kwargs['command'][0], str):
kwargs['command'][0] = self.func_find_program(node, kwargs['command'][0], {})
tg = build.CustomTarget(name, self.subdir, self.subproject, kwargs, backend=self.backend)
- self.add_target(name, tg)
+ self.add_target(tg.name, tg)
return tg
@FeatureNewKwargs('run_target', '0.57.0', ['env'])