# Copyright 2017 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/toolchain/toolchain.gni")

# There are two ways to enable code coverage instrumentation:
# 1. When |use_clang_coverage| or |use_jacoco_coverage| is true and
#    |coverage_instrumentation_input_file| is empty, all source files or
#    Java class files are instrumented.
# 2. When |use_clang_coverage| or |use_jacoco_coverage| is true and
#    |coverage_instrumentation_input_file| is NOT empty and points to
#    a text file on the file system, ONLY source files specified in the
#    input file or Java class files related to source files are instrumented.
declare_args() {
  # Enable Clang's Source-based Code Coverage.
  use_clang_coverage = false

  # Enables JaCoCo Java code coverage.
  use_jacoco_coverage = false

  # The path to the coverage instrumentation input file should be a source root
  # absolute path (e.g. //out/Release/coverage_instrumentation_input.txt), and
  # the file consists of multiple lines where each line represents a path to a
  # source file, and the paths must be relative to the root build directory.
  # e.g. ../../base/task/post_task.cc for build directory 'out/Release'.
  #
  # NOTE that this arg will be non-op if use_clang_coverage is false.
  coverage_instrumentation_input_file = ""
}

assert(!use_clang_coverage || is_clang,
       "Clang Source-based Code Coverage requires clang.")
