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