• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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  # 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