diff --git a/BUILD.gn b/BUILD.gn index 6f1aaaff02..38ac768786 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -64,6 +64,7 @@ declare_args() { } v8_random_seed = "314159265" +v8_toolset_for_d8 = "host" v8_toolset_for_shell = "host" if (is_msan) { @@ -2065,44 +2066,48 @@ if (is_component_build) { } } -executable("d8") { - sources = [ - "src/d8.cc", - "src/d8.h", - ] +if ((current_toolchain == host_toolchain && v8_toolset_for_d8 == "host") || + (current_toolchain == snapshot_toolchain && v8_toolset_for_d8 == "host") || + (current_toolchain != host_toolchain && v8_toolset_for_d8 == "target")) { + executable("d8") { + sources = [ + "src/d8.cc", + "src/d8.h", + ] - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] - configs += [ - # Note: don't use :internal_config here because this target will get - # the :external_config applied to it by virtue of depending on :v8, and - # you can't have both applied to the same target. - ":internal_config_base", - ":features", - ":toolchain", - ] + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ + # Note: don't use :internal_config here because this target will get + # the :external_config applied to it by virtue of depending on :v8, and + # you can't have both applied to the same target. + ":internal_config_base", + ":features", + ":toolchain", + ] - deps = [ - ":d8_js2c", - ":v8", - ":v8_libplatform", - "//build/config/sanitizers:deps", - "//build/win:default_exe_manifest", - ] + deps = [ + ":d8_js2c", + ":v8", + ":v8_libplatform", + "//build/config/sanitizers:deps", + "//build/win:default_exe_manifest", + ] - # TODO(jochen): Add support for vtunejit. + # TODO(jochen): Add support for vtunejit. - if (is_posix) { - sources += [ "src/d8-posix.cc" ] - } else if (is_win) { - sources += [ "src/d8-windows.cc" ] - } + if (is_posix) { + sources += [ "src/d8-posix.cc" ] + } else if (is_win) { + sources += [ "src/d8-windows.cc" ] + } - if (!is_component_build) { - sources += [ "$target_gen_dir/d8-js.cc" ] - } - if (v8_enable_i18n_support) { - deps += [ "//third_party/icu" ] + if (!is_component_build) { + sources += [ "$target_gen_dir/d8-js.cc" ] + } + if (v8_enable_i18n_support) { + deps += [ "//third_party/icu" ] + } } } diff --git a/gypfiles/toolchain.gypi b/gypfiles/toolchain.gypi index bc3ee5efa3..ee6cd20067 100644 --- a/gypfiles/toolchain.gypi +++ b/gypfiles/toolchain.gypi @@ -76,6 +76,11 @@ # it's handled in gypfiles/standalone.gypi. 'want_separate_host_toolset%': 1, + # Toolset the d8 binary should be compiled for. Possible values are 'host' + # and 'target'. If you want to run v8 tests, it needs to be set to 'target'. + # The setting is ignored if want_separate_host_toolset is 0. + 'v8_toolset_for_d8%': 'target', + # Toolset the shell binary should be compiled for. Possible values are # 'host' and 'target'. # The setting is ignored if want_separate_host_toolset is 0. diff --git a/src/d8.gyp b/src/d8.gyp index e60b01f8c8..f328616238 100644 --- a/src/d8.gyp +++ b/src/d8.gyp @@ -31,6 +31,7 @@ # Enable support for Intel VTune. Supported on ia32/x64 only 'v8_enable_vtunejit%': 0, 'v8_enable_i18n_support%': 1, + 'v8_toolset_for_d8%': 'target', }, 'includes': ['../gypfiles/toolchain.gypi', '../gypfiles/features.gypi'], 'targets': [ @@ -51,7 +52,7 @@ ], 'conditions': [ [ 'want_separate_host_toolset==1', { - 'toolsets': [ 'target', ], + 'toolsets': [ '<(v8_toolset_for_d8)', ], }], ['(OS=="linux" or OS=="mac" or OS=="freebsd" or OS=="netbsd" \ or OS=="openbsd" or OS=="solaris" or OS=="android" \ @@ -140,7 +141,7 @@ }, ], 'conditions': [ - ['test_isolation_mode != "noop"', { + ['test_isolation_mode != "noop" and v8_toolset_for_d8 == "target"', { 'targets': [ { 'target_name': 'd8_run',