From daeee32d9bf6a136fc3de6dade065a918290b429 Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Tue, 1 Oct 2019 20:37:35 -0400 Subject: cmake: Add support for add_custom_target() with a command The command could have no output, in which case we create a dummy one. --- mesonbuild/cmake/interpreter.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'mesonbuild/cmake/interpreter.py') diff --git a/mesonbuild/cmake/interpreter.py b/mesonbuild/cmake/interpreter.py index 718e70a..5fd8ce0 100644 --- a/mesonbuild/cmake/interpreter.py +++ b/mesonbuild/cmake/interpreter.py @@ -408,7 +408,10 @@ class ConverterCustomTarget: out_counter = 0 # type: int def __init__(self, target: CMakeGeneratorTarget): - self.name = 'custom_tgt_{}'.format(ConverterCustomTarget.tgt_counter) + self.name = target.name + if not self.name: + self.name = 'custom_tgt_{}'.format(ConverterCustomTarget.tgt_counter) + ConverterCustomTarget.tgt_counter += 1 self.original_outputs = list(target.outputs) self.outputs = [os.path.basename(x) for x in self.original_outputs] self.conflict_map = {} @@ -418,8 +421,6 @@ class ConverterCustomTarget: self.inputs = [] self.depends = [] - ConverterCustomTarget.tgt_counter += 1 - def __repr__(self) -> str: return '<{}: {}>'.format(self.__class__.__name__, self.outputs) @@ -729,6 +730,7 @@ class CMakeInterpreter: for j in i.artifacts: output_target_map[os.path.basename(j)] = i for i in self.custom_targets: + output_target_map[_target_key(i.name)] = i for j in i.original_outputs: output_target_map[_generated_file_key(j)] = i object_libs = [] @@ -971,6 +973,11 @@ class CMakeInterpreter: tgt_var = tgt.name # type: str + # If the custom target does not declare any output, create a dummy + # one that can be used as dependency. + if not tgt.outputs: + tgt.outputs = [tgt.name + '.h'] + def resolve_source(x: Any) -> Any: if isinstance(x, ConverterTarget): if x.name not in processed: @@ -991,7 +998,8 @@ class CMakeInterpreter: command = [] command += [id_node(run_script_var)] command += ['-o', '@OUTPUT@'] - command += ['-O'] + tgt.original_outputs + if tgt.original_outputs: + command += ['-O'] + tgt.original_outputs command += ['-d', tgt.working_dir] # Generate the commands. Subcommands are separated by ';;;' -- cgit v1.1