Fix cc_shared_libary to take into account linkstamps
RELNOTES:none
PiperOrigin-RevId: 430726601
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 640c332..dc7fa7c 100644
--- a/src/main/starlark/builtins_bzl/common/cc/cc_helper.bzl
+++ b/src/main/starlark/builtins_bzl/common/cc/cc_helper.bzl
@@ -452,7 +452,7 @@
parts.append(additional_input.path)
for linkstamp in linker_input.linkstamps:
- parts.append(linkstamp.file.path)
+ parts.append(linkstamp.file().path)
return "".join(parts)
diff --git a/src/main/starlark/builtins_bzl/common/cc/experimental_cc_shared_library.bzl b/src/main/starlark/builtins_bzl/common/cc/experimental_cc_shared_library.bzl
index 16baf79..f9384ac 100644
--- a/src/main/starlark/builtins_bzl/common/cc/experimental_cc_shared_library.bzl
+++ b/src/main/starlark/builtins_bzl/common/cc/experimental_cc_shared_library.bzl
@@ -479,6 +479,7 @@
linking_contexts = [linking_context],
user_link_flags = user_link_flags,
additional_inputs = additional_inputs,
+ grep_includes = ctx.executable._grep_includes,
name = ctx.label.name,
output_type = "dynamic_library",
main_output = main_output,
@@ -593,6 +594,12 @@
"user_link_flags": attr.string_list(),
"_def_parser": semantics.get_def_parser(),
"_cc_toolchain": attr.label(default = "@" + semantics.get_repo() + "//tools/cpp:current_cc_toolchain"),
+ "_grep_includes": attr.label(
+ allow_files = True,
+ executable = True,
+ cfg = "exec",
+ default = Label("@" + semantics.get_repo() + "//tools/cpp:grep-includes"),
+ ),
},
toolchains = ["@" + semantics.get_repo() + "//tools/cpp:toolchain_type"], # copybara-use-repo-external-label
fragments = ["google_cpp", "cpp"],
diff --git a/src/main/starlark/tests/builtins_bzl/cc/cc_shared_library/test_cc_shared_library/BUILD.builtin_test b/src/main/starlark/tests/builtins_bzl/cc/cc_shared_library/test_cc_shared_library/BUILD.builtin_test
index 128d5fe..cf7a84a 100644
--- a/src/main/starlark/tests/builtins_bzl/cc/cc_shared_library/test_cc_shared_library/BUILD.builtin_test
+++ b/src/main/starlark/tests/builtins_bzl/cc/cc_shared_library/test_cc_shared_library/BUILD.builtin_test
@@ -137,6 +137,7 @@
cc_library(
name = "qux",
srcs = ["qux.cc"],
+ linkstamp = "l.cc",
hdrs = ["qux.h"],
)
diff --git a/src/main/starlark/tests/builtins_bzl/cc/cc_shared_library/test_cc_shared_library/l.cc b/src/main/starlark/tests/builtins_bzl/cc/cc_shared_library/test_cc_shared_library/l.cc
new file mode 100644
index 0000000..b8d320f
--- /dev/null
+++ b/src/main/starlark/tests/builtins_bzl/cc/cc_shared_library/test_cc_shared_library/l.cc
@@ -0,0 +1,16 @@
+// Copyright 2022 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+extern const char my_linkstamp[];
+
+const char my_linkstamp[] = "0";
diff --git a/src/main/starlark/tests/builtins_bzl/cc/cc_shared_library/test_cc_shared_library/starlark_tests.bzl b/src/main/starlark/tests/builtins_bzl/cc/cc_shared_library/test_cc_shared_library/starlark_tests.bzl
index 9e09906..3b19773 100644
--- a/src/main/starlark/tests/builtins_bzl/cc/cc_shared_library/test_cc_shared_library/starlark_tests.bzl
+++ b/src/main/starlark/tests/builtins_bzl/cc/cc_shared_library/test_cc_shared_library/starlark_tests.bzl
@@ -72,7 +72,7 @@
actions = analysistest.target_actions(env)
found = False
- for arg in actions[3].argv:
+ for arg in actions[4].argv:
if arg.find("-Wl,--script=") != -1:
asserts.equals(env, "src/main/starlark/tests/builtins_bzl/cc/cc_shared_library/test_cc_shared_library/additional_script.txt", arg[13:])
found = True
diff --git a/tools/cpp/windows_cc_toolchain_config.bzl b/tools/cpp/windows_cc_toolchain_config.bzl
index 99b2d4e..a4be778 100644
--- a/tools/cpp/windows_cc_toolchain_config.bzl
+++ b/tools/cpp/windows_cc_toolchain_config.bzl
@@ -198,6 +198,22 @@
tools = [tool(path = ctx.attr.msvc_cl_path)],
)
+ linkstamp_compile_action = action_config(
+ action_name = ACTION_NAMES.linkstamp_compile,
+ implies = [
+ "compiler_input_flags",
+ "compiler_output_flags",
+ "default_compile_flags",
+ "nologo",
+ "msvc_env",
+ "parse_showincludes",
+ "user_compile_flags",
+ "sysroot",
+ "unfiltered_compile_flags",
+ ],
+ tools = [tool(path = ctx.attr.msvc_cl_path)],
+ )
+
cpp_compile_action = action_config(
action_name = ACTION_NAMES.cpp_compile,
implies = [
@@ -255,6 +271,7 @@
assemble_action,
preprocess_assemble_action,
c_compile_action,
+ linkstamp_compile_action,
cpp_compile_action,
cpp_link_executable_action,
cpp_link_dynamic_library_action,
@@ -317,6 +334,7 @@
ACTION_NAMES.assemble,
ACTION_NAMES.preprocess_assemble,
ACTION_NAMES.c_compile,
+ ACTION_NAMES.linkstamp_compile,
ACTION_NAMES.cpp_compile,
ACTION_NAMES.cpp_header_parsing,
ACTION_NAMES.cpp_module_compile,
@@ -343,6 +361,7 @@
actions = [
ACTION_NAMES.preprocess_assemble,
ACTION_NAMES.c_compile,
+ ACTION_NAMES.linkstamp_compile,
ACTION_NAMES.cpp_compile,
ACTION_NAMES.cpp_header_parsing,
ACTION_NAMES.cpp_module_compile,
@@ -471,6 +490,7 @@
actions = [
ACTION_NAMES.preprocess_assemble,
ACTION_NAMES.c_compile,
+ ACTION_NAMES.linkstamp_compile,
ACTION_NAMES.cpp_compile,
ACTION_NAMES.cpp_header_parsing,
ACTION_NAMES.cpp_module_compile,
@@ -629,6 +649,7 @@
env_set(
actions = [
ACTION_NAMES.c_compile,
+ ACTION_NAMES.linkstamp_compile,
ACTION_NAMES.cpp_compile,
ACTION_NAMES.cpp_module_compile,
ACTION_NAMES.cpp_module_codegen,
@@ -650,6 +671,7 @@
ACTION_NAMES.assemble,
ACTION_NAMES.preprocess_assemble,
ACTION_NAMES.c_compile,
+ ACTION_NAMES.linkstamp_compile,
ACTION_NAMES.cpp_compile,
ACTION_NAMES.cpp_header_parsing,
ACTION_NAMES.cpp_module_compile,
@@ -755,6 +777,7 @@
actions = [
ACTION_NAMES.preprocess_assemble,
ACTION_NAMES.c_compile,
+ ACTION_NAMES.linkstamp_compile,
ACTION_NAMES.cpp_compile,
ACTION_NAMES.cpp_module_compile,
ACTION_NAMES.cpp_header_parsing,
@@ -805,6 +828,7 @@
ACTION_NAMES.assemble,
ACTION_NAMES.preprocess_assemble,
ACTION_NAMES.c_compile,
+ ACTION_NAMES.linkstamp_compile,
ACTION_NAMES.cpp_compile,
ACTION_NAMES.cpp_header_parsing,
ACTION_NAMES.cpp_module_compile,
@@ -906,6 +930,7 @@
actions = [
ACTION_NAMES.preprocess_assemble,
ACTION_NAMES.c_compile,
+ ACTION_NAMES.linkstamp_compile,
ACTION_NAMES.cpp_compile,
ACTION_NAMES.cpp_header_parsing,
ACTION_NAMES.cpp_module_compile,
@@ -951,6 +976,7 @@
flag_set(
actions = [
ACTION_NAMES.c_compile,
+ ACTION_NAMES.linkstamp_compile,
ACTION_NAMES.cpp_compile,
ACTION_NAMES.cpp_module_compile,
ACTION_NAMES.cpp_module_codegen,
@@ -992,6 +1018,7 @@
ACTION_NAMES.assemble,
ACTION_NAMES.preprocess_assemble,
ACTION_NAMES.c_compile,
+ ACTION_NAMES.linkstamp_compile,
ACTION_NAMES.cpp_compile,
ACTION_NAMES.cpp_header_parsing,
ACTION_NAMES.cpp_module_compile,
@@ -1028,6 +1055,7 @@
env_set(
actions = [
ACTION_NAMES.c_compile,
+ ACTION_NAMES.linkstamp_compile,
ACTION_NAMES.cpp_compile,
ACTION_NAMES.cpp_module_compile,
ACTION_NAMES.cpp_module_codegen,
@@ -1114,6 +1142,7 @@
env_set(
actions = [
ACTION_NAMES.c_compile,
+ ACTION_NAMES.linkstamp_compile,
ACTION_NAMES.cpp_compile,
ACTION_NAMES.cpp_module_compile,
ACTION_NAMES.cpp_module_codegen,