mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-12 21:30:45 +01:00

This adds Perfetto support to WebRTC with a GN flag rtc_use_perfetto. The configuration of perfetto depends on whether or not webrtc is build within Chrome or not. When in Chrome, WebRTC will depend on //third_party/perfetto:libperfetto. When building standalone, specific includes required for Perfetto are exposed with the library webrtc_libperfetto. The perfetto trace API is exposed with a header export in trace_event.h which is used instead of the legacy API. The addition of Perfetto means there are 4 compilation modes for tracing in WebRTC, 1. No tracing implementation. 2. Legacy tracing (AddTraceEvent/GetCategoryEnabled). 3.a. Perfetto statically linked (webrtc_libperfetto). 3.b. Perfetto in Chrome (Chrome's libperfetto). This CL removes the tracing expectations from rtc_stats_integrationtest.cc because those directly used the old API. Integration into Chrome is a follow up CL which depends on https://chromium-review.googlesource.com/c/chromium/src/+/5471691. Tested: Ran Chrome with Perfetto and traces appear. WebRTC Unit test tracing working: https://ui.perfetto.dev/#!?s=04ea2613ea36b814394639a1ec4b60be5b5097527f1a485995ecc13469885468 Bug: webrtc:15917 Change-Id: I537d79dc247c2b759689910c621087286a4d8fdc Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/347880 Reviewed-by: Harald Alvestrand <hta@webrtc.org> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Auto-Submit: Evan Shrubsole <eshr@google.com> Commit-Queue: Harald Alvestrand <hta@webrtc.org> Reviewed-by: Mikhail Khokhlov <khokhlov@google.com> Cr-Commit-Position: refs/heads/main@{#42166}
71 lines
3 KiB
Text
71 lines
3 KiB
Text
# Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
|
|
#
|
|
# Use of this source code is governed by a BSD-style license
|
|
# that can be found in the LICENSE file in the root of the source
|
|
# tree. An additional intellectual property rights grant can be found
|
|
# in the file PATENTS. All contributing project authors may
|
|
# be found in the AUTHORS file in the root of the source tree.
|
|
|
|
# Some non-Chromium builds don't support building java targets.
|
|
enable_java_templates = true
|
|
|
|
# Enables assertions on safety checks in libc++.
|
|
enable_safe_libcxx = true
|
|
|
|
# Don't set this variable to true when building stadalone WebRTC, it is
|
|
# only needed to support both WebRTC standalone and Chromium builds.
|
|
build_with_chromium = false
|
|
|
|
use_cxx17 = !is_android
|
|
|
|
# Use our own suppressions files.
|
|
asan_suppressions_file = "//build/sanitizers/asan_suppressions.cc"
|
|
lsan_suppressions_file = "//tools_webrtc/sanitizers/lsan_suppressions_webrtc.cc"
|
|
tsan_suppressions_file = "//tools_webrtc/sanitizers/tsan_suppressions_webrtc.cc"
|
|
msan_ignorelist_path =
|
|
rebase_path("//tools_webrtc/msan/suppressions.txt", root_build_dir)
|
|
ubsan_ignorelist_path =
|
|
rebase_path("//tools_webrtc/ubsan/suppressions.txt", root_build_dir)
|
|
ubsan_vptr_ignorelist_path =
|
|
rebase_path("//tools_webrtc/ubsan/vptr_suppressions.txt", root_build_dir)
|
|
|
|
# For Chromium, Android 32-bit non-component, non-clang builds hit a 4GiB size
|
|
# limit, making them requiring symbol_level=2. WebRTC doesn't hit that problem
|
|
# so we just ignore that assert. See https://crbug.com/648948 for more info.
|
|
ignore_elf32_limitations = true
|
|
|
|
perfetto_build_with_embedder = true
|
|
enable_perfetto_trace_processor = true
|
|
|
|
# Use bundled hermetic Xcode installation maintainted by Chromium,
|
|
# except for local iOS builds where it's unsupported.
|
|
# Allow for mac cross compile on linux machines.
|
|
if (host_os == "mac" || host_os == "linux") {
|
|
_result = exec_script("//build/mac/should_use_hermetic_xcode.py",
|
|
[ target_os ],
|
|
"value")
|
|
assert(_result != 2,
|
|
"Do not allow building targets with the default " +
|
|
"hermetic toolchain if the minimum OS version is not met.")
|
|
use_system_xcode = _result == 0
|
|
}
|
|
|
|
declare_args() {
|
|
# WebRTC doesn't depend on //base from production code but only for testing
|
|
# purposes. In any case, it doesn't depend on //third_party/perfetto which
|
|
# is used for base tracing, so this feature is disabled.
|
|
enable_base_tracing = false
|
|
use_perfetto_client_library = false
|
|
use_perfetto_trace_processor = false
|
|
|
|
# Limits the defined //third_party/android_deps targets to only "buildCompile"
|
|
# and "buildCompileNoDeps" targets. This is useful for third-party
|
|
# repositories which do not use JUnit tests. For instance,
|
|
# limit_android_deps == true removes "gn gen" requirement for
|
|
# //third_party/robolectric .
|
|
limit_android_deps = false
|
|
|
|
# If true, it assumes that //third_party/abseil-cpp is an available
|
|
# dependency for googletest.
|
|
gtest_enable_absl_printers = true
|
|
}
|