summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/build/config/coverage
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/libwebrtc/build/config/coverage')
-rw-r--r--third_party/libwebrtc/build/config/coverage/BUILD.gn34
-rw-r--r--third_party/libwebrtc/build/config/coverage/OWNERS3
-rw-r--r--third_party/libwebrtc/build/config/coverage/coverage.gni40
3 files changed, 77 insertions, 0 deletions
diff --git a/third_party/libwebrtc/build/config/coverage/BUILD.gn b/third_party/libwebrtc/build/config/coverage/BUILD.gn
new file mode 100644
index 0000000000..09c227dce8
--- /dev/null
+++ b/third_party/libwebrtc/build/config/coverage/BUILD.gn
@@ -0,0 +1,34 @@
+# 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/config/coverage/coverage.gni")
+
+config("default_coverage") {
+ if (use_clang_coverage) {
+ ldflags = []
+ if (!is_win) {
+ # Windows directly calls link.exe instead of the compiler driver when
+ # linking, and embeds the path to the profile runtime library as
+ # dependent library into each object file.
+ ldflags += [ "-fprofile-instr-generate" ]
+ }
+
+ cflags = [
+ "-fprofile-instr-generate",
+ "-fcoverage-mapping",
+
+ # Following experimental flags removes unused header functions from the
+ # coverage mapping data embedded in the test binaries, and the reduction
+ # of binary size enables building Chrome's large unit test targets on
+ # MacOS. Please refer to crbug.com/796290 for more details.
+ "-mllvm",
+ "-limited-coverage-experimental=true",
+ ]
+
+ if (is_linux || is_chromeos) {
+ # TODO(crbug.com/1194301): Remove this flag.
+ cflags += [ "-fno-use-cxa-atexit" ]
+ }
+ }
+}
diff --git a/third_party/libwebrtc/build/config/coverage/OWNERS b/third_party/libwebrtc/build/config/coverage/OWNERS
new file mode 100644
index 0000000000..0fc481f477
--- /dev/null
+++ b/third_party/libwebrtc/build/config/coverage/OWNERS
@@ -0,0 +1,3 @@
+inferno@chromium.org
+liaoyuke@chromium.org
+ochang@chromium.org
diff --git a/third_party/libwebrtc/build/config/coverage/coverage.gni b/third_party/libwebrtc/build/config/coverage/coverage.gni
new file mode 100644
index 0000000000..b0e01c1d4e
--- /dev/null
+++ b/third_party/libwebrtc/build/config/coverage/coverage.gni
@@ -0,0 +1,40 @@
+# 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")
+if (is_fuchsia) {
+ import("//third_party/fuchsia-sdk/sdk/build/component.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.
+ if (is_fuchsia) {
+ use_clang_coverage = fuchsia_code_coverage
+ } else {
+ 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.")