Move some of the methods to cc_helper.

PiperOrigin-RevId: 454202257
Change-Id: If501aa74630d251f5789b39b1af21423796a9e2c
diff --git a/src/main/starlark/builtins_bzl/common/cc/cc_binary.bzl b/src/main/starlark/builtins_bzl/common/cc/cc_binary.bzl
index e168006..18dc158 100644
--- a/src/main/starlark/builtins_bzl/common/cc/cc_binary.bzl
+++ b/src/main/starlark/builtins_bzl/common/cc/cc_binary.bzl
@@ -150,14 +150,6 @@
         outputs = packager["outputs"],
     )
 
-def _is_stamping_enabled(ctx):
-    if ctx.configuration.is_tool_configuration():
-        return 0
-    stamp = 0
-    if hasattr(ctx.attr, "stamp"):
-        stamp = ctx.attr.stamp
-    return stamp
-
 def _get_non_data_deps(ctx):
     return ctx.attr.srcs + ctx.attr.deps
 
@@ -528,7 +520,7 @@
         cc_toolchain = cc_toolchain,
         compilation_outputs = cc_compilation_outputs_with_only_objects,
         grep_includes = cc_helper.grep_includes_executable(ctx.attr._grep_includes),
-        stamp = _is_stamping_enabled(ctx),
+        stamp = cc_helper.is_stamping_enabled(ctx),
         additional_inputs = additional_linker_inputs,
         linking_contexts = [cc_linking_context],
         name = ctx.label.name,
@@ -730,7 +722,7 @@
     # cc_binary output, while DYNAMIC_LIBRARY is a cc_binary rules that produces an
     # output matching a shared object, for example cc_binary(name="foo.so", ...) on linux.
     cc_linking_outputs = None
-    if link_compile_output_separately and (len(cc_compilation_outputs.objects) != 0 or len(cc_compilation_outputs.pic_objects) != 0):
+    if link_compile_output_separately and not cc_helper.is_compilation_outputs_empty(cc_compilation_outputs):
         (linking_context, cc_linking_outputs) = cc_common.create_linking_context_from_compilation_outputs(
             actions = ctx.actions,
             feature_configuration = feature_configuration,
@@ -739,7 +731,7 @@
             name = ctx.label.name,
             grep_includes = cc_helper.grep_includes_executable(ctx.attr._grep_includes),
             linking_contexts = cc_helper.get_linking_contexts_from_deps([_malloc_for_target(ctx, cpp_config)]) + cc_helper.get_linking_contexts_from_deps(ctx.attr.deps),
-            stamp = _is_stamping_enabled(ctx),
+            stamp = cc_helper.is_stamping_enabled(ctx),
             alwayslink = True,
         )
 
diff --git a/src/main/starlark/builtins_bzl/common/cc/cc_helper.bzl b/src/main/starlark/builtins_bzl/common/cc/cc_helper.bzl
index 74d43a8..0935deb 100644
--- a/src/main/starlark/builtins_bzl/common/cc/cc_helper.bzl
+++ b/src/main/starlark/builtins_bzl/common/cc/cc_helper.bzl
@@ -45,6 +45,20 @@
 
 SYSROOT_FLAG = "--sysroot="
 
+def _build_linking_context_from_libraries(ctx, libraries):
+    if len(libraries) == 0:
+        return CcInfo().linking_context
+    linker_input = cc_common.create_linker_input(
+        owner = ctx.label,
+        libraries = depset(libraries),
+    )
+
+    linking_context = cc_common.create_linking_context(
+        linker_inputs = depset([linker_input]),
+    )
+
+    return linking_context
+
 def _grep_includes_executable(grep_includes):
     if grep_includes == None:
         return None
@@ -443,7 +457,7 @@
             compilation_contexts.append(dep[CcInfo].compilation_context)
     return compilation_contexts
 
-def _is_compiltion_outputs_empty(compilation_outputs):
+def _is_compilation_outputs_empty(compilation_outputs):
     return (len(compilation_outputs.pic_objects) == 0 and
             len(compilation_outputs.objects) == 0)
 
@@ -530,9 +544,6 @@
             providers.append(dep[provider])
     return providers
 
-def _is_compilation_outputs_empty(compilation_outputs):
-    return len(compilation_outputs.pic_objects) == 0 and len(compilation_outputs.objects) == 0
-
 def _get_static_mode_params_for_dynamic_library_libraries(libs):
     linker_inputs = []
     for lib in libs.to_list():
@@ -885,6 +896,22 @@
             return True
     return False
 
+def _is_stamping_enabled(ctx):
+    if ctx.configuration.is_tool_configuration():
+        return 0
+    stamp = 0
+    if hasattr(ctx.attr, "stamp"):
+        stamp = ctx.attr.stamp
+    return stamp
+
+def _is_stamping_enabled_for_aspect(ctx):
+    if ctx.configuration.is_tool_configuration():
+        return 0
+    stamp = 0
+    if hasattr(ctx.rule.attr, "stamp"):
+        stamp = ctx.rule.attr.stamp
+    return stamp
+
 cc_helper = struct(
     merge_cc_debug_contexts = _merge_cc_debug_contexts,
     is_code_coverage_enabled = _is_code_coverage_enabled,
@@ -926,4 +953,7 @@
     is_non_empty_list_or_select = _is_non_empty_list_or_select,
     grep_includes_executable = _grep_includes_executable,
     expand_make_variables_for_copts = _expand_make_variables_for_copts,
+    build_linking_context_from_libraries = _build_linking_context_from_libraries,
+    is_stamping_enabled = _is_stamping_enabled,
+    is_stamping_enabled_for_aspect = _is_stamping_enabled_for_aspect,
 )
diff --git a/src/main/starlark/builtins_bzl/common/cc/cc_library.bzl b/src/main/starlark/builtins_bzl/common/cc/cc_library.bzl
index c54fe90..5c3e430 100755
--- a/src/main/starlark/builtins_bzl/common/cc/cc_library.bzl
+++ b/src/main/starlark/builtins_bzl/common/cc/cc_library.bzl
@@ -207,7 +207,7 @@
             precompiled_libraries,
         )
 
-    precompiled_linking_context = _build_linking_context_from_library(ctx, precompiled_libraries)
+    precompiled_linking_context = cc_helper.build_linking_context_from_libraries(ctx, precompiled_libraries)
 
     contexts_to_merge = [precompiled_linking_context, empty_archive_linking_context]
     if has_compilation_outputs:
@@ -234,7 +234,7 @@
         precompiled_libraries,
     )
 
-    linking_context_for_runfiles = _build_linking_context_from_library(ctx, libraries_to_link)
+    linking_context_for_runfiles = cc_helper.build_linking_context_from_libraries(ctx, libraries_to_link)
 
     cc_native_library_info = cc_helper.collect_native_cc_libraries(
         deps = ctx.attr.deps,
@@ -485,20 +485,6 @@
 
     return None
 
-def _build_linking_context_from_library(ctx, libraries):
-    if len(libraries) == 0:
-        return CcInfo().linking_context
-    linker_input = cc_common.create_linker_input(
-        owner = ctx.label,
-        libraries = depset(libraries),
-    )
-
-    linking_context = cc_common.create_linking_context(
-        linker_inputs = depset([linker_input]),
-    )
-
-    return linking_context
-
 def _create_libraries_to_link_list(current_library, precompiled_libraries):
     libraries = []
     libraries.extend(precompiled_libraries)