dpranke | 909e931c | 2016-06-16 18:43:35 | [diff] [blame] | 1 | # 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 | |
| 5 | import("//build/config/sanitizers/sanitizers.gni") |
| 6 | |
| 7 | declare_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 |
dpranke | 8a2de90 | 2016-07-14 20:08:37 | [diff] [blame] | 17 | # applies *or* if the v8_current_cpu applies. |
dpranke | 909e931c | 2016-06-16 18:43:35 | [diff] [blame] | 18 | # |
dpranke | 8a2de90 | 2016-07-14 20:08:37 | [diff] [blame] | 19 | # 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. |
dpranke | 909e931c | 2016-06-16 18:43:35 | [diff] [blame] | 33 | v8_target_cpu = "" |
| 34 | } |
| 35 | |
| 36 | if (v8_target_cpu == "") { |
dpranke | fb1cadc | 2016-07-19 01:54:15 | [diff] [blame^] | 37 | if (current_toolchain == "//build/toolchain/linux:clang_x64_v8_arm64") { |
dpranke | 8a2de90 | 2016-07-14 20:08:37 | [diff] [blame] | 38 | v8_target_cpu = "arm64" |
dpranke | fb1cadc | 2016-07-19 01:54:15 | [diff] [blame^] | 39 | } else if (current_toolchain == "//build/toolchain/linux:clang_x86_v8_arm") { |
dpranke | 8a2de90 | 2016-07-14 20:08:37 | [diff] [blame] | 40 | v8_target_cpu = "arm" |
dpranke | fb1cadc | 2016-07-19 01:54:15 | [diff] [blame^] | 41 | } 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" |
dpranke | 8a2de90 | 2016-07-14 20:08:37 | [diff] [blame] | 47 | } 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. |
dpranke | 909e931c | 2016-06-16 18:43:35 | [diff] [blame] | 51 | v8_target_cpu = "arm64" |
| 52 | } else { |
| 53 | v8_target_cpu = target_cpu |
| 54 | } |
| 55 | } |
dpranke | 8a2de90 | 2016-07-14 20:08:37 | [diff] [blame] | 56 | |
| 57 | declare_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 | } |