Re-arrange cc_test to support checking if `linkstatic` was explicitly set.
This is an alternative to having a computed default--if the user set it
explicitly, honor that always, but otherwise, we can consult a computed
default.
PiperOrigin-RevId: 440125009
diff --git a/src/main/starlark/builtins_bzl/common/cc/cc_test.bzl b/src/main/starlark/builtins_bzl/common/cc/cc_test.bzl
index 6939ad8..5af3f27 100644
--- a/src/main/starlark/builtins_bzl/common/cc/cc_test.bzl
+++ b/src/main/starlark/builtins_bzl/common/cc/cc_test.bzl
@@ -76,22 +76,36 @@
providers.extend(test_providers)
return _handle_legacy_return(ctx, cc_info, providers)
-cc_test = rule(
- implementation = _impl,
- attrs = _cc_test_attrs,
- outputs = {
- # TODO(b/198254254): Handle case for windows.
- "stripped_binary": "%{name}.stripped",
- "dwp_file": "%{name}.dwp",
- },
- fragments = ["google_cpp", "cpp"],
- exec_groups = {
- "cpp_link": exec_group(copy_from_rule = True),
- },
- toolchains = [
- "@//tools/cpp:toolchain_type",
- "@//tools/cpp:test_runner_toolchain_type",
- ],
- incompatible_use_toolchain_transition = True,
- test = True,
-)
+def make_cc_test(with_linkstatic = False):
+ _cc_test_attrs.update(
+ _linkstatic_explicitly_set = attr.bool(default = with_linkstatic),
+ )
+ return rule(
+ name = "cc_test",
+ implementation = _impl,
+ attrs = _cc_test_attrs,
+ outputs = {
+ # TODO(b/198254254): Handle case for windows.
+ "stripped_binary": "%{name}.stripped",
+ "dwp_file": "%{name}.dwp",
+ },
+ fragments = ["google_cpp", "cpp"],
+ exec_groups = {
+ "cpp_link": exec_group(copy_from_rule = True),
+ },
+ toolchains = [
+ "@//tools/cpp:toolchain_type",
+ "@//tools/cpp:test_runner_toolchain_type",
+ ],
+ incompatible_use_toolchain_transition = True,
+ test = True,
+ )
+
+cc_test_explicit_linkstatic = make_cc_test(with_linkstatic = True)
+cc_test_default_linkstatic = make_cc_test(with_linkstatic = False)
+
+def cc_test_wrapper(**kwargs):
+ if "linkstatic" in kwargs:
+ cc_test_explicit_linkstatic(**kwargs)
+ else:
+ cc_test_default_linkstatic(**kwargs)
diff --git a/src/main/starlark/builtins_bzl/common/exports.bzl b/src/main/starlark/builtins_bzl/common/exports.bzl
index 966a597..11d0a0a 100755
--- a/src/main/starlark/builtins_bzl/common/exports.bzl
+++ b/src/main/starlark/builtins_bzl/common/exports.bzl
@@ -16,7 +16,7 @@
load("@_builtins//:common/cc/cc_import.bzl", "cc_import")
load("@_builtins//:common/cc/cc_binary_wrapper.bzl", "cc_binary")
-load("@_builtins//:common/cc/cc_test.bzl", "cc_test")
+load("@_builtins//:common/cc/cc_test.bzl", cc_test = "cc_test_wrapper")
load("@_builtins//:common/cc/experimental_cc_shared_library.bzl", "cc_shared_library", "cc_shared_library_permissions")
load("@_builtins//:common/objc/objc_import.bzl", "objc_import")
load("@_builtins//:common/objc/objc_library.bzl", "objc_library")