diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2018-01-31 22:30:17 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2018-02-01 22:32:43 +0200 |
commit | 6d66be05a8e2993adeb6d7f3e15e58f6934f6bcb (patch) | |
tree | 4802b7fc115418104d781e09317ff3dd81c24a41 | |
parent | 2310fab09d99268685c6f92c27fd0be68b72fade (diff) | |
download | meson-wincolon.tar.gz |
Only quote colons on build lines. Closes #2961.wincolon
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 931892642..ecb43aa4d 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -38,8 +38,12 @@ else: execute_wrapper = '' rmfile_prefix = 'rm -f {} &&' -def ninja_quote(text): - for char in ('$', ' ', ':'): +def ninja_quote(text, is_build_line=False): + if is_build_line: + qcs = ('$', ' ', ':') + else: + qcs = ('$', ' ') + for char in qcs: text = text.replace(char, '$' + char) if '\n' in text: errmsg = '''Ninja does not support newlines in rules. The content was: @@ -87,13 +91,13 @@ class NinjaBuildElement: def write(self, outfile): self.check_outputs() - line = 'build %s: %s %s' % (' '.join([ninja_quote(i) for i in self.outfilenames]), + line = 'build %s: %s %s' % (' '.join([ninja_quote(i, True) for i in self.outfilenames]), self.rule, - ' '.join([ninja_quote(i) for i in self.infilenames])) + ' '.join([ninja_quote(i, True) for i in self.infilenames])) if len(self.deps) > 0: - line += ' | ' + ' '.join([ninja_quote(x) for x in self.deps]) + line += ' | ' + ' '.join([ninja_quote(x, True) for x in self.deps]) if len(self.orderdeps) > 0: - line += ' || ' + ' '.join([ninja_quote(x) for x in self.orderdeps]) + line += ' || ' + ' '.join([ninja_quote(x, True) for x in self.orderdeps]) line += '\n' # This is the only way I could find to make this work on all # platforms including Windows command shell. Slash is a dir separator |