From 7d5d1570d9eb716f6f869274c0df277bc71328dd Mon Sep 17 00:00:00 2001 From: dpranke Date: Mon, 21 Sep 2015 19:28:32 -0700 Subject: [PATCH] Split the GN 'snapshot_toolchain' logic out into an include file. We need to build parts of v8 with a toolchain that might be different from both the default (target) toolchain and the regular host toolchain, because we need the snapshot to have the same bit-width as the target. V8's build defines a 'snapshot_toolchain' setting for this. It turns out that we need the value of this toolchain to be exposed to the Chromium build because some of the test targets (in browser_tests) depend on d8 and need to be able to built using the same toolchain. R=brett@chromium.org, jochen@chromium.org BUG= Review URL: https://codereview.chromium.org/1350223004 Cr-Commit-Position: refs/heads/master@{#30854} --- BUILD.gn | 21 +++---------------- snapshot_toolchain.gni | 46 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 18 deletions(-) create mode 100644 snapshot_toolchain.gni diff --git a/BUILD.gn b/BUILD.gn index 5cecc41b25..a67948be1f 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -11,6 +11,8 @@ import("//build/config/sanitizers/sanitizers.gni") # Chromium build. import("//build/module_args/v8.gni") +import("snapshot_toolchain.gni") + # TODO(jochen): These will need to be user-settable to support standalone V8 # builds. v8_deprecation_warnings = false @@ -35,24 +37,6 @@ if (is_msan) { v8_target_arch = target_cpu } -# The snapshot needs to be compiled for the host, but compiled with -# a toolchain that matches the bit-width of the target. -# -# TODO(GYP): For now we only support 32-bit little-endian target builds from an -# x64 Linux host. Eventually we need to support all of the host/target -# configurations v8 runs on. -if (host_cpu == "x64" && host_os == "linux") { - if (target_cpu == "arm" || target_cpu == "mipsel" || target_cpu == "x86") { - snapshot_toolchain = "//build/toolchain/linux:clang_x86" - } else if (target_cpu == "x64") { - snapshot_toolchain = "//build/toolchain/linux:clang_x64" - } else { - assert(false, "Need environment for this arch") - } -} else { - snapshot_toolchain = default_toolchain -} - ############################################################################### # Configurations # @@ -1792,6 +1776,7 @@ if (is_component_build) { } 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 = [ diff --git a/snapshot_toolchain.gni b/snapshot_toolchain.gni new file mode 100644 index 0000000000..c419c3ff06 --- /dev/null +++ b/snapshot_toolchain.gni @@ -0,0 +1,46 @@ +# Copyright 2015 the V8 project authors. All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# The snapshot needs to be compiled for the host, but compiled with +# a toolchain that matches the bit-width of the target. + +# TODO(GYP): For now we only support 32-bit little-endian target builds from an +# x64 Linux host. Eventually we need to support all of the host/target +# configurations v8 runs on. +if (host_cpu == "x64" && host_os == "linux") { + if (target_cpu == "arm" || target_cpu == "mipsel" || target_cpu == "x86") { + snapshot_toolchain = "//build/toolchain/linux:clang_x86" + } else if (target_cpu == "x64") { + snapshot_toolchain = "//build/toolchain/linux:clang_x64" + } else { + assert(false, "Need environment for this arch") + } +} else { + snapshot_toolchain = default_toolchain +} + +