This cl refactor TaskQueues to use a PIMPL implementation on linux/Android.
In later steps the Win/Mac implementation will also be refactored.
The rtc_task_queue target is split up in three separate targets:
rtc_task_queue_api:
Contains the header file task_queue.h but no implementation.
Only external TaskQueue implementations should directly depend on this target.
rtc_task_queue_impl:
Contains the default implementation of task_queue.h.
Only external application targets should directly depend on this target.
rtc_task_queue:
WebRTC targets should depend on this target. It unconditionally depend on rtc_task_queue_api and depending on the new build flag,|rtc_link_task_queue_impl|, depend on rtc_task_queue_impl.
BUG=webrtc:8160
Review-Url: https://codereview.webrtc.org/3003643002
Cr-Commit-Position: refs/heads/master@{#19516}
diff --git a/webrtc/webrtc.gni b/webrtc/webrtc.gni
index 071c9cc..72e031e 100644
--- a/webrtc/webrtc.gni
+++ b/webrtc/webrtc.gni
@@ -105,7 +105,14 @@
# See http://clang.llvm.org/docs/SanitizerCoverage.html .
rtc_sanitize_coverage = ""
+ # Links a default implementation of task queues to targets
+ # that depend on the target rtc_task_queue. Set to false to
+ # use an external implementation.
+ rtc_link_task_queue_impl = true
+
# Enable libevent task queues on platforms that support it.
+ # rtc_link_task_queue_impl must be set to true for this to
+ # have an effect.
if (is_win || is_mac || is_ios || is_nacl) {
rtc_enable_libevent = false
rtc_build_libevent = false
@@ -314,6 +321,7 @@
"//build/config:exe_and_shlib_deps",
]
deps += invoker.deps
+
public_configs = [ rtc_common_inherited_config ]
if (defined(invoker.public_configs)) {
public_configs += invoker.public_configs