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 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 17 # applies *or* if the v8_current_cpu applies. 18 # 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 targeting 30 # different architectures, you will need to do something more 31 # complicated involving multiple toolchains along the lines of 32 # custom_toolchain, above. 33 v8_target_cpu = "" 34} 35 36if (v8_target_cpu == "") { 37 if (current_toolchain == "//build/toolchain/linux:clang_x64_v8_arm64") { 38 v8_target_cpu = "arm64" 39 } else if (current_toolchain == "//build/toolchain/linux:clang_x86_v8_arm") { 40 v8_target_cpu = "arm" 41 } else if (current_toolchain == 42 "//build/toolchain/linux:clang_x64_v8_x86_64") { 43 v8_target_cpu = "x86_64" 44 } else if (is_msan) { 45 # If we're running under a sanitizer, if we configure v8 to generate 46 # code that will be run under a simulator, then the generated code 47 # also gets the benefits of the sanitizer. 48 v8_target_cpu = "arm64" 49 } else { 50 v8_target_cpu = target_cpu 51 } 52} 53 54declare_args() { 55 # This argument is declared here so that it can be overridden in toolchains. 56 # It should never be explicitly set by the user. 57 v8_current_cpu = v8_target_cpu 58} 59