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")