diff options
Diffstat (limited to 'BuildTools')
-rwxr-xr-x | BuildTools/scons2ninja.py | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/BuildTools/scons2ninja.py b/BuildTools/scons2ninja.py index 4a7631a..2666ae6 100755 --- a/BuildTools/scons2ninja.py +++ b/BuildTools/scons2ninja.py @@ -12,5 +12,5 @@ ################################################################################ -import re, os, os.path, subprocess, sys, fnmatch +import re, os, os.path, subprocess, sys, fnmatch, shlex ################################################################################ @@ -42,4 +42,10 @@ def escape(s) : return s.replace(' ', '$ ').replace(':', '$:') +def quote_spaces(s) : + if ' ' in s : + return '"' + s + '"' + else : + return s + def to_list(l) : if not l : @@ -115,5 +121,5 @@ def get_built_libs(libs, libpaths, outputs) : def parse_tool_command(line) : - command = line.split(' ') + command = shlex.split(line) flags = command[1:] tool = os.path.splitext(os.path.basename(command[0]))[0] @@ -174,5 +180,5 @@ class NinjaBuilder : if var in ['deps', 'order_deps'] : continue - value = self.to_string(value) + value = self.to_string(value, quote = True) if var.endswith("flags") : value = self.get_flags_variable(var, value) @@ -196,6 +202,9 @@ class NinjaBuilder : return result - def to_string(self, lst) : + def to_string(self, lst, quote = False) : if is_list(lst) : + if quote : + return ' '.join([quote_spaces(x) for x in lst]) + else : return ' '.join([escape(x) for x in lst]) if is_regexp(lst) : |