aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/cmake/interpreter.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/cmake/interpreter.py')
-rw-r--r--mesonbuild/cmake/interpreter.py16
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 ';;;'