# 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",
    "gcmole:v8_run_gcmole",
    "jsfunfuzz:v8_jsfunfuzz",
  ]
}

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_python_base",
    "..:v8_dump_build_config",
    ":v8_android_test_runner_deps",
  ]

  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",
    ]
  }
}
