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" ]
   }
 }
