Breaking change: make protobuf comply with the C++ layering check

This check enforces that each C++ build target has the correct dependencies for
all headers that it includes. We have many targets that were not correct with
respect to this check, so I fixed them up.

I also cleaned up the C++ targets related to the well-known types. I created a
cc_proto_library() target for each one and removed the :wkt_cc_protos target,
since this was necessary to satisfy the layering check. I deleted the
//src/google/protobuf:protobuf_nowkt target and deprecated :protobuf_nowkt,
because the distinction between the :protobuf and :protobuf_nowkt targets was
not really correct. Neither one exposed the headers for the well-known types in
a way that was valid with respect to the layering check, and the idea of
bundling all the well-known types together is not idiomatic in Bazel anyway.
This is a breaking change, because the //:protobuf target no longer bundles the
well-known types. From now on they should be accessed through the new
//:*_cc_proto aliases in our top-level package.

I renamed the :port_def target to :port, which simplifies things a bit by
matching our internal name.

The original motivation for this change was that to move utf8_range onto our CI
infrastructure, we needed to make its dependency rules_fuzzing compatible with
Bazel 6. The rules_fuzzing project builds with the layering check, and I found
that the process of upgrading it to Bazel 6 made it take a dependency on
protobuf, which caused it to break due to layering violations. I was able to
work around this, but it would still be nice to comply with the layering check
so that we don't have to worry about this kind of thing in the future.

PiperOrigin-RevId: 595516736
diff --git a/.bazelrc b/.bazelrc
index 4eea8fb..b3467d8 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -26,3 +26,7 @@
 # TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
 # https://github.com/protocolbuffers/protobuf/issues/14313
 common --noenable_bzlmod
+
+# Important: this flag ensures that we remain compliant with the C++ layering
+# check.
+build --features=layering_check
diff --git a/.github/workflows/test_java.yml b/.github/workflows/test_java.yml
index 1824932..0d48cce 100644
--- a/.github/workflows/test_java.yml
+++ b/.github/workflows/test_java.yml
@@ -20,7 +20,9 @@
           - name: OpenJDK 8
             version: '8'
             image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:8-1fdbb997433cb22c1e49ef75ad374a8d6bb88702
-            targets: //java/... //java/internal:java_version
+            # TODO: b/318555165 - enable the layering check. Currently it does
+            # not work correctly with the toolchain in this Docker image.
+            targets: //java/... //java/internal:java_version --features=-layering_check
           - name: OpenJDK 11
             version: '11'
             image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:11-1fdbb997433cb22c1e49ef75ad374a8d6bb88702
@@ -63,7 +65,9 @@
           image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:8-1fdbb997433cb22c1e49ef75ad374a8d6bb88702
           credentials: ${{ secrets.GAR_SERVICE_ACCOUNT }}
           bazel-cache: java_linux/8
-          bazel: test --test_output=all //java:linkage_monitor --spawn_strategy=standalone
+          # TODO: b/318555165 - enable the layering check. Currently it does
+          # not work correctly with the toolchain in this Docker image.
+          bazel: test --test_output=all //java:linkage_monitor --spawn_strategy=standalone --features=-layering_check
 
   protobuf-bom:
     name: Protobuf Maven BOM
diff --git a/BUILD.bazel b/BUILD.bazel
index 6a245bc..c37fb11 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -85,6 +85,68 @@
     visibility = ["//visibility:public"],
 )
 
+# C++ targets for the well-known types
+
+alias(
+    name = "any_cc_proto",
+    actual = "//src/google/protobuf:any_cc_proto",
+    visibility = ["//visibility:public"],
+)
+
+alias(
+    name = "api_cc_proto",
+    actual = "//src/google/protobuf:api_cc_proto",
+    visibility = ["//visibility:public"],
+)
+
+alias(
+    name = "duration_cc_proto",
+    actual = "//src/google/protobuf:duration_cc_proto",
+    visibility = ["//visibility:public"],
+)
+
+alias(
+    name = "empty_cc_proto",
+    actual = "//src/google/protobuf:empty_cc_proto",
+    visibility = ["//visibility:public"],
+)
+
+alias(
+    name = "field_mask_cc_proto",
+    actual = "//src/google/protobuf:field_mask_cc_proto",
+    visibility = ["//visibility:public"],
+)
+
+alias(
+    name = "source_context_cc_proto",
+    actual = "//src/google/protobuf:source_context_cc_proto",
+    visibility = ["//visibility:public"],
+)
+
+alias(
+    name = "struct_cc_proto",
+    actual = "//src/google/protobuf:struct_cc_proto",
+    visibility = ["//visibility:public"],
+)
+
+alias(
+    name = "timestamp_cc_proto",
+    actual = "//src/google/protobuf:timestamp_cc_proto",
+    visibility = ["//visibility:public"],
+)
+
+alias(
+    name = "type_cc_proto",
+    actual = "//src/google/protobuf:type_cc_proto",
+    visibility = ["//visibility:public"],
+)
+
+alias(
+    name = "wrappers_cc_proto",
+    actual = "//src/google/protobuf:wrappers_cc_proto",
+    visibility = ["//visibility:public"],
+)
+
 # Source files: these are aliases to a filegroup, not a `proto_library`.
 #
 # (This is _probably_ not what you want.)
@@ -190,8 +252,15 @@
 # Expose the runtime for the proto_lang_toolchain so that it can also be used in
 # a user-defined proto_lang_toolchain.
 alias(
+    name = "protobuf",
+    actual = "//src/google/protobuf",
+    visibility = ["//visibility:public"],
+)
+
+alias(
     name = "protobuf_nowkt",
     actual = "//src/google/protobuf:protobuf_nowkt",
+    deprecation = "Use //:protobuf instead",
     visibility = ["//visibility:public"],
 )
 
@@ -210,23 +279,6 @@
     visibility = ["//visibility:public"],
 )
 
-cc_library(
-    name = "protobuf",
-    copts = COPTS,
-    linkopts = LINK_OPTS,
-    visibility = ["//visibility:public"],
-    deps = [
-        "//src/google/protobuf",
-        "//src/google/protobuf/compiler:importer",
-        "//src/google/protobuf/util:delimited_message_util",
-        "//src/google/protobuf/util:differencer",
-        "//src/google/protobuf/util:field_mask_util",
-        "//src/google/protobuf/util:json_util",
-        "//src/google/protobuf/util:time_util",
-        "//src/google/protobuf/util:type_resolver_util",
-    ],
-)
-
 # This provides just the header files for use in projects that need to build
 # shared libraries for dynamic loading. This target is available until Bazel
 # adds native support for such use cases.
@@ -324,7 +376,7 @@
         "//:descriptor_proto",
     ],
     command_line = "--cpp_out=$(OUT)",
-    runtime = "//src/google/protobuf:protobuf_nowkt",
+    runtime = "//src/google/protobuf",
     visibility = ["//visibility:public"],
 )
 
diff --git a/ci/common.bazelrc b/ci/common.bazelrc
index fd24b0a..f8100e8 100644
--- a/ci/common.bazelrc
+++ b/ci/common.bazelrc
@@ -68,4 +68,8 @@
 
 # TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
 # https://github.com/protocolbuffers/protobuf/issues/14313
-common --noenable_bzlmod
\ No newline at end of file
+common --noenable_bzlmod
+
+# Important: this flag ensures that we remain compliant with the C++ layering
+# check.
+build --features=layering_check
diff --git a/conformance/BUILD.bazel b/conformance/BUILD.bazel
index 1d9ea15..76be11e 100644
--- a/conformance/BUILD.bazel
+++ b/conformance/BUILD.bazel
@@ -1,16 +1,16 @@
 # Conformance testing for Protobuf.
 
 load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_proto_library", "objc_library")
-load("@rules_ruby//ruby:defs.bzl", "ruby_binary")
-load("//ruby:defs.bzl", "internal_ruby_proto_library")
-load("//:protobuf.bzl", "internal_csharp_proto_library", "internal_objc_proto_library", "internal_php_proto_library", "internal_py_proto_library")
-load("//build_defs:internal_shell.bzl", "inline_sh_binary")
 load(
     "@rules_pkg//:mappings.bzl",
     "pkg_filegroup",
     "pkg_files",
     "strip_prefix",
 )
+load("@rules_ruby//ruby:defs.bzl", "ruby_binary")
+load("//:protobuf.bzl", "internal_csharp_proto_library", "internal_objc_proto_library", "internal_php_proto_library", "internal_py_proto_library")
+load("//build_defs:internal_shell.bzl", "inline_sh_binary")
+load("//ruby:defs.bzl", "internal_ruby_proto_library")
 
 exports_files([
     "bazel_conformance_test_runner.sh",
@@ -144,9 +144,15 @@
     includes = ["."],
     deps = [
         ":conformance_cc_proto",
+        "//src/google/protobuf",
+        "//src/google/protobuf:protobuf_lite",
         "//src/google/protobuf/util:differencer",
         "//src/google/protobuf/util:json_util",
         "//src/google/protobuf/util:type_resolver_util",
+        "@com_google_absl//absl/container:btree",
+        "@com_google_absl//absl/container:flat_hash_set",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/strings",
         "@com_google_absl//absl/strings:str_format",
     ],
@@ -158,13 +164,21 @@
     srcs = ["binary_json_conformance_suite.cc"],
     hdrs = ["binary_json_conformance_suite.h"],
     deps = [
+        ":conformance_cc_proto",
         ":conformance_test",
         ":test_messages_proto2_proto_cc",
         ":test_messages_proto3_proto_cc",
+        "//src/google/protobuf",
+        "//src/google/protobuf:protobuf_lite",
         "//src/google/protobuf/editions:test_messages_proto2_editions_cc_proto",
         "//src/google/protobuf/editions:test_messages_proto3_editions_cc_proto",
+        "//src/google/protobuf/json",
+        "//src/google/protobuf/util:type_resolver_util",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/log:die_if_null",
         "@com_google_absl//absl/status",
+        "@com_google_absl//absl/strings",
         "@jsoncpp",
     ],
 )
@@ -178,6 +192,7 @@
         ":conformance_test",
         ":test_messages_proto2_proto_cc",
         ":test_messages_proto3_proto_cc",
+        "//src/google/protobuf",
         "//src/google/protobuf/editions:test_messages_proto2_editions_cc_proto",
         "//src/google/protobuf/editions:test_messages_proto3_editions_cc_proto",
         "@com_google_absl//absl/log:absl_log",
@@ -209,8 +224,16 @@
         "//:protobuf",
         "//:test_messages_proto2_cc_proto",
         "//:test_messages_proto3_cc_proto",
+        "//src/google/protobuf",
+        "//src/google/protobuf:port",
+        "//src/google/protobuf:protobuf_lite",
         "//src/google/protobuf/editions:test_messages_proto2_editions_cc_proto",
         "//src/google/protobuf/editions:test_messages_proto3_editions_cc_proto",
+        "//src/google/protobuf/stubs",
+        "//src/google/protobuf/util:json_util",
+        "//src/google/protobuf/util:type_resolver_util",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/status",
         "@com_google_absl//absl/status:statusor",
     ],
diff --git a/examples/BUILD.bazel b/examples/BUILD.bazel
index 265a0b9..a70bd76 100644
--- a/examples/BUILD.bazel
+++ b/examples/BUILD.bazel
@@ -39,6 +39,7 @@
     deps = [
         ":addressbook_cc_proto",
         "@com_google_protobuf//:protobuf",
+        "@com_google_protobuf//src/google/protobuf/util:time_util",
     ],
 )
 
@@ -48,6 +49,7 @@
     deps = [
         ":addressbook_cc_proto",
         "@com_google_protobuf//:protobuf",
+        "@com_google_protobuf//src/google/protobuf/util:time_util",
     ],
 )
 
diff --git a/lua/BUILD.bazel b/lua/BUILD.bazel
index 6216f9c..5b7ccc9 100644
--- a/lua/BUILD.bazel
+++ b/lua/BUILD.bazel
@@ -32,6 +32,7 @@
     deps = [
         "//upb:json",
         "//upb:message",
+        "//upb:port",
         "//upb:reflection",
         "//upb:text",
         "@lua//:liblua",
@@ -44,7 +45,9 @@
     copts = UPB_DEFAULT_CPPOPTS,
     visibility = ["//visibility:public"],
     deps = [
+        "//src/google/protobuf",
         "//src/google/protobuf/compiler:code_generator",
+        "//src/google/protobuf/io:printer",
         "@com_google_absl//absl/strings",
     ],
 )
diff --git a/pkg/BUILD.bazel b/pkg/BUILD.bazel
index 55079a6..64eb649 100644
--- a/pkg/BUILD.bazel
+++ b/pkg/BUILD.bazel
@@ -1,9 +1,9 @@
-load("@rules_pkg//:pkg.bzl", "pkg_zip")
 load(
     "@rules_pkg//:mappings.bzl",
     "pkg_attributes",
     "pkg_files",
 )
+load("@rules_pkg//:pkg.bzl", "pkg_zip")
 load("//:protobuf_release.bzl", "package_naming")
 load(":build_systems.bzl", "gen_file_lists")
 load(":cc_dist_library.bzl", "cc_dist_library")
@@ -163,9 +163,9 @@
     }),
     tags = ["manual"],
     deps = [
+        "//src/google/protobuf",
         "//src/google/protobuf:arena_align",
         "//src/google/protobuf:cmake_wkt_cc_proto",
-        "//src/google/protobuf:protobuf_nowkt",
         "//src/google/protobuf/compiler:importer",
         "//src/google/protobuf/json",
         "//src/google/protobuf/util:delimited_message_util",
diff --git a/protos_generator/BUILD b/protos_generator/BUILD
index d76c944..d5b65bf 100644
--- a/protos_generator/BUILD
+++ b/protos_generator/BUILD
@@ -72,6 +72,7 @@
     visibility = ["//visibility:private"],
     deps = [
         "//:protobuf",
+        "//src/google/protobuf/io",
         "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/strings",
     ],
@@ -96,6 +97,7 @@
     visibility = ["//visibility:private"],
     deps = [
         ":output",
+        "//src/google/protobuf",
         "//upb_generator:keywords",
     ],
 )
diff --git a/python/build_targets.bzl b/python/build_targets.bzl
index 05ed163..b81baab 100644
--- a/python/build_targets.bzl
+++ b/python/build_targets.bzl
@@ -120,7 +120,18 @@
         ],
         deps = [
             ":proto_api",
-            "//:protobuf",
+            "//src/google/protobuf",
+            "//src/google/protobuf:port",
+            "//src/google/protobuf:protobuf_lite",
+            "//src/google/protobuf/io",
+            "//src/google/protobuf/io:tokenizer",
+            "//src/google/protobuf/stubs:lite",
+            "//src/google/protobuf/util:differencer",
+            "@com_google_absl//absl/container:flat_hash_map",
+            "@com_google_absl//absl/log:absl_check",
+            "@com_google_absl//absl/log:absl_log",
+            "@com_google_absl//absl/status",
+            "@com_google_absl//absl/strings",
         ] + select({
             "//conditions:default": [],
             ":use_fast_cpp_protos": ["//external:python_headers"],
diff --git a/rust/cpp_kernel/BUILD b/rust/cpp_kernel/BUILD
index 6582b03..34697ee 100644
--- a/rust/cpp_kernel/BUILD
+++ b/rust/cpp_kernel/BUILD
@@ -12,7 +12,8 @@
     ],
     deps = [
         ":rust_alloc_for_cpp_api",  # buildcleaner: keep
-        "//:protobuf_nowkt",
+        "//:protobuf",
+        "//:protobuf_lite",
         "@com_google_absl//absl/strings:string_view",
     ],
 )
diff --git a/src/BUILD.bazel b/src/BUILD.bazel
index 7c42d0b..26e15b3 100644
--- a/src/BUILD.bazel
+++ b/src/BUILD.bazel
@@ -4,8 +4,8 @@
 
 # Most rules are under google/protobuf. This package exists for convenience.
 load("@rules_pkg//:mappings.bzl", "pkg_filegroup", "pkg_files", "strip_prefix")
-load("//upb/cmake:build_defs.bzl", "staleness_test")
 load("//conformance:defs.bzl", "conformance_test")
+load("//upb/cmake:build_defs.bzl", "staleness_test")
 
 pkg_files(
     name = "dist_files",
diff --git a/src/google/protobuf/BUILD.bazel b/src/google/protobuf/BUILD.bazel
index 5e7f547..d7e6faf 100644
--- a/src/google/protobuf/BUILD.bazel
+++ b/src/google/protobuf/BUILD.bazel
@@ -12,6 +12,7 @@
     default_visibility = [
         "//:__pkg__",  # "public" targets are alias rules in //.
         "//json:__subpackages__",
+        "//src/google/protobuf:__subpackages__",
     ],
 )
 
@@ -21,6 +22,11 @@
     strip_import_prefix = "/src",
 )
 
+cc_proto_library(
+    name = "any_cc_proto",
+    deps = [":any_proto"],
+)
+
 proto_library(
     name = "api_proto",
     srcs = ["api.proto"],
@@ -31,42 +37,77 @@
     ],
 )
 
+cc_proto_library(
+    name = "api_cc_proto",
+    deps = [":api_proto"],
+)
+
 proto_library(
     name = "duration_proto",
     srcs = ["duration.proto"],
     strip_import_prefix = "/src",
 )
 
+cc_proto_library(
+    name = "duration_cc_proto",
+    deps = [":duration_proto"],
+)
+
 proto_library(
     name = "empty_proto",
     srcs = ["empty.proto"],
     strip_import_prefix = "/src",
 )
 
+cc_proto_library(
+    name = "empty_cc_proto",
+    deps = [":empty_proto"],
+)
+
 proto_library(
     name = "field_mask_proto",
     srcs = ["field_mask.proto"],
     strip_import_prefix = "/src",
 )
 
+cc_proto_library(
+    name = "field_mask_cc_proto",
+    deps = [":field_mask_proto"],
+)
+
 proto_library(
     name = "source_context_proto",
     srcs = ["source_context.proto"],
     strip_import_prefix = "/src",
 )
 
+cc_proto_library(
+    name = "source_context_cc_proto",
+    deps = [":source_context_proto"],
+)
+
 proto_library(
     name = "struct_proto",
     srcs = ["struct.proto"],
     strip_import_prefix = "/src",
 )
 
+cc_proto_library(
+    name = "struct_cc_proto",
+    deps = [":struct_proto"],
+)
+
 proto_library(
     name = "timestamp_proto",
     srcs = ["timestamp.proto"],
     strip_import_prefix = "/src",
 )
 
+cc_proto_library(
+    name = "timestamp_cc_proto",
+    deps = [":timestamp_proto"],
+)
+
 proto_library(
     name = "type_proto",
     srcs = ["type.proto"],
@@ -77,12 +118,22 @@
     ],
 )
 
+cc_proto_library(
+    name = "type_cc_proto",
+    deps = [":type_proto"],
+)
+
 proto_library(
     name = "wrappers_proto",
     srcs = ["wrappers.proto"],
     strip_import_prefix = "/src",
 )
 
+cc_proto_library(
+    name = "wrappers_cc_proto",
+    deps = [":wrappers_proto"],
+)
+
 # Generate code for the well-known types on demand.
 # This needs to be done in a separate genrule because we publish protoc and the
 # C++ runtime with the WKT code linked in.  We need to use a stripped down
@@ -107,19 +158,6 @@
     "wrappers",
 ]
 
-proto_library(
-    name = "wkt_proto",
-    strip_import_prefix = "/src",
-    visibility = ["//visibility:private"],
-    deps = [wkt + "_proto" for wkt in WELL_KNOWN_TYPES],
-)
-
-cc_proto_library(
-    name = "wkt_cc_proto",
-    visibility = ["//pkg:__pkg__"],
-    deps = ["wkt_proto"],
-)
-
 # When we generate code for the well-known types, we put the resulting files in
 # wkt/google/protobuf and add ./wkt to the include paths below. This is a
 # somewhat strange setup but is necessary to satisfy these two constraints:
@@ -164,7 +202,12 @@
     linkopts = LINK_OPTS,
     strip_include_prefix = "/src",
     visibility = ["//pkg:__pkg__"],
-    deps = [":protobuf_nowkt"],
+    deps = [
+        ":port",
+        ":protobuf",
+        ":protobuf_lite",
+        "//src/google/protobuf/io",
+    ],
 )
 
 # Built-in runtime types
@@ -192,7 +235,7 @@
 ################################################################################
 
 cc_library(
-    name = "port_def",
+    name = "port",
     srcs = ["port.cc"],
     hdrs = [
         "port.h",
@@ -205,6 +248,8 @@
         "//src/google/protobuf:__subpackages__",
     ],
     deps = [
+        "@com_google_absl//absl/base:config",
+        "@com_google_absl//absl/base:core_headers",
         "@com_google_absl//absl/meta:type_traits",
     ],
 )
@@ -218,14 +263,14 @@
         "//:__subpackages__",
         "//src/google/protobuf:__subpackages__",
     ],
-    deps = [":port_def"],
+    deps = [":port"],
 )
 
 cc_test(
     name = "varint_shuffle_test",
     srcs = ["varint_shuffle_test.cc"],
     deps = [
-        ":port_def",
+        ":port",
         ":varint_shuffle",
         "@com_google_absl//absl/log:absl_check",
         "@com_google_googletest//:gtest",
@@ -237,7 +282,7 @@
     name = "port_test",
     srcs = ["port_test.cc"],
     deps = [
-        ":port_def",
+        ":port",
         ":varint_shuffle",
         "@com_google_absl//absl/base:config",
         "@com_google_absl//absl/log:absl_check",
@@ -256,6 +301,7 @@
         "//src/google/protobuf:__subpackages__",
     ],
     deps = [
+        "//src/google/protobuf:port",
         "//src/google/protobuf/stubs:lite",
         "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/log:absl_log",
@@ -305,6 +351,7 @@
     name = "string_block_test",
     srcs = ["string_block_test.cc"],
     deps = [
+        ":port",
         ":string_block",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
@@ -331,12 +378,15 @@
         ":arena_align",
         ":arena_allocation_policy",
         ":arena_cleanup",
+        ":port",
         ":string_block",
         "//src/google/protobuf/stubs:lite",
+        "@com_google_absl//absl/base:core_headers",
         "@com_google_absl//absl/base:prefetch",
         "@com_google_absl//absl/container:layout",
         "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/log:absl_log",
+        "@com_google_absl//absl/numeric:bits",
         "@com_google_absl//absl/synchronization",
         "@com_google_absl//absl/utility:if_constexpr",
     ],
@@ -426,15 +476,16 @@
     linkopts = LINK_OPTS,
     strip_include_prefix = "/src",
     visibility = [
-        "//:__pkg__",
-        "//pkg:__pkg__",
-        "//src/google/protobuf:__subpackages__",
+        "//:__subpackages__",
     ],
     # In Bazel 6.0+, these will be `interface_deps`:
     deps = [
         ":arena",
         ":arena_align",
+        ":arena_allocation_policy",
+        ":arena_cleanup",
         ":internal_visibility",
+        ":port",
         ":string_block",
         ":varint_shuffle",
         "//src/google/protobuf/io",
@@ -442,6 +493,9 @@
         "//third_party/utf8_range:utf8_validity",
         "@com_google_absl//absl/base",
         "@com_google_absl//absl/base:config",
+        "@com_google_absl//absl/base:core_headers",
+        "@com_google_absl//absl/base:dynamic_annotations",
+        "@com_google_absl//absl/base:prefetch",
         "@com_google_absl//absl/container:btree",
         "@com_google_absl//absl/container:flat_hash_set",
         "@com_google_absl//absl/hash",
@@ -449,14 +503,20 @@
         "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/meta:type_traits",
         "@com_google_absl//absl/numeric:bits",
+        "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/strings:cord",
         "@com_google_absl//absl/strings:internal",
+        "@com_google_absl//absl/strings:str_format",
         "@com_google_absl//absl/synchronization",
         "@com_google_absl//absl/time",
+        "@com_google_absl//absl/types:optional",
+        "@com_google_absl//absl/types:span",
+        "@com_google_absl//absl/utility:if_constexpr",
     ],
 )
 
 cc_library(
-    name = "protobuf_nowkt",
+    name = "protobuf",
     srcs = [
         "any.cc",
         "cpp_features.pb.cc",
@@ -513,11 +573,11 @@
     linkopts = LINK_OPTS,
     strip_include_prefix = "/src",
     visibility = [
-        "//:__pkg__",
-        "//pkg:__pkg__",
-        "//src/google/protobuf:__subpackages__",
+        "//:__subpackages__",
     ],
     deps = [
+        ":internal_visibility",
+        ":port",
         ":protobuf_lite",
         "//src/google/protobuf/io",
         "//src/google/protobuf/io:gzip_stream",
@@ -525,17 +585,30 @@
         "//src/google/protobuf/io:tokenizer",
         "//src/google/protobuf/stubs",
         "//third_party/utf8_range:utf8_validity",
+        "@com_google_absl//absl/algorithm:container",
         "@com_google_absl//absl/base",
+        "@com_google_absl//absl/base:core_headers",
         "@com_google_absl//absl/base:dynamic_annotations",
         "@com_google_absl//absl/container:btree",
         "@com_google_absl//absl/container:flat_hash_map",
         "@com_google_absl//absl/container:flat_hash_set",
+        "@com_google_absl//absl/functional:any_invocable",
+        "@com_google_absl//absl/functional:function_ref",
         "@com_google_absl//absl/hash",
         "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/log:absl_log",
+        "@com_google_absl//absl/memory",
+        "@com_google_absl//absl/status",
+        "@com_google_absl//absl/status:statusor",
+        "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/strings:cord",
         "@com_google_absl//absl/strings:internal",
+        "@com_google_absl//absl/strings:str_format",
         "@com_google_absl//absl/synchronization",
         "@com_google_absl//absl/time",
+        "@com_google_absl//absl/types:optional",
+        "@com_google_absl//absl/types:span",
+        "@com_google_absl//absl/types:variant",
     ],
 )
 
@@ -550,23 +623,6 @@
     ],
 )
 
-cc_library(
-    name = "protobuf",
-    copts = COPTS,
-    linkopts = LINK_OPTS,
-    strip_include_prefix = "/src",
-    visibility = [
-        "//:__pkg__",
-        "//pkg:__pkg__",
-        "//rust:__subpackages__",
-        "//src/google/protobuf:__subpackages__",
-    ],
-    deps = [
-        ":protobuf_nowkt",
-        ":wkt_cc_proto",
-    ],
-)
-
 # This provides just the header files for use in projects that need to build
 # shared libraries for dynamic loading. This target is available until Bazel
 # adds native support for such use cases.
@@ -588,8 +644,8 @@
     strip_include_prefix = "/src",
     visibility = ["//:__subpackages__"],
     deps = [
-        ":port_def",
-        ":protobuf_nowkt",
+        ":port",
+        ":protobuf",
     ],
 )
 
@@ -875,11 +931,14 @@
     strip_include_prefix = "/src",
     visibility = ["//:__subpackages__"],
     deps = [
+        ":arena",
         ":cc_lite_test_protos",
-        ":port_def",
+        ":port",
         ":test_util2",
+        "//src/google/protobuf/io",
         "@com_google_absl//absl/container:flat_hash_set",
         "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
     ],
 )
@@ -915,6 +974,8 @@
         ":cc_lite_test_protos",
         ":cc_test_protos",
         ":lite_test_util",
+        ":port",
+        ":protobuf",
         "//src/google/protobuf/testing",
         "@com_google_absl//absl/container:flat_hash_map",
         "@com_google_absl//absl/log:absl_check",
@@ -941,9 +1002,13 @@
     name = "any_test",
     srcs = ["any_test.cc"],
     deps = [
+        ":any_cc_proto",
+        ":cc_test_protos",
+        ":port",
         ":protobuf",
         ":test_util",
         "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -975,10 +1040,19 @@
         ],
     }),
     deps = [
+        ":arena",
         ":cc_test_protos",
         ":lite_test_util",
+        ":port",
         ":protobuf",
+        ":protobuf_lite",
         ":test_util",
+        "//src/google/protobuf/io",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/log:absl_log",
+        "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/synchronization",
+        "@com_google_absl//absl/utility",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -988,10 +1062,13 @@
     name = "arenastring_unittest",
     srcs = ["arenastring_unittest.cc"],
     deps = [
-        ":port_def",
+        ":port",
         ":protobuf",
+        ":protobuf_lite",
         "//src/google/protobuf/io",
         "//src/google/protobuf/stubs",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -1001,6 +1078,8 @@
     name = "arenaz_sampler_test",
     srcs = ["arenaz_sampler_test.cc"],
     deps = [
+        ":arena",
+        ":port",
         ":protobuf",
         "//src/google/protobuf/stubs",
         "@com_google_googletest//:gtest",
@@ -1029,14 +1108,28 @@
         ],
     }),
     deps = [
+        ":any_cc_proto",
         ":cc_test_protos",
+        ":port",
         ":protobuf",
         ":test_textproto",
         "//src/google/protobuf/compiler:importer",
+        "//src/google/protobuf/io",
+        "//src/google/protobuf/io:tokenizer",
+        "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
+        "@com_google_absl//absl/container:btree",
+        "@com_google_absl//absl/container:flat_hash_set",
+        "@com_google_absl//absl/functional:any_invocable",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/log:die_if_null",
         "@com_google_absl//absl/log:scoped_mock_log",
+        "@com_google_absl//absl/status",
+        "@com_google_absl//absl/status:statusor",
+        "@com_google_absl//absl/strings",
         "@com_google_absl//absl/strings:str_format",
+        "@com_google_absl//absl/synchronization",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -1065,6 +1158,7 @@
     deps = [
         ":cc_test_protos",
         ":protobuf",
+        ":protobuf_lite",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -1101,13 +1195,18 @@
     }),
     deps = [
         ":cc_test_protos",
+        ":port",
         ":protobuf",
+        ":protobuf_lite",
         ":test_util",
         ":test_util2",
         "//src/google/protobuf/io",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
         "//src/google/protobuf/util:differencer",
+        "@com_google_absl//absl/base",
+        "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/strings:cord",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -1119,15 +1218,22 @@
     copts = COPTS,
     deps = [
         ":cc_test_protos",
+        ":port",
         ":protobuf",
         ":test_textproto",
         ":test_util",
         "//src/google/protobuf/compiler:importer",
+        "//src/google/protobuf/io",
+        "//src/google/protobuf/io:tokenizer",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
         "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/log:die_if_null",
+        "@com_google_absl//absl/memory",
+        "@com_google_absl//absl/status",
+        "@com_google_absl//absl/status:statusor",
+        "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -1143,11 +1249,15 @@
         ],
     }),
     deps = [
+        ":arena",
         ":cc_test_protos",
+        ":port",
         ":protobuf",
         ":test_util",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/strings:cord",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -1164,7 +1274,9 @@
     }),
     deps = [
         ":cc_test_protos",
+        ":port",
         ":protobuf_lite",
+        "@com_google_absl//absl/types:optional",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -1176,8 +1288,11 @@
     deps = [
         ":cc_test_protos",
         ":protobuf",
+        ":protobuf_lite",
         "//src/google/protobuf/io",
         "//src/google/protobuf/stubs",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -1207,9 +1322,13 @@
     deps = [
         ":cc_lite_test_protos",
         ":lite_test_util",
+        ":port",
         ":protobuf",
+        ":protobuf_lite",
         "//src/google/protobuf/io",
         "//src/google/protobuf/stubs",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -1219,12 +1338,19 @@
     name = "map_field_test",
     srcs = ["map_field_test.cc"],
     deps = [
+        ":arena",
         ":cc_test_protos",
+        ":lite_test_util",
+        ":port",
         ":protobuf",
+        ":protobuf_lite",
         ":test_util",
         "//src/google/protobuf/stubs",
         "@com_google_absl//absl/container:flat_hash_map",
+        "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/strings:str_format",
+        "@com_google_absl//absl/synchronization",
+        "@com_google_absl//absl/types:optional",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -1247,13 +1373,26 @@
     deps = [
         ":cc_test_protos",
         ":internal_visibility_for_testing",
+        ":lite_test_util",
+        ":port",
         ":protobuf",
+        ":protobuf_lite",
         ":test_util",
         ":test_util2",
+        "//src/google/protobuf/io",
+        "//src/google/protobuf/io:tokenizer",
+        "//src/google/protobuf/testing",
         "//src/google/protobuf/util:differencer",
         "//src/google/protobuf/util:time_util",
+        "@com_google_absl//absl/base",
+        "@com_google_absl//absl/cleanup",
+        "@com_google_absl//absl/container:btree",
         "@com_google_absl//absl/container:flat_hash_map",
         "@com_google_absl//absl/container:flat_hash_set",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/log:absl_log",
+        "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/time",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -1267,14 +1406,22 @@
     ],
     data = [":testdata"],
     deps = [
+        ":arena",
         ":cc_test_protos",
+        ":port",
         ":protobuf",
+        ":protobuf_lite",
         ":test_util",
+        ":test_util2",
         "//src/google/protobuf/io",
+        "//src/google/protobuf/io:io_win32",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
         "//src/google/protobuf/util:differencer",
+        "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/log:scoped_mock_log",
+        "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/strings:cord",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -1306,6 +1453,7 @@
     name = "proto3_arena_lite_unittest",
     srcs = ["proto3_arena_lite_unittest.cc"],
     deps = [
+        ":arena",
         ":cc_test_protos",
         ":protobuf",
         "//src/google/protobuf/testing",
@@ -1324,11 +1472,14 @@
         ],
     }),
     deps = [
+        ":arena",
         ":cc_test_protos",
+        ":port",
         ":protobuf",
         ":test_util",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
+        "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -1347,6 +1498,7 @@
         ],
     }),
     deps = [
+        ":arena",
         ":cc_test_protos",
         ":lite_test_util",
         ":protobuf",
@@ -1371,6 +1523,7 @@
         ":test_util",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
+        "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -1390,9 +1543,12 @@
     }),
     deps = [
         ":cc_test_protos",
+        ":port",
         ":protobuf",
         ":test_util",
         "//src/google/protobuf/stubs",
+        "@com_google_absl//absl/base",
+        "@com_google_absl//absl/strings:cord",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -1411,12 +1567,17 @@
         ":cc_test_protos",
         ":internal_visibility_for_testing",
         ":lite_test_util",
+        ":port",
         ":protobuf",
         ":protobuf_lite",
         "//src/google/protobuf/io",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/numeric:bits",
         "@com_google_absl//absl/random",
+        "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/strings:cord",
         "@com_google_absl//absl/types:span",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
@@ -1434,14 +1595,23 @@
     }),
     data = [":testdata"],
     deps = [
+        ":any_cc_proto",
         ":cc_test_protos",
+        ":port",
         ":protobuf",
         ":test_util",
+        ":test_util2",
         "//src/google/protobuf/io",
+        "//src/google/protobuf/io:tokenizer",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
+        "//third_party/utf8_range:utf8_validity",
+        "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/log:die_if_null",
         "@com_google_absl//absl/log:scoped_mock_log",
+        "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/strings:cord",
+        "@com_google_absl//absl/strings:str_format",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -1458,13 +1628,17 @@
     }),
     deps = [
         ":cc_lite_test_protos",
+        ":cc_test_protos",
         ":protobuf",
         ":test_util",
         "//src/google/protobuf/io",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
+        "@com_google_absl//absl/container:flat_hash_set",
         "@com_google_absl//absl/functional:bind_front",
+        "@com_google_absl//absl/strings:cord",
         "@com_google_absl//absl/synchronization",
+        "@com_google_absl//absl/time",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -1497,14 +1671,20 @@
     ],
     deps = [
         ":cc_test_protos",
+        ":port",
         ":protobuf",
+        ":protobuf_lite",
         ":test_util",
         ":test_util2",
         "//src/google/protobuf/io",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
         "//src/google/protobuf/util:differencer",
+        "@com_google_absl//absl/base",
+        "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/log:scoped_mock_log",
+        "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/strings:cord",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -1514,10 +1694,13 @@
     name = "generated_enum_util_test",
     srcs = ["generated_enum_util_test.cc"],
     deps = [
+        ":port",
         ":protobuf",
+        ":protobuf_lite",
         "@com_google_absl//absl/container:btree",
         "@com_google_absl//absl/strings:str_format",
         "@com_google_absl//absl/types:span",
+        "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
 )
@@ -1530,7 +1713,11 @@
         ":protobuf",
         "//src/google/protobuf/compiler:importer",
         "//src/google/protobuf/compiler:retention",
+        "//src/google/protobuf/io",
+        "//src/google/protobuf/io:tokenizer",
         "//src/google/protobuf/util:differencer",
+        "@com_google_absl//absl/strings",
+        "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
 )
@@ -1539,7 +1726,7 @@
     name = "reflection_mode_test",
     srcs = ["reflection_mode_test.cc"],
     deps = [
-        ":protobuf_nowkt",
+        ":protobuf",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -1566,6 +1753,7 @@
     visibility = ["//visibility:public"],
     deps = [
         ":protobuf",
+        ":protobuf_lite",
     ],
 )
 
@@ -1577,6 +1765,7 @@
         ":cc_test_protos",
         ":protobuf",
         ":unredacted_debug_format_for_test",
+        "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
 )
diff --git a/src/google/protobuf/compiler/BUILD.bazel b/src/google/protobuf/compiler/BUILD.bazel
index 13a340e..519bfc4 100644
--- a/src/google/protobuf/compiler/BUILD.bazel
+++ b/src/google/protobuf/compiler/BUILD.bazel
@@ -45,10 +45,20 @@
     strip_include_prefix = "/src",
     visibility = ["//visibility:public"],
     deps = [
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
+        "//src/google/protobuf:port",
+        "//src/google/protobuf:protobuf_lite",
+        "//src/google/protobuf/io",
+        "//src/google/protobuf/io:io_win32",
+        "//src/google/protobuf/io:tokenizer",
+        "@com_google_absl//absl/base",
+        "@com_google_absl//absl/container:flat_hash_map",
+        "@com_google_absl//absl/container:flat_hash_set",
         "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/strings:cord",
+        "@com_google_absl//absl/strings:str_format",
     ],
 )
 
@@ -69,13 +79,18 @@
     strip_include_prefix = "/src",
     visibility = ["//visibility:public"],
     deps = [
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
+        "//src/google/protobuf:port",
+        "//src/google/protobuf:protobuf_lite",
         "//src/google/protobuf/compiler:retention",
+        "//src/google/protobuf/io",
         "//src/google/protobuf/io:io_win32",
         "@com_google_absl//absl/container:flat_hash_map",
         "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/memory",
+        "@com_google_absl//absl/status",
+        "@com_google_absl//absl/status:statusor",
         "@com_google_absl//absl/strings",
     ],
 )
@@ -95,7 +110,7 @@
     ],
     deps = [
         ":code_generator",
-        "//src/google/protobuf:port_def",
+        "//src/google/protobuf:port",
         "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/strings",
     ],
@@ -133,13 +148,22 @@
         ":code_generator",
         ":importer",
         ":retention",
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/compiler/allowlists",
+        "//src/google/protobuf/io",
+        "//src/google/protobuf/io:io_win32",
+        "//src/google/protobuf/io:printer",
+        "//src/google/protobuf/stubs",
         "@com_google_absl//absl/algorithm",
         "@com_google_absl//absl/algorithm:container",
         "@com_google_absl//absl/container:btree",
+        "@com_google_absl//absl/container:flat_hash_map",
+        "@com_google_absl//absl/container:flat_hash_set",
         "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/log:absl_log",
+        "@com_google_absl//absl/status",
+        "@com_google_absl//absl/status:statusor",
         "@com_google_absl//absl/strings",
         "@com_google_absl//absl/strings:str_format",
         "@com_google_absl//absl/types:span",
@@ -161,7 +185,8 @@
         ":code_generator",
         ":command_line_interface",
         ":importer",
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/compiler/cpp",
         "//src/google/protobuf/compiler/csharp",
         "//src/google/protobuf/compiler/java",
@@ -186,7 +211,7 @@
     ],
     deps = [
         ":command_line_interface",
-        "//src/google/protobuf:port_def",
+        "//src/google/protobuf:port",
         "@com_google_absl//absl/log:initialize",
     ],
 )
@@ -226,8 +251,14 @@
         ":code_generator",
         ":command_line_interface",
         "//:protobuf",
+        "//src/google/protobuf",
         "//src/google/protobuf/io",
+        "//src/google/protobuf/io:printer",
         "//src/google/protobuf/testing",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/types:optional",
+        "@com_google_googletest//:gtest",
     ],
 )
 
@@ -277,12 +308,18 @@
     visibility = ["//pkg:__pkg__"],
     deps = [
         ":code_generator",
+        "//src/google/protobuf",
         "//src/google/protobuf:cc_test_protos",
         "//src/google/protobuf:descriptor_visitor",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/io",
+        "//src/google/protobuf/io:printer",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/strings",
+        "@com_google_googletest//:gtest",
     ],
 )
 
@@ -303,6 +340,7 @@
     srcs = ["fake_plugin.cc"],
     deps = [
         ":plugin_cc_proto",
+        "//src/google/protobuf/io:io_win32",
         "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/strings",
     ],
@@ -315,10 +353,15 @@
     deps = [
         ":code_generator",
         ":importer",
+        "//src/google/protobuf",
         "//src/google/protobuf:cc_test_protos",
+        "//src/google/protobuf:port",
         "//src/google/protobuf:test_textproto",
         "//src/google/protobuf/io",
+        "//src/google/protobuf/io:tokenizer",
         "//src/google/protobuf/testing",
+        "@com_google_absl//absl/log:absl_log",
+        "@com_google_absl//absl/status",
         "@com_google_absl//absl/strings",
         "@com_google_absl//absl/strings:str_format",
         "@com_google_googletest//:gtest",
@@ -358,13 +401,20 @@
         ":mock_code_generator",
         ":test_plugin_paths",
         "//:protobuf",
+        "//src/google/protobuf",
+        "//src/google/protobuf:any_cc_proto",
         "//src/google/protobuf:cc_test_protos",
+        "//src/google/protobuf:port",
         "//src/google/protobuf:test_textproto",
         "//src/google/protobuf:test_util2",
         "//src/google/protobuf/compiler/cpp:names",
         "//src/google/protobuf/io",
+        "//src/google/protobuf/io:io_win32",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/strings:str_format",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -384,9 +434,13 @@
     deps = [
         ":code_generator",
         ":command_line_interface",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/io",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/status",
+        "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
     ],
 )
@@ -398,9 +452,14 @@
     deps = [
         ":importer",
         "//:protobuf",
+        "//src/google/protobuf",
         "//src/google/protobuf/io",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
+        "@com_google_absl//absl/container:flat_hash_map",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/status",
+        "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -419,12 +478,19 @@
     deps = [
         ":importer",
         "//:protobuf",
+        "//src/google/protobuf",
+        "//src/google/protobuf:any_cc_proto",
         "//src/google/protobuf:cc_test_protos",
+        "//src/google/protobuf:port",
         "//src/google/protobuf:test_util2",
         "//src/google/protobuf/compiler:retention",
         "//src/google/protobuf/io",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
+        "@com_google_absl//absl/container:flat_hash_map",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/memory",
+        "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -437,8 +503,10 @@
     strip_include_prefix = "/src",
     visibility = ["//src/google/protobuf:__subpackages__"],
     deps = [
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
+        "//src/google/protobuf:port",
         "@com_google_absl//absl/container:flat_hash_set",
+        "@com_google_absl//absl/strings",
         "@com_google_absl//absl/types:span",
     ],
 )
@@ -449,8 +517,12 @@
     deps = [
         ":importer",
         ":retention",
+        "//src/google/protobuf",
         "//src/google/protobuf/io",
+        "//src/google/protobuf/io:tokenizer",
+        "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/log:die_if_null",
+        "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
diff --git a/src/google/protobuf/compiler/cpp/BUILD.bazel b/src/google/protobuf/compiler/cpp/BUILD.bazel
index fb168b0..820ec7c 100644
--- a/src/google/protobuf/compiler/cpp/BUILD.bazel
+++ b/src/google/protobuf/compiler/cpp/BUILD.bazel
@@ -15,7 +15,7 @@
     visibility = ["//visibility:public"],
     deps = [
         ":names_internal",
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
         "//src/google/protobuf/compiler:code_generator",
         "@com_google_absl//absl/strings",
     ],
@@ -38,9 +38,19 @@
         "//src/google/protobuf/compiler/rust:__subpackages__",
     ],
     deps = [
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
+        "//src/google/protobuf:port",
+        "//src/google/protobuf:protobuf_lite",
         "//src/google/protobuf/compiler:code_generator",
+        "//src/google/protobuf/io:printer",
+        "//src/google/protobuf/io:tokenizer",
+        "@com_google_absl//absl/container:flat_hash_map",
+        "@com_google_absl//absl/container:flat_hash_set",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/synchronization",
+        "@com_google_absl//absl/types:optional",
     ],
 )
 
@@ -88,16 +98,28 @@
     deps = [
         ":names",
         ":names_internal",
+        "//src/google/protobuf",
+        "//src/google/protobuf:port",
+        "//src/google/protobuf:protobuf_lite",
         "//src/google/protobuf/compiler:code_generator",
         "//src/google/protobuf/compiler:retention",
         "//src/google/protobuf/compiler:versions",
+        "//src/google/protobuf/io",
+        "//src/google/protobuf/io:printer",
         "@com_google_absl//absl/base:core_headers",
         "@com_google_absl//absl/container:btree",
         "@com_google_absl//absl/container:flat_hash_map",
         "@com_google_absl//absl/container:flat_hash_set",
         "@com_google_absl//absl/container:layout",
+        "@com_google_absl//absl/functional:any_invocable",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/log:absl_log",
+        "@com_google_absl//absl/memory",
+        "@com_google_absl//absl/status",
         "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/strings:str_format",
         "@com_google_absl//absl/synchronization",
+        "@com_google_absl//absl/types:optional",
     ],
 )
 
@@ -176,12 +198,17 @@
     ],
     deps = [
         ":cpp",
+        ":names_internal",
         "//:protobuf",
+        "//src/google/protobuf",
         "//src/google/protobuf:test_util2",
         "//src/google/protobuf/compiler:importer",
         "//src/google/protobuf/io",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
+        "@com_google_absl//absl/container:flat_hash_map",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -193,8 +220,11 @@
     deps = [
         ":cpp",
         "//:protobuf",
+        "//src/google/protobuf",
         "//src/google/protobuf:cc_test_protos",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/testing",
+        "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -206,6 +236,7 @@
     deps = [
         ":cpp",
         "//:protobuf",
+        "//src/google/protobuf",
         "//src/google/protobuf/compiler:command_line_interface_tester",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
@@ -217,7 +248,10 @@
     srcs = ["message_size_unittest.cc"],
     deps = [
         "//:protobuf",
+        "//src/google/protobuf",
         "//src/google/protobuf:cc_test_protos",
+        "//src/google/protobuf:port",
+        "@com_google_absl//absl/log:absl_check",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -228,8 +262,13 @@
     srcs = ["metadata_test.cc"],
     deps = [
         ":cpp",
+        ":names_internal",
         "//:protobuf",
+        "//src/google/protobuf",
         "//src/google/protobuf/compiler:annotation_test_util",
+        "//src/google/protobuf/compiler:command_line_interface",
+        "//src/google/protobuf/testing",
+        "@com_google_absl//absl/log:absl_check",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -285,7 +324,9 @@
         "//:protobuf",
         "//src/google/protobuf/compiler:command_line_interface",
         "//src/google/protobuf/io",
+        "//src/google/protobuf/io:printer",
         "//src/google/protobuf/testing",
+        "@com_google_absl//absl/log:absl_check",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
diff --git a/src/google/protobuf/compiler/csharp/BUILD.bazel b/src/google/protobuf/compiler/csharp/BUILD.bazel
index a182bc2..0994bd7 100644
--- a/src/google/protobuf/compiler/csharp/BUILD.bazel
+++ b/src/google/protobuf/compiler/csharp/BUILD.bazel
@@ -14,7 +14,8 @@
     strip_include_prefix = "/src",
     visibility = ["//visibility:public"],
     deps = [
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
+        "//src/google/protobuf:port",
         "@com_google_absl//absl/strings",
     ],
 )
@@ -69,10 +70,17 @@
     ],
     deps = [
         ":names",
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
+        "//src/google/protobuf:port",
+        "//src/google/protobuf:protobuf_lite",
         "//src/google/protobuf/compiler:code_generator",
         "//src/google/protobuf/compiler:retention",
+        "//src/google/protobuf/io",
+        "//src/google/protobuf/io:printer",
+        "//src/google/protobuf/stubs:lite",
+        "@com_google_absl//absl/container:flat_hash_map",
         "@com_google_absl//absl/container:flat_hash_set",
+        "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/strings",
     ],
 )
@@ -91,10 +99,13 @@
     deps = [
         ":csharp",
         "//:protobuf",
+        "//src/google/protobuf",
         "//src/google/protobuf/compiler:importer",
         "//src/google/protobuf/io",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
+        "@com_google_absl//absl/container:flat_hash_map",
+        "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -106,8 +117,11 @@
     deps = [
         ":csharp",
         "//:protobuf",
+        "//src/google/protobuf",
+        "//src/google/protobuf:any_cc_proto",
         "//src/google/protobuf/compiler:command_line_interface",
         "//src/google/protobuf/io",
+        "//src/google/protobuf/io:printer",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
diff --git a/src/google/protobuf/compiler/java/BUILD.bazel b/src/google/protobuf/compiler/java/BUILD.bazel
index bac4587..c25b0c4 100644
--- a/src/google/protobuf/compiler/java/BUILD.bazel
+++ b/src/google/protobuf/compiler/java/BUILD.bazel
@@ -14,7 +14,7 @@
     visibility = ["//visibility:public"],
     deps = [
         ":names_internal",
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
     ],
 )
 
@@ -37,10 +37,18 @@
     visibility = ["//pkg:__pkg__"],
     deps = [
         ":java_features_bootstrap",
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/compiler:code_generator",
         "//src/google/protobuf/compiler:versions",
+        "//src/google/protobuf/io:printer",
+        "//src/google/protobuf/io:tokenizer",
+        "@com_google_absl//absl/container:flat_hash_map",
         "@com_google_absl//absl/container:flat_hash_set",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/log:absl_log",
+        "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/strings:str_format",
     ],
 )
 
@@ -50,8 +58,11 @@
     hdrs = ["java_features.pb.h"],
     strip_include_prefix = "/src",
     deps = [
+        "//src/google/protobuf",
         "//src/google/protobuf:arena",
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf:port",
+        "//src/google/protobuf:protobuf_lite",
+        "//src/google/protobuf/io",
     ],
 )
 
@@ -128,14 +139,22 @@
         ":java_features_bootstrap",
         ":names",
         ":names_internal",
+        "//src/google/protobuf",
         "//src/google/protobuf:arena",
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf:port",
+        "//src/google/protobuf:protobuf_lite",
         "//src/google/protobuf/compiler:code_generator",
         "//src/google/protobuf/compiler:retention",
         "//src/google/protobuf/compiler:versions",
+        "//src/google/protobuf/io",
+        "//src/google/protobuf/io:printer",
         "@com_google_absl//absl/container:btree",
+        "@com_google_absl//absl/container:flat_hash_map",
         "@com_google_absl//absl/container:flat_hash_set",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/strings:str_format",
     ],
 )
 
@@ -162,8 +181,10 @@
         "//:protobuf",
         "//src/google/protobuf/compiler:command_line_interface",
         "//src/google/protobuf/io",
+        "//src/google/protobuf/io:printer",
         "//src/google/protobuf/stubs:lite",
         "//src/google/protobuf/testing",
+        "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
diff --git a/src/google/protobuf/compiler/objectivec/BUILD.bazel b/src/google/protobuf/compiler/objectivec/BUILD.bazel
index b60a59d..ea99c73 100644
--- a/src/google/protobuf/compiler/objectivec/BUILD.bazel
+++ b/src/google/protobuf/compiler/objectivec/BUILD.bazel
@@ -31,10 +31,13 @@
     visibility = ["//pkg:__pkg__"],
     deps = [
         ":line_consumer",
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/compiler:code_generator",
+        "@com_google_absl//absl/container:flat_hash_map",
         "@com_google_absl//absl/container:flat_hash_set",
         "@com_google_absl//absl/log:absl_log",
+        "@com_google_absl//absl/strings",
     ],
 )
 
@@ -46,8 +49,11 @@
     strip_include_prefix = "/src",
     visibility = ["//pkg:__pkg__"],
     deps = [
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/compiler:code_generator",
+        "//src/google/protobuf/io",
+        "@com_google_absl//absl/strings",
     ],
 )
 
@@ -95,9 +101,19 @@
     deps = [
         ":line_consumer",
         ":names",
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/compiler:code_generator",
+        "//src/google/protobuf/io",
+        "//src/google/protobuf/io:printer",
+        "//src/google/protobuf/io:tokenizer",
+        "//src/google/protobuf/stubs",
         "@com_google_absl//absl/container:btree",
+        "@com_google_absl//absl/container:flat_hash_map",
+        "@com_google_absl//absl/container:flat_hash_set",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/log:absl_log",
+        "@com_google_absl//absl/memory",
         "@com_google_absl//absl/strings",
     ],
 )
@@ -108,6 +124,8 @@
     deps = [
         ":line_consumer",
         "//src/google/protobuf/io",
+        "//src/google/protobuf/stubs",
+        "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -129,6 +147,7 @@
     srcs = ["text_format_decode_data_unittest.cc"],
     deps = [
         ":objectivec",
+        "//src/google/protobuf:port",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
diff --git a/src/google/protobuf/compiler/php/BUILD.bazel b/src/google/protobuf/compiler/php/BUILD.bazel
index 5bddf38..367da11 100644
--- a/src/google/protobuf/compiler/php/BUILD.bazel
+++ b/src/google/protobuf/compiler/php/BUILD.bazel
@@ -14,7 +14,8 @@
     strip_include_prefix = "/src",
     visibility = ["//visibility:public"],
     deps = [
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/compiler:code_generator",
         "@com_google_absl//absl/strings",
     ],
@@ -32,9 +33,15 @@
     ],
     deps = [
         ":names",
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/compiler:code_generator",
         "//src/google/protobuf/compiler:retention",
+        "//src/google/protobuf/io",
+        "//src/google/protobuf/io:printer",
+        "@com_google_absl//absl/container:flat_hash_map",
+        "@com_google_absl//absl/container:flat_hash_set",
+        "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/strings",
     ],
 )
diff --git a/src/google/protobuf/compiler/python/BUILD.bazel b/src/google/protobuf/compiler/python/BUILD.bazel
index 5fe9604..6db988f 100644
--- a/src/google/protobuf/compiler/python/BUILD.bazel
+++ b/src/google/protobuf/compiler/python/BUILD.bazel
@@ -26,11 +26,21 @@
         "@com_github_grpc_grpc//tools/distrib/python/grpcio_tools:__subpackages__",
     ],
     deps = [
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/compiler:code_generator",
         "//src/google/protobuf/compiler:retention",
         "//src/google/protobuf/compiler:versions",
+        "//src/google/protobuf/io",
+        "//src/google/protobuf/io:printer",
+        "//src/google/protobuf/io:tokenizer",
+        "@com_google_absl//absl/container:flat_hash_map",
+        "@com_google_absl//absl/container:flat_hash_set",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/log:absl_log",
+        "@com_google_absl//absl/memory",
         "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/strings:str_format",
         "@com_google_absl//absl/synchronization",
     ],
 )
@@ -43,7 +53,9 @@
         ":python",
         "//src/google/protobuf/compiler:command_line_interface",
         "//src/google/protobuf/io",
+        "//src/google/protobuf/io:printer",
         "//src/google/protobuf/testing",
+        "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
diff --git a/src/google/protobuf/compiler/ruby/BUILD.bazel b/src/google/protobuf/compiler/ruby/BUILD.bazel
index 9e92154..4792171 100644
--- a/src/google/protobuf/compiler/ruby/BUILD.bazel
+++ b/src/google/protobuf/compiler/ruby/BUILD.bazel
@@ -17,9 +17,15 @@
         "//src/google/protobuf/compiler:__pkg__",
     ],
     deps = [
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/compiler:code_generator",
         "//src/google/protobuf/compiler:retention",
+        "//src/google/protobuf/io",
+        "//src/google/protobuf/io:printer",
+        "@com_google_absl//absl/container:flat_hash_set",
+        "@com_google_absl//absl/log:absl_log",
+        "@com_google_absl//absl/strings",
     ],
 )
 
@@ -44,6 +50,7 @@
         ":ruby",
         "//src/google/protobuf/compiler:command_line_interface",
         "//src/google/protobuf/io",
+        "//src/google/protobuf/io:printer",
         "//src/google/protobuf/testing",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
diff --git a/src/google/protobuf/compiler/rust/BUILD.bazel b/src/google/protobuf/compiler/rust/BUILD.bazel
index 3dd9b24..6682c2e 100644
--- a/src/google/protobuf/compiler/rust/BUILD.bazel
+++ b/src/google/protobuf/compiler/rust/BUILD.bazel
@@ -21,12 +21,21 @@
         ":message",
         ":naming",
         ":relative_path",
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/compiler:code_generator",
         "//src/google/protobuf/compiler/cpp:names",
+        "//src/google/protobuf/io",
+        "//src/google/protobuf/io:printer",
         "@com_google_absl//absl/algorithm:container",
+        "@com_google_absl//absl/container:btree",
+        "@com_google_absl//absl/container:flat_hash_set",
         "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/memory",
+        "@com_google_absl//absl/status:statusor",
+        "@com_google_absl//absl/strings",
         "@com_google_absl//absl/types:optional",
+        "@com_google_absl//absl/types:span",
     ],
 )
 
@@ -42,11 +51,14 @@
         ":enum",
         ":naming",
         ":oneof",
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
         "//src/google/protobuf/compiler/cpp:names",
+        "//src/google/protobuf/compiler/cpp:names_internal",
         "//upb_generator:mangle",
         "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/log:absl_log",
+        "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/strings:str_format",
     ],
 )
 
@@ -71,10 +83,13 @@
         ":context",
         ":helpers",
         ":naming",
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
         "//src/google/protobuf/compiler/cpp:names_internal",
+        "//src/google/protobuf/io:tokenizer",
         "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/strings:str_format",
     ],
 )
 
@@ -85,6 +100,7 @@
     copts = COPTS,
     strip_include_prefix = "/src",
     deps = [
+        "//src/google/protobuf",
         "//src/google/protobuf/compiler:code_generator",
         "//src/google/protobuf/io:printer",
         "@com_google_absl//absl/algorithm:container",
@@ -104,12 +120,13 @@
     strip_include_prefix = "/src",
     deps = [
         ":context",
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
         "//src/google/protobuf/compiler/cpp:names_internal",
         "@com_google_absl//absl/container:flat_hash_map",
         "@com_google_absl//absl/container:flat_hash_set",
         "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/types:span",
     ],
 )
 
@@ -132,7 +149,8 @@
     strip_include_prefix = "/src",
     deps = [
         ":context",
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
+        "//src/google/protobuf/compiler:code_generator",
         "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/strings",
     ],
@@ -147,8 +165,10 @@
     deps = [
         ":context",
         ":naming",
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
         "//src/google/protobuf/compiler/cpp:names",
+        "//src/google/protobuf/compiler/cpp:names_internal",
+        "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/strings",
     ],
 )
@@ -182,8 +202,11 @@
     strip_include_prefix = "/src",
     deps = [
         ":context",
-        "//src/google/protobuf:protobuf_nowkt",
+        "//src/google/protobuf",
+        "//src/google/protobuf/io:tokenizer",
         "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/strings:str_format",
     ],
 )
diff --git a/src/google/protobuf/editions/BUILD b/src/google/protobuf/editions/BUILD
index 76d1a0e..b118767 100644
--- a/src/google/protobuf/editions/BUILD
+++ b/src/google/protobuf/editions/BUILD
@@ -75,6 +75,7 @@
     deps = [
         ":defaults_test_embedded",
         "//src/google/protobuf",
+        "//src/google/protobuf:port",
         "//src/google/protobuf:unittest_features_cc_proto",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
diff --git a/src/google/protobuf/io/BUILD.bazel b/src/google/protobuf/io/BUILD.bazel
index a5c44e2..c3c7b89 100644
--- a/src/google/protobuf/io/BUILD.bazel
+++ b/src/google/protobuf/io/BUILD.bazel
@@ -27,10 +27,17 @@
     deps = [
         ":io_win32",
         "//src/google/protobuf:arena",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/stubs:lite",
+        "@com_google_absl//absl/base",
+        "@com_google_absl//absl/base:core_headers",
         "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/log:absl_log",
+        "@com_google_absl//absl/numeric:bits",
+        "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/strings:cord",
         "@com_google_absl//absl/strings:internal",
+        "@com_google_absl//absl/types:span",
     ],
 )
 
@@ -69,6 +76,7 @@
     strip_include_prefix = "/src",
     deps = [
         ":io",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/stubs",
     ],
 )
@@ -80,6 +88,8 @@
     deps = [
         ":zero_copy_sink",
         "//src/google/protobuf/stubs",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -93,6 +103,7 @@
     strip_include_prefix = "/src",
     deps = [
         ":zero_copy_sink",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/stubs",
         "@com_google_absl//absl/base:core_headers",
         "@com_google_absl//absl/cleanup",
@@ -100,6 +111,7 @@
         "@com_google_absl//absl/functional:function_ref",
         "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/log:absl_log",
+        "@com_google_absl//absl/meta:type_traits",
         "@com_google_absl//absl/strings",
         "@com_google_absl//absl/strings:str_format",
         "@com_google_absl//absl/types:optional",
@@ -122,7 +134,9 @@
     strip_include_prefix = "/src",
     deps = [
         ":io",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/stubs",
+        "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/strings",
         "@com_google_absl//absl/strings:str_format",
@@ -137,6 +151,7 @@
     strip_include_prefix = "/src",
     deps = [
         ":io",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/stubs",
         "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/log:absl_log",
@@ -154,7 +169,9 @@
     strip_include_prefix = "/src",
     visibility = [
         "//pkg:__pkg__",
+        "//src/google/protobuf:__pkg__",
         "//src/google/protobuf/compiler:__pkg__",
+        "//src/google/protobuf/testing:__pkg__",
     ],
     deps = [
         "//src/google/protobuf:arena",
@@ -178,13 +195,26 @@
     deps = [
         ":gzip_stream",
         ":io",
+        ":io_win32",
+        ":printer",
+        ":tokenizer",
         "//:protobuf",
+        "//src/google/protobuf",
+        "//src/google/protobuf:port",
         "//src/google/protobuf:test_util2",
+        "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
+        "@com_google_absl//absl/base",
+        "@com_google_absl//absl/base:log_severity",
         "@com_google_absl//absl/container:flat_hash_map",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/log:scoped_mock_log",
+        "@com_google_absl//absl/status",
         "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/strings:cord",
         "@com_google_absl//absl/strings:str_format",
+        "@com_google_absl//absl/types:optional",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
diff --git a/src/google/protobuf/io/gzip_stream.h b/src/google/protobuf/io/gzip_stream.h
index 11efc4a..1644949 100644
--- a/src/google/protobuf/io/gzip_stream.h
+++ b/src/google/protobuf/io/gzip_stream.h
@@ -23,7 +23,7 @@
 #include "google/protobuf/stubs/common.h"
 #include "google/protobuf/io/zero_copy_stream.h"
 #include "google/protobuf/port.h"
-#include "zlib.h"
+#include <zlib.h>
 
 // Must be included last.
 #include "google/protobuf/port_def.inc"
diff --git a/src/google/protobuf/json/BUILD.bazel b/src/google/protobuf/json/BUILD.bazel
index ccc369b..8f1fc61 100644
--- a/src/google/protobuf/json/BUILD.bazel
+++ b/src/google/protobuf/json/BUILD.bazel
@@ -1,10 +1,12 @@
 load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test")
 load("//build_defs:cpp_opts.bzl", "COPTS")
 
-package(default_visibility = [
-    "//pkg:__pkg__",
-    "//src/google/protobuf/json:__pkg__",
-])
+package(
+    default_visibility = [
+        "//pkg:__pkg__",
+        "//src/google/protobuf/json:__pkg__",
+    ],
+)
 
 licenses(["notice"])
 
@@ -19,9 +21,10 @@
         ":parser",
         ":unparser",
         "//src/google/protobuf",
-        "//src/google/protobuf:port_def",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/io",
         "//src/google/protobuf/io:zero_copy_sink",
+        "//src/google/protobuf/stubs",
         "//src/google/protobuf/util:type_resolver_util",
         "@com_google_absl//absl/base",
         "@com_google_absl//absl/flags:flag",
@@ -39,9 +42,15 @@
         ":json",
         "//src/google/protobuf",
         "//src/google/protobuf:cc_test_protos",
-        "//src/google/protobuf:port_def",
+        "//src/google/protobuf:duration_cc_proto",
+        "//src/google/protobuf:field_mask_cc_proto",
+        "//src/google/protobuf:port",
+        "//src/google/protobuf:struct_cc_proto",
+        "//src/google/protobuf:timestamp_cc_proto",
+        "//src/google/protobuf:wrappers_cc_proto",
         "//src/google/protobuf/io",
         "//src/google/protobuf/io:test_zero_copy_stream",
+        "//src/google/protobuf/stubs",
         "//src/google/protobuf/util:json_format_cc_proto",
         "//src/google/protobuf/util:json_format_proto3_cc_proto",
         "//src/google/protobuf/util:type_resolver_util",
@@ -61,9 +70,12 @@
     copts = COPTS,
     strip_include_prefix = "/src",
     deps = [
-        "//src/google/protobuf:port_def",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/io",
+        "//src/google/protobuf/stubs",
         "@com_google_absl//absl/algorithm:container",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/status",
         "@com_google_absl//absl/status:statusor",
         "@com_google_absl//absl/strings",
@@ -78,6 +90,7 @@
     deps = [
         ":zero_copy_buffered_stream",
         "//src/google/protobuf/io:test_zero_copy_stream",
+        "//src/google/protobuf/stubs",
         "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
@@ -92,12 +105,16 @@
     strip_include_prefix = "/src",
     deps = [
         "//src/google/protobuf",
-        "//src/google/protobuf:port_def",
+        "//src/google/protobuf:port",
         "//src/google/protobuf:protobuf_lite",
+        "//src/google/protobuf:type_cc_proto",
         "//src/google/protobuf/io",
+        "//src/google/protobuf/stubs",
         "//src/google/protobuf/util:type_resolver_util",
         "//third_party/utf8_range:utf8_validity",
         "@com_google_absl//absl/container:flat_hash_map",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/status",
         "@com_google_absl//absl/strings",
         "@com_google_absl//absl/strings:str_format",
@@ -116,9 +133,12 @@
     deps = [
         ":message_path",
         ":zero_copy_buffered_stream",
-        "//src/google/protobuf:port_def",
+        "//src/google/protobuf",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/io",
+        "//src/google/protobuf/stubs",
         "@com_google_absl//absl/algorithm:container",
+        "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/numeric:bits",
         "@com_google_absl//absl/status",
         "@com_google_absl//absl/status:statusor",
@@ -134,8 +154,10 @@
     copts = COPTS,
     deps = [
         ":lexer",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/io",
         "//src/google/protobuf/io:test_zero_copy_stream",
+        "//src/google/protobuf/stubs",
         "@com_google_absl//absl/algorithm:container",
         "@com_google_absl//absl/status",
         "@com_google_absl//absl/status:statusor",
@@ -154,11 +176,13 @@
     copts = COPTS,
     strip_include_prefix = "/src",
     deps = [
-        "//src/google/protobuf:port_def",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/io",
         "//src/google/protobuf/io:tokenizer",
         "//src/google/protobuf/io:zero_copy_sink",
+        "//src/google/protobuf/stubs:lite",
         "@com_google_absl//absl/algorithm:container",
+        "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/strings",
         "@com_google_absl//absl/strings:str_format",
     ],
@@ -173,7 +197,7 @@
         ":lexer",
         ":untyped_message",
         "//src/google/protobuf",
-        "//src/google/protobuf:port_def",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/util:type_resolver_util",
         "@com_google_absl//absl/algorithm:container",
         "@com_google_absl//absl/status",
@@ -199,9 +223,12 @@
         ":descriptor_traits",
         ":lexer",
         "//src/google/protobuf",
-        "//src/google/protobuf:port_def",
+        "//src/google/protobuf:port",
+        "//src/google/protobuf:protobuf_lite",
+        "//src/google/protobuf:type_cc_proto",
         "//src/google/protobuf/io",
         "//src/google/protobuf/io:zero_copy_sink",
+        "//src/google/protobuf/stubs",
         "//src/google/protobuf/util:type_resolver_util",
         "@com_google_absl//absl/base",
         "@com_google_absl//absl/base:core_headers",
@@ -234,8 +261,10 @@
         ":untyped_message",
         ":writer",
         "//src/google/protobuf",
-        "//src/google/protobuf:port_def",
+        "//src/google/protobuf:port",
+        "//src/google/protobuf:type_cc_proto",
         "//src/google/protobuf/io",
+        "//src/google/protobuf/stubs",
         "//src/google/protobuf/util:type_resolver_util",
         "@com_google_absl//absl/container:flat_hash_map",
         "@com_google_absl//absl/log:absl_check",
@@ -256,6 +285,7 @@
     strip_include_prefix = "/src",
     deps = [
         "//src/google/protobuf",
+        "//src/google/protobuf:port",
         "@com_google_absl//absl/cleanup",
         "@com_google_absl//absl/strings",
     ],
diff --git a/src/google/protobuf/stubs/BUILD.bazel b/src/google/protobuf/stubs/BUILD.bazel
index f89f34a..ba0aeef 100644
--- a/src/google/protobuf/stubs/BUILD.bazel
+++ b/src/google/protobuf/stubs/BUILD.bazel
@@ -25,7 +25,7 @@
     linkopts = LINK_OPTS,
     strip_include_prefix = "/src",
     deps = [
-        "//src/google/protobuf:port_def",
+        "//src/google/protobuf:port",
         "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/status",
         "@com_google_absl//absl/status:statusor",
@@ -50,7 +50,7 @@
     ],
     deps = [
         ":lite",
-        "//src/google/protobuf:port_def",
+        "//src/google/protobuf:port",
         "@com_google_absl//absl/status",
         "@com_google_absl//absl/status:statusor",
         "@com_google_absl//absl/strings",
@@ -74,6 +74,7 @@
         ":stubs",
         "//src/google/protobuf/testing",
         "@com_google_absl//absl/log:absl_log",
+        "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
diff --git a/src/google/protobuf/testing/BUILD.bazel b/src/google/protobuf/testing/BUILD.bazel
index ab3e979..b5e9ddb 100644
--- a/src/google/protobuf/testing/BUILD.bazel
+++ b/src/google/protobuf/testing/BUILD.bazel
@@ -5,7 +5,9 @@
 load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix")
 load("//build_defs:cpp_opts.bzl", "COPTS", "LINK_OPTS")
 
-package(default_visibility = ["//:__subpackages__"])
+package(
+    default_visibility = ["//:__subpackages__"],
+)
 
 cc_library(
     name = "testing",
@@ -23,7 +25,9 @@
     strip_include_prefix = "/src",
     deps = [
         "//:protobuf_lite",  # for ShutdownProtobufLibrary
+        "//src/google/protobuf:port",
         "//src/google/protobuf/io",
+        "//src/google/protobuf/io:io_win32",
         "//src/google/protobuf/stubs:lite",
         "@com_google_absl//absl/base:log_severity",
         "@com_google_absl//absl/container:flat_hash_map",
diff --git a/src/google/protobuf/util/BUILD.bazel b/src/google/protobuf/util/BUILD.bazel
index 149b86c..262128d 100644
--- a/src/google/protobuf/util/BUILD.bazel
+++ b/src/google/protobuf/util/BUILD.bazel
@@ -16,6 +16,7 @@
     visibility = ["//:__subpackages__"],
     deps = [
         "//:protobuf_lite",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/io",
     ],
 )
@@ -48,12 +49,17 @@
     visibility = ["//:__subpackages__"],
     deps = [
         "//src/google/protobuf",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/io",
+        "//src/google/protobuf/io:printer",
         "//src/google/protobuf/stubs",
+        "@com_google_absl//absl/container:fixed_array",
         "@com_google_absl//absl/container:flat_hash_map",
         "@com_google_absl//absl/container:flat_hash_set",
         "@com_google_absl//absl/log:absl_check",
         "@com_google_absl//absl/log:absl_log",
+        "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/strings:str_format",
     ],
 )
 
@@ -63,6 +69,7 @@
     deps = [
         ":differencer",
         ":message_differencer_unittest_cc_proto",
+        "//src/google/protobuf",
         "//src/google/protobuf:cc_test_protos",
         "//src/google/protobuf/testing",
         "@com_google_googletest//:gtest",
@@ -83,10 +90,16 @@
         ":differencer",
         ":message_differencer_unittest_cc_proto",
         ":message_differencer_unittest_proto3_cc_proto",
+        "//src/google/protobuf",
         "//src/google/protobuf:cc_test_protos",
+        "//src/google/protobuf:protobuf_lite",
         "//src/google/protobuf:test_util",
+        "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
         "@com_google_absl//absl/functional:bind_front",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/memory",
+        "@com_google_absl//absl/strings",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -101,10 +114,15 @@
     visibility = ["//:__subpackages__"],
     deps = [
         "//src/google/protobuf",
+        "//src/google/protobuf:field_mask_cc_proto",
+        "//src/google/protobuf:port",
         "//src/google/protobuf/stubs",
         "@com_google_absl//absl/container:btree",
+        "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/log:die_if_null",
         "@com_google_absl//absl/memory",
+        "@com_google_absl//absl/strings",
     ],
 )
 
@@ -116,6 +134,7 @@
         ":field_mask_util",
         "//src/google/protobuf",
         "//src/google/protobuf:cc_test_protos",
+        "//src/google/protobuf:field_mask_cc_proto",
         "//src/google/protobuf:test_util",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
@@ -138,11 +157,21 @@
     srcs = ["time_util.cc"],
     hdrs = ["time_util.h"],
     strip_include_prefix = "/src",
-    visibility = ["//:__subpackages__"],
+    visibility = [
+        "//:__subpackages__",
+        "@com_google_protobuf_examples//:__subpackages__",
+    ],
     deps = [
         "//src/google/protobuf",
+        "//src/google/protobuf:duration_cc_proto",
+        "//src/google/protobuf:port",
+        "//src/google/protobuf:timestamp_cc_proto",
         "//src/google/protobuf/stubs",
         "@com_google_absl//absl/log:absl_check",
+        "@com_google_absl//absl/numeric:int128",
+        "@com_google_absl//absl/strings",
+        "@com_google_absl//absl/strings:str_format",
+        "@com_google_absl//absl/time",
     ],
 )
 
@@ -152,6 +181,8 @@
     deps = [
         ":time_util",
         "//src/google/protobuf",
+        "//src/google/protobuf:duration_cc_proto",
+        "//src/google/protobuf:timestamp_cc_proto",
         "//src/google/protobuf/testing",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
@@ -170,10 +201,16 @@
     visibility = ["//:__subpackages__"],
     deps = [
         "//src/google/protobuf",
+        "//src/google/protobuf:port",
+        "//src/google/protobuf:source_context_cc_proto",
+        "//src/google/protobuf:type_cc_proto",
+        "//src/google/protobuf:wrappers_cc_proto",
         "//src/google/protobuf/io",
+        "//src/google/protobuf/io:tokenizer",
         "//src/google/protobuf/stubs",
         "@com_google_absl//absl/log:absl_log",
         "@com_google_absl//absl/status",
+        "@com_google_absl//absl/strings",
     ],
 )
 
@@ -185,8 +222,13 @@
         ":json_format_cc_proto",
         ":json_format_proto3_cc_proto",
         ":json_util",
+        ":type_resolver_util",
         "//src/google/protobuf",
+        "//src/google/protobuf:any_cc_proto",
+        "//src/google/protobuf:cc_test_protos",
         "//src/google/protobuf:test_util",
+        "//src/google/protobuf:type_cc_proto",
+        "//src/google/protobuf:wrappers_cc_proto",
         "//src/google/protobuf/testing",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
diff --git a/upb/util/BUILD b/upb/util/BUILD
index 5d0ce9f..b847260 100644
--- a/upb/util/BUILD
+++ b/upb/util/BUILD
@@ -50,6 +50,7 @@
     deps = [
         ":def_to_proto",
         "//:protobuf",
+        "//src/google/protobuf/util:differencer",
         "//upb:base",
         "//upb:descriptor_upb_proto",
         "//upb:mem",
@@ -67,6 +68,7 @@
         ":def_to_proto_test_upb_proto",
         ":def_to_proto_test_upb_proto_reflection",
         "//:protobuf",
+        "//src/google/protobuf/util:differencer",
         "//upb:descriptor_upb_proto_reflection",
         "//upb:mem",
         "//upb:reflection",