OLD | NEW |
1 # This file comes from | 1 # This file comes from |
2 # https://github.com/martine/ninja/blob/master/misc/ninja_syntax.py | 2 # https://github.com/martine/ninja/blob/master/misc/ninja_syntax.py |
3 # Do not edit! Edit the upstream one instead. | 3 # Do not edit! Edit the upstream one instead. |
4 | 4 |
5 """Python module for generating .ninja files. | 5 """Python module for generating .ninja files. |
6 | 6 |
7 Note that this is emphatically not a required piece of Ninja; it's | 7 Note that this is emphatically not a required piece of Ninja; it's |
8 just a helpful utility for build-file-generation systems that already | 8 just a helpful utility for build-file-generation systems that already |
9 use Python. | 9 use Python. |
10 """ | 10 """ |
(...skipping 17 matching lines...) Expand all Loading... |
28 self.output.write('# ' + line + '\n') | 28 self.output.write('# ' + line + '\n') |
29 | 29 |
30 def variable(self, key, value, indent=0): | 30 def variable(self, key, value, indent=0): |
31 if value is None: | 31 if value is None: |
32 return | 32 return |
33 if isinstance(value, list): | 33 if isinstance(value, list): |
34 value = ' '.join(filter(None, value)) # Filter out empty strings. | 34 value = ' '.join(filter(None, value)) # Filter out empty strings. |
35 self._line('%s = %s' % (key, value), indent) | 35 self._line('%s = %s' % (key, value), indent) |
36 | 36 |
37 def rule(self, name, command, description=None, depfile=None, | 37 def rule(self, name, command, description=None, depfile=None, |
38 generator=False, restat=False, deplist=None): | 38 generator=False, restat=False, deplist=None, rspfile=None, |
| 39 rspfile_content=None, depdb=None): |
39 self._line('rule %s' % name) | 40 self._line('rule %s' % name) |
40 self.variable('command', command, indent=1) | 41 self.variable('command', command, indent=1) |
41 if description: | 42 if description: |
42 self.variable('description', description, indent=1) | 43 self.variable('description', description, indent=1) |
43 if depfile: | 44 if depfile: |
44 self.variable('depfile', depfile, indent=1) | 45 self.variable('depfile', depfile, indent=1) |
45 if deplist: | 46 if deplist: |
46 self.variable('deplist', deplist, indent=1) | 47 self.variable('deplist', deplist, indent=1) |
| 48 if depdb: |
| 49 self.variable('depdb', depdb, indent=1) |
47 if generator: | 50 if generator: |
48 self.variable('generator', '1', indent=1) | 51 self.variable('generator', '1', indent=1) |
49 if restat: | 52 if restat: |
50 self.variable('restat', '1', indent=1) | 53 self.variable('restat', '1', indent=1) |
| 54 if rspfile: |
| 55 self.variable('rspfile', rspfile, indent=1) |
| 56 if rspfile_content: |
| 57 self.variable('rspfile_content', rspfile_content, indent=1) |
51 | 58 |
52 def build(self, outputs, rule, inputs=None, implicit=None, order_only=None, | 59 def build(self, outputs, rule, inputs=None, implicit=None, order_only=None, |
53 variables=None): | 60 variables=None): |
54 outputs = self._as_list(outputs) | 61 outputs = self._as_list(outputs) |
55 all_inputs = self._as_list(inputs)[:] | 62 all_inputs = self._as_list(inputs)[:] |
56 out_outputs = map(escape_spaces, outputs) | 63 out_outputs = map(escape_spaces, outputs) |
57 all_inputs = map(escape_spaces, all_inputs) | 64 all_inputs = map(escape_spaces, all_inputs) |
58 | 65 |
59 if implicit: | 66 if implicit: |
60 implicit = map(escape_spaces, self._as_list(implicit)) | 67 implicit = map(escape_spaces, self._as_list(implicit)) |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 return input | 143 return input |
137 return [input] | 144 return [input] |
138 | 145 |
139 | 146 |
140 def escape(string): | 147 def escape(string): |
141 """Escape a string such that it can be embedded into a Ninja file without | 148 """Escape a string such that it can be embedded into a Ninja file without |
142 further interpretation.""" | 149 further interpretation.""" |
143 assert '\n' not in string, 'Ninja syntax does not allow newlines' | 150 assert '\n' not in string, 'Ninja syntax does not allow newlines' |
144 # We only have one special metacharacter: '$'. | 151 # We only have one special metacharacter: '$'. |
145 return string.replace('$', '$$') | 152 return string.replace('$', '$$') |
OLD | NEW |