diff --git a/bp2build/cc_prebuilt_library_conversion_test.go b/bp2build/cc_prebuilt_library_conversion_test.go index 2fe158eec..c5a6dfd6a 100644 --- a/bp2build/cc_prebuilt_library_conversion_test.go +++ b/bp2build/cc_prebuilt_library_conversion_test.go @@ -39,6 +39,10 @@ cc_prebuilt_library { MakeBazelTarget("cc_prebuilt_library_static", "libtest_bp2build_cc_library_static", AttrNameToString{ "static_library": `"libf.so"`, }), + MakeBazelTarget("cc_prebuilt_library_static", "libtest_bp2build_cc_library_static_alwayslink", AttrNameToString{ + "static_library": `"libf.so"`, + "alwayslink": "True", + }), MakeBazelTarget("cc_prebuilt_library_shared", "libtest", AttrNameToString{ "shared_library": `"libf.so"`, }), @@ -71,8 +75,14 @@ cc_prebuilt_library { "//build/bazel/platforms/arch:arm": "libg.so", "//build/bazel/platforms/arch:arm64": "libf.so", "//conditions:default": None, - })`, - }), + })`}), + MakeBazelTarget("cc_prebuilt_library_static", "libtest_bp2build_cc_library_static_alwayslink", AttrNameToString{ + "alwayslink": "True", + "static_library": `select({ + "//build/bazel/platforms/arch:arm": "libg.so", + "//build/bazel/platforms/arch:arm64": "libf.so", + "//conditions:default": None, + })`}), MakeBazelTarget("cc_prebuilt_library_shared", "libtest", AttrNameToString{ "shared_library": `select({ "//build/bazel/platforms/arch:arm": "libg.so", @@ -109,6 +119,12 @@ cc_prebuilt_library { "export_includes": `["testdir/1/"]`, "export_system_includes": `["testdir/2/"]`, }), + MakeBazelTarget("cc_prebuilt_library_static", "libtest_bp2build_cc_library_static_alwayslink", AttrNameToString{ + "static_library": `"libf.so"`, + "export_includes": `["testdir/1/"]`, + "export_system_includes": `["testdir/2/"]`, + "alwayslink": "True", + }), // TODO(b/229374533): When fixed, update this test MakeBazelTarget("cc_prebuilt_library_shared", "libtest", AttrNameToString{ "shared_library": `"libf.so"`, @@ -188,6 +204,10 @@ cc_prebuilt_library { MakeBazelTarget("cc_prebuilt_library_static", "libtest_bp2build_cc_library_static", AttrNameToString{ "static_library": `"libf.so"`, }), + MakeBazelTarget("cc_prebuilt_library_static", "libtest_bp2build_cc_library_static_alwayslink", AttrNameToString{ + "static_library": `"libf.so"`, + "alwayslink": "True", + }), MakeBazelTarget("cc_prebuilt_library_shared", "libtest", AttrNameToString{ "shared_library": `"libg.so"`, }), @@ -245,6 +265,10 @@ cc_prebuilt_library { // makeBazelTarget("cc_prebuilt_library_static", "libtest_bp2build_cc_library_static", attrNameToString{ // "static_library": `"libf.so"`, // }), +// makeBazelTarget("cc_prebuilt_library_static", "libtest_bp2build_cc_library_static_always", attrNameToString{ +// "static_library": `"libf.so"`, +// "alwayslink": "True", +// }), // }, // }) //} diff --git a/bp2build/cc_prebuilt_library_static_test.go b/bp2build/cc_prebuilt_library_static_test.go index 6116b0094..17da8132a 100644 --- a/bp2build/cc_prebuilt_library_static_test.go +++ b/bp2build/cc_prebuilt_library_static_test.go @@ -39,6 +39,10 @@ cc_prebuilt_library_static { MakeBazelTarget("cc_prebuilt_library_static", "libtest", AttrNameToString{ "static_library": `"libf.so"`, }), + MakeBazelTarget("cc_prebuilt_library_static", "libtest_alwayslink", AttrNameToString{ + "static_library": `"libf.so"`, + "alwayslink": "True", + }), }, }) } @@ -68,8 +72,14 @@ cc_prebuilt_library_static { "//build/bazel/platforms/arch:arm": "libg.so", "//build/bazel/platforms/arch:arm64": "libf.so", "//conditions:default": None, - })`, - }), + })`}), + MakeBazelTarget("cc_prebuilt_library_static", "libtest_alwayslink", AttrNameToString{ + "alwayslink": "True", + "static_library": `select({ + "//build/bazel/platforms/arch:arm": "libg.so", + "//build/bazel/platforms/arch:arm64": "libf.so", + "//conditions:default": None, + })`}), }, }) } diff --git a/cc/prebuilt.go b/cc/prebuilt.go index bb517eadb..5b7ba4346 100644 --- a/cc/prebuilt.go +++ b/cc/prebuilt.go @@ -352,6 +352,7 @@ type bazelPrebuiltLibraryStaticAttributes struct { Static_library bazel.LabelAttribute Export_includes bazel.StringListAttribute Export_system_includes bazel.StringListAttribute + Alwayslink bazel.BoolAttribute } // TODO(b/228623543): The below is not entirely true until the bug is fixed. For now, both targets are always generated @@ -389,6 +390,11 @@ func prebuiltLibraryStaticBp2Build(ctx android.TopDownMutatorContext, module *Mo tags := android.ApexAvailableTags(module) ctx.CreateBazelTargetModuleWithRestrictions(props, android.CommonAttributes{Name: name, Tags: tags}, attrs, prebuiltAttrs.Enabled) + + _true := true + alwayslinkAttrs := *attrs + alwayslinkAttrs.Alwayslink.SetValue(&_true) + ctx.CreateBazelTargetModuleWithRestrictions(props, android.CommonAttributes{Name: name + "_alwayslink", Tags: tags}, &alwayslinkAttrs, prebuiltAttrs.Enabled) } type bazelPrebuiltLibrarySharedAttributes struct {