# 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.

source_set("gmock_mutant") {
  sources = [
    "gmock_mutant.h",  # gMock helpers
  ]

  deps = [
    "//base",
  ]
}

# Used by linux-gcc-rel to ensure gcc doesn't choke on clang-only flags.
executable("empty_main") {
  sources = [
    "empty_main.cc",
  ]
  deps = [
    "//build/config:exe_and_shlib_deps",
  ]
}

# Targets needed for isolate script to execute.
group("test_scripts_shared") {
  data = [
    "//testing/test_env.py",
    "//testing/xvfb.py",
  ]
}

group("run_perf_test") {
  data = [
    "//testing/scripts/common.py",
    "//testing/scripts/run_gtest_perf_test.py",
    "//testing/scripts/run_performance_tests.py",
    "//testing/scripts/run_performance_tests_wrapper.py",
    "//testing/scripts/run_telemetry_benchmark_as_googletest.py",
    "//tools/perf/generate_legacy_perf_dashboard_json.py",
  ]

  data_deps = [
    ":test_scripts_shared",
  ]
}
