xref: /aosp_15_r20/external/cronet/build/config/coverage/coverage.gni (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker# Copyright 2017 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard Workerimport("//build/toolchain/toolchain.gni")
6*6777b538SAndroid Build Coastguard Workerif (is_fuchsia) {
7*6777b538SAndroid Build Coastguard Worker  import("//third_party/fuchsia-gn-sdk/src/component.gni")
8*6777b538SAndroid Build Coastguard Worker}
9*6777b538SAndroid Build Coastguard Worker
10*6777b538SAndroid Build Coastguard Worker# There are two ways to enable code coverage instrumentation:
11*6777b538SAndroid Build Coastguard Worker# 1. When |use_clang_coverage| or |use_jacoco_coverage| is true and
12*6777b538SAndroid Build Coastguard Worker#    |coverage_instrumentation_input_file| is empty, all source files or
13*6777b538SAndroid Build Coastguard Worker#    Java class files are instrumented.
14*6777b538SAndroid Build Coastguard Worker# 2. When |use_clang_coverage| or |use_jacoco_coverage| is true and
15*6777b538SAndroid Build Coastguard Worker#    |coverage_instrumentation_input_file| is NOT empty and points to
16*6777b538SAndroid Build Coastguard Worker#    a text file on the file system, ONLY source files specified in the
17*6777b538SAndroid Build Coastguard Worker#    input file or Java class files related to source files are instrumented.
18*6777b538SAndroid Build Coastguard Workerdeclare_args() {
19*6777b538SAndroid Build Coastguard Worker  # Enable Clang's Source-based Code Coverage.
20*6777b538SAndroid Build Coastguard Worker  if (is_fuchsia) {
21*6777b538SAndroid Build Coastguard Worker    use_clang_coverage = fuchsia_code_coverage
22*6777b538SAndroid Build Coastguard Worker  } else {
23*6777b538SAndroid Build Coastguard Worker    use_clang_coverage = false
24*6777b538SAndroid Build Coastguard Worker  }
25*6777b538SAndroid Build Coastguard Worker
26*6777b538SAndroid Build Coastguard Worker  # Enables JaCoCo Java code coverage.
27*6777b538SAndroid Build Coastguard Worker  use_jacoco_coverage = false
28*6777b538SAndroid Build Coastguard Worker
29*6777b538SAndroid Build Coastguard Worker  # The path to the coverage instrumentation input file should be a source root
30*6777b538SAndroid Build Coastguard Worker  # absolute path (e.g. //out/Release/coverage_instrumentation_input.txt), and
31*6777b538SAndroid Build Coastguard Worker  # the file consists of multiple lines where each line represents a path to a
32*6777b538SAndroid Build Coastguard Worker  # source file, and the paths must be relative to the root build directory.
33*6777b538SAndroid Build Coastguard Worker  # e.g. ../../base/task/post_task.cc for build directory 'out/Release'.
34*6777b538SAndroid Build Coastguard Worker  #
35*6777b538SAndroid Build Coastguard Worker  # NOTE that this arg will be non-op if use_clang_coverage is false.
36*6777b538SAndroid Build Coastguard Worker  coverage_instrumentation_input_file = ""
37*6777b538SAndroid Build Coastguard Worker
38*6777b538SAndroid Build Coastguard Worker  # Enables TypeScript/JavaScript code coverage.
39*6777b538SAndroid Build Coastguard Worker  use_javascript_coverage = false
40*6777b538SAndroid Build Coastguard Worker}
41*6777b538SAndroid Build Coastguard Worker
42*6777b538SAndroid Build Coastguard Workerassert(!use_clang_coverage || is_clang,
43*6777b538SAndroid Build Coastguard Worker       "Clang Source-based Code Coverage requires clang.")
44