Split rtc_base into multiple targets

Keeping the headers to allow compatibility with current users
that expect the headers to be in that target before they are
also updated.

Bug: webrtc:9838
Change-Id: I8b1e88850958e92c043686587a37791f01860220
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/290569
Commit-Queue: Florent Castelli <orphis@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Auto-Submit: Florent Castelli <orphis@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39031}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index 3618e72..fe91a6c 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -149,6 +149,7 @@
     "../rtc_base:logging",
     "../rtc_base:network_constants",
     "../rtc_base:socket_address",
+    "../rtc_base:ssl",
     "../rtc_base:stringutils",
     "../rtc_base/system:rtc_export",
   ]
@@ -188,6 +189,7 @@
     ":scoped_refptr",
     "../rtc_base",
     "../rtc_base:refcount",
+    "../rtc_base:ssl",
     "../rtc_base/system:rtc_export",
   ]
   absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
@@ -294,8 +296,11 @@
     "../p2p:rtc_p2p",
     "../rtc_base:copy_on_write_buffer",
     "../rtc_base:logging",
+    "../rtc_base:network",
     "../rtc_base:network_constants",
     "../rtc_base:refcount",
+    "../rtc_base:rtc_certificate_generator",
+    "../rtc_base:ssl",
     "../rtc_base:stringutils",
     "adaptation:resource_adaptation_api",
     "audio:audio_mixer_api",
@@ -379,7 +384,9 @@
   deps = [
     ":async_dns_resolver",
     ":wrapping_async_dns_resolver",
+    "../rtc_base:async_packet_socket",
     "../rtc_base:async_resolver_interface",
+    "../rtc_base:proxy_info",
     "../rtc_base:rtc_base",
     "../rtc_base:socket_address",
     "../rtc_base/system:rtc_export",
@@ -543,6 +550,7 @@
   deps = [
     ":packet_socket_factory",
     "../rtc_base",
+    "../rtc_base:network",
     "../rtc_base:threading",
   ]
 }
@@ -573,7 +581,10 @@
     "../media:rtc_media_base",
     "../modules/audio_processing:api",
     "../rtc_base:checks",
+    "../rtc_base:network",
     "../rtc_base:rtc_base",
+    "../rtc_base:rtc_certificate_generator",
+    "../rtc_base:ssl",
     "../rtc_base:stringutils",
     "../rtc_base:threading",
     "../test:fileutils",
@@ -820,6 +831,7 @@
     "../call:simulated_network",
     "../rtc_base",
     "../rtc_base:checks",
+    "../rtc_base:network",
     "../rtc_base:network_constants",
     "../rtc_base:threading",
     "test/network_emulation",
diff --git a/api/crypto/BUILD.gn b/api/crypto/BUILD.gn
index 70626f6..9b6dea5 100644
--- a/api/crypto/BUILD.gn
+++ b/api/crypto/BUILD.gn
@@ -24,6 +24,7 @@
   ]
   deps = [
     "../../rtc_base:rtc_base",
+    "../../rtc_base:ssl",
     "../../rtc_base/system:rtc_export",
   ]
 }
diff --git a/api/test/network_emulation/BUILD.gn b/api/test/network_emulation/BUILD.gn
index f9f26eb..90b1136 100644
--- a/api/test/network_emulation/BUILD.gn
+++ b/api/test/network_emulation/BUILD.gn
@@ -23,6 +23,7 @@
     "../../../rtc_base:checks",
     "../../../rtc_base:copy_on_write_buffer",
     "../../../rtc_base:ip_address",
+    "../../../rtc_base:net_helper",
     "../../../rtc_base:socket_address",
     "../../numerics",
     "../../task_queue",
diff --git a/api/test/pclf/BUILD.gn b/api/test/pclf/BUILD.gn
index a50744e..8aeec2c 100644
--- a/api/test/pclf/BUILD.gn
+++ b/api/test/pclf/BUILD.gn
@@ -35,7 +35,10 @@
     "../..:video_quality_analyzer_api",
     "../../../modules/audio_processing:api",
     "../../../rtc_base:checks",
+    "../../../rtc_base:network",
     "../../../rtc_base:rtc_base",
+    "../../../rtc_base:rtc_certificate_generator",
+    "../../../rtc_base:ssl",
     "../../../rtc_base:stringutils",
     "../../../rtc_base:threading",
     "../../../test:fileutils",
@@ -76,6 +79,9 @@
     "../../../modules/audio_processing:api",
     "../../../p2p:rtc_p2p",
     "../../../rtc_base",
+    "../../../rtc_base:network",
+    "../../../rtc_base:rtc_certificate_generator",
+    "../../../rtc_base:ssl",
     "../../../rtc_base:threading",
   ]
 }
@@ -102,6 +108,9 @@
     "../../../api/video_codecs:video_codecs_api",
     "../../../modules/audio_processing:api",
     "../../../rtc_base",
+    "../../../rtc_base:network",
+    "../../../rtc_base:rtc_certificate_generator",
+    "../../../rtc_base:ssl",
     "../../../rtc_base:threading",
   ]
   absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
diff --git a/api/transport/BUILD.gn b/api/transport/BUILD.gn
index 86a7c8a..f6f0a6a 100644
--- a/api/transport/BUILD.gn
+++ b/api/transport/BUILD.gn
@@ -101,10 +101,12 @@
     "../../rtc_base:byte_buffer",
     "../../rtc_base:byte_order",
     "../../rtc_base:checks",
+    "../../rtc_base:crc32",
     "../../rtc_base:ip_address",
     "../../rtc_base:logging",
     "../../rtc_base:rtc_base",
     "../../rtc_base:socket_address",
+    "../../rtc_base:ssl",
     "../../system_wrappers:metrics",
   ]
   absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
diff --git a/call/BUILD.gn b/call/BUILD.gn
index 97bfdd3..72d9d1a 100644
--- a/call/BUILD.gn
+++ b/call/BUILD.gn
@@ -72,6 +72,7 @@
     "../rtc_base:audio_format_to_string",
     "../rtc_base:checks",
     "../rtc_base:copy_on_write_buffer",
+    "../rtc_base:network_route",
     "../rtc_base:refcount",
     "../rtc_base:stringutils",
     "../rtc_base/network:sent_packet",
@@ -216,6 +217,7 @@
     "../rtc_base:event_tracer",
     "../rtc_base:logging",
     "../rtc_base:macromagic",
+    "../rtc_base:network_route",
     "../rtc_base:race_checker",
     "../rtc_base:random",
     "../rtc_base:rate_limiter",
@@ -631,6 +633,7 @@
       "../api/transport:bitrate_settings",
       "../modules/pacing",
       "../rtc_base",
+      "../rtc_base:network_route",
       "../rtc_base:rate_limiter",
       "../rtc_base/network:sent_packet",
       "../test:test_support",
diff --git a/examples/BUILD.gn b/examples/BUILD.gn
index 440c425..da0d02f 100644
--- a/examples/BUILD.gn
+++ b/examples/BUILD.gn
@@ -637,6 +637,7 @@
           ":AppRTCMobile_lib",
           ":apprtc_signaling",
           "../rtc_base",
+          "../rtc_base:ssl",
           "../sdk:mediaconstraints_objc",
           "../sdk:peerconnectionfactory_base_objc",
           "../sdk:videocapture_objc",
@@ -708,6 +709,8 @@
       "../rtc_base:macromagic",
       "../rtc_base:net_helpers",
       "../rtc_base:refcount",
+      "../rtc_base:rtc_certificate_generator",
+      "../rtc_base:ssl",
       "../rtc_base:stringutils",
       "../rtc_base:threading",
       "../rtc_base/third_party/sigslot",
@@ -729,6 +732,7 @@
       deps += [
         "../media:rtc_media_base",
         "../rtc_base:win32",
+        "../rtc_base:win32_socket_init",
       ]
     }
     if (is_linux || is_chromeos) {
@@ -800,6 +804,7 @@
       "../p2p:rtc_p2p",
       "../pc:rtc_pc",
       "../rtc_base",
+      "../rtc_base:async_udp_socket",
       "../rtc_base:ip_address",
       "../rtc_base:socket_address",
       "../rtc_base:socket_server",
@@ -815,6 +820,7 @@
       "../p2p:rtc_p2p",
       "../pc:rtc_pc",
       "../rtc_base",
+      "../rtc_base:async_udp_socket",
       "../rtc_base:socket_address",
       "../rtc_base:socket_server",
       "../rtc_base:threading",
@@ -865,6 +871,7 @@
       "../pc:libjingle_peerconnection",
       "../pc:video_track_source",
       "../rtc_base",
+      "../rtc_base:ssl",
       "../test:platform_video_capturer",
       "../test:video_test_common",
       "//third_party/abseil-cpp/absl/memory",
@@ -941,7 +948,9 @@
       "../rtc_base",
       "../rtc_base:checks",
       "../rtc_base:logging",
+      "../rtc_base:network",
       "../rtc_base:socket_address",
+      "../rtc_base:ssl",
       "../rtc_base:threading",
       "../rtc_base:timeutils",
       "../test:scoped_key_value_config",
diff --git a/examples/androidnativeapi/BUILD.gn b/examples/androidnativeapi/BUILD.gn
index 680a16d..0a91700 100644
--- a/examples/androidnativeapi/BUILD.gn
+++ b/examples/androidnativeapi/BUILD.gn
@@ -49,6 +49,7 @@
       ":generated_jni",
       "../../api:scoped_refptr",
       "../../api:sequence_checker",
+      "../../rtc_base:ssl",
       "../../rtc_base/synchronization:mutex",
       "//api:libjingle_peerconnection_api",
       "//api/rtc_event_log:rtc_event_log_factory",
diff --git a/examples/androidvoip/BUILD.gn b/examples/androidvoip/BUILD.gn
index f7f0d90..f6c85a6 100644
--- a/examples/androidvoip/BUILD.gn
+++ b/examples/androidvoip/BUILD.gn
@@ -56,9 +56,13 @@
 
     deps = [
       ":generated_jni",
+      "../../rtc_base:async_packet_socket",
+      "../../rtc_base:async_udp_socket",
       "../../rtc_base:logging",
+      "../../rtc_base:network",
       "../../rtc_base:socket_address",
       "../../rtc_base:socket_server",
+      "../../rtc_base:ssl",
       "../../rtc_base:threading",
       "//api:transport_api",
       "//api/audio_codecs:audio_codecs_api",
diff --git a/media/BUILD.gn b/media/BUILD.gn
index 6ff7615..8ed6031 100644
--- a/media/BUILD.gn
+++ b/media/BUILD.gn
@@ -93,17 +93,21 @@
     "../modules/audio_processing:audio_processing_statistics",
     "../modules/rtp_rtcp:rtp_rtcp_format",
     "../rtc_base",
+    "../rtc_base:async_packet_socket",
     "../rtc_base:buffer",
     "../rtc_base:byte_order",
     "../rtc_base:checks",
     "../rtc_base:copy_on_write_buffer",
+    "../rtc_base:dscp",
     "../rtc_base:logging",
     "../rtc_base:macromagic",
+    "../rtc_base:network_route",
     "../rtc_base:rtc_task_queue",
     "../rtc_base:sanitizer",
     "../rtc_base:socket",
     "../rtc_base:stringutils",
     "../rtc_base:timeutils",
+    "../rtc_base:unique_id_generator",
     "../rtc_base/network:sent_packet",
     "../rtc_base/synchronization:mutex",
     "../rtc_base/system:file_wrapper",
@@ -179,10 +183,13 @@
     "../common_video",
     "../modules/rtp_rtcp:rtp_rtcp_format",
     "../rtc_base",
+    "../rtc_base:async_packet_socket",
     "../rtc_base:checks",
     "../rtc_base:copy_on_write_buffer",
+    "../rtc_base:dscp",
     "../rtc_base:logging",
     "../rtc_base:macromagic",
+    "../rtc_base:network_route",
     "../rtc_base:socket",
     "../rtc_base/network:sent_packet",
   ]
@@ -224,9 +231,12 @@
     "../modules/audio_processing:audio_processing_statistics",
     "../modules/rtp_rtcp:rtp_rtcp_format",
     "../rtc_base",
+    "../rtc_base:async_packet_socket",
     "../rtc_base:buffer",
     "../rtc_base:copy_on_write_buffer",
+    "../rtc_base:dscp",
     "../rtc_base:logging",
+    "../rtc_base:network_route",
     "../rtc_base:socket",
     "../rtc_base:stringutils",
     "../video/config:encoder_config",
@@ -272,8 +282,10 @@
     "../api:array_view",
     "../modules/rtp_rtcp:rtp_rtcp_format",
     "../rtc_base",
+    "../rtc_base:async_packet_socket",
     "../rtc_base:byte_order",
     "../rtc_base:checks",
+    "../rtc_base:ssl",
     "../rtc_base/system:rtc_export",
   ]
   absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
@@ -289,6 +301,7 @@
     "../api:array_view",
     "../rtc_base",
     "../rtc_base:stringutils",
+    "../rtc_base:unique_id_generator",
   ]
   absl_deps = [ "//third_party/abseil-cpp/absl/algorithm:container" ]
 }
@@ -507,9 +520,11 @@
     "../rtc_base:ignore_wundef",
     "../rtc_base:logging",
     "../rtc_base:macromagic",
+    "../rtc_base:network_route",
     "../rtc_base:race_checker",
     "../rtc_base:rtc_task_queue",
     "../rtc_base:safe_conversions",
+    "../rtc_base:ssl",
     "../rtc_base:stringutils",
     "../rtc_base:threading",
     "../rtc_base:timeutils",
@@ -712,8 +727,10 @@
       "../rtc_base:byte_order",
       "../rtc_base:checks",
       "../rtc_base:copy_on_write_buffer",
+      "../rtc_base:dscp",
       "../rtc_base:gunit_helpers",
       "../rtc_base:macromagic",
+      "../rtc_base:network_route",
       "../rtc_base:rtc_event",
       "../rtc_base:rtc_task_queue",
       "../rtc_base:stringutils",
@@ -831,6 +848,7 @@
         "../modules/video_coding:webrtc_vp8",
         "../p2p:p2p_test_utils",
         "../rtc_base",
+        "../rtc_base:async_packet_socket",
         "../rtc_base:byte_order",
         "../rtc_base:checks",
         "../rtc_base:gunit_helpers",
diff --git a/modules/audio_coding/BUILD.gn b/modules/audio_coding/BUILD.gn
index 65c849d..38bff02 100644
--- a/modules/audio_coding/BUILD.gn
+++ b/modules/audio_coding/BUILD.gn
@@ -840,6 +840,7 @@
     "../../rtc_base",
     "../../rtc_base:buffer",
     "../../rtc_base:checks",
+    "../../rtc_base:ssl",
     "../../rtc_base:stringutils",
     "../../rtc_base/system:arch",
     "../../test:rtp_test_utils",
@@ -978,6 +979,7 @@
     "../../rtc_base",
     "../../rtc_base:checks",
     "../../rtc_base:ignore_wundef",
+    "../../rtc_base:ssl",
     "../../rtc_base:stringutils",
     "../../system_wrappers",
     "../../test:fileutils",
@@ -1746,6 +1748,7 @@
         "../../rtc_base:rtc_event",
         "../../rtc_base:safe_conversions",
         "../../rtc_base:sanitizer",
+        "../../rtc_base:ssl",
         "../../rtc_base:stringutils",
         "../../rtc_base:timeutils",
         "../../rtc_base/synchronization:mutex",
diff --git a/modules/congestion_controller/rtp/BUILD.gn b/modules/congestion_controller/rtp/BUILD.gn
index 7057cdf..608f8a3 100644
--- a/modules/congestion_controller/rtp/BUILD.gn
+++ b/modules/congestion_controller/rtp/BUILD.gn
@@ -62,6 +62,7 @@
     "../../../rtc_base:checks",
     "../../../rtc_base:logging",
     "../../../rtc_base:macromagic",
+    "../../../rtc_base:network_route",
     "../../../rtc_base/network:sent_packet",
     "../../../rtc_base/synchronization:mutex",
     "../../../rtc_base/system:no_unique_address",
diff --git a/modules/video_coding/timing/BUILD.gn b/modules/video_coding/timing/BUILD.gn
index ee05223..644ea8c 100644
--- a/modules/video_coding/timing/BUILD.gn
+++ b/modules/video_coding/timing/BUILD.gn
@@ -61,6 +61,7 @@
     "../../../rtc_base",
     "../../../rtc_base:checks",
     "../../../rtc_base:logging",
+    "../../../rtc_base:rolling_accumulator",
     "../../../rtc_base:rtc_numerics",
     "../../../rtc_base:safe_conversions",
     "../../../rtc_base/experiments:field_trial_parser",
diff --git a/p2p/BUILD.gn b/p2p/BUILD.gn
index ee18dd5..5431d6d 100644
--- a/p2p/BUILD.gn
+++ b/p2p/BUILD.gn
@@ -114,26 +114,39 @@
     "../api/units:timestamp",
     "../logging:ice_log",
     "../rtc_base",
+    "../rtc_base:async_packet_socket",
     "../rtc_base:async_resolver_interface",
+    "../rtc_base:async_tcp_socket",
+    "../rtc_base:async_udp_socket",
     "../rtc_base:buffer",
     "../rtc_base:buffer_queue",
     "../rtc_base:byte_buffer",
     "../rtc_base:byte_order",
     "../rtc_base:callback_list",
     "../rtc_base:checks",
+    "../rtc_base:crc32",
+    "../rtc_base:dscp",
     "../rtc_base:event_tracer",
     "../rtc_base:ip_address",
     "../rtc_base:logging",
     "../rtc_base:macromagic",
+    "../rtc_base:mdns_responder_interface",
+    "../rtc_base:net_helper",
     "../rtc_base:net_helpers",
+    "../rtc_base:network",
     "../rtc_base:network_constants",
+    "../rtc_base:network_route",
+    "../rtc_base:proxy_info",
     "../rtc_base:rate_tracker",
     "../rtc_base:refcount",
     "../rtc_base:rtc_numerics",
     "../rtc_base:socket",
+    "../rtc_base:socket_adapters",
     "../rtc_base:socket_address",
     "../rtc_base:socket_factory",
     "../rtc_base:socket_server",
+    "../rtc_base:ssl",
+    "../rtc_base:stream",
     "../rtc_base:stringutils",
     "../rtc_base:threading",
     "../rtc_base:timeutils",
@@ -229,12 +242,14 @@
       "../api/transport:stun_types",
       "../rtc_base",
       "../rtc_base:async_resolver_interface",
+      "../rtc_base:async_udp_socket",
       "../rtc_base:copy_on_write_buffer",
       "../rtc_base:gunit_helpers",
       "../rtc_base:rtc_base_tests_utils",
       "../rtc_base:socket",
       "../rtc_base:socket_address",
       "../rtc_base:socket_server",
+      "../rtc_base:ssl",
       "../rtc_base:threading",
       "../rtc_base/third_party/sigslot",
       "../test:test_support",
@@ -288,19 +303,28 @@
       "../api/transport:stun_types",
       "../api/units:time_delta",
       "../rtc_base",
+      "../rtc_base:async_packet_socket",
       "../rtc_base:buffer",
       "../rtc_base:byte_buffer",
       "../rtc_base:checks",
       "../rtc_base:copy_on_write_buffer",
+      "../rtc_base:dscp",
       "../rtc_base:gunit_helpers",
       "../rtc_base:ip_address",
       "../rtc_base:logging",
       "../rtc_base:macromagic",
+      "../rtc_base:mdns_responder_interface",
+      "../rtc_base:net_helper",
       "../rtc_base:net_helpers",
+      "../rtc_base:network",
       "../rtc_base:network_constants",
+      "../rtc_base:proxy_info",
       "../rtc_base:rtc_base_tests_utils",
       "../rtc_base:socket",
+      "../rtc_base:socket_adapters",
       "../rtc_base:socket_address",
+      "../rtc_base:socket_address_pair",
+      "../rtc_base:ssl",
       "../rtc_base:stringutils",
       "../rtc_base:testclient",
       "../rtc_base:threading",
@@ -340,11 +364,15 @@
     "../api/transport:stun_types",
     "../api/units:time_delta",
     "../rtc_base",
+    "../rtc_base:async_packet_socket",
+    "../rtc_base:async_udp_socket",
     "../rtc_base:byte_buffer",
     "../rtc_base:checks",
     "../rtc_base:logging",
     "../rtc_base:rtc_base_tests_utils",
+    "../rtc_base:socket_adapters",
     "../rtc_base:socket_address",
+    "../rtc_base:ssl",
     "../rtc_base:stringutils",
     "../rtc_base/third_party/sigslot",
   ]
@@ -370,12 +398,15 @@
     "../api/transport:stun_types",
     "../api/units:time_delta",
     "../rtc_base",
+    "../rtc_base:async_packet_socket",
     "../rtc_base:async_resolver_interface",
     "../rtc_base:byte_buffer",
     "../rtc_base:checks",
     "../rtc_base:ip_address",
     "../rtc_base:logging",
+    "../rtc_base:network",
     "../rtc_base:socket_address",
+    "../rtc_base:ssl",
     "../rtc_base:threading",
     "../rtc_base:timeutils",
     "../rtc_base/system:rtc_export",
@@ -396,6 +427,7 @@
       "../rtc_base:gunit_helpers",
       "../rtc_base:ip_address",
       "../rtc_base:rtc_base_tests_utils",
+      "../rtc_base:ssl",
       "../test:test_support",
       "//testing/gtest",
     ]
diff --git a/pc/BUILD.gn b/pc/BUILD.gn
index 8aa6d52..4ee2321 100644
--- a/pc/BUILD.gn
+++ b/pc/BUILD.gn
@@ -90,14 +90,17 @@
     "../modules/rtp_rtcp:rtp_rtcp_format",
     "../p2p:rtc_p2p",
     "../rtc_base",
+    "../rtc_base:async_packet_socket",
     "../rtc_base:checks",
     "../rtc_base:copy_on_write_buffer",
     "../rtc_base:event_tracer",
     "../rtc_base:logging",
     "../rtc_base:macromagic",
+    "../rtc_base:network_route",
     "../rtc_base:socket",
     "../rtc_base:stringutils",
     "../rtc_base:threading",
+    "../rtc_base:unique_id_generator",
     "../rtc_base/containers:flat_set",
     "../rtc_base/network:sent_packet",
     "../rtc_base/third_party/sigslot",
@@ -137,6 +140,7 @@
     "../rtc_base:buffer",
     "../rtc_base:checks",
     "../rtc_base:logging",
+    "../rtc_base:ssl",
     "../rtc_base/third_party/sigslot",
   ]
   absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
@@ -161,6 +165,7 @@
     "../rtc_base:checks",
     "../rtc_base:logging",
     "../rtc_base:macromagic",
+    "../rtc_base:ssl",
     "../rtc_base:threading",
     "../rtc_base/synchronization:mutex",
   ]
@@ -231,6 +236,7 @@
     "../rtc_base:event_tracer",
     "../rtc_base:logging",
     "../rtc_base:macromagic",
+    "../rtc_base:ssl",
     "../rtc_base:stringutils",
     "../rtc_base:threading",
   ]
@@ -302,6 +308,7 @@
     "../rtc_base:event_tracer",
     "../rtc_base:logging",
     "../rtc_base:macromagic",
+    "../rtc_base:ssl",
     "../rtc_base:threading",
     "../rtc_base/third_party/sigslot",
   ]
@@ -340,7 +347,9 @@
     "../rtc_base",
     "../rtc_base:checks",
     "../rtc_base:logging",
+    "../rtc_base:ssl",
     "../rtc_base:stringutils",
+    "../rtc_base:unique_id_generator",
     "../rtc_base/memory:always_valid_pointer",
     "../rtc_base/third_party/base64",
   ]
@@ -448,10 +457,12 @@
     "../modules/rtp_rtcp:rtp_rtcp_format",
     "../p2p:rtc_p2p",
     "../rtc_base",
+    "../rtc_base:async_packet_socket",
     "../rtc_base:checks",
     "../rtc_base:copy_on_write_buffer",
     "../rtc_base:event_tracer",
     "../rtc_base:logging",
+    "../rtc_base:network_route",
     "../rtc_base:socket",
     "../rtc_base/network:sent_packet",
   ]
@@ -472,6 +483,8 @@
     "../call:rtp_receiver",
     "../p2p:rtc_p2p",
     "../rtc_base",
+    "../rtc_base:network_route",
+    "../rtc_base:ssl",
     "../rtc_base/third_party/sigslot",
   ]
 }
@@ -536,6 +549,7 @@
     "../rtc_base",
     "../rtc_base:buffer",
     "../rtc_base:logging",
+    "../rtc_base:ssl",
     "../rtc_base:zero_memory",
     "../rtc_base/third_party/base64",
   ]
@@ -563,6 +577,7 @@
     "../rtc_base:checks",
     "../rtc_base:logging",
     "../rtc_base:macromagic",
+    "../rtc_base:ssl",
     "../rtc_base:stringutils",
     "../rtc_base:timeutils",
     "../rtc_base/synchronization:mutex",
@@ -593,12 +608,15 @@
     "../modules/rtp_rtcp:rtp_rtcp_format",
     "../p2p:rtc_p2p",
     "../rtc_base",
+    "../rtc_base:async_packet_socket",
     "../rtc_base:buffer",
     "../rtc_base:checks",
     "../rtc_base:copy_on_write_buffer",
     "../rtc_base:event_tracer",
     "../rtc_base:logging",
+    "../rtc_base:network_route",
     "../rtc_base:safe_conversions",
+    "../rtc_base:ssl",
     "../rtc_base:zero_memory",
     "../rtc_base/third_party/base64",
   ]
@@ -619,6 +637,7 @@
     "../api:libjingle_peerconnection_api",
     "../p2p:rtc_p2p",
     "../rtc_base",
+    "../rtc_base:ssl",
   ]
 }
 
@@ -876,6 +895,7 @@
     "../rtc_base:logging",
     "../rtc_base:macromagic",
     "../rtc_base:rtc_base",
+    "../rtc_base:ssl",
     "../rtc_base:threading",
     "../rtc_base:threading",
     "../rtc_base/system:unused",
@@ -925,8 +945,11 @@
     "../rtc_base",
     "../rtc_base:checks",
     "../rtc_base:macromagic",
+    "../rtc_base:network",
+    "../rtc_base:rtc_certificate_generator",
     "../rtc_base:socket_factory",
     "../rtc_base:socket_server",
+    "../rtc_base:ssl",
     "../rtc_base:threading",
     "../rtc_base:timeutils",
     "../rtc_base/memory:always_valid_pointer",
@@ -956,6 +979,7 @@
     "../rtc_base:copy_on_write_buffer",
     "../rtc_base:logging",
     "../rtc_base:macromagic",
+    "../rtc_base:ssl",
     "../rtc_base:threading",
     "../rtc_base:weak_ptr",
     "../rtc_base/third_party/sigslot",
@@ -1048,6 +1072,7 @@
     "../rtc_base:rtc_base",
     "../rtc_base:rtc_event",
     "../rtc_base:socket_address",
+    "../rtc_base:ssl",
     "../rtc_base:stringutils",
     "../rtc_base:threading",
     "../rtc_base:timeutils",
@@ -1136,8 +1161,10 @@
     "../rtc_base:logging",
     "../rtc_base:macromagic",
     "../rtc_base:rtc_operations_chain",
+    "../rtc_base:ssl",
     "../rtc_base:stringutils",
     "../rtc_base:threading",
+    "../rtc_base:unique_id_generator",
     "../rtc_base:weak_ptr",
     "../system_wrappers:metrics",
   ]
@@ -1240,10 +1267,14 @@
     "../rtc_base:ip_address",
     "../rtc_base:logging",
     "../rtc_base:macromagic",
+    "../rtc_base:net_helper",
+    "../rtc_base:network",
     "../rtc_base:network_constants",
     "../rtc_base:socket_address",
+    "../rtc_base:ssl",
     "../rtc_base:stringutils",
     "../rtc_base:threading",
+    "../rtc_base:unique_id_generator",
     "../rtc_base:weak_ptr",
     "../rtc_base/third_party/sigslot",
     "../system_wrappers:metrics",
@@ -1331,6 +1362,7 @@
     "../rtc_base:network_constants",
     "../rtc_base:rtc_base",
     "../rtc_base:socket_address",
+    "../rtc_base:ssl",
     "../rtc_base:stringutils",
     "../rtc_base:threading",
     "../rtc_base:timeutils",
@@ -1400,9 +1432,11 @@
     "../rtc_base:ip_address",
     "../rtc_base:logging",
     "../rtc_base:macromagic",
+    "../rtc_base:net_helper",
     "../rtc_base:network_constants",
     "../rtc_base:rtc_base",
     "../rtc_base:socket_address",
+    "../rtc_base:ssl",
     "../rtc_base:stringutils",
     "../rtc_base/system:rtc_export",
   ]
@@ -1432,7 +1466,10 @@
     "../rtc_base:checks",
     "../rtc_base:logging",
     "../rtc_base:rtc_base",
+    "../rtc_base:rtc_certificate_generator",
+    "../rtc_base:ssl",
     "../rtc_base:stringutils",
+    "../rtc_base:unique_id_generator",
     "../rtc_base:weak_ptr",
   ]
   absl_deps = [
@@ -1525,6 +1562,7 @@
     "../rtc_base:logging",
     "../rtc_base:macromagic",
     "../rtc_base:rtc_base",
+    "../rtc_base:rtc_certificate_generator",
     "../rtc_base:safe_conversions",
     "../rtc_base:threading",
     "../rtc_base/experiments:field_trial_parser",
@@ -1648,6 +1686,7 @@
     "../rtc_base:checks",
     "../rtc_base:logging",
     "../rtc_base:macromagic",
+    "../rtc_base:ssl",
     "../rtc_base:threading",
     "../rtc_base:weak_ptr",
     "../rtc_base/third_party/sigslot",
@@ -1928,6 +1967,7 @@
     "../rtc_base:logging",
     "../rtc_base:macromagic",
     "../rtc_base:rtc_base",
+    "../rtc_base:ssl",
     "../rtc_base:threading",
     "../rtc_base/synchronization:mutex",
     "../rtc_base/third_party/sigslot",
@@ -2147,6 +2187,7 @@
       "../p2p:p2p_test_utils",
       "../p2p:rtc_p2p",
       "../rtc_base",
+      "../rtc_base:async_packet_socket",
       "../rtc_base:buffer",
       "../rtc_base:byte_order",
       "../rtc_base:checks",
@@ -2154,11 +2195,14 @@
       "../rtc_base:gunit_helpers",
       "../rtc_base:logging",
       "../rtc_base:macromagic",
+      "../rtc_base:net_helper",
       "../rtc_base:rtc_base_tests_utils",
       "../rtc_base:socket_address",
+      "../rtc_base:ssl",
       "../rtc_base:stringutils",
       "../rtc_base:task_queue_for_test",
       "../rtc_base:threading",
+      "../rtc_base:unique_id_generator",
       "../rtc_base/containers:flat_set",
       "../rtc_base/third_party/sigslot",
       "../system_wrappers:metrics",
@@ -2225,6 +2269,7 @@
       "../rtc_base:rtc_base_tests_utils",
       "../rtc_base:socket_address",
       "../rtc_base:socket_factory",
+      "../rtc_base:ssl",
       "../rtc_base:task_queue_for_test",
       "../rtc_base:threading",
       "../system_wrappers",
@@ -2276,6 +2321,7 @@
       "../rtc_base:logging",
       "../rtc_base:rtc_base_tests_utils",
       "../rtc_base:socket_address",
+      "../rtc_base:ssl",
       "../test:test_main",
       "../test:test_support",
       "//third_party/abseil-cpp/absl/algorithm:container",
@@ -2453,15 +2499,21 @@
       "../rtc_base:ip_address",
       "../rtc_base:logging",
       "../rtc_base:macromagic",
+      "../rtc_base:mdns_responder_interface",
+      "../rtc_base:net_helper",
+      "../rtc_base:network",
       "../rtc_base:network_constants",
       "../rtc_base:refcount",
       "../rtc_base:rtc_base_tests_utils",
+      "../rtc_base:rtc_certificate_generator",
       "../rtc_base:rtc_json",
       "../rtc_base:socket_address",
+      "../rtc_base:ssl",
       "../rtc_base:stringutils",
       "../rtc_base:task_queue_for_test",
       "../rtc_base:threading",
       "../rtc_base:timeutils",
+      "../rtc_base:unique_id_generator",
       "../rtc_base/synchronization:mutex",
       "../rtc_base/third_party/base64",
       "../rtc_base/third_party/sigslot",
@@ -2545,6 +2597,7 @@
         "test/android_test_initializer.h",
       ]
       deps = [
+        "../rtc_base:ssl",
         "../sdk/android:internal_jni",
         "../sdk/android:libjingle_peerconnection_jni",
         "//modules/utility:utility",
@@ -2647,11 +2700,14 @@
       "../rtc_base:ip_address",
       "../rtc_base:logging",
       "../rtc_base:macromagic",
+      "../rtc_base:mdns_responder_interface",
       "../rtc_base:rtc_base_tests_utils",
+      "../rtc_base:rtc_certificate_generator",
       "../rtc_base:rtc_event",
       "../rtc_base:rtc_json",
       "../rtc_base:safe_conversions",
       "../rtc_base:socket_address",
+      "../rtc_base:ssl",
       "../rtc_base:task_queue_for_test",
       "../rtc_base:threading",
       "../rtc_base:timeutils",
@@ -2755,7 +2811,9 @@
       "../rtc_base:gunit_helpers",
       "../rtc_base:logging",
       "../rtc_base:macromagic",
+      "../rtc_base:rtc_certificate_generator",
       "../rtc_base:rtc_task_queue",
+      "../rtc_base:ssl",
       "../rtc_base:stringutils",
       "../rtc_base:task_queue_for_test",
       "../rtc_base:threading",
diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
index 07dec5d..3f848d5 100644
--- a/rtc_base/BUILD.gn
+++ b/rtc_base/BUILD.gn
@@ -1087,30 +1087,50 @@
   libs = []
   defines = []
   deps = [
+    ":async_packet_socket",
     ":async_resolver_interface",
     ":async_socket",
+    ":async_tcp_socket",
+    ":async_udp_socket",
     ":buffer",
     ":byte_buffer",
     ":byte_order",
     ":callback_list",
     ":checks",
     ":copy_on_write_buffer",
+    ":crc32",
+    ":crypt_string",
+    ":data_rate_limiter",
+    ":dscp",
+    ":file_rotating_stream",
+    ":http_common",
     ":ip_address",
     ":logging",
     ":macromagic",
+    ":mdns_responder_interface",
+    ":net_helper",
+    ":network",
     ":network_constants",
+    ":network_route",
     ":null_socket_server",
+    ":proxy_info",
     ":refcount",
+    ":rtc_certificate_generator",
     ":rtc_event",
     ":rtc_task_queue",
     ":safe_conversions",
     ":socket",
+    ":socket_adapters",
     ":socket_address",
+    ":socket_address_pair",
     ":socket_factory",
     ":socket_server",
+    ":ssl",
+    ":stream",
     ":stringutils",
     ":threading",
     ":timeutils",
+    ":unique_id_generator",
     ":zero_memory",
     "../api:array_view",
     "../api:field_trials_view",
@@ -1149,86 +1169,52 @@
   public_configs = []
 
   sources = [
-    "async_packet_socket.cc",
+    # Kept during transition
     "async_packet_socket.h",
-    "async_tcp_socket.cc",
     "async_tcp_socket.h",
-    "async_udp_socket.cc",
     "async_udp_socket.h",
-    "crc32.cc",
     "crc32.h",
-    "crypt_string.cc",
     "crypt_string.h",
-    "data_rate_limiter.cc",
     "data_rate_limiter.h",
     "dscp.h",
-    "file_rotating_stream.cc",
     "file_rotating_stream.h",
-    "helpers.cc",
     "helpers.h",
-    "http_common.cc",
     "http_common.h",
     "mdns_responder_interface.h",
-    "message_digest.cc",
     "message_digest.h",
-    "net_helper.cc",
     "net_helper.h",
-    "network.cc",
     "network.h",
-    "network_route.cc",
     "network_route.h",
     "openssl.h",
-    "openssl_adapter.cc",
     "openssl_adapter.h",
-    "openssl_digest.cc",
     "openssl_digest.h",
-    "openssl_key_pair.cc",
     "openssl_key_pair.h",
-    "openssl_session_cache.cc",
     "openssl_session_cache.h",
-    "openssl_stream_adapter.cc",
     "openssl_stream_adapter.h",
-    "openssl_utility.cc",
     "openssl_utility.h",
-    "proxy_info.cc",
     "proxy_info.h",
-    "rtc_certificate.cc",
     "rtc_certificate.h",
-    "rtc_certificate_generator.cc",
     "rtc_certificate_generator.h",
-    "socket_adapters.cc",
     "socket_adapters.h",
-    "socket_address_pair.cc",
     "socket_address_pair.h",
-    "ssl_adapter.cc",
     "ssl_adapter.h",
-    "ssl_certificate.cc",
     "ssl_certificate.h",
-    "ssl_fingerprint.cc",
     "ssl_fingerprint.h",
-    "ssl_identity.cc",
     "ssl_identity.h",
-    "ssl_stream_adapter.cc",
     "ssl_stream_adapter.h",
-    "stream.cc",
     "stream.h",
-    "unique_id_generator.cc",
     "unique_id_generator.h",
   ]
 
   # If we are building the SSL library ourselves, we know it's BoringSSL.
   if (rtc_build_ssl) {
     sources += [
-      "boringssl_certificate.cc",
       "boringssl_certificate.h",
-      "boringssl_identity.cc",
       "boringssl_identity.h",
     ]
   } else {
     sources += [
-      "openssl_certificate.cc",
       "openssl_certificate.h",
-      "openssl_identity.cc",
       "openssl_identity.h",
     ]
   }
@@ -1237,16 +1223,20 @@
     include_dirs = [ "../../boringssl/src/include" ]
   } else {
     sources += [
-      "log_sinks.cc",
       "log_sinks.h",
       "rolling_accumulator.h",
       "ssl_roots.h",
     ]
 
-    deps += [ ":rtc_numerics" ]
+    deps += [
+      ":log_sinks",
+      ":rolling_accumulator",
+      ":rtc_numerics",
+    ]
 
     if (is_win) {
       sources += [ "win32_socket_init.h" ]
+      deps += [ ":win32_socket_init" ]
     }
   }  # !build_with_chromium
 
@@ -1260,10 +1250,6 @@
     deps += [ ":ifaddrs_android" ]
   }
 
-  if (is_ios || is_mac) {
-    sources += [ "mac_ifaddrs_converter.cc" ]
-  }
-
   if (is_linux || is_chromeos) {
     libs += [
       "dl",
@@ -1286,21 +1272,438 @@
   }
 
   if (is_posix || is_fuchsia) {
+    sources += [ "ifaddrs_converter.h" ]
+  }
+}
+
+rtc_library("ifaddrs_converter") {
+  sources = []
+  deps = [
+    ":checks",
+    ":ip_address",
+    ":logging",
+  ]
+
+  if (is_android) {
+    deps += [ ":ifaddrs_android" ]
+  }
+
+  if (is_ios || is_mac) {
+    sources += [ "mac_ifaddrs_converter.cc" ]
+  }
+
+  if (is_posix || is_fuchsia) {
     sources += [
       "ifaddrs_converter.cc",
       "ifaddrs_converter.h",
     ]
   }
+}
 
-  if (is_nacl) {
-    public_deps +=  # no-presubmit-check TODO(webrtc:8603)
-        [ "//native_client_sdk/src/libraries/nacl_io" ]
+rtc_library("rolling_accumulator") {
+  sources = [ "rolling_accumulator.h" ]
+  deps = [
+    ":checks",
+    ":rtc_numerics",
+  ]
+}
 
-    defines += [ "timezone=_timezone" ]
-    sources -= [ "ifaddrs_converter.cc" ]
+if (is_win) {
+  rtc_library("win32_socket_init") {
+    sources = [ "win32_socket_init.h" ]
+    deps = [ ":win32" ]
   }
 }
 
+rtc_library("log_sinks") {
+  sources = [
+    "log_sinks.cc",
+    "log_sinks.h",
+  ]
+  deps = [
+    ":checks",
+    ":file_rotating_stream",
+    ":logging",
+  ]
+  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
+}
+
+rtc_library("network") {
+  sources = [
+    "network.cc",
+    "network.h",
+  ]
+  deps = [
+    ":checks",
+    ":ifaddrs_converter",
+    ":ip_address",
+    ":logging",
+    ":macromagic",
+    ":mdns_responder_interface",
+    ":socket",
+    ":socket_factory",
+    ":stringutils",
+    ":threading",
+    "../api:array_view",
+    "../api:field_trials_view",
+    "../api:sequence_checker",
+    "../api/task_queue:pending_task_safety_flag",
+    "../api/transport:field_trial_based_config",
+    "../api/units:time_delta",
+    "experiments:field_trial_parser",
+    "memory:always_valid_pointer",
+    "system:rtc_export",
+    "third_party/sigslot",
+  ]
+  absl_deps = [
+    "//third_party/abseil-cpp/absl/algorithm:container",
+    "//third_party/abseil-cpp/absl/base:core_headers",
+    "//third_party/abseil-cpp/absl/memory",
+    "//third_party/abseil-cpp/absl/strings",
+  ]
+
+  if (is_win) {
+    deps += [ ":win32" ]
+  }
+}
+
+rtc_library("socket_address_pair") {
+  sources = [
+    "socket_address_pair.cc",
+    "socket_address_pair.h",
+  ]
+  deps = [ ":socket_address" ]
+}
+
+rtc_library("net_helper") {
+  sources = [
+    "net_helper.cc",
+    "net_helper.h",
+  ]
+  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
+}
+
+rtc_library("socket_adapters") {
+  sources = [
+    "socket_adapters.cc",
+    "socket_adapters.h",
+  ]
+  deps = [
+    ":async_socket",
+    ":buffer",
+    ":byte_buffer",
+    ":checks",
+    ":crypt_string",
+    ":http_common",
+    ":logging",
+    ":stringutils",
+    ":zero_memory",
+    "../api:array_view",
+  ]
+  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
+}
+
+rtc_library("network_route") {
+  sources = [
+    "network_route.cc",
+    "network_route.h",
+  ]
+  deps = [
+    ":network_constants",
+    ":stringutils",
+    "system:inline",
+  ]
+}
+
+rtc_library("async_tcp_socket") {
+  sources = [
+    "async_tcp_socket.cc",
+    "async_tcp_socket.h",
+  ]
+  deps = [
+    ":async_packet_socket",
+    ":buffer",
+    ":byte_order",
+    ":checks",
+    ":logging",
+    ":socket",
+    ":socket_address",
+    ":timeutils",
+    "../api:array_view",
+    "network:sent_packet",
+    "third_party/sigslot",
+  ]
+}
+
+rtc_library("async_udp_socket") {
+  sources = [
+    "async_udp_socket.cc",
+    "async_udp_socket.h",
+  ]
+  deps = [
+    ":async_packet_socket",
+    ":checks",
+    ":logging",
+    ":macromagic",
+    ":socket",
+    ":socket_address",
+    ":socket_factory",
+    ":timeutils",
+    "../api:sequence_checker",
+    "../system_wrappers:field_trial",
+    "network:sent_packet",
+    "third_party/sigslot",
+  ]
+  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
+}
+
+rtc_library("async_packet_socket") {
+  sources = [
+    "async_packet_socket.cc",
+    "async_packet_socket.h",
+  ]
+  deps = [
+    ":callback_list",
+    ":dscp",
+    ":socket",
+    ":timeutils",
+    "../api:sequence_checker",
+    "network:sent_packet",
+    "system:no_unique_address",
+    "system:rtc_export",
+    "third_party/sigslot",
+  ]
+}
+
+rtc_library("mdns_responder_interface") {
+  sources = [ "mdns_responder_interface.h" ]
+  deps = [ ":ip_address" ]
+  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
+}
+
+rtc_library("dscp") {
+  sources = [ "dscp.h" ]
+}
+
+rtc_library("proxy_info") {
+  sources = [
+    "proxy_info.cc",
+    "proxy_info.h",
+  ]
+  deps = [
+    ":crypt_string",
+    ":socket_address",
+  ]
+}
+
+rtc_library("file_rotating_stream") {
+  sources = [
+    "file_rotating_stream.cc",
+    "file_rotating_stream.h",
+  ]
+  deps = [
+    ":checks",
+    ":logging",
+    ":stringutils",
+    "system:file_wrapper",
+  ]
+  absl_deps = [
+    "//third_party/abseil-cpp/absl/algorithm:container",
+    "//third_party/abseil-cpp/absl/strings",
+    "//third_party/abseil-cpp/absl/types:optional",
+  ]
+}
+
+rtc_library("data_rate_limiter") {
+  sources = [
+    "data_rate_limiter.cc",
+    "data_rate_limiter.h",
+  ]
+  deps = [ "system:rtc_export" ]
+}
+
+rtc_library("unique_id_generator") {
+  sources = [
+    "unique_id_generator.cc",
+    "unique_id_generator.h",
+  ]
+  deps = [
+    ":ssl",
+    ":stringutils",
+    "../api:array_view",
+    "../api:sequence_checker",
+    "synchronization:mutex",
+    "system:no_unique_address",
+  ]
+  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
+}
+
+rtc_library("crc32") {
+  sources = [
+    "crc32.cc",
+    "crc32.h",
+  ]
+  deps = [ ":macromagic" ]
+  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
+}
+
+rtc_library("stream") {
+  sources = [
+    "stream.cc",
+    "stream.h",
+  ]
+  deps = [
+    ":buffer",
+    ":checks",
+    ":threading",
+    "../api:array_view",
+    "system:rtc_export",
+    "third_party/sigslot",
+  ]
+}
+
+rtc_library("rtc_certificate_generator") {
+  sources = [
+    "rtc_certificate_generator.cc",
+    "rtc_certificate_generator.h",
+  ]
+  deps = [
+    ":checks",
+    ":ssl",
+    ":threading",
+    "../api:scoped_refptr",
+    "system:rtc_export",
+  ]
+  absl_deps = [
+    "//third_party/abseil-cpp/absl/functional:any_invocable",
+    "//third_party/abseil-cpp/absl/types:optional",
+  ]
+}
+
+rtc_library("ssl") {
+  sources = [
+    "helpers.cc",
+    "helpers.h",
+    "message_digest.cc",
+    "message_digest.h",
+    "openssl.h",
+    "openssl_adapter.cc",
+    "openssl_adapter.h",
+    "openssl_digest.cc",
+    "openssl_digest.h",
+    "openssl_key_pair.cc",
+    "openssl_key_pair.h",
+    "openssl_session_cache.cc",
+    "openssl_session_cache.h",
+    "openssl_stream_adapter.cc",
+    "openssl_stream_adapter.h",
+    "openssl_utility.cc",
+    "openssl_utility.h",
+    "rtc_certificate.cc",
+    "rtc_certificate.h",
+    "ssl_adapter.cc",
+    "ssl_adapter.h",
+    "ssl_certificate.cc",
+    "ssl_certificate.h",
+    "ssl_fingerprint.cc",
+    "ssl_fingerprint.h",
+    "ssl_identity.cc",
+    "ssl_identity.h",
+    "ssl_stream_adapter.cc",
+    "ssl_stream_adapter.h",
+  ]
+
+  deps = [
+    ":async_socket",
+    ":buffer",
+    ":checks",
+    ":copy_on_write_buffer",
+    ":logging",
+    ":macromagic",
+    ":safe_conversions",
+    ":socket",
+    ":socket_address",
+    ":stream",
+    ":stringutils",
+    ":threading",
+    ":timeutils",
+    "../api:array_view",
+    "../api:refcountedbase",
+    "../api:scoped_refptr",
+    "../api/task_queue:pending_task_safety_flag",
+    "../api/units:time_delta",
+    "../system_wrappers:field_trial",
+    "system:rtc_export",
+    "task_utils:repeating_task",
+    "third_party/base64",
+    "third_party/sigslot",
+  ]
+
+  absl_deps = [
+    "//third_party/abseil-cpp/absl/algorithm:container",
+    "//third_party/abseil-cpp/absl/base:core_headers",
+    "//third_party/abseil-cpp/absl/memory",
+    "//third_party/abseil-cpp/absl/strings",
+    "//third_party/abseil-cpp/absl/types:optional",
+  ]
+
+  # If we are building the SSL library ourselves, we know it's BoringSSL.
+  if (rtc_build_ssl) {
+    sources += [
+      "boringssl_certificate.cc",
+      "boringssl_certificate.h",
+      "boringssl_identity.cc",
+      "boringssl_identity.h",
+    ]
+
+    deps += [ "//third_party/boringssl" ]
+  } else {
+    sources += [
+      "openssl_certificate.cc",
+      "openssl_certificate.h",
+      "openssl_identity.cc",
+      "openssl_identity.h",
+    ]
+
+    configs += [ ":external_ssl_library" ]
+  }
+
+  if (build_with_chromium) {
+    include_dirs = [ "../../boringssl/src/include" ]
+  } else {
+    sources += [ "ssl_roots.h" ]
+  }
+
+  if (is_win) {
+    deps += [ ":win32" ]
+  }
+}
+
+rtc_library("crypt_string") {
+  sources = [
+    "crypt_string.cc",
+    "crypt_string.h",
+  ]
+}
+
+rtc_library("http_common") {
+  sources = [
+    "http_common.cc",
+    "http_common.h",
+  ]
+  deps = [
+    ":crypt_string",
+    ":logging",
+    ":socket_address",
+    ":ssl",
+    ":stringutils",
+    ":zero_memory",
+    "third_party/base64",
+  ]
+
+  absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
+}
+
 rtc_source_set("gtest_prod") {
   sources = [ "gtest_prod_util.h" ]
 }
@@ -1329,6 +1732,7 @@
     "test_client.h",
   ]
   deps = [
+    ":async_udp_socket",
     ":gunit_helpers",
     ":rtc_base",
     ":rtc_base_tests_utils",
@@ -1391,18 +1795,27 @@
     "virtual_socket_server.h",
   ]
   deps = [
+    ":async_packet_socket",
     ":async_socket",
+    ":async_tcp_socket",
+    ":async_udp_socket",
     ":byte_buffer",
     ":checks",
     ":ip_address",
     ":logging",
     ":macromagic",
+    ":mdns_responder_interface",
+    ":network",
     ":rtc_base",
     ":rtc_event",
     ":socket",
+    ":socket_adapters",
     ":socket_address",
+    ":socket_address_pair",
     ":socket_factory",
     ":socket_server",
+    ":ssl",
+    ":stream",
     ":stringutils",
     ":threading",
     ":timeutils",
@@ -1499,8 +1912,11 @@
         "socket_unittest.h",
       ]
       deps = [
+        ":async_packet_socket",
+        ":async_udp_socket",
         ":buffer",
         ":checks",
+        ":file_rotating_stream",
         ":gunit_helpers",
         ":ip_address",
         ":logging",
@@ -1577,6 +1993,8 @@
         "zero_memory_unittest.cc",
       ]
       deps = [
+        ":async_packet_socket",
+        ":async_udp_socket",
         ":bit_buffer",
         ":bitstream_reader",
         ":bounded_inline_vector",
@@ -1616,6 +2034,7 @@
         ":socket",
         ":socket_address",
         ":socket_server",
+        ":ssl",
         ":stringutils",
         ":strong_alias",
         ":swap_queue",
@@ -1751,28 +2170,42 @@
         "unique_id_generator_unittest.cc",
       ]
       deps = [
+        ":async_packet_socket",
+        ":async_tcp_socket",
+        ":async_udp_socket",
         ":buffer",
         ":buffer_queue",
         ":checks",
+        ":crc32",
+        ":data_rate_limiter",
         ":gunit_helpers",
+        ":ifaddrs_converter",
         ":ip_address",
         ":logging",
         ":macromagic",
         ":net_helpers",
+        ":network",
+        ":network_route",
         ":null_socket_server",
         ":refcount",
+        ":rolling_accumulator",
         ":rtc_base",
         ":rtc_base_tests_utils",
+        ":rtc_certificate_generator",
         ":rtc_event",
         ":safe_conversions",
         ":socket",
+        ":socket_adapters",
         ":socket_address",
         ":socket_factory",
         ":socket_server",
+        ":ssl",
+        ":stream",
         ":stringutils",
         ":testclient",
         ":threading",
         ":timeutils",
+        ":unique_id_generator",
         "../api:array_view",
         "../api:field_trials_view",
         "../api:make_ref_counted",
diff --git a/rtc_base/memory/BUILD.gn b/rtc_base/memory/BUILD.gn
index 778a396..8224267 100644
--- a/rtc_base/memory/BUILD.gn
+++ b/rtc_base/memory/BUILD.gn
@@ -34,6 +34,7 @@
   ]
   deps = [
     "..:rtc_base",
+    "..:stream",
     "..:threading",
     "../../api/task_queue:pending_task_safety_flag",
     "../synchronization:mutex",
diff --git a/rtc_tools/data_channel_benchmark/BUILD.gn b/rtc_tools/data_channel_benchmark/BUILD.gn
index cd8606f..6c8d987 100644
--- a/rtc_tools/data_channel_benchmark/BUILD.gn
+++ b/rtc_tools/data_channel_benchmark/BUILD.gn
@@ -54,6 +54,7 @@
     "../../rtc_base:logging",
     "../../rtc_base:refcount",
     "../../rtc_base:rtc_event",
+    "../../rtc_base:ssl",
     "../../rtc_base:threading",
     "../../system_wrappers:field_trial",
     "//third_party/abseil-cpp/absl/cleanup:cleanup",
diff --git a/rtc_tools/network_tester/BUILD.gn b/rtc_tools/network_tester/BUILD.gn
index 47932de..cc934ad 100644
--- a/rtc_tools/network_tester/BUILD.gn
+++ b/rtc_tools/network_tester/BUILD.gn
@@ -45,6 +45,7 @@
       "../../api/task_queue:pending_task_safety_flag",
       "../../p2p:rtc_p2p",
       "../../rtc_base",
+      "../../rtc_base:async_packet_socket",
       "../../rtc_base:checks",
       "../../rtc_base:ignore_wundef",
       "../../rtc_base:ip_address",
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index 95df88a..53f25a6 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -188,6 +188,7 @@
         ":helpers_objc",
         "../rtc_base",
         "../rtc_base:checks",
+        "../rtc_base:log_sinks",
         "../rtc_base:logging",
       ]
 
@@ -209,6 +210,8 @@
         ":base_objc",
         "../rtc_base",
         "../rtc_base:checks",
+        "../rtc_base:file_rotating_stream",
+        "../rtc_base:log_sinks",
         "../rtc_base:logging",
       ]
 
@@ -1098,7 +1101,9 @@
         "../rtc_base:event_tracer",
         "../rtc_base:logging",
         "../rtc_base:network_constants",
+        "../rtc_base:rtc_certificate_generator",
         "../rtc_base:safe_conversions",
+        "../rtc_base:ssl",
         "../rtc_base:stringutils",
         "../rtc_base:threading",
         "../rtc_base:timeutils",
@@ -1610,6 +1615,7 @@
         "../rtc_base",
         "../rtc_base:buffer",
         "../rtc_base:logging",
+        "../rtc_base:ssl",
         "../rtc_base:threading",
       ]
       if (is_ios) {
diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn
index e14bc67..f80dc50 100644
--- a/sdk/android/BUILD.gn
+++ b/sdk/android/BUILD.gn
@@ -141,6 +141,7 @@
       ":video_egl_jni",
       "../../pc:libjingle_peerconnection",
       "../../rtc_base",
+      "../../rtc_base:ssl",
     ]
     output_extension = "so"
   }
@@ -787,10 +788,13 @@
       "../../rtc_base",
       "../../rtc_base:checks",
       "../../rtc_base:event_tracer",
+      "../../rtc_base:log_sinks",
       "../../rtc_base:logging",
       "../../rtc_base:refcount",
+      "../../rtc_base:rtc_certificate_generator",
       "../../rtc_base:rtc_task_queue",
       "../../rtc_base:safe_conversions",
+      "../../rtc_base:ssl",
       "../../rtc_base:stringutils",
       "../../rtc_base:threading",
       "../../system_wrappers:field_trial",
@@ -1558,6 +1562,7 @@
       ":native_api_jni",
       "../../pc:libjingle_peerconnection",
       "../../rtc_base",
+      "../../rtc_base:ssl",
     ]
     output_extension = "so"
   }
diff --git a/test/BUILD.gn b/test/BUILD.gn
index 9842ba2..99f21aa 100644
--- a/test/BUILD.gn
+++ b/test/BUILD.gn
@@ -531,6 +531,7 @@
       "../rtc_base:checks",
       "../rtc_base:event_tracer",
       "../rtc_base:logging",
+      "../rtc_base:ssl",
       "../rtc_base:threading",
       "../system_wrappers:field_trial",
       "../system_wrappers:metrics",
@@ -541,6 +542,10 @@
       "//third_party/abseil-cpp/absl/strings:strings",
       "//third_party/abseil-cpp/absl/types:optional",
     ]
+
+    if (is_win) {
+      deps += [ "../rtc_base:win32_socket_init" ]
+    }
   }
 
   rtc_library("test_main") {
diff --git a/test/fuzzers/BUILD.gn b/test/fuzzers/BUILD.gn
index 4679c69..daf8e2b 100644
--- a/test/fuzzers/BUILD.gn
+++ b/test/fuzzers/BUILD.gn
@@ -648,6 +648,7 @@
   deps = [
     "../:rtp_test_utils",
     "../../rtc_base",
+    "../../rtc_base:ssl",
     "../../rtc_base:stringutils",
   ]
 }
diff --git a/test/network/BUILD.gn b/test/network/BUILD.gn
index 379f604..79e91e2 100644
--- a/test/network/BUILD.gn
+++ b/test/network/BUILD.gn
@@ -58,10 +58,12 @@
     "../../p2p:p2p_server_utils",
     "../../p2p:rtc_p2p",
     "../../rtc_base",
+    "../../rtc_base:async_packet_socket",
     "../../rtc_base:copy_on_write_buffer",
     "../../rtc_base:ip_address",
     "../../rtc_base:logging",
     "../../rtc_base:macromagic",
+    "../../rtc_base:network",
     "../../rtc_base:network_constants",
     "../../rtc_base:random",
     "../../rtc_base:rtc_base_tests_utils",
diff --git a/test/scenario/BUILD.gn b/test/scenario/BUILD.gn
index 804e029..a79778d 100644
--- a/test/scenario/BUILD.gn
+++ b/test/scenario/BUILD.gn
@@ -130,6 +130,7 @@
       "../../rtc_base",
       "../../rtc_base:checks",
       "../../rtc_base:copy_on_write_buffer",
+      "../../rtc_base:net_helper",
       "../../rtc_base:refcount",
       "../../rtc_base:rtc_base_tests_utils",
       "../../rtc_base:rtc_event",
diff --git a/video/BUILD.gn b/video/BUILD.gn
index 415f702..0878dfa 100644
--- a/video/BUILD.gn
+++ b/video/BUILD.gn
@@ -927,6 +927,7 @@
       "../rtc_base:task_queue_for_test",
       "../rtc_base:threading",
       "../rtc_base:timeutils",
+      "../rtc_base:unique_id_generator",
       "../rtc_base/containers:flat_map",
       "../rtc_base/experiments:alr_experiment",
       "../rtc_base/experiments:encoder_info_settings",