tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

v8_target_cpu.gni (2746B)


      1 # Copyright 2016 The Chromium Authors
      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("//chromium/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
     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 
     36 if (v8_target_cpu == "") {
     37   if (current_toolchain == "//chromium/build/toolchain/linux:clang_x64_v8_arm64") {
     38     v8_target_cpu = "arm64"
     39   } else if (current_toolchain == "//chromium/build/toolchain/linux:clang_x86_v8_arm") {
     40     v8_target_cpu = "arm"
     41   } else if (current_toolchain ==
     42              "//chromium/build/toolchain/linux:clang_x86_v8_mips64el") {
     43     v8_target_cpu = "mips64el"
     44   } else if (current_toolchain ==
     45              "//chromium/build/toolchain/linux:clang_x86_v8_mipsel") {
     46     v8_target_cpu = "mipsel"
     47   } else if (current_toolchain ==
     48              "//chromium/build/toolchain/linux:clang_x64_v8_riscv64") {
     49     v8_target_cpu = "riscv64"
     50   } else if (is_msan) {
     51     # If we're running under a sanitizer, if we configure v8 to generate
     52     # code that will be run under a simulator, then the generated code
     53     # also gets the benefits of the sanitizer.
     54     v8_target_cpu = "arm64"
     55   } else {
     56     v8_target_cpu = target_cpu
     57   }
     58 }
     59 
     60 declare_args() {
     61   # This argument is declared here so that it can be overridden in toolchains.
     62   # It should never be explicitly set by the user.
     63   v8_current_cpu = v8_target_cpu
     64 }