Merge "Dedupe libraries in both static and whole static" am: 6876d5aa5f
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/2032378
Change-Id: Ife1337bd64542061d26929be94db7ba24d5a8d38
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/bp2build/cc_library_conversion_test.go b/bp2build/cc_library_conversion_test.go
index d84e156..5767861 100644
--- a/bp2build/cc_library_conversion_test.go
+++ b/bp2build/cc_library_conversion_test.go
@@ -283,8 +283,8 @@
srcs: ["both.cpp"],
cflags: ["bothflag"],
shared_libs: ["shared_dep_for_both"],
- static_libs: ["static_dep_for_both"],
- whole_static_libs: ["whole_static_lib_for_both"],
+ static_libs: ["static_dep_for_both", "whole_and_static_lib_for_both"],
+ whole_static_libs: ["whole_static_lib_for_both", "whole_and_static_lib_for_both"],
static: {
srcs: ["staticonly.cpp"],
cflags: ["staticflag"],
@@ -332,6 +332,11 @@
bazel_module: { bp2build_available: false },
}
+cc_library_static {
+ name: "whole_and_static_lib_for_both",
+ bazel_module: { bp2build_available: false },
+}
+
cc_library {
name: "shared_dep_for_shared",
bazel_module: { bp2build_available: false },
@@ -367,6 +372,7 @@
]`,
"whole_archive_deps": `[
":whole_static_lib_for_both",
+ ":whole_and_static_lib_for_both",
":whole_static_lib_for_static",
]`}),
makeBazelTarget("cc_library_shared", "a", attrNameToString{
@@ -388,6 +394,7 @@
]`,
"whole_archive_deps": `[
":whole_static_lib_for_both",
+ ":whole_and_static_lib_for_both",
":whole_static_lib_for_shared",
]`,
}),
diff --git a/cc/bp2build.go b/cc/bp2build.go
index 93d11c7..811e228 100644
--- a/cc/bp2build.go
+++ b/cc/bp2build.go
@@ -585,9 +585,12 @@
// Use a single variable to capture usage of nocrt in arch variants, so there's only 1 error message for this module
var axisFeatures []string
+ wholeStaticLibs := android.FirstUniqueStrings(props.Whole_static_libs)
+ la.wholeArchiveDeps.SetSelectValue(axis, config, bazelLabelForWholeDepsExcludes(ctx, wholeStaticLibs, props.Exclude_static_libs))
// Excludes to parallel Soong:
// https://cs.android.com/android/platform/superproject/+/master:build/soong/cc/linker.go;l=247-249;drc=088b53577dde6e40085ffd737a1ae96ad82fc4b0
- staticLibs := android.FirstUniqueStrings(props.Static_libs)
+ staticLibs := android.FirstUniqueStrings(android.RemoveListFromList(props.Static_libs, wholeStaticLibs))
+
staticDeps := maybePartitionExportedAndImplementationsDepsExcludes(ctx, !isBinary, staticLibs, props.Exclude_static_libs, props.Export_static_lib_headers, bazelLabelForStaticDepsExcludes)
headerLibs := android.FirstUniqueStrings(props.Header_libs)
@@ -599,9 +602,6 @@
(&hDeps.implementation).Append(staticDeps.implementation)
la.implementationDeps.SetSelectValue(axis, config, hDeps.implementation)
- wholeStaticLibs := android.FirstUniqueStrings(props.Whole_static_libs)
- la.wholeArchiveDeps.SetSelectValue(axis, config, bazelLabelForWholeDepsExcludes(ctx, wholeStaticLibs, props.Exclude_static_libs))
-
systemSharedLibs := props.System_shared_libs
// systemSharedLibs distinguishes between nil/empty list behavior:
// nil -> use default values