Decoupling rtc_base_approved from Obj-C code
The goal of this CL is to separate Obj-C/Obj-C++ code from targets which have
also C++ code (see https://bugs.chromium.org/p/webrtc/issues/detail?id=7743
for more information).
To achieve this we have created 2 targets (rtc_base_approved_objc and
rtc_base_approved_generic) and rtc_base_approved will act as a proxy between
these targets (this way we can avoid a circular dependency between
rtc_base_approved_generic and rtc_base_approved_objc).
BUG=webrtc:7743
NOTRY=True
Review-Url: https://codereview.webrtc.org/2988433002
Cr-Original-Commit-Position: refs/heads/master@{#19767}
Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc
Cr-Mirrored-Commit: bc378479787930b511b151b278318516492bc9fc
diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
index 902024f..9120292 100644
--- a/rtc_base/BUILD.gn
+++ b/rtc_base/BUILD.gn
@@ -31,12 +31,6 @@
}
}
-config("rtc_base_approved_all_dependent_config") {
- if (is_mac && !build_with_chromium) {
- libs = [ "Foundation.framework" ] # needed for logging_mac.mm
- }
-}
-
config("rtc_base_chromium_config") {
defines = [ "NO_MAIN_THREAD_WRAPPING" ]
}
@@ -86,8 +80,22 @@
]
}
+rtc_source_set("rtc_base_approved") {
+ public_deps = [
+ ":rtc_base_approved_generic",
+ ]
+ if (is_mac && !build_with_chromium) {
+ public_deps += [ ":rtc_base_approved_objc" ]
+ }
+}
+
# The subset of rtc_base approved for use outside of libjingle.
-rtc_static_library("rtc_base_approved") {
+rtc_source_set("rtc_base_approved_generic") {
+ visibility = [
+ ":rtc_base_approved",
+ ":rtc_base_approved_objc",
+ ]
+
# TODO(kjellander): Remove (bugs.webrtc.org/7480)
# Enabling GN check triggers a cyclic dependency caused by rate_limiter.cc:
# :rtc_base_approved -> ../system_wrappers -> :rtc_base_approved
@@ -95,7 +103,6 @@
defines = []
libs = []
deps = []
- all_dependent_configs = [ ":rtc_base_approved_all_dependent_config" ]
sources = [
"array_view.h",
@@ -209,7 +216,6 @@
sources += [
"logging.cc",
"logging.h",
- "logging_mac.mm",
]
}
if (is_component_build && is_win) {
@@ -289,6 +295,24 @@
}
}
+if (is_mac && !build_with_chromium) {
+ config("rtc_base_approved_objc_all_dependent_config") {
+ visibility = [ ":rtc_base_approved_objc" ]
+ libs = [ "Foundation.framework" ] # needed for logging_mac.mm
+ }
+
+ rtc_source_set("rtc_base_approved_objc") {
+ visibility = [ ":rtc_base_approved" ]
+ all_dependent_configs = [ ":rtc_base_approved_objc_all_dependent_config" ]
+ sources = [
+ "logging_mac.mm",
+ ]
+ deps = [
+ ":rtc_base_approved_generic",
+ ]
+ }
+}
+
rtc_source_set("rtc_task_queue") {
deps = [
":rtc_base_approved",