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 <mbonadei@webrtc.org>
> Reviewed-by: Dirk Pranke <dpranke@chromium.org>
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> 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 <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29816}
diff --git a/api/task_queue/BUILD.gn b/api/task_queue/BUILD.gn
index 7d44977..00be784 100644
--- a/api/task_queue/BUILD.gn
+++ b/api/task_queue/BUILD.gn
@@ -39,6 +39,15 @@
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 4e0f364..ec0ca54 100644
--- a/webrtc.gni
+++ b/webrtc.gni
@@ -471,6 +471,21 @@
}
}
+ # 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 @@
}
}
+ # 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
}