Files
platform-external-webrtc/api/task_queue/BUILD.gn
Mirko Bonadei 53e157d25c 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}
2019-11-15 16:36:28 +00:00

113 lines
3.2 KiB
Plaintext

# Copyright (c) 2018 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.
import("../../webrtc.gni")
rtc_library("task_queue") {
visibility = [ "*" ]
public = [
"queued_task.h",
"task_queue_base.h",
"task_queue_factory.h",
]
sources = [
"task_queue_base.cc",
]
deps = [
"../../rtc_base:checks",
"../../rtc_base:macromagic",
"../../rtc_base/system:rtc_export",
"//third_party/abseil-cpp/absl/base:config",
"//third_party/abseil-cpp/absl/base:core_headers",
"//third_party/abseil-cpp/absl/strings",
]
}
rtc_library("task_queue_test") {
visibility = [ "*" ]
testonly = true
sources = [
"task_queue_test.cc",
"task_queue_test.h",
]
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 = [
"../../../webrtc_overrides:webrtc_component",
"../../test:test_support",
"//third_party/abseil-cpp/absl/memory",
"//third_party/abseil-cpp/absl/strings",
]
} else {
deps = [
":task_queue",
"../../rtc_base:refcount",
"../../rtc_base:rtc_event",
"../../rtc_base:timeutils",
"../../rtc_base/task_utils:to_queued_task",
"../../test:test_support",
"//third_party/abseil-cpp/absl/memory",
"//third_party/abseil-cpp/absl/strings",
]
}
}
rtc_library("default_task_queue_factory") {
visibility = [ "*" ]
if (!is_ios && !is_android) {
poisonous = [ "default_task_queue" ]
}
sources = [
"default_task_queue_factory.h",
]
deps = [
":task_queue",
]
if (rtc_enable_libevent) {
sources += [ "default_task_queue_factory_libevent.cc" ]
deps += [ "../../rtc_base:rtc_task_queue_libevent" ]
} else if (is_mac || is_ios) {
sources += [ "default_task_queue_factory_gcd.cc" ]
deps += [ "../../rtc_base:rtc_task_queue_gcd" ]
} else if (is_win && current_os != "winuwp") {
sources += [ "default_task_queue_factory_win.cc" ]
deps += [ "../../rtc_base:rtc_task_queue_win" ]
} else {
sources += [ "default_task_queue_factory_stdlib.cc" ]
deps += [ "../../rtc_base:rtc_task_queue_stdlib" ]
}
}
if (rtc_include_tests) {
rtc_library("task_queue_default_factory_unittests") {
testonly = true
sources = [
"default_task_queue_factory_unittest.cc",
]
deps = [
":default_task_queue_factory",
":task_queue_test",
"../../test:test_support",
]
}
}