Decoupling video_capture_internal_imlp 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).

BUG=webrtc:7743
NOTRY=True

Review-Url: https://codereview.webrtc.org/2992953002
Cr-Original-Commit-Position: refs/heads/master@{#19662}
Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc
Cr-Mirrored-Commit: 054b10882001974e419a808eea995f6d38a33ba3
diff --git a/modules/video_capture/BUILD.gn b/modules/video_capture/BUILD.gn
index b382ca0..5176862 100644
--- a/modules/video_capture/BUILD.gn
+++ b/modules/video_capture/BUILD.gn
@@ -86,7 +86,38 @@
     }
   }
 
-  rtc_static_library("video_capture_internal_impl") {
+  if (is_ios || is_mac) {
+    rtc_source_set("video_capture_internal_impl_objc") {
+      visibility = [ ":video_capture_internal_impl" ]
+      configs += [ ":video_capture_internal_impl_warnings_config" ]
+
+      deps = [
+        ":video_capture_module",
+        "../../rtc_base:rtc_base_approved",
+        "../../system_wrappers",
+      ]
+
+      sources = [
+        "objc/device_info.h",
+        "objc/device_info.mm",
+        "objc/device_info_objc.h",
+        "objc/device_info_objc.mm",
+        "objc/rtc_video_capture_objc.h",
+        "objc/rtc_video_capture_objc.mm",
+        "objc/video_capture.h",
+        "objc/video_capture.mm",
+      ]
+
+      all_dependent_configs = [ ":video_capture_internal_impl_config" ]
+
+      if (!build_with_chromium && is_clang) {
+        # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
+        suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
+      }
+    }
+  }
+
+  rtc_source_set("video_capture_internal_impl") {
     configs += [ ":video_capture_internal_impl_warnings_config" ]
 
     deps = [
@@ -129,16 +160,7 @@
       deps += [ "//third_party/winsdk_samples" ]
     }
     if (is_ios || is_mac) {
-      sources = [
-        "objc/device_info.h",
-        "objc/device_info.mm",
-        "objc/device_info_objc.h",
-        "objc/device_info_objc.mm",
-        "objc/rtc_video_capture_objc.h",
-        "objc/rtc_video_capture_objc.mm",
-        "objc/video_capture.h",
-        "objc/video_capture.mm",
-      ]
+      deps += [ ":video_capture_internal_impl_objc" ]
     }
 
     all_dependent_configs = [ ":video_capture_internal_impl_config" ]