| Index: pylib/gyp/generator/ninja.py
|
| ===================================================================
|
| --- pylib/gyp/generator/ninja.py (revision 1387)
|
| +++ pylib/gyp/generator/ninja.py (working copy)
|
| @@ -71,6 +71,16 @@
|
| return "'" + arg.replace("'", "'" + '"\'"' + "'") + "'"
|
|
|
|
|
| +def Define(d, flavor):
|
| + """Takes a preprocessor define and returns a -D parameter that's ninja- and
|
| + shell-escaped."""
|
| + if flavor == 'win':
|
| + # cl.exe replaces literal # characters with = in preprocesor definitions for
|
| + # some reason. Octal-encode to work around that.
|
| + d = d.replace('#', '\\%03o' % ord('#'))
|
| + return QuoteShellArgument(ninja_syntax.escape('-D' + d), flavor)
|
| +
|
| +
|
| def InvertRelativePath(path):
|
| """Given a relative path like foo/bar, return the inverse relative path:
|
| the path from the relative path back to the origin dir.
|
| @@ -635,9 +645,7 @@
|
| # Create an intermediate file to store preprocessed results.
|
| intermediate_plist = self.GypPathToUniqueOutput(
|
| os.path.basename(info_plist))
|
| - defines = ' '.join(
|
| - [QuoteShellArgument(ninja_syntax.escape('-D' + d), self.flavor)
|
| - for d in defines])
|
| + defines = ' '.join([Define(d, self.flavor) for d in defines])
|
| info_plist = self.ninja.build(intermediate_plist, 'infoplist', info_plist,
|
| variables=[('defines',defines)])
|
|
|
| @@ -679,9 +687,7 @@
|
| cflags_cc = config.get('cflags_cc', [])
|
|
|
| defines = config.get('defines', []) + extra_defines
|
| - self.WriteVariableList('defines',
|
| - [QuoteShellArgument(ninja_syntax.escape('-D' + d), self.flavor)
|
| - for d in defines])
|
| + self.WriteVariableList('defines', [Define(d, self.flavor) for d in defines])
|
| if self.flavor == 'win':
|
| self.WriteVariableList('rcflags',
|
| [QuoteShellArgument(self.ExpandSpecial(f), self.flavor)
|
|
|