Home | History | Annotate | Download | only in gni
      1 # Copyright 2016 the V8 project 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 import("//third_party/icu/config.gni")
      7 import("v8.gni")
      8 
      9 declare_args() {
     10   # Sets the test isolation mode (noop|prepare|check).
     11   v8_test_isolation_mode = "noop"
     12 }
     13 
     14 template("v8_isolate_run") {
     15   # Remember target name as within the action scope the target name will be
     16   # different.
     17   name = target_name
     18   if (name != "" && invoker.isolate != "" && invoker.deps != [] &&
     19       v8_test_isolation_mode != "noop") {
     20     action(name + "_run") {
     21       testonly = true
     22 
     23       deps = invoker.deps
     24 
     25       script = "//tools/isolate_driver.py"
     26 
     27       sources = [
     28         invoker.isolate,
     29       ]
     30 
     31       inputs = [
     32         # Files that are known to be involved in this step.
     33         "//tools/swarming_client/isolate.py",
     34         "//tools/swarming_client/run_isolated.py",
     35       ]
     36 
     37       if (v8_test_isolation_mode == "prepare") {
     38         outputs = [
     39           "$root_out_dir/$name.isolated.gen.json",
     40         ]
     41       } else if (v8_test_isolation_mode == "check") {
     42         outputs = [
     43           "$root_out_dir/$name.isolated",
     44           "$root_out_dir/$name.isolated.state",
     45         ]
     46       }
     47 
     48       # Translate gn to gyp variables.
     49       if (is_asan) {
     50         asan = "1"
     51       } else {
     52         asan = "0"
     53       }
     54       if (is_msan) {
     55         msan = "1"
     56       } else {
     57         msan = "0"
     58       }
     59       if (is_tsan) {
     60         tsan = "1"
     61       } else {
     62         tsan = "0"
     63       }
     64       if (is_cfi) {
     65         cfi_vptr = "1"
     66       } else {
     67         cfi_vptr = "0"
     68       }
     69       if (use_custom_libcxx) {
     70         custom_libcxx = "1"
     71       } else {
     72         custom_libcxx = "0"
     73       }
     74       if (target_cpu == "x86") {
     75         target_arch = "ia32"
     76       } else {
     77         target_arch = target_cpu
     78       }
     79       if (is_debug) {
     80         configuration_name = "Debug"
     81       } else {
     82         configuration_name = "Release"
     83       }
     84       if (is_component_build) {
     85         component = "shared_library"
     86       } else {
     87         component = "static_library"
     88       }
     89       if (icu_use_data_file) {
     90         icu_use_data_file_flag = "1"
     91       } else {
     92         icu_use_data_file_flag = "0"
     93       }
     94       if (v8_use_external_startup_data) {
     95         use_external_startup_data = "1"
     96       } else {
     97         use_external_startup_data = "0"
     98       }
     99       if (v8_use_snapshot) {
    100         use_snapshot = "true"
    101       } else {
    102         use_snapshot = "false"
    103       }
    104 
    105       # Note, all paths will be rebased in isolate_driver.py to be relative to
    106       # the isolate file.
    107       args = [
    108         v8_test_isolation_mode,
    109         "--isolated",
    110         rebase_path("$root_out_dir/$name.isolated", root_build_dir),
    111         "--isolate",
    112         rebase_path(invoker.isolate, root_build_dir),
    113 
    114         # Path variables are used to replace file paths when loading a .isolate
    115         # file
    116         "--path-variable",
    117         "DEPTH",
    118         rebase_path("//", root_build_dir),
    119         "--path-variable",
    120         "PRODUCT_DIR",
    121         rebase_path(root_out_dir, root_build_dir),
    122 
    123         # TODO(machenbach): Set variables for remaining features.
    124         "--config-variable",
    125         "CONFIGURATION_NAME=$configuration_name",
    126         "--config-variable",
    127         "OS=$target_os",
    128         "--config-variable",
    129         "asan=$asan",
    130         "--config-variable",
    131         "cfi_vptr=$cfi_vptr",
    132         "--config-variable",
    133         "gcmole=0",
    134         "--config-variable",
    135         "has_valgrind=0",
    136         "--config-variable",
    137         "icu_use_data_file_flag=$icu_use_data_file_flag",
    138         "--config-variable",
    139         "msan=$msan",
    140         "--config-variable",
    141         "tsan=$tsan",
    142         "--config-variable",
    143         "coverage=0",
    144         "--config-variable",
    145         "sanitizer_coverage=0",
    146         "--config-variable",
    147         "component=$component",
    148         "--config-variable",
    149         "target_arch=$target_arch",
    150         "--config-variable",
    151         "use_custom_libcxx=$custom_libcxx",
    152         "--config-variable",
    153         "v8_use_external_startup_data=$use_external_startup_data",
    154         "--config-variable",
    155         "v8_use_snapshot=$use_snapshot",
    156       ]
    157 
    158       if (is_win) {
    159         args += [
    160           "--config-variable",
    161           "msvs_version=2013",
    162         ]
    163       } else {
    164         args += [
    165           "--config-variable",
    166           "msvs_version=0",
    167         ]
    168       }
    169     }
    170   }
    171 }
    172