# Copyright 2016 the V8 project authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/sanitizers/sanitizers.gni")
import("../gni/v8.gni")

group("gn_all") {
  testonly = true

  data_deps = [
    ":v8_check_static_initializers",
    "debug_helper:v8_debug_helper",
    "gcmole:v8_run_gcmole",
    "jsfunfuzz:v8_jsfunfuzz",
  ]

  if (is_win) {
    data_deps += [ "v8windbg" ]
  }
}

group("v8_check_static_initializers") {
  data_deps = [ "..:d8" ]

  data = [ "check-static-initializers.sh" ]
}

group("v8_android_test_runner_deps") {
  testonly = true

  if (is_android && !build_with_chromium) {
    data_deps = [ "//build/android:test_runner_py" ]
    data = [
      # This is used by android.py, but not included by test_runner_py above.
      "//third_party/catapult/devil/devil/android/perf/",
    ]
  }
}

group("v8_testrunner") {
  testonly = true

  data_deps = [
    ":v8_android_test_runner_deps",
    "..:v8_dump_build_config",
    "..:v8_python_base",
  ]

  data = [
    # Also add the num-fuzzer wrapper script in order to be able to run the
    # num-fuzzer on all existing isolated V8 test suites.
    "predictable_wrapper.py",
    "run-num-fuzzer.py",
    "run-tests.py",
    "testrunner/",
  ]

  if (v8_code_coverage && sanitizer_coverage_flags == "bb,trace-pc-guard") {
    data += [
      "sanitizers/sancov_merger.py",
      "../third_party/llvm/projects/compiler-rt/lib/sanitizer_common/scripts/sancov.py",
    ]
  }
}
