Reland "Set defines for Chromium"

This is a reland of https://codereview.webrtc.org/1847013002/
with the following changes:
* _USE_32BIT_TIME_T is no longer set: it was removed from Chromium
in https://codereview.chromium.org/1862443003/.
Setting it in target_defaults was likely the reason to
remoting_unittests failing in the previous attempt to land this.
* Added define for FreeBSD platform.
* Added corresponding GN changes.

Copy the defines from the target_defaults section of Chromium's
src/third_party/libjingle.gyp into our webrtc/build/common.gypi
in order to ensure the same defines are used for the Chromium build
when removing the source listings in src/third_party/libjingle.gyp.
With this CL landed, it should be possible to replace them with
dependencies on:
* webrtc/api/api.gyp:libjingle_peerconnections
* webrtc/media/media.gyp:rtc_media
* webrtc/pc/pc.gyp:rtc_pc
* webrtc/pp2/p2p.gyp:rtc_p2p
* webrtc/libjingle/xmpp/xmpp.gyp:rtc_xmpp

Not ported (Windows specific):
* Precompiled headers (build/win_precompile.gypi):
  since it only seems to offer a compile speedup. Will be landed
  for all of WebRTC in separate CL.

BUG=webrtc:4256
NOTRY=True

Review-Url: https://codereview.webrtc.org/1924663003
Cr-Commit-Position: refs/heads/master@{#12959}
diff --git a/webrtc/BUILD.gn b/webrtc/BUILD.gn
index 1102030..07f2fe9 100644
--- a/webrtc/BUILD.gn
+++ b/webrtc/BUILD.gn
@@ -21,7 +21,17 @@
     defines += [ "WEBRTC_MOZILLA_BUILD" ]
   }
   if (build_with_chromium) {
-    defines = [ "WEBRTC_CHROMIUM_BUILD" ]
+    defines = [
+      # TODO(kjellander): Cleanup unused ones and move defines closer to
+      # the source when webrtc:4256 is completed.
+      "FEATURE_ENABLE_SSL",
+      "FEATURE_ENABLE_VOICEMAIL",
+      "EXPAT_RELATIVE_PATH",
+      "GTEST_RELATIVE_PATH",
+      "NO_MAIN_THREAD_WRAPPING",
+      "NO_SOUND_SYSTEM",
+      "WEBRTC_CHROMIUM_BUILD",
+    ]
     include_dirs = [
       # The overrides must be included first as that is the mechanism for
       # selecting the override headers in Chromium.
@@ -51,7 +61,10 @@
     defines += [ "WEBRTC_MAC" ]
   }
   if (is_win) {
-    defines += [ "WEBRTC_WIN" ]
+    defines += [
+      "WEBRTC_WIN",
+      "_CRT_SECURE_NO_WARNINGS",  # Suppress warnings about _vsnprinf
+    ]
   }
   if (is_android) {
     defines += [
@@ -59,6 +72,20 @@
       "WEBRTC_ANDROID",
     ]
   }
+  if (is_chromeos) {
+    defines += [ "CHROMEOS" ]
+  }
+
+  # TODO(GYP): Support these in GN.
+  # if (is_bsd) {
+  #   defines += [ "BSD" ]
+  # }
+  # if (is_openbsd) {
+  #   defines += [ "OPENBSD" ]
+  # }
+  # if (is_freebsd) {
+  #   defines += [ "FREEBSD" ]
+  # }
 }
 
 if (rtc_have_dbus_glib) {
@@ -70,8 +97,10 @@
 config("common_config") {
   cflags = []
   cflags_cc = []
+  defines = []
+
   if (rtc_restrict_logging) {
-    defines = [ "WEBRTC_RESTRICT_LOGGING" ]
+    defines += [ "WEBRTC_RESTRICT_LOGGING" ]
   }
 
   if (rtc_have_dbus_glib) {
@@ -85,7 +114,22 @@
   }
 
   if (build_with_chromium) {
-    defines += [ "LOGGING_INSIDE_WEBRTC" ]
+    defines += [
+      # NOTICE: Since common_inherited_config is used in public_configs for our
+      # targets, there's no point including the defines in that config here.
+      # TODO(kjellander): Cleanup unused ones and move defines closer to the
+      # source when webrtc:4256 is completed.
+      "ENABLE_EXTERNAL_AUTH",
+      "HAVE_OPENSSL_SSL_H",
+      "HAVE_SCTP",
+      "HAVE_SRTP",
+      "HAVE_WEBRTC_VIDEO",
+      "HAVE_WEBRTC_VOICE",
+      "LOGGING_INSIDE_WEBRTC",
+      "SRTP_RELATIVE_PATH",
+      "SSL_USE_OPENSSL",
+      "USE_WEBRTC_DEV_BRANCH",
+    ]
   } else {
     if (is_posix) {
       # -Wextra is currently disabled in Chromium"s common.gypi. Enable