| # 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| is true and |coverage_instrumentation_input_file| |
| # is empty, all source files are instrumented. |
| # 2. When |use_clang_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 are instrumented. |
| declare_args() { |
| # Enable Clang's Source-based Code Coverage. |
| use_clang_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'. |
| coverage_instrumentation_input_file = "" |
| } |
| |
| assert(!use_clang_coverage || is_clang, |
| "Clang Source-based Code Coverage requires clang.") |
| |
| assert(coverage_instrumentation_input_file == "" || use_clang_coverage, |
| "Instrument a subset of source files requires enabling clang coverage.") |