diff --git a/BUILD.gn b/BUILD.gn index 8098894204..6eb56e0ada 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -838,7 +838,6 @@ action("v8_dump_build_config") { is_gcov_coverage = v8_code_coverage && !is_clang args = [ rebase_path("$root_out_dir/v8_build_config.json", root_build_dir), - "current_cpu=\"$current_cpu\"", "dcheck_always_on=$dcheck_always_on", "is_asan=$is_asan", "is_cfi=$is_cfi", @@ -849,7 +848,6 @@ action("v8_dump_build_config") { "is_tsan=$is_tsan", "is_ubsan_vptr=$is_ubsan_vptr", "target_cpu=\"$target_cpu\"", - "v8_current_cpu=\"$v8_current_cpu\"", "v8_enable_i18n_support=$v8_enable_i18n_support", "v8_target_cpu=\"$v8_target_cpu\"", "v8_use_snapshot=$v8_use_snapshot", diff --git a/gypfiles/toolchain.gypi b/gypfiles/toolchain.gypi index 5733d2d54c..80844cecc6 100644 --- a/gypfiles/toolchain.gypi +++ b/gypfiles/toolchain.gypi @@ -32,6 +32,7 @@ 'msvs_use_common_release': 0, 'clang%': 0, 'asan%': 0, + 'cfi_vptr%': 0, 'lsan%': 0, 'msan%': 0, 'tsan%': 0, diff --git a/src/v8.gyp b/src/v8.gyp index 99d877b1c6..9e7e9573ad 100644 --- a/src/v8.gyp +++ b/src/v8.gyp @@ -42,7 +42,7 @@ { 'target_name': 'v8', 'dependencies_traverse': 1, - 'dependencies': ['v8_maybe_snapshot'], + 'dependencies': ['v8_maybe_snapshot', 'v8_dump_build_config'], 'conditions': [ ['want_separate_host_toolset==1', { 'toolsets': ['host', 'target'], @@ -2519,5 +2519,49 @@ }], ], }, + { + 'target_name': 'v8_dump_build_config', + 'type': 'none', + 'variables': { + }, + 'conditions': [ + [ 'want_separate_host_toolset==1', { + 'toolsets': ['host'], + }, { + 'toolsets': ['target'], + }] + ], + 'actions': [ + { + 'action_name': 'v8_dump_build_config', + 'inputs': [ + '../tools/testrunner/utils/dump_build_config_gyp.py', + ], + 'outputs': [ + '<(PRODUCT_DIR)/v8_build_config.json', + ], + 'action': [ + 'python', + '../tools/testrunner/utils/dump_build_config_gyp.py', + '<(PRODUCT_DIR)/v8_build_config.json', + 'dcheck_always_on=<(dcheck_always_on)', + 'is_asan=<(asan)', + 'is_cfi=<(cfi_vptr)', + 'is_component_build="<(component)"', + 'is_debug="<(CONFIGURATION_NAME)"', + # Not available in gyp. + 'is_gcov_coverage=0', + 'is_msan=<(msan)', + 'is_tsan=<(tsan)', + # Not available in gyp. + 'is_ubsan_vptr=0', + 'target_cpu="<(target_arch)"', + 'v8_enable_i18n_support=<(v8_enable_i18n_support)', + 'v8_target_cpu="<(v8_target_arch)"', + 'v8_use_snapshot=<(v8_use_snapshot)', + ], + }, + ], + }, ], } diff --git a/tools/testrunner/utils/dump_build_config.py b/tools/testrunner/utils/dump_build_config.py index bd57b5f34e..b691bb3dc8 100644 --- a/tools/testrunner/utils/dump_build_config.py +++ b/tools/testrunner/utils/dump_build_config.py @@ -15,7 +15,7 @@ import json import os import sys -assert len(sys.argv) > 1 +assert len(sys.argv) > 2 def as_json(kv): assert '=' in kv @@ -23,4 +23,4 @@ def as_json(kv): return k, json.loads(v) with open(sys.argv[1], 'w') as f: - json.dump(dict(as_json(kv) for kv in sys.argv[2:]), f) + json.dump(dict(map(as_json, sys.argv[2:])), f) diff --git a/tools/testrunner/utils/dump_build_config_gyp.py b/tools/testrunner/utils/dump_build_config_gyp.py new file mode 100644 index 0000000000..920459d929 --- /dev/null +++ b/tools/testrunner/utils/dump_build_config_gyp.py @@ -0,0 +1,47 @@ +# Copyright 2017 the V8 project authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""The same as dump_build_config.py but for gyp legacy. + +Expected to be called like: +dump_build_config.py path/to/file.json [key1=value1 ...] + +Raw gyp values are supported - they will be tranformed into valid json. +""" +# TODO(machenbach): Remove this when gyp is deprecated. + +import json +import os +import sys + +assert len(sys.argv) > 2 + + +GYP_GN_CONVERSION = { + 'is_component_build': { + '"shared_library"': 'true', + '"static_library"': 'false', + }, + 'is_debug': { + '"Debug"': 'true', + '"Release"': 'false', + }, +} + +DEFAULT_CONVERSION ={ + '0': 'false', + '1': 'true', + '"ia32"': '"x86"', +} + +def gyp_to_gn(key, value): + return GYP_GN_CONVERSION.get(key, DEFAULT_CONVERSION).get(value, value) + +def as_json(kv): + assert '=' in kv + k, v = kv.split('=', 1) + return k, json.loads(gyp_to_gn(k, v)) + +with open(sys.argv[1], 'w') as f: + json.dump(dict(map(as_json, sys.argv[2:])), f)