Use deferred implementation for main cc_* rules.

PiperOrigin-RevId: 874950101
Change-Id: Ie45af48fc013ccd512d5d9f89a453e31652556b7
diff --git a/cc/private/rules_impl/cc_binary.bzl b/cc/private/rules_impl/cc_binary.bzl
index d5f0b71..ab8912f 100644
--- a/cc/private/rules_impl/cc_binary.bzl
+++ b/cc/private/rules_impl/cc_binary.bzl
@@ -19,15 +19,15 @@
 load("//cc/common:cc_info.bzl", "CcInfo")
 load("//cc/common:semantics.bzl", "semantics")
 load(":attrs.bzl", "cc_binary_attrs")
-load(":cc_binary_impl.bzl", "impl")
 load(":cc_shared_library.bzl", "dynamic_deps_initializer")
+load(":function_providing_rule.bzl", "proxy")
 
 def _cc_binary_initializer(**kwargs):
     kwargs = postmark.initializer(**kwargs)
     return dynamic_deps_initializer(**kwargs)
 
 cc_binary = rule(
-    implementation = impl,
+    implementation = proxy,
     initializer = _cc_binary_initializer,
     doc = """
 <p>It produces an executable binary.</p>
diff --git a/cc/private/rules_impl/cc_library.bzl b/cc/private/rules_impl/cc_library.bzl
index 2c0530a..31d426d 100755
--- a/cc/private/rules_impl/cc_library.bzl
+++ b/cc/private/rules_impl/cc_library.bzl
@@ -18,7 +18,7 @@
 load("//cc/common:cc_info.bzl", "CcInfo")
 load("//cc/common:semantics.bzl", "semantics")
 load(":attrs.bzl", "common_attrs", "linkstatic_doc")
-load(":cc_library_impl.bzl", "cc_library_impl")
+load(":function_providing_rule.bzl", "proxy")
 
 LINKER_SCRIPT = [".ld", ".lds", ".ldscript"]
 PREPROCESSED_C = [".i"]
@@ -40,7 +40,7 @@
 ]
 
 cc_library = rule(
-    implementation = cc_library_impl,
+    implementation = proxy,
     doc = """
 <p>Use <code>cc_library()</code> for C++-compiled libraries.
   The result is  either a <code>.so</code>, <code>.lo</code>,
diff --git a/cc/private/rules_impl/cc_shared_library.bzl b/cc/private/rules_impl/cc_shared_library.bzl
index 0d53754..8d4f341 100644
--- a/cc/private/rules_impl/cc_shared_library.bzl
+++ b/cc/private/rules_impl/cc_shared_library.bzl
@@ -22,7 +22,7 @@
 load("//cc/common:cc_shared_library_info.bzl", "CcSharedLibraryInfo")
 load("//cc/common:semantics.bzl", "semantics")
 load("//cc/private:graph_node_info.bzl", "GraphNodeInfo")
-load(":cc_shared_library_impl.bzl", "cc_shared_library_impl")
+load(":function_providing_rule.bzl", "proxy")
 
 # TODO(#5200): Add export_define to library_to_link and cc_library
 
@@ -96,7 +96,7 @@
     return kwargs | {"exports_filter": canonical_exports_filter}
 
 cc_shared_library = rule(
-    implementation = cc_shared_library_impl,
+    implementation = proxy,
     initializer = _cc_shared_library_initializer,
     doc = """
 <p>It produces a shared library.</p>
diff --git a/cc/private/rules_impl/cc_test.bzl b/cc/private/rules_impl/cc_test.bzl
index 375ff0f..b7de57e 100644
--- a/cc/private/rules_impl/cc_test.bzl
+++ b/cc/private/rules_impl/cc_test.bzl
@@ -20,7 +20,7 @@
 load("//cc/common:semantics.bzl", "semantics")
 load(":attrs.bzl", "cc_binary_attrs", "linkstatic_doc", "stamp_doc")
 load(":cc_shared_library.bzl", "dynamic_deps_initializer")
-load(":cc_test_impl.bzl", "impl")
+load(":function_providing_rule.bzl", "proxy")
 
 _CC_TEST_TOOLCHAIN_TYPE = "@bazel_tools//tools/cpp:test_runner_toolchain_type"
 _cc_test_attrs = dict(cc_binary_attrs)
@@ -70,7 +70,7 @@
 
 cc_test = rule(
     initializer = cc_test_initializer,
-    implementation = impl,
+    implementation = proxy,
     doc = """
 <p>
 A <code>cc_test()</code> rule compiles a test.  Here, a test