diff options
Diffstat (limited to 'mesonbuild/cmake/interpreter.py')
-rw-r--r-- | mesonbuild/cmake/interpreter.py | 16 |
1 files changed, 12 insertions, 4 deletions
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 ';;;' |