[gyp] Fix string escaping for GYP on Windows

Fixes .gyp scaffolding for building on Windows.

Patch from Refael Ackermann <refack@gmail.com>.
5528afd073

Bug=v8:7061

Change-Id: I4faaf3f488b6725942746d74838ef7ce73b1e8d0
Reviewed-on: https://chromium-review.googlesource.com/761477
Reviewed-by: Mathias Bynens <mathias@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Mathias Bynens <mathias@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49280}
This commit is contained in:
Myles Borins 2017-11-09 14:49:00 -05:00 committed by Commit Bot
parent f3a2e34dba
commit 02c84d4192
2 changed files with 18 additions and 11 deletions

View File

@ -2540,18 +2540,18 @@
'dcheck_always_on=<(dcheck_always_on)', 'dcheck_always_on=<(dcheck_always_on)',
'is_asan=<(asan)', 'is_asan=<(asan)',
'is_cfi=<(cfi_vptr)', 'is_cfi=<(cfi_vptr)',
'is_component_build="<(component)"', 'is_component_build=<(component)',
'is_debug="<(CONFIGURATION_NAME)"', 'is_debug=<(CONFIGURATION_NAME)',
# Not available in gyp. # Not available in gyp.
'is_gcov_coverage=0', 'is_gcov_coverage=0',
'is_msan=<(msan)', 'is_msan=<(msan)',
'is_tsan=<(tsan)', 'is_tsan=<(tsan)',
# Not available in gyp. # Not available in gyp.
'is_ubsan_vptr=0', 'is_ubsan_vptr=0',
'target_cpu="<(target_arch)"', 'target_cpu=<(target_arch)',
'v8_enable_i18n_support=<(v8_enable_i18n_support)', 'v8_enable_i18n_support=<(v8_enable_i18n_support)',
'v8_enable_verify_predictable=<(v8_enable_verify_predictable)', 'v8_enable_verify_predictable=<(v8_enable_verify_predictable)',
'v8_target_cpu="<(v8_target_arch)"', 'v8_target_cpu=<(v8_target_arch)',
'v8_use_snapshot=<(v8_use_snapshot)', 'v8_use_snapshot=<(v8_use_snapshot)',
], ],
}, },

View File

@ -20,28 +20,35 @@ assert len(sys.argv) > 2
GYP_GN_CONVERSION = { GYP_GN_CONVERSION = {
'is_component_build': { 'is_component_build': {
'"shared_library"': 'true', 'shared_library': 'true',
'"static_library"': 'false', 'static_library': 'false',
}, },
'is_debug': { 'is_debug': {
'"Debug"': 'true', 'Debug': 'true',
'"Release"': 'false', 'Release': 'false',
}, },
} }
DEFAULT_CONVERSION ={ DEFAULT_CONVERSION ={
'0': 'false', '0': 'false',
'1': 'true', '1': 'true',
'"ia32"': '"x86"', 'ia32': 'x86',
} }
def gyp_to_gn(key, value): def gyp_to_gn(key, value):
return GYP_GN_CONVERSION.get(key, DEFAULT_CONVERSION).get(value, value) value = GYP_GN_CONVERSION.get(key, DEFAULT_CONVERSION).get(value, value)
value = value if value in ['true', 'false'] else '"{0}"'.format(value)
return value
def as_json(kv): def as_json(kv):
assert '=' in kv assert '=' in kv
k, v = kv.split('=', 1) k, v = kv.split('=', 1)
return k, json.loads(gyp_to_gn(k, v)) v2 = gyp_to_gn(k, v)
try:
return k, json.loads(v2)
except ValueError as e:
print(k, v, v2)
raise e
with open(sys.argv[1], 'w') as f: with open(sys.argv[1], 'w') as f:
json.dump(dict(map(as_json, sys.argv[2:])), f) json.dump(dict(map(as_json, sys.argv[2:])), f)