# Copyright 2014 The Chromium 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/python.gni")

# Used by linux-gcc-rel to ensure gcc doesn't choke on clang-only flags.
if (!is_clang) {
  executable("empty_main") {
    sources = [ "empty_main.cc" ]

    # The bot should only check that an empty file builds fine with gcc.
    # There's no need to check that libc++ builds with a (possibly very old)
    # version of gcc.
    # No need to remove "//build/config/compiler:runtime_library" from configs
    # (to remove its subconfig "//build/config/c++:runtime_library") since
    # empty_main.cc does not include any headers.
    no_default_deps = true
  }
}

# Targets needed for isolate script to execute.
group("test_scripts_shared") {
  data_deps = [
    # Used for reporting test results to RDB.
    "//build/util:test_results",
  ]

  data = [
    "//testing/test_env.py",
    "//testing/xvfb.py",
    "//testing/scripts/common.py",
  ]
}

group("run_perf_test") {
  data = [
    "//testing/scripts/common.py",
    "//testing/scripts/run_performance_tests.py",
    "//tools/perf/generate_legacy_perf_dashboard_json.py",
    "//tools/perf/core/__init__.py",
    "//tools/perf/core/path_util.py",
    "//tools/perf/core/results_merger.py",
  ]

  data_deps = [
    ":test_scripts_shared",
    "//third_party/catapult/tracing:convert_chart_json",
  ]

  if (is_android) {
    # Required when running with bundles (to run "bundletool").
    data_deps += [ "//third_party/jdk:java_data" ]
  }
}

python_library("run_isolated_script_test") {
  testonly = true
  pydeps_file = "//testing/scripts/run_isolated_script_test.pydeps"
  data = [ "//.vpython3" ]
}

python_library("wpt_android_lib") {
  testonly = true
  pydeps_file = "//testing/scripts/run_android_wpt.pydeps"
  data = [ "//.vpython3" ]
}
