GN: Add system_wrappers_unittests, tools and tools_unittests

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

Review-Url: https://codereview.webrtc.org/2025343002
Cr-Commit-Position: refs/heads/master@{#13007}
diff --git a/webrtc/base/BUILD.gn b/webrtc/base/BUILD.gn
index 9f7c759..9671b41 100644
--- a/webrtc/base/BUILD.gn
+++ b/webrtc/base/BUILD.gn
@@ -175,7 +175,9 @@
 }
 
 static_library("rtc_task_queue") {
-  public_deps = [ ":rtc_base_approved" ]
+  public_deps = [
+    ":rtc_base_approved",
+  ]
   configs += [ "..:common_config" ]
 
   sources = [
@@ -184,7 +186,9 @@
   ]
 
   if (rtc_build_libevent) {
-    deps = [ "//base/third_party/libevent" ]
+    deps = [
+      "//base/third_party/libevent",
+    ]
   }
 
   if (rtc_enable_libevent) {
@@ -554,6 +558,7 @@
       "macutils.cc",
       "macutils.h",
     ]
+    libs += [ "CoreServices.framework" ]  # For GetGestalt in macutils.cc.
   }
 
   if (is_win) {
diff --git a/webrtc/modules/audio_device/BUILD.gn b/webrtc/modules/audio_device/BUILD.gn
index d743a6a..14c1525 100644
--- a/webrtc/modules/audio_device/BUILD.gn
+++ b/webrtc/modules/audio_device/BUILD.gn
@@ -135,6 +135,9 @@
       libs = [
         "AudioToolbox.framework",
         "CoreAudio.framework",
+
+        # Needed for CGEventSourceKeyState in audio_device_mac.cc:
+        "CoreGraphics.framework",
       ]
     }
     if (is_ios) {
diff --git a/webrtc/system_wrappers/BUILD.gn b/webrtc/system_wrappers/BUILD.gn
index a1e97d9..07b8bec 100644
--- a/webrtc/system_wrappers/BUILD.gn
+++ b/webrtc/system_wrappers/BUILD.gn
@@ -6,10 +6,14 @@
 # in the file PATENTS.  All contributing project authors may
 # be found in the AUTHORS file in the root of the source tree.
 
-import("//build/config/android/config.gni")
+if (is_android) {
+  import("//build/config/android/config.gni")
+  import("//build/config/android/rules.gni")
+}
+import("//testing/test.gni")
 import("../build/webrtc.gni")
 
-static_library("system_wrappers") {
+source_set("system_wrappers") {
   sources = [
     "include/aligned_array.h",
     "include/aligned_malloc.h",
@@ -188,3 +192,53 @@
     public_configs = [ "..:common_inherited_config" ]
   }
 }
+
+test("system_wrappers_unittests") {
+  testonly = true
+  sources = [
+    "source/aligned_array_unittest.cc",
+    "source/aligned_malloc_unittest.cc",
+    "source/clock_unittest.cc",
+    "source/condition_variable_unittest.cc",
+    "source/critical_section_unittest.cc",
+    "source/data_log_c_helpers_unittest.c",
+    "source/data_log_c_helpers_unittest.h",
+    "source/data_log_helpers_unittest.cc",
+    "source/event_timer_posix_unittest.cc",
+    "source/logging_unittest.cc",
+    "source/metrics_default_unittest.cc",
+    "source/metrics_unittest.cc",
+    "source/ntp_time_unittest.cc",
+    "source/rtp_to_ntp_unittest.cc",
+    "source/stl_util_unittest.cc",
+    "source/stringize_macros_unittest.cc",
+  ]
+  if (rtc_enable_data_logging) {
+    sources += [
+      "source/data_log_unittest.cc",
+      "source/data_log_unittest_disabled.cc",
+    ]
+  }
+
+  configs += [ "..:common_config" ]
+  public_configs = [ "..:common_inherited_config" ]
+
+  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
+
+  if (is_clang) {
+    # Suppress warnings from Chrome's Clang plugins.
+    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
+    configs -= [ "//build/config/clang:find_bad_constructs" ]
+  }
+
+  deps = [
+    ":metrics_default",
+    ":system_wrappers",
+    "../test:test_support_main",
+    "//testing/gtest",
+  ]
+
+  if (is_android) {
+    deps += [ "//testing/android/native_test:native_test_support" ]
+  }
+}
diff --git a/webrtc/system_wrappers/system_wrappers_tests.gyp b/webrtc/system_wrappers/system_wrappers_tests.gyp
index ebccba5..c4453c3 100644
--- a/webrtc/system_wrappers/system_wrappers_tests.gyp
+++ b/webrtc/system_wrappers/system_wrappers_tests.gyp
@@ -25,8 +25,6 @@
         'source/condition_variable_unittest.cc',
         'source/critical_section_unittest.cc',
         'source/logging_unittest.cc',
-        'source/data_log_unittest.cc',
-        'source/data_log_unittest_disabled.cc',
         'source/data_log_helpers_unittest.cc',
         'source/data_log_c_helpers_unittest.c',
         'source/data_log_c_helpers_unittest.h',
@@ -40,9 +38,9 @@
       ],
       'conditions': [
         ['enable_data_logging==1', {
-          'sources!': [ 'source/data_log_unittest_disabled.cc', ],
+          'sources': [ 'source/data_log_unittest.cc', ],
         }, {
-          'sources!': [ 'source/data_log_unittest.cc', ],
+          'sources': [ 'source/data_log_unittest_disabled.cc', ],
         }],
         ['OS=="android"', {
           'dependencies': [
diff --git a/webrtc/tools/BUILD.gn b/webrtc/tools/BUILD.gn
index ebeacc2..24b57f5 100644
--- a/webrtc/tools/BUILD.gn
+++ b/webrtc/tools/BUILD.gn
@@ -6,11 +6,14 @@
 # in the file PATENTS.  All contributing project authors may
 # be found in the AUTHORS file in the root of the source tree.
 
+import("//testing/test.gni")
 import("../build/webrtc.gni")
 
 source_set("tools") {
   deps = [
     ":command_line_parser",
+    ":frame_analyzer",
+    ":rgba_to_i420_converter",
   ]
 }
 
@@ -31,6 +34,10 @@
     "frame_analyzer/video_quality_analysis.cc",
     "frame_analyzer/video_quality_analysis.h",
   ]
+
+  configs += [ "..:common_config" ]
+  public_configs = [ "..:common_inherited_config" ]
+
   deps = [
     "../common_video",
   ]
@@ -43,6 +50,25 @@
   sources = [
     "frame_analyzer/frame_analyzer.cc",
   ]
+
+  configs += [ "..:common_config" ]
+  public_configs = [ "..:common_inherited_config" ]
+
+  deps = [
+    ":command_line_parser",
+    ":video_quality_analysis",
+    "//build/win:default_exe_manifest",
+  ]
+}
+
+executable("psnr_ssim_analyzer") {
+  sources = [
+    "psnr_ssim_analyzer/psnr_ssim_analyzer.cc",
+  ]
+
+  configs += [ "..:common_config" ]
+  public_configs = [ "..:common_inherited_config" ]
+
   deps = [
     ":command_line_parser",
     ":video_quality_analysis",
@@ -56,6 +82,10 @@
     "converter/converter.h",
     "converter/rgba_to_i420_converter.cc",
   ]
+
+  configs += [ "..:common_config" ]
+  public_configs = [ "..:common_inherited_config" ]
+
   deps = [
     ":command_line_parser",
     "../common_video",
@@ -63,24 +93,181 @@
   ]
 }
 
-# TODO(kjellander): Convert all of tools.gyp into GN here.
+source_set("frame_editing_lib") {
+  sources = [
+    "frame_editing/frame_editing_lib.cc",
+    "frame_editing/frame_editing_lib.h",
+  ]
 
-if (!build_with_chromium) {
-  executable("tools_unittests") {
-    testonly = true
+  configs += [ "..:common_config" ]
+  public_configs = [ "..:common_inherited_config" ]
 
-    sources = [
-      "simple_command_line_parser_unittest.cc",
-    ]
+  # TODO(jschuh): Bug 1348: fix this warning.
+  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
 
-    configs += [ "..:common_config" ]
-    public_configs = [ "..:common_inherited_config" ]
+  if (is_clang) {
+    # Suppress warnings from the Chromium Clang plugin.
+    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
+    configs -= [ "//build/config/clang:find_bad_constructs" ]
+  }
 
-    deps = [
-      ":command_line_parser",
-      "../test:test_support_main",
-      "//build/win:default_exe_manifest",
-      "//testing/gtest",
-    ]
+  deps = [
+    "../common_video",
+  ]
+}
+
+executable("frame_editor") {
+  sources = [
+    "frame_editing/frame_editing.cc",
+  ]
+
+  configs += [ "..:common_config" ]
+  public_configs = [ "..:common_inherited_config" ]
+
+  deps = [
+    ":command_line_parser",
+    ":frame_editing_lib",
+    "//build/win:default_exe_manifest",
+  ]
+}
+
+executable("force_mic_volume_max") {
+  sources = [
+    "force_mic_volume_max/force_mic_volume_max.cc",
+  ]
+
+  configs += [ "..:common_config" ]
+  public_configs = [ "..:common_inherited_config" ]
+
+  if (is_clang) {
+    # Suppress warnings from the Chromium Clang plugin.
+    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
+    configs -= [ "//build/config/clang:find_bad_constructs" ]
+  }
+
+  deps = [
+    "../system_wrappers:system_wrappers_default",
+    "../voice_engine",
+    "//build/win:default_exe_manifest",
+  ]
+}
+
+source_set("agc_test_utils") {
+  testonly = true
+  sources = [
+    "agc/test_utils.cc",
+    "agc/test_utils.h",
+  ]
+
+  configs += [ "..:common_config" ]
+  public_configs = [ "..:common_inherited_config" ]
+}
+
+executable("agc_harness") {
+  testonly = true
+  sources = [
+    "agc/agc_harness.cc",
+  ]
+
+  configs += [ "..:common_config" ]
+  public_configs = [ "..:common_inherited_config" ]
+
+  if (is_clang) {
+    # Suppress warnings from the Chromium Clang plugin.
+    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
+    configs -= [ "//build/config/clang:find_bad_constructs" ]
+  }
+
+  deps = [
+    "../system_wrappers:system_wrappers_default",
+    "../test:channel_transport",
+    "../test:test_support",
+    "../voice_engine",
+    "//build/win:default_exe_manifest",
+    "//testing/gtest",
+    "//third_party/gflags",
+  ]
+}
+
+executable("activity_metric") {
+  testonly = true
+  sources = [
+    "agc/activity_metric.cc",
+  ]
+
+  configs += [ "..:common_config" ]
+  public_configs = [ "..:common_inherited_config" ]
+
+  if (is_clang) {
+    # Suppress warnings from the Chromium Clang plugin.
+    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
+    configs -= [ "//build/config/clang:find_bad_constructs" ]
+  }
+
+  deps = [
+    "../modules/audio_processing",
+    "../system_wrappers:metrics_default",
+    "//build/win:default_exe_manifest",
+    "//testing/gtest",
+    "//third_party/gflags",
+  ]
+}
+
+executable("audio_e2e_harness") {
+  testonly = true
+  sources = [
+    "e2e_quality/audio/audio_e2e_harness.cc",
+  ]
+
+  configs += [ "..:common_config" ]
+  public_configs = [ "..:common_inherited_config" ]
+
+  if (is_clang) {
+    # Suppress warnings from the Chromium Clang plugin.
+    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
+    configs -= [ "//build/config/clang:find_bad_constructs" ]
+  }
+
+  deps = [
+    "../system_wrappers:system_wrappers_default",
+    "../test:channel_transport",
+    "../voice_engine",
+    "//build/win:default_exe_manifest",
+    "//testing/gtest",
+    "//third_party/gflags",
+  ]
+}
+
+test("tools_unittests") {
+  testonly = true
+
+  sources = [
+    "frame_analyzer/video_quality_analysis_unittest.cc",
+    "frame_editing/frame_editing_unittest.cc",
+    "simple_command_line_parser_unittest.cc",
+  ]
+
+  configs += [ "..:common_config" ]
+  public_configs = [ "..:common_inherited_config" ]
+
+  # TODO(jschuh): Bug 1348: fix this warning.
+  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
+
+  if (is_clang) {
+    # Suppress warnings from the Chromium Clang plugin.
+    # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
+    configs -= [ "//build/config/clang:find_bad_constructs" ]
+  }
+
+  deps = [
+    ":command_line_parser",
+    ":frame_editing_lib",
+    ":video_quality_analysis",
+    "../test:test_support_main",
+    "//testing/gtest",
+  ]
+
+  if (is_android) {
+    deps += [ "//testing/android/native_test:native_test_support" ]
   }
 }