Reland of Decoupling rtc_base from Obj-C code (patchset #1 id:1 of https://codereview.webrtc.org/3008103002/ )

Reason for revert:
Trying to reland after fixing downstream project.

Original issue's description:
> Revert of Decoupling rtc_base from Obj-C code (patchset #8 id:140001 of https://codereview.webrtc.org/3001623003/ )
>
> Reason for revert:
> It breaks a downstream project.
>
> Original issue's description:
> > Decoupling rtc_base 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_objc and rtc_base_generic)
> > and rtc_base will act as a proxy between these targets (this way we can avoid a
> > circular dependency between rtc_base_generic and rtc_base_objc).
> >
> > BUG=webrtc:7743
> >
> > Review-Url: https://codereview.webrtc.org/3001623003
> > Cr-Commit-Position: refs/heads/master@{#19661}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/a0a5b98937de0f0bf90e17011d2cbc8c632cb409
>
> TBR=kjellander@webrtc.org,kwiberg@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:7743
>
> Review-Url: https://codereview.webrtc.org/3008103002
> Cr-Commit-Position: refs/heads/master@{#19664}
> Committed: https://chromium.googlesource.com/external/webrtc/+/791a8f611da8cc6b0668ccc03bf7525e6ba72a46

TBR=kjellander@webrtc.org,kwiberg@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:7743

Review-Url: https://codereview.webrtc.org/3004373002
Cr-Original-Commit-Position: refs/heads/master@{#19681}
Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc
Cr-Mirrored-Commit: a0c893f324da5c9f0773f8990a29cd24643864e4
diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
index 1914b27..3cb7766 100644
--- a/rtc_base/BUILD.gn
+++ b/rtc_base/BUILD.gn
@@ -429,7 +429,28 @@
   }
 }
 
-rtc_static_library("rtc_base") {
+rtc_source_set("rtc_base") {
+  public_deps = [
+    ":rtc_base_generic",
+  ]
+  if (is_ios || is_mac) {
+    public_deps += [ ":rtc_base_objc" ]
+  }
+}
+
+if (is_ios || is_mac) {
+  rtc_source_set("rtc_base_objc") {
+    sources = [
+      "thread_darwin.mm",
+    ]
+    deps = [
+      ":rtc_base_generic",
+    ]
+    visibility = [ ":rtc_base" ]
+  }
+}
+
+rtc_source_set("rtc_base_generic") {
   cflags = []
   cflags_cc = []
   libs = []
@@ -538,6 +559,11 @@
     "thread.h",
   ]
 
+  visibility = [
+    ":rtc_base",
+    ":rtc_base_objc",
+  ]
+
   # TODO(henrike): issue 3307, make rtc_base build with the Chromium default
   # compiler settings.
   suppressed_configs += [ "//build/config/compiler:chromium_code" ]
@@ -597,10 +623,7 @@
   }
 
   if (is_ios || is_mac) {
-    sources += [
-      "macifaddrs_converter.cc",
-      "thread_darwin.mm",
-    ]
+    sources += [ "macifaddrs_converter.cc" ]
   }
 
   if (use_x11) {