From d3c7da58930fd5985712e4410b271086eef02b37 Mon Sep 17 00:00:00 2001 From: Nicolas Despres Date: Sat, 6 Feb 2016 09:37:51 +0100 Subject: [PATCH] Add support for implicit outputs in ninja_syntax.py. --- misc/ninja_syntax.py | 7 ++++++- misc/ninja_syntax_test.py | 7 +++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/misc/ninja_syntax.py b/misc/ninja_syntax.py index 73d2209..5c52ea2 100644 --- a/misc/ninja_syntax.py +++ b/misc/ninja_syntax.py @@ -60,7 +60,7 @@ class Writer(object): self.variable('deps', deps, indent=1) def build(self, outputs, rule, inputs=None, implicit=None, order_only=None, - variables=None): + variables=None, implicit_outputs=None): outputs = as_list(outputs) out_outputs = [escape_path(x) for x in outputs] all_inputs = [escape_path(x) for x in as_list(inputs)] @@ -73,6 +73,11 @@ class Writer(object): order_only = [escape_path(x) for x in as_list(order_only)] all_inputs.append('||') all_inputs.extend(order_only) + if implicit_outputs: + implicit_outputs = [escape_path(x) + for x in as_list(implicit_outputs)] + out_outputs.append('|') + out_outputs.extend(implicit_outputs) self._line('build %s: %s' % (' '.join(out_outputs), ' '.join([rule] + all_inputs))) diff --git a/misc/ninja_syntax_test.py b/misc/ninja_syntax_test.py index c9755b8..07e3ed3 100755 --- a/misc/ninja_syntax_test.py +++ b/misc/ninja_syntax_test.py @@ -154,6 +154,13 @@ build out: cc in ''', self.out.getvalue()) + def test_implicit_outputs(self): + self.n.build('o', 'cc', 'i', implicit_outputs='io') + self.assertEqual('''\ +build o | io: cc i +''', + self.out.getvalue()) + class TestExpand(unittest.TestCase): def test_basic(self): vars = {'x': 'X'} -- 2.7.4