Remove ODR violation from WKT codegen (#12406) (#12419)

* Remove ODR violation from WKT codegen (#12406)

Closes #12406

COPYBARA_INTEGRATE_REVIEW=https://github.com/protocolbuffers/protobuf/pull/12406 from mkruskal-google:wkt 1c6748e6aabf55da929558c56b1314c52932153b
PiperOrigin-RevId: 522418175

* Removed legacy target.

---------

Co-authored-by: Mike Kruskal <mkruskal@google.com>
diff --git a/BUILD.bazel b/BUILD.bazel
index 3f8e563..5b50753 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -322,7 +322,7 @@
         "//:descriptor_proto",
     ],
     command_line = "--cpp_out=$(OUT)",
-    runtime = ":protobuf",
+    runtime = "//src/google/protobuf:protobuf_nowkt",
     visibility = ["//visibility:public"],
 )
 
diff --git a/conformance/BUILD.bazel b/conformance/BUILD.bazel
index ac00795..3ab5666 100644
--- a/conformance/BUILD.bazel
+++ b/conformance/BUILD.bazel
@@ -138,6 +138,9 @@
     includes = ["."],
     deps = [
         ":conformance_cc_proto",
+        "//src/google/protobuf/util:differencer",
+        "//src/google/protobuf/util:json_util",
+        "//src/google/protobuf/util:type_resolver_util",
         "@com_google_absl//absl/strings",
         "@com_google_absl//absl/strings:str_format",
     ],
diff --git a/examples/BUILD.bazel b/examples/BUILD.bazel
index d5a719c..265a0b9 100644
--- a/examples/BUILD.bazel
+++ b/examples/BUILD.bazel
@@ -36,13 +36,19 @@
 cc_binary(
     name = "add_person_cpp",
     srcs = ["add_person.cc"],
-    deps = [":addressbook_cc_proto"],
+    deps = [
+        ":addressbook_cc_proto",
+        "@com_google_protobuf//:protobuf",
+    ],
 )
 
 cc_binary(
     name = "list_people_cpp",
     srcs = ["list_people.cc"],
-    deps = [":addressbook_cc_proto"],
+    deps = [
+        ":addressbook_cc_proto",
+        "@com_google_protobuf//:protobuf",
+    ],
 )
 
 # Similar to cc_proto_library but for Java.
diff --git a/pkg/BUILD.bazel b/pkg/BUILD.bazel
index 4edda57..1903a6f 100644
--- a/pkg/BUILD.bazel
+++ b/pkg/BUILD.bazel
@@ -380,7 +380,7 @@
     deps = [
         "//src/google/protobuf:arena_align",
         "//src/google/protobuf:protobuf_nowkt",
-        "//src/google/protobuf:wkt_cc_proto",
+        "//src/google/protobuf:cmake_wkt_cc_proto",
         "//src/google/protobuf/compiler:importer",
         "//src/google/protobuf/json",
         "//src/google/protobuf/util:delimited_message_util",
@@ -416,7 +416,7 @@
     testonly = 1,
     tags = ["manual"],
     deps = ["//src/google/protobuf:lite_test_util"],
-    dist_deps = [":protobuf_lite"],
+    dist_deps = [":protobuf"],
 )
 
 cc_dist_library(
diff --git a/src/google/protobuf/BUILD.bazel b/src/google/protobuf/BUILD.bazel
index d986479..aec8130 100644
--- a/src/google/protobuf/BUILD.bazel
+++ b/src/google/protobuf/BUILD.bazel
@@ -107,6 +107,18 @@
     "wrappers",
 ]
 
+proto_library(
+    name = "wkt_proto",
+    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:
@@ -121,12 +133,12 @@
         ["wkt/google/protobuf/" + wkt + ".pb.h" for wkt in WELL_KNOWN_TYPES] +
         ["wkt/google/protobuf/" + wkt + ".pb.cc" for wkt in WELL_KNOWN_TYPES],
     cmd = """
-        $(execpath //src/google/protobuf/compiler:protoc_nowkt) \
+        $(execpath //:protoc) \
             --cpp_out=dllexport_decl=PROTOBUF_EXPORT:$(RULEDIR)/wkt \
             --proto_path=$$(dirname $$(dirname $$(dirname $(location any.proto)))) \
             $(SRCS)
     """,
-    exec_tools = ["//src/google/protobuf/compiler:protoc_nowkt"],
+    exec_tools = ["//:protoc"],
     visibility = ["//visibility:private"],
 )
 
@@ -139,8 +151,11 @@
     tags = ["manual"],
 )
 
+# This is necessary for our generated cmake configs to pick up the checked in
+# WKT files.
+# TODO(b/246826624) Remove this once we generate WKT code from cmake.
 cc_library(
-    name = "wkt_cc_proto",
+    name = "cmake_wkt_cc_proto",
     srcs = ["wkt/google/protobuf/" + wkt + ".pb.cc" for wkt in WELL_KNOWN_TYPES],
     hdrs = ["wkt/google/protobuf/" + wkt + ".pb.h" for wkt in WELL_KNOWN_TYPES],
     copts = COPTS,
@@ -425,6 +440,7 @@
     include_prefix = "google/protobuf",
     linkopts = LINK_OPTS,
     visibility = [
+        "//:__pkg__",
         "//pkg:__pkg__",
         "//src/google/protobuf:__subpackages__",
     ],
@@ -784,6 +800,7 @@
     visibility = ["//:__subpackages__"],
     deps = [
         "//src/google/protobuf/io",
+        "//src/google/protobuf/util:differencer",
         "@com_google_googletest//:gtest",
     ],
 )
@@ -935,9 +952,11 @@
         ":cc_test_protos",
         ":protobuf",
         ":test_util",
+        ":test_util2",
         "//src/google/protobuf/io",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
+        "//src/google/protobuf/util:differencer",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
     ],
@@ -1057,6 +1076,9 @@
         ":cc_test_protos",
         ":protobuf",
         ":test_util",
+        ":test_util2",
+        "//src/google/protobuf/util:differencer",
+        "//src/google/protobuf/util:time_util",
         "@com_google_absl//absl/container:flat_hash_map",
         "@com_google_absl//absl/container:flat_hash_set",
         "@com_google_googletest//:gtest",
@@ -1078,6 +1100,7 @@
         "//src/google/protobuf/io",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
+        "//src/google/protobuf/util:differencer",
         "@com_google_absl//absl/log:scoped_mock_log",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
@@ -1235,6 +1258,7 @@
         "//src/google/protobuf/io",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
+        "@com_google_absl//absl/log:die_if_null",
         "@com_google_absl//absl/log:scoped_mock_log",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
@@ -1296,6 +1320,7 @@
         "//src/google/protobuf/io",
         "//src/google/protobuf/stubs",
         "//src/google/protobuf/testing",
+        "//src/google/protobuf/util:differencer",
         "@com_google_absl//absl/log:scoped_mock_log",
         "@com_google_googletest//:gtest",
         "@com_google_googletest//:gtest_main",
@@ -1308,7 +1333,9 @@
     deps = [
         ":cc_test_protos",
         ":protobuf",
+        "//src/google/protobuf/compiler:importer",
         "//src/google/protobuf/compiler:retention",
+        "//src/google/protobuf/util:differencer",
         "@com_google_googletest//:gtest_main",
     ],
 )
diff --git a/src/google/protobuf/compiler/BUILD.bazel b/src/google/protobuf/compiler/BUILD.bazel
index 1977211..e92add6 100644
--- a/src/google/protobuf/compiler/BUILD.bazel
+++ b/src/google/protobuf/compiler/BUILD.bazel
@@ -99,11 +99,15 @@
 )
 
 cc_library(
-    name = "protoc_lib_nowkt",
+    name = "protoc_lib",
     srcs = [
         "main.cc",
     ],
     copts = COPTS,
+    visibility = [
+        "//:__pkg__",
+        "//pkg:__pkg__",
+    ],
     deps = [
         ":code_generator",
         ":command_line_interface",
@@ -120,29 +124,6 @@
     ],
 )
 
-cc_binary(
-    name = "protoc_nowkt",
-    copts = COPTS,
-    linkopts = LINK_OPTS,
-    visibility = [
-        "//src/google/protobuf:__pkg__",
-    ],
-    deps = [":protoc_lib_nowkt"],
-)
-
-cc_library(
-    name = "protoc_lib",
-    copts = COPTS,
-    visibility = [
-        "//:__pkg__",
-        "//pkg:__pkg__",
-    ],
-    deps = [
-        ":protoc_lib_nowkt",
-        "//:protobuf",
-    ],
-)
-
 # Note: this is an alias for now. In the future, this rule will become the
 # cc_binary for protoc, and //:protoc will become an alias.
 alias(
diff --git a/src/google/protobuf/util/BUILD.bazel b/src/google/protobuf/util/BUILD.bazel
index 609a86a..716aeb4 100644
--- a/src/google/protobuf/util/BUILD.bazel
+++ b/src/google/protobuf/util/BUILD.bazel
@@ -213,15 +213,6 @@
     testonly = 1,
     srcs = ["json_format.proto"],
     strip_import_prefix = "/src",
-    deps = [
-        "//:any_proto",
-        "//:duration_proto",
-        "//:field_mask_proto",
-        "//:struct_proto",
-        "//:test_protos",
-        "//:timestamp_proto",
-        "//:wrappers_proto",
-    ],
 )
 
 cc_proto_library(
diff --git a/src/google/protobuf/util/json_format.proto b/src/google/protobuf/util/json_format.proto
index a2703ce..26c53dd 100644
--- a/src/google/protobuf/util/json_format.proto
+++ b/src/google/protobuf/util/json_format.proto
@@ -38,9 +38,6 @@
 
 package protobuf_unittest;
 
-import "google/protobuf/any.proto";
-import "google/protobuf/struct.proto";
-
 message TestFlagsAndStrings {
   required int32 A = 1;
   repeated group RepeatedGroup = 2 {