GN: Add rtc_pc_unittests

BUG=webrtc:5949
TESTED=Built and ran the tests on Mac.
NOTRY=True
TBR=perkj@webrtc.org

Review-Url: https://codereview.webrtc.org/2051413003
Cr-Commit-Position: refs/heads/master@{#13107}
diff --git a/webrtc/pc/BUILD.gn b/webrtc/pc/BUILD.gn
index bf0f2b5..ea3e5ae 100644
--- a/webrtc/pc/BUILD.gn
+++ b/webrtc/pc/BUILD.gn
@@ -7,6 +7,7 @@
 # be found in the AUTHORS file in the root of the source tree.
 
 import("../build/webrtc.gni")
+import("//testing/test.gni")
 
 group("pc") {
   deps = [
@@ -69,8 +70,65 @@
   ]
 
   if (is_clang) {
-    # Suppress warnings from Chrome's Clang plugins.
-    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
+    # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
     configs -= [ "//build/config/clang:find_bad_constructs" ]
   }
 }
+
+if (rtc_include_tests) {
+  config("rtc_pc_unittests_config") {
+    # GN orders flags on a target before flags from configs. The default config
+    # adds -Wall, and this flag have to be after -Wall -- so they need to
+    # come from a config and can't be on the target directly.
+    if (!is_win && !is_clang) {
+      cflags = [ "-Wno-maybe-uninitialized" ]  # Only exists for GCC.
+    }
+  }
+
+  test("rtc_pc_unittests") {
+    testonly = true
+
+    sources = [
+      "bundlefilter_unittest.cc",
+      "channel_unittest.cc",
+      "channelmanager_unittest.cc",
+      "currentspeakermonitor_unittest.cc",
+      "mediasession_unittest.cc",
+      "rtcpmuxfilter_unittest.cc",
+      "srtpfilter_unittest.cc",
+    ]
+
+    include_dirs = [ "//third_party/libsrtp/srtp" ]
+
+    configs += [
+      "..:common_config",
+      ":rtc_pc_unittests_config",
+    ]
+    public_configs = [ "..:common_inherited_config" ]
+
+    if (is_clang) {
+      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
+      configs -= [ "//build/config/clang:find_bad_constructs" ]
+    }
+
+    if (is_win) {
+      libs = [ "strmiids.lib" ]
+    }
+
+    deps = [
+      ":rtc_pc",
+      "../api:libjingle_peerconnection",
+      "../base:rtc_base_tests_utils",
+      "../media:rtc_unittest_main",
+      "../system_wrappers:metrics_default",
+    ]
+
+    if (rtc_build_libsrtp) {
+      deps += [ "//third_party/libsrtp" ]
+    }
+
+    if (is_android) {
+      deps += [ "//testing/android/native_test:native_test_support" ]
+    }
+  }
+}