Extract C++ files, rather than C, when working around Bazel bugs To work around Bazel's bugs around mixed C/C++ targets (https://github.com/bazelbuild/bazel/issues/22041), we automatically split all of our targets in two. When we did this, we originally pulled the C files into their own target. This had the side effect of building assembly files with the C files instead of with the C++ files. In principle, this does not matter, but Bazel likes to turn targets into shared libraries, and our assembly files still contain a couple references to OPENSSL_ia32cap_P (see https://crbug.com/42290548). Those references rely on OPENSSL_ia32cap_P being a hidden symbol, and statically linked with the assembly files. Pull the C++ out instead, to avoid this. Once https://crbug.com/42290548 is done, either will work, but this is needed for now. Bug: 362664827 Change-Id: Icb929d194ee2311707fe1a0bb27ea0ccaf96a510 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/70690 Reviewed-by: Bob Beck <bbe@google.com> Commit-Queue: David Benjamin <davidben@google.com>
diff --git a/util/util.bzl b/util/util.bzl index 8de6afb..83ddff6 100644 --- a/util/util.bzl +++ b/util/util.bzl
@@ -107,12 +107,13 @@ # If a target has both C and C++, we need to split it in two. if has_c and has_cxx: - srcs_c = [src for src in srcs if src.endswith(".c") or src.endswith(".h")] - name_c = name + "_c" + # Pull the C++ files out. + srcs_cxx = [src for src in srcs if src.endswith(".cc") or src.endswith(".h")] + name_cxx = name + "_cxx" cc_library( - name = name_c, - srcs = srcs_c + internal_hdrs, - copts = copts + boringssl_copts_c, + name = name_cxx, + srcs = srcs_cxx + internal_hdrs, + copts = copts + boringssl_copts_cxx, includes = includes, # This target only exists to be linked into the main library, so # always link it statically. @@ -122,10 +123,10 @@ testonly = testonly, ) - # Build the remainder as a C++-only target. - deps = deps + [":" + name_c] - srcs = [src for src in srcs if not src.endswith(".c")] - has_c = False + # Build the remainder as a C-only target. + deps = deps + [":" + name_cxx] + srcs = [src for src in srcs if not src.endswith(".cc")] + has_cxx = False if has_c: copts = copts + boringssl_copts_c