Index: build/gyp_chromium |
diff --git a/build/gyp_chromium b/build/gyp_chromium |
index 64e4ff5e969449556111d4345def7ca80e4273cc..05bc3fa09eb86b2e16a18616b9d69a3e7232b56f 100755 |
--- a/build/gyp_chromium |
+++ b/build/gyp_chromium |
@@ -72,6 +72,12 @@ def FormatKeyForGN(key): |
return ''.join([c if c in string.ascii_letters else '_' for c in key]) |
+def EscapeStringForGN(s): |
+ """Converts a string to a GN string literal.""" |
+ # Escape $ characters which have special meaning to GN. |
+ return '"' + s.replace('$', '\\$').replace('"', '\\"') + '"' |
+ |
+ |
def GetVarsStringForGN(supplemental_files): |
vars_dict = {} |
@@ -84,8 +90,7 @@ def GetVarsStringForGN(supplemental_files): |
raise |
variables = file_data.get('variables', []) |
for v in variables: |
- vars_dict[FormatKeyForGN(v)] = '"' + \ |
- str(variables[v]).replace("$", "\\$") + '"' |
+ vars_dict[FormatKeyForGN(v)] = EscapeStringForGN(str(variables[v])) |
env_string = os.environ.get('GYP_DEFINES', '') |
items = shlex.split(env_string) |
@@ -94,8 +99,7 @@ def GetVarsStringForGN(supplemental_files): |
# Some GYP variables have hyphens, which we don't support. |
key = FormatKeyForGN(tokens[0]) |
if len(tokens) == 2: |
- # Escape $ characters which have special meaning to GN. |
- vars_dict[key] = '"' + tokens[1].replace("$", "\\$") + '"' |
+ vars_dict[key] = EscapeStringForGN(tokens[1]) |
else: |
# No value supplied, treat it as a boolean and set it. |
vars_dict[key] = 'true' |