From 92dd35d035a4126f7ac67634b704115287a652cd Mon Sep 17 00:00:00 2001 From: Mirko Bonadei Date: Fri, 15 Nov 2019 16:08:41 +0100 Subject: [PATCH] Reland "Force Chromium deps on the WebRTC component." This is a reland of 53e157d25ce78ba6cd8625b0b655b46f8e1b0a91 The issue has been fixed in https://chromium-review.googlesource.com/c/chromium/src/+/1917204. Original change's description: > Force Chromium deps on the WebRTC component. > > This CL adds a visibility check to the rtc_* GN templates in order > to force Chromium to depend only on publicly visible targets from > //third_party/webrtc_overrides and not from //third_party/webrtc. > > This is required in order to ensure that the Chromium's component > builds continues to work correctly without introducing direct > dependency paths on WebRTC that would statically link it in multiple > shared libraries. > > Bug: webrtc:9419 > Change-Id: Ib89f4fc571512f99678ee4f61696b316374346d9 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/154344 > Commit-Queue: Mirko Bonadei > Reviewed-by: Dirk Pranke > Reviewed-by: Karl Wiberg > Cr-Commit-Position: refs/heads/master@{#29806} TBR: kwiberg@webrtc.org Bug: webrtc:9419 Change-Id: I7123d1b44ddbc23b11d9fa25aa39aa420359e33d Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159922 Reviewed-by: Mirko Bonadei Commit-Queue: Mirko Bonadei Cr-Commit-Position: refs/heads/master@{#29816} --- api/task_queue/BUILD.gn | 9 +++++++++ webrtc.gni | 30 ++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/api/task_queue/BUILD.gn b/api/task_queue/BUILD.gn index 7d449778bb..00be7842df 100644 --- a/api/task_queue/BUILD.gn +++ b/api/task_queue/BUILD.gn @@ -39,6 +39,15 @@ rtc_library("task_queue_test") { check_includes = false # no-presubmit-check TODO(bugs.webrtc.org/9419) if (build_with_chromium) { + visibility = [] + visibility = webrtc_default_visibility + visibility += [ + # This is the only Chromium target that can depend on this. The reason + # behind this is the fact that this is a 'testonly' target and as such + # it cannot be part of the WebRTC component. + "//third_party/blink/renderer/platform:blink_platform_unittests_sources", + ] + # Don't depend on WebRTC code outside of webrtc_overrides:webrtc_component # because this will break the WebRTC component build in Chromium. deps = [ diff --git a/webrtc.gni b/webrtc.gni index 4e0f3641f2..ec0ca54940 100644 --- a/webrtc.gni +++ b/webrtc.gni @@ -471,6 +471,21 @@ template("rtc_source_set") { } } + # Chromium should only depend on the WebRTC component in order to + # avoid to statically link WebRTC in a component build. + if (build_with_chromium) { + publicly_visible = false + foreach(v, visibility) { + if (v == "*") { + publicly_visible = true + } + } + if (publicly_visible) { + visibility = [] + visibility = webrtc_default_visibility + } + } + if (!defined(testonly) || !testonly) { configs += rtc_prod_configs } @@ -643,6 +658,21 @@ template("rtc_library") { } } + # Chromium should only depend on the WebRTC component in order to + # avoid to statically link WebRTC in a component build. + if (build_with_chromium) { + publicly_visible = false + foreach(v, visibility) { + if (v == "*") { + publicly_visible = true + } + } + if (publicly_visible) { + visibility = [] + visibility = webrtc_default_visibility + } + } + if (!defined(testonly) || !testonly) { configs += rtc_prod_configs }