diff --git a/modules/audio_processing/BUILD.gn b/modules/audio_processing/BUILD.gn
index 0528479..6a1a3bb 100644
--- a/modules/audio_processing/BUILD.gn
+++ b/modules/audio_processing/BUILD.gn
@@ -35,84 +35,6 @@
     "aec/aec_resampler.h",
     "aec/echo_cancellation.cc",
     "aec/echo_cancellation.h",
-    "aec3/adaptive_fir_filter.cc",
-    "aec3/adaptive_fir_filter.h",
-    "aec3/aec3_common.cc",
-    "aec3/aec3_common.h",
-    "aec3/aec3_fft.cc",
-    "aec3/aec3_fft.h",
-    "aec3/aec_state.cc",
-    "aec3/aec_state.h",
-    "aec3/block_framer.cc",
-    "aec3/block_framer.h",
-    "aec3/block_processor.cc",
-    "aec3/block_processor.h",
-    "aec3/block_processor_metrics.cc",
-    "aec3/block_processor_metrics.h",
-    "aec3/cascaded_biquad_filter.cc",
-    "aec3/cascaded_biquad_filter.h",
-    "aec3/comfort_noise_generator.cc",
-    "aec3/comfort_noise_generator.h",
-    "aec3/decimator.cc",
-    "aec3/decimator.h",
-    "aec3/delay_estimate.h",
-    "aec3/downsampled_render_buffer.cc",
-    "aec3/downsampled_render_buffer.h",
-    "aec3/echo_canceller3.cc",
-    "aec3/echo_canceller3.h",
-    "aec3/echo_path_delay_estimator.cc",
-    "aec3/echo_path_delay_estimator.h",
-    "aec3/echo_path_variability.cc",
-    "aec3/echo_path_variability.h",
-    "aec3/echo_remover.cc",
-    "aec3/echo_remover.h",
-    "aec3/echo_remover_metrics.cc",
-    "aec3/echo_remover_metrics.h",
-    "aec3/erl_estimator.cc",
-    "aec3/erl_estimator.h",
-    "aec3/erle_estimator.cc",
-    "aec3/erle_estimator.h",
-    "aec3/fft_buffer.cc",
-    "aec3/fft_buffer.h",
-    "aec3/fft_data.h",
-    "aec3/frame_blocker.cc",
-    "aec3/frame_blocker.h",
-    "aec3/main_filter_update_gain.cc",
-    "aec3/main_filter_update_gain.h",
-    "aec3/matched_filter.cc",
-    "aec3/matched_filter.h",
-    "aec3/matched_filter_lag_aggregator.cc",
-    "aec3/matched_filter_lag_aggregator.h",
-    "aec3/matrix_buffer.cc",
-    "aec3/matrix_buffer.h",
-    "aec3/output_selector.cc",
-    "aec3/output_selector.h",
-    "aec3/render_buffer.cc",
-    "aec3/render_buffer.h",
-    "aec3/render_delay_buffer.cc",
-    "aec3/render_delay_buffer.h",
-    "aec3/render_delay_controller.cc",
-    "aec3/render_delay_controller.h",
-    "aec3/render_delay_controller_metrics.cc",
-    "aec3/render_delay_controller_metrics.h",
-    "aec3/render_signal_analyzer.cc",
-    "aec3/render_signal_analyzer.h",
-    "aec3/residual_echo_estimator.cc",
-    "aec3/residual_echo_estimator.h",
-    "aec3/shadow_filter_update_gain.cc",
-    "aec3/shadow_filter_update_gain.h",
-    "aec3/skew_estimator.cc",
-    "aec3/skew_estimator.h",
-    "aec3/subtractor.cc",
-    "aec3/subtractor.h",
-    "aec3/subtractor_output.h",
-    "aec3/suppression_filter.cc",
-    "aec3/suppression_filter.h",
-    "aec3/suppression_gain.cc",
-    "aec3/suppression_gain.h",
-    "aec3/vector_buffer.cc",
-    "aec3/vector_buffer.h",
-    "aec3/vector_math.h",
     "agc/agc.cc",
     "agc/agc.h",
     "agc/agc_manager_direct.cc",
@@ -221,8 +143,8 @@
     ":audio_processing_c",
     ":audio_processing_statistics",
     "..:module_api",
+    "../..:typedefs",
     "../..:webrtc_common",
-    "../../:typedefs",
     "../../api:array_view",
     "../../api:optional",
     "../../api/audio:aec3_config",
@@ -348,8 +270,8 @@
   }
 
   deps = [
+    "../..:typedefs",
     "../..:webrtc_common",
-    "../../:typedefs",
     "../../common_audio",
     "../../common_audio:common_audio_c",
     "../../rtc_base:checks",
@@ -430,8 +352,8 @@
   deps = [
     ":apm_logging",
     ":audio_processing_statistics",
+    "../..:typedefs",
     "../..:webrtc_common",
-    "../../:typedefs",
     "../../common_audio:common_audio",
     "../../common_audio:common_audio_c",
     "../../rtc_base:checks",
@@ -543,10 +465,6 @@
     sources = [
       "aec/echo_cancellation_unittest.cc",
       "aec/system_delay_unittest.cc",
-      "aec3/mock/mock_block_processor.h",
-      "aec3/mock/mock_echo_remover.h",
-      "aec3/mock/mock_render_delay_buffer.h",
-      "aec3/mock/mock_render_delay_controller.h",
       "agc/agc_manager_direct_unittest.cc",
       "agc/loudness_histogram_unittest.cc",
       "agc/mock_agc.h",
@@ -585,8 +503,8 @@
       ":audioproc_test_utils",
       ":mocks",
       "..:module_api",
+      "../..:typedefs",
       "../..:webrtc_common",
-      "../../:typedefs",
       "../../api:array_view",
       "../../api:optional",
       "../../api/audio:aec3_config",
@@ -601,6 +519,7 @@
       "../../system_wrappers:cpu_features_api",
       "../../test:test_support",
       "../audio_coding:neteq_input_audio_tools",
+      "aec3:aec3",
       "aec_dump:mock_aec_dump_unittests",
       "agc2:fixed_digital_unittests",
       "test/conversational_speech:unittest",
@@ -638,40 +557,6 @@
         "aec_dump:aec_dump_unittests",
       ]
       sources += [
-        "aec3/adaptive_fir_filter_unittest.cc",
-        "aec3/aec3_fft_unittest.cc",
-        "aec3/aec_state_unittest.cc",
-        "aec3/block_framer_unittest.cc",
-        "aec3/block_processor_metrics_unittest.cc",
-        "aec3/block_processor_unittest.cc",
-        "aec3/cascaded_biquad_filter_unittest.cc",
-        "aec3/comfort_noise_generator_unittest.cc",
-        "aec3/decimator_unittest.cc",
-        "aec3/echo_canceller3_unittest.cc",
-        "aec3/echo_path_delay_estimator_unittest.cc",
-        "aec3/echo_path_variability_unittest.cc",
-        "aec3/echo_remover_metrics_unittest.cc",
-        "aec3/echo_remover_unittest.cc",
-        "aec3/erl_estimator_unittest.cc",
-        "aec3/erle_estimator_unittest.cc",
-        "aec3/fft_data_unittest.cc",
-        "aec3/frame_blocker_unittest.cc",
-        "aec3/main_filter_update_gain_unittest.cc",
-        "aec3/matched_filter_lag_aggregator_unittest.cc",
-        "aec3/matched_filter_unittest.cc",
-        "aec3/output_selector_unittest.cc",
-        "aec3/render_buffer_unittest.cc",
-        "aec3/render_delay_buffer_unittest.cc",
-        "aec3/render_delay_controller_metrics_unittest.cc",
-        "aec3/render_delay_controller_unittest.cc",
-        "aec3/render_signal_analyzer_unittest.cc",
-        "aec3/residual_echo_estimator_unittest.cc",
-        "aec3/shadow_filter_update_gain_unittest.cc",
-        "aec3/skew_estimator_unittest.cc",
-        "aec3/subtractor_unittest.cc",
-        "aec3/suppression_filter_unittest.cc",
-        "aec3/suppression_gain_unittest.cc",
-        "aec3/vector_math_unittest.cc",
         "audio_processing_impl_locking_unittest.cc",
         "audio_processing_impl_unittest.cc",
         "audio_processing_unittest.cc",
@@ -775,6 +660,7 @@
         "../../system_wrappers",
         "../../system_wrappers:system_wrappers_default",
         "../../test:test_support",
+        "aec3:aec3",
         "aec_dump",
         "aec_dump:aec_dump_impl",
         "//testing/gtest",
@@ -823,8 +709,8 @@
     deps = [
       ":audio_processing",
       "..:module_api",
+      "../..:typedefs",
       "../..:webrtc_common",
-      "../../:typedefs",
       "../../common_audio:common_audio",
       "../../rtc_base:rtc_base_approved",
       "../../system_wrappers",
@@ -843,8 +729,8 @@
     ]
     deps = [
       ":audio_processing",
+      "../..:typedefs",
       "../..:webrtc_common",
-      "../../:typedefs",
       "../../system_wrappers",
       "../../system_wrappers:metrics_default",
     ]
@@ -899,8 +785,8 @@
 
       deps = [
         ":audioproc_debug_proto",
+        "../..:typedefs",
         "../..:webrtc_common",
-        "../../:typedefs",
         "../../rtc_base:protobuf_utils",
         "../../rtc_base:rtc_base_approved",
       ]
diff --git a/modules/audio_processing/aec3/BUILD.gn b/modules/audio_processing/aec3/BUILD.gn
new file mode 100644
index 0000000..0ac47fb
--- /dev/null
+++ b/modules/audio_processing/aec3/BUILD.gn
@@ -0,0 +1,199 @@
+# Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# 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/arm.gni")
+import("../../../webrtc.gni")
+
+config("apm_debug_dump") {
+  if (apm_debug_dump) {
+    defines = [ "WEBRTC_APM_DEBUG_DUMP=1" ]
+  } else {
+    defines = [ "WEBRTC_APM_DEBUG_DUMP=0" ]
+  }
+}
+
+rtc_static_library("aec3") {
+  visibility = [ "*" ]
+  configs += [ ":apm_debug_dump" ]
+  sources = [
+    "adaptive_fir_filter.cc",
+    "adaptive_fir_filter.h",
+    "aec3_common.cc",
+    "aec3_common.h",
+    "aec3_fft.cc",
+    "aec3_fft.h",
+    "aec_state.cc",
+    "aec_state.h",
+    "block_framer.cc",
+    "block_framer.h",
+    "block_processor.cc",
+    "block_processor.h",
+    "block_processor_metrics.cc",
+    "block_processor_metrics.h",
+    "cascaded_biquad_filter.cc",
+    "cascaded_biquad_filter.h",
+    "comfort_noise_generator.cc",
+    "comfort_noise_generator.h",
+    "decimator.cc",
+    "decimator.h",
+    "delay_estimate.h",
+    "downsampled_render_buffer.cc",
+    "downsampled_render_buffer.h",
+    "echo_canceller3.cc",
+    "echo_canceller3.h",
+    "echo_path_delay_estimator.cc",
+    "echo_path_delay_estimator.h",
+    "echo_path_variability.cc",
+    "echo_path_variability.h",
+    "echo_remover.cc",
+    "echo_remover.h",
+    "echo_remover_metrics.cc",
+    "echo_remover_metrics.h",
+    "erl_estimator.cc",
+    "erl_estimator.h",
+    "erle_estimator.cc",
+    "erle_estimator.h",
+    "fft_buffer.cc",
+    "fft_buffer.h",
+    "fft_data.h",
+    "frame_blocker.cc",
+    "frame_blocker.h",
+    "main_filter_update_gain.cc",
+    "main_filter_update_gain.h",
+    "matched_filter.cc",
+    "matched_filter.h",
+    "matched_filter_lag_aggregator.cc",
+    "matched_filter_lag_aggregator.h",
+    "matrix_buffer.cc",
+    "matrix_buffer.h",
+    "output_selector.cc",
+    "output_selector.h",
+    "render_buffer.cc",
+    "render_buffer.h",
+    "render_delay_buffer.cc",
+    "render_delay_buffer.h",
+    "render_delay_controller.cc",
+    "render_delay_controller.h",
+    "render_delay_controller_metrics.cc",
+    "render_delay_controller_metrics.h",
+    "render_signal_analyzer.cc",
+    "render_signal_analyzer.h",
+    "residual_echo_estimator.cc",
+    "residual_echo_estimator.h",
+    "shadow_filter_update_gain.cc",
+    "shadow_filter_update_gain.h",
+    "skew_estimator.cc",
+    "skew_estimator.h",
+    "subtractor.cc",
+    "subtractor.h",
+    "subtractor_output.h",
+    "suppression_filter.cc",
+    "suppression_filter.h",
+    "suppression_gain.cc",
+    "suppression_gain.h",
+    "vector_buffer.cc",
+    "vector_buffer.h",
+    "vector_math.h",
+  ]
+
+  defines = []
+  deps = [
+    "..:aec_core",
+    "..:apm_logging",
+    "..:audio_processing",
+    "../../..:typedefs",
+    "../../../api:array_view",
+    "../../../api:optional",
+    "../../../api/audio:aec3_config",
+    "../../../api/audio:echo_control",
+    "../../../common_audio:common_audio_c",
+    "../../../rtc_base:checks",
+    "../../../rtc_base:rtc_base_approved",
+    "../../../system_wrappers:cpu_features_api",
+    "../../../system_wrappers:metrics_api",
+  ]
+
+  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
+}
+
+if (rtc_include_tests) {
+  rtc_source_set("aec3_unittests") {
+    testonly = true
+
+    configs += [ ":apm_debug_dump" ]
+    sources = [
+      "mock/mock_block_processor.h",
+      "mock/mock_echo_remover.h",
+      "mock/mock_render_delay_buffer.h",
+      "mock/mock_render_delay_controller.h",
+    ]
+
+    deps = [
+      ":aec3",
+      "..:apm_logging",
+      "..:audio_processing",
+      "..:audio_processing_unittests",
+      "../../..:typedefs",
+      "../../../api:array_view",
+      "../../../api:optional",
+      "../../../api/audio:aec3_config",
+      "../../../rtc_base:checks",
+      "../../../rtc_base:rtc_base_approved",
+      "../../../system_wrappers:cpu_features_api",
+      "../../../test:test_support",
+    ]
+
+    defines = []
+
+    if (rtc_enable_protobuf) {
+      sources += [
+        "adaptive_fir_filter_unittest.cc",
+        "aec3_fft_unittest.cc",
+        "aec_state_unittest.cc",
+        "block_framer_unittest.cc",
+        "block_processor_metrics_unittest.cc",
+        "block_processor_unittest.cc",
+        "cascaded_biquad_filter_unittest.cc",
+        "comfort_noise_generator_unittest.cc",
+        "decimator_unittest.cc",
+        "echo_canceller3_unittest.cc",
+        "echo_path_delay_estimator_unittest.cc",
+        "echo_path_variability_unittest.cc",
+        "echo_remover_metrics_unittest.cc",
+        "echo_remover_unittest.cc",
+        "erl_estimator_unittest.cc",
+        "erle_estimator_unittest.cc",
+        "fft_data_unittest.cc",
+        "frame_blocker_unittest.cc",
+        "main_filter_update_gain_unittest.cc",
+        "matched_filter_lag_aggregator_unittest.cc",
+        "matched_filter_unittest.cc",
+        "output_selector_unittest.cc",
+        "render_buffer_unittest.cc",
+        "render_delay_buffer_unittest.cc",
+        "render_delay_controller_metrics_unittest.cc",
+        "render_delay_controller_unittest.cc",
+        "render_signal_analyzer_unittest.cc",
+        "residual_echo_estimator_unittest.cc",
+        "shadow_filter_update_gain_unittest.cc",
+        "skew_estimator_unittest.cc",
+        "subtractor_unittest.cc",
+        "suppression_filter_unittest.cc",
+        "suppression_gain_unittest.cc",
+        "vector_math_unittest.cc",
+      ]
+    }
+
+    if ((!build_with_chromium || is_win) && is_clang) {
+      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
+      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
+    }
+
+    configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
+  }
+}
