From bc378479787930b511b151b278318516492bc9fc Mon Sep 17 00:00:00 2001 From: mbonadei Date: Mon, 11 Sep 2017 03:43:34 -0700 Subject: [PATCH] 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-Commit-Position: refs/heads/master@{#19767} --- webrtc/rtc_base/BUILD.gn | 42 +++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/webrtc/rtc_base/BUILD.gn b/webrtc/rtc_base/BUILD.gn index 902024f3f1..9120292728 100644 --- a/webrtc/rtc_base/BUILD.gn +++ b/webrtc/rtc_base/BUILD.gn @@ -31,12 +31,6 @@ group("base") { } } -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 @@ source_set("compile_assert_c") { ] } +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 @@ rtc_static_library("rtc_base_approved") { defines = [] libs = [] deps = [] - all_dependent_configs = [ ":rtc_base_approved_all_dependent_config" ] sources = [ "array_view.h", @@ -209,7 +216,6 @@ rtc_static_library("rtc_base_approved") { sources += [ "logging.cc", "logging.h", - "logging_mac.mm", ] } if (is_component_build && is_win) { @@ -289,6 +295,24 @@ rtc_static_library("rtc_base_approved") { } } +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",