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)