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