blob: 13755d2be5076f1761a23873fcacbccfe8ca9d2f [file] [log] [blame]
dpranke909e931c2016-06-16 18:43:351# Copyright 2016 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import("//build/config/sanitizers/sanitizers.gni")
6
7declare_args() {
8 # This arg is used when we want to tell the JIT-generating v8 code
9 # that we want to have it generate for an architecture that is different
10 # than the architecture that v8 will actually run on; we then run the
11 # code under an emulator. For example, we might run v8 on x86, but
12 # generate arm code and run that under emulation.
13 #
14 # This arg is defined here rather than in the v8 project because we want
15 # some of the common architecture-specific args (like arm_float_abi or
16 # mips_arch_variant) to be set to their defaults either if the current_cpu
dpranke8a2de902016-07-14 20:08:3717 # applies *or* if the v8_current_cpu applies.
dpranke909e931c2016-06-16 18:43:3518 #
dpranke8a2de902016-07-14 20:08:3719 # As described below, you can also specify the v8_target_cpu to use
20 # indirectly by specifying a `custom_toolchain` that contains v8_$cpu in the
21 # name after the normal toolchain.
22 #
23 # For example, `gn gen --args="custom_toolchain=...:clang_x64_v8_arm64"`
24 # is equivalent to setting --args=`v8_target_cpu="arm64"`. Setting
25 # `custom_toolchain` is more verbose but makes the toolchain that is
26 # (effectively) being used explicit.
27 #
28 # v8_target_cpu can only be used to target one architecture in a build,
29 # so if you wish to build multiple copies of v8 that are targetting
30 # different architectures, you will need to do something more
31 # complicated involving multiple toolchains along the lines of
32 # custom_toolchain, above.
dpranke909e931c2016-06-16 18:43:3533 v8_target_cpu = ""
34}
35
36if (v8_target_cpu == "") {
dprankefb1cadc2016-07-19 01:54:1537 if (current_toolchain == "//build/toolchain/linux:clang_x64_v8_arm64") {
dpranke8a2de902016-07-14 20:08:3738 v8_target_cpu = "arm64"
dprankefb1cadc2016-07-19 01:54:1539 } else if (current_toolchain == "//build/toolchain/linux:clang_x86_v8_arm") {
dpranke8a2de902016-07-14 20:08:3740 v8_target_cpu = "arm"
dprankefb1cadc2016-07-19 01:54:1541 } else if (current_toolchain ==
42 "//build/toolchain/linux:clang_x86_v8_mips64el") {
43 v8_target_cpu = "mips64el"
44 } else if (current_toolchain ==
45 "//build/toolchain/linux:clang_x86_v8_mipsel") {
46 v8_target_cpu = "mipsel"
dpranke8a2de902016-07-14 20:08:3747 } else if (is_msan) {
48 # If we're running under a sanitizer, if we configure v8 to generate
49 # code that will be run under a simulator, then the generated code
50 # also gets the benefits of the sanitizer.
dpranke909e931c2016-06-16 18:43:3551 v8_target_cpu = "arm64"
52 } else {
53 v8_target_cpu = target_cpu
54 }
55}
dpranke8a2de902016-07-14 20:08:3756
57declare_args() {
58 # This argument is declared here so that it can be overridden in toolchains.
59 # It should never be explicitly set by the user.
60 v8_current_cpu = v8_target_cpu
61}