Loading bp2build/build_conversion.go +3 −0 Original line number Diff line number Diff line Loading @@ -488,6 +488,9 @@ func prettyPrint(propertyValue reflect.Value, indent int) (string, error) { ret = "{\n" // Sort and print the struct props by the key. structProps := extractStructProperties(propertyValue, indent) if len(structProps) == 0 { return "", nil } for _, k := range android.SortedStringKeys(structProps) { ret += makeIndent(indent + 1) ret += fmt.Sprintf("%q: %s,\n", k, structProps[k]) Loading bp2build/cc_library_conversion_test.go +170 −0 Original line number Diff line number Diff line Loading @@ -1231,3 +1231,173 @@ cc_library { }), )`}}) } func TestCcLibraryStrip(t *testing.T) { runCcLibraryTestCase(t, bp2buildTestCase{ description: "cc_library strip args", moduleTypeUnderTest: "cc_library", moduleTypeUnderTestFactory: cc.LibraryFactory, moduleTypeUnderTestBp2BuildMutator: cc.CcLibraryBp2Build, depsMutators: []android.RegisterMutatorFunc{cc.RegisterDepsBp2Build}, dir: "foo/bar", filesystem: map[string]string{ "foo/bar/Android.bp": ` cc_library { name: "nothing", bazel_module: { bp2build_available: true }, } cc_library { name: "keep_symbols", bazel_module: { bp2build_available: true }, strip: { keep_symbols: true, } } cc_library { name: "keep_symbols_and_debug_frame", bazel_module: { bp2build_available: true }, strip: { keep_symbols_and_debug_frame: true, } } cc_library { name: "none", bazel_module: { bp2build_available: true }, strip: { none: true, } } cc_library { name: "keep_symbols_list", bazel_module: { bp2build_available: true }, strip: { keep_symbols_list: ["symbol"], } } cc_library { name: "all", bazel_module: { bp2build_available: true }, strip: { all: true, } } `, }, blueprint: soongCcLibraryPreamble, expectedBazelTargets: []string{`cc_library( name = "all", copts = [ "-Ifoo/bar", "-I$(BINDIR)/foo/bar", ], strip = { "all": True, }, )`, `cc_library( name = "keep_symbols", copts = [ "-Ifoo/bar", "-I$(BINDIR)/foo/bar", ], strip = { "keep_symbols": True, }, )`, `cc_library( name = "keep_symbols_and_debug_frame", copts = [ "-Ifoo/bar", "-I$(BINDIR)/foo/bar", ], strip = { "keep_symbols_and_debug_frame": True, }, )`, `cc_library( name = "keep_symbols_list", copts = [ "-Ifoo/bar", "-I$(BINDIR)/foo/bar", ], strip = { "keep_symbols_list": ["symbol"], }, )`, `cc_library( name = "none", copts = [ "-Ifoo/bar", "-I$(BINDIR)/foo/bar", ], strip = { "none": True, }, )`, `cc_library( name = "nothing", copts = [ "-Ifoo/bar", "-I$(BINDIR)/foo/bar", ], )`}, }) } func TestCcLibraryStripWithArch(t *testing.T) { runCcLibraryTestCase(t, bp2buildTestCase{ description: "cc_library strip args", moduleTypeUnderTest: "cc_library", moduleTypeUnderTestFactory: cc.LibraryFactory, moduleTypeUnderTestBp2BuildMutator: cc.CcLibraryBp2Build, depsMutators: []android.RegisterMutatorFunc{cc.RegisterDepsBp2Build}, dir: "foo/bar", filesystem: map[string]string{ "foo/bar/Android.bp": ` cc_library { name: "multi-arch", bazel_module: { bp2build_available: true }, target: { darwin: { strip: { keep_symbols_list: ["foo", "bar"] } }, }, arch: { arm: { strip: { keep_symbols_and_debug_frame: true, }, }, arm64: { strip: { keep_symbols: true, }, }, } } `, }, blueprint: soongCcLibraryPreamble, expectedBazelTargets: []string{`cc_library( name = "multi-arch", copts = [ "-Ifoo/bar", "-I$(BINDIR)/foo/bar", ], strip = { "keep_symbols": select({ "//build/bazel/platforms/arch:arm64": True, "//conditions:default": None, }), "keep_symbols_and_debug_frame": select({ "//build/bazel/platforms/arch:arm": True, "//conditions:default": None, }), "keep_symbols_list": select({ "//build/bazel/platforms/os:darwin": [ "foo", "bar", ], "//conditions:default": [], }), }, )`}, }) } cc/bp2build.go +46 −7 Original line number Diff line number Diff line Loading @@ -492,6 +492,11 @@ type linkerAttributes struct { useLibcrt bazel.BoolAttribute linkopts bazel.StringListAttribute versionScript bazel.LabelAttribute stripKeepSymbols bazel.BoolAttribute stripKeepSymbolsAndDebugFrame bazel.BoolAttribute stripKeepSymbolsList bazel.StringListAttribute stripAll bazel.BoolAttribute stripNone bazel.BoolAttribute } // FIXME(b/187655838): Use the existing linkerFlags() function instead of duplicating logic here Loading @@ -515,6 +520,33 @@ func bp2BuildParseLinkerProps(ctx android.TopDownMutatorContext, module *Module) var versionScript bazel.LabelAttribute var useLibcrt bazel.BoolAttribute var stripKeepSymbols bazel.BoolAttribute var stripKeepSymbolsAndDebugFrame bazel.BoolAttribute var stripKeepSymbolsList bazel.StringListAttribute var stripAll bazel.BoolAttribute var stripNone bazel.BoolAttribute if libraryDecorator, ok := module.linker.(*libraryDecorator); ok { stripProperties := libraryDecorator.stripper.StripProperties stripKeepSymbols.Value = stripProperties.Strip.Keep_symbols stripKeepSymbolsList.Value = stripProperties.Strip.Keep_symbols_list stripKeepSymbolsAndDebugFrame.Value = stripProperties.Strip.Keep_symbols_and_debug_frame stripAll.Value = stripProperties.Strip.All stripNone.Value = stripProperties.Strip.None } for axis, configToProps := range module.GetArchVariantProperties(ctx, &StripProperties{}) { for config, props := range configToProps { if stripProperties, ok := props.(*StripProperties); ok { stripKeepSymbols.SetSelectValue(axis, config, stripProperties.Strip.Keep_symbols) stripKeepSymbolsList.SetSelectValue(axis, config, stripProperties.Strip.Keep_symbols_list) stripKeepSymbolsAndDebugFrame.SetSelectValue(axis, config, stripProperties.Strip.Keep_symbols_and_debug_frame) stripAll.SetSelectValue(axis, config, stripProperties.Strip.All) stripNone.SetSelectValue(axis, config, stripProperties.Strip.None) } } } for _, linkerProps := range module.linker.linkerProps() { if baseLinkerProps, ok := linkerProps.(*BaseLinkerProperties); ok { // Excludes to parallel Soong: Loading Loading @@ -630,6 +662,13 @@ func bp2BuildParseLinkerProps(ctx android.TopDownMutatorContext, module *Module) linkopts: linkopts, useLibcrt: useLibcrt, versionScript: versionScript, // Strip properties stripKeepSymbols: stripKeepSymbols, stripKeepSymbolsAndDebugFrame: stripKeepSymbolsAndDebugFrame, stripKeepSymbolsList: stripKeepSymbolsList, stripAll: stripAll, stripNone: stripNone, } } Loading cc/library.go +18 −0 Original line number Diff line number Diff line Loading @@ -259,6 +259,16 @@ type bazelCcLibraryAttributes struct { Static_deps_for_static bazel.LabelListAttribute Dynamic_deps_for_static bazel.LabelListAttribute Whole_archive_deps_for_static bazel.LabelListAttribute Strip stripAttributes } type stripAttributes struct { Keep_symbols bazel.BoolAttribute Keep_symbols_and_debug_frame bazel.BoolAttribute Keep_symbols_list bazel.StringListAttribute All bazel.BoolAttribute None bazel.BoolAttribute } type bazelCcLibrary struct { Loading Loading @@ -323,6 +333,14 @@ func CcLibraryBp2Build(ctx android.TopDownMutatorContext) { Linkopts: linkerAttrs.linkopts, Use_libcrt: linkerAttrs.useLibcrt, Strip: stripAttributes{ Keep_symbols: linkerAttrs.stripKeepSymbols, Keep_symbols_and_debug_frame: linkerAttrs.stripKeepSymbolsAndDebugFrame, Keep_symbols_list: linkerAttrs.stripKeepSymbolsList, All: linkerAttrs.stripAll, None: linkerAttrs.stripNone, }, Shared_srcs: sharedAttrs.srcs, Shared_srcs_c: sharedAttrs.srcs_c, Shared_srcs_as: sharedAttrs.srcs_as, Loading cc/strip.go +1 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ func (stripper *Stripper) NeedsStrip(actx android.ModuleContext) bool { return !forceDisable && (forceEnable || defaultEnable) } // Keep this consistent with //build/bazel/rules/stripped_shared_library.bzl. func (stripper *Stripper) strip(actx android.ModuleContext, in android.Path, out android.ModuleOutPath, flags StripFlags, isStaticLib bool) { if actx.Darwin() { Loading Loading
bp2build/build_conversion.go +3 −0 Original line number Diff line number Diff line Loading @@ -488,6 +488,9 @@ func prettyPrint(propertyValue reflect.Value, indent int) (string, error) { ret = "{\n" // Sort and print the struct props by the key. structProps := extractStructProperties(propertyValue, indent) if len(structProps) == 0 { return "", nil } for _, k := range android.SortedStringKeys(structProps) { ret += makeIndent(indent + 1) ret += fmt.Sprintf("%q: %s,\n", k, structProps[k]) Loading
bp2build/cc_library_conversion_test.go +170 −0 Original line number Diff line number Diff line Loading @@ -1231,3 +1231,173 @@ cc_library { }), )`}}) } func TestCcLibraryStrip(t *testing.T) { runCcLibraryTestCase(t, bp2buildTestCase{ description: "cc_library strip args", moduleTypeUnderTest: "cc_library", moduleTypeUnderTestFactory: cc.LibraryFactory, moduleTypeUnderTestBp2BuildMutator: cc.CcLibraryBp2Build, depsMutators: []android.RegisterMutatorFunc{cc.RegisterDepsBp2Build}, dir: "foo/bar", filesystem: map[string]string{ "foo/bar/Android.bp": ` cc_library { name: "nothing", bazel_module: { bp2build_available: true }, } cc_library { name: "keep_symbols", bazel_module: { bp2build_available: true }, strip: { keep_symbols: true, } } cc_library { name: "keep_symbols_and_debug_frame", bazel_module: { bp2build_available: true }, strip: { keep_symbols_and_debug_frame: true, } } cc_library { name: "none", bazel_module: { bp2build_available: true }, strip: { none: true, } } cc_library { name: "keep_symbols_list", bazel_module: { bp2build_available: true }, strip: { keep_symbols_list: ["symbol"], } } cc_library { name: "all", bazel_module: { bp2build_available: true }, strip: { all: true, } } `, }, blueprint: soongCcLibraryPreamble, expectedBazelTargets: []string{`cc_library( name = "all", copts = [ "-Ifoo/bar", "-I$(BINDIR)/foo/bar", ], strip = { "all": True, }, )`, `cc_library( name = "keep_symbols", copts = [ "-Ifoo/bar", "-I$(BINDIR)/foo/bar", ], strip = { "keep_symbols": True, }, )`, `cc_library( name = "keep_symbols_and_debug_frame", copts = [ "-Ifoo/bar", "-I$(BINDIR)/foo/bar", ], strip = { "keep_symbols_and_debug_frame": True, }, )`, `cc_library( name = "keep_symbols_list", copts = [ "-Ifoo/bar", "-I$(BINDIR)/foo/bar", ], strip = { "keep_symbols_list": ["symbol"], }, )`, `cc_library( name = "none", copts = [ "-Ifoo/bar", "-I$(BINDIR)/foo/bar", ], strip = { "none": True, }, )`, `cc_library( name = "nothing", copts = [ "-Ifoo/bar", "-I$(BINDIR)/foo/bar", ], )`}, }) } func TestCcLibraryStripWithArch(t *testing.T) { runCcLibraryTestCase(t, bp2buildTestCase{ description: "cc_library strip args", moduleTypeUnderTest: "cc_library", moduleTypeUnderTestFactory: cc.LibraryFactory, moduleTypeUnderTestBp2BuildMutator: cc.CcLibraryBp2Build, depsMutators: []android.RegisterMutatorFunc{cc.RegisterDepsBp2Build}, dir: "foo/bar", filesystem: map[string]string{ "foo/bar/Android.bp": ` cc_library { name: "multi-arch", bazel_module: { bp2build_available: true }, target: { darwin: { strip: { keep_symbols_list: ["foo", "bar"] } }, }, arch: { arm: { strip: { keep_symbols_and_debug_frame: true, }, }, arm64: { strip: { keep_symbols: true, }, }, } } `, }, blueprint: soongCcLibraryPreamble, expectedBazelTargets: []string{`cc_library( name = "multi-arch", copts = [ "-Ifoo/bar", "-I$(BINDIR)/foo/bar", ], strip = { "keep_symbols": select({ "//build/bazel/platforms/arch:arm64": True, "//conditions:default": None, }), "keep_symbols_and_debug_frame": select({ "//build/bazel/platforms/arch:arm": True, "//conditions:default": None, }), "keep_symbols_list": select({ "//build/bazel/platforms/os:darwin": [ "foo", "bar", ], "//conditions:default": [], }), }, )`}, }) }
cc/bp2build.go +46 −7 Original line number Diff line number Diff line Loading @@ -492,6 +492,11 @@ type linkerAttributes struct { useLibcrt bazel.BoolAttribute linkopts bazel.StringListAttribute versionScript bazel.LabelAttribute stripKeepSymbols bazel.BoolAttribute stripKeepSymbolsAndDebugFrame bazel.BoolAttribute stripKeepSymbolsList bazel.StringListAttribute stripAll bazel.BoolAttribute stripNone bazel.BoolAttribute } // FIXME(b/187655838): Use the existing linkerFlags() function instead of duplicating logic here Loading @@ -515,6 +520,33 @@ func bp2BuildParseLinkerProps(ctx android.TopDownMutatorContext, module *Module) var versionScript bazel.LabelAttribute var useLibcrt bazel.BoolAttribute var stripKeepSymbols bazel.BoolAttribute var stripKeepSymbolsAndDebugFrame bazel.BoolAttribute var stripKeepSymbolsList bazel.StringListAttribute var stripAll bazel.BoolAttribute var stripNone bazel.BoolAttribute if libraryDecorator, ok := module.linker.(*libraryDecorator); ok { stripProperties := libraryDecorator.stripper.StripProperties stripKeepSymbols.Value = stripProperties.Strip.Keep_symbols stripKeepSymbolsList.Value = stripProperties.Strip.Keep_symbols_list stripKeepSymbolsAndDebugFrame.Value = stripProperties.Strip.Keep_symbols_and_debug_frame stripAll.Value = stripProperties.Strip.All stripNone.Value = stripProperties.Strip.None } for axis, configToProps := range module.GetArchVariantProperties(ctx, &StripProperties{}) { for config, props := range configToProps { if stripProperties, ok := props.(*StripProperties); ok { stripKeepSymbols.SetSelectValue(axis, config, stripProperties.Strip.Keep_symbols) stripKeepSymbolsList.SetSelectValue(axis, config, stripProperties.Strip.Keep_symbols_list) stripKeepSymbolsAndDebugFrame.SetSelectValue(axis, config, stripProperties.Strip.Keep_symbols_and_debug_frame) stripAll.SetSelectValue(axis, config, stripProperties.Strip.All) stripNone.SetSelectValue(axis, config, stripProperties.Strip.None) } } } for _, linkerProps := range module.linker.linkerProps() { if baseLinkerProps, ok := linkerProps.(*BaseLinkerProperties); ok { // Excludes to parallel Soong: Loading Loading @@ -630,6 +662,13 @@ func bp2BuildParseLinkerProps(ctx android.TopDownMutatorContext, module *Module) linkopts: linkopts, useLibcrt: useLibcrt, versionScript: versionScript, // Strip properties stripKeepSymbols: stripKeepSymbols, stripKeepSymbolsAndDebugFrame: stripKeepSymbolsAndDebugFrame, stripKeepSymbolsList: stripKeepSymbolsList, stripAll: stripAll, stripNone: stripNone, } } Loading
cc/library.go +18 −0 Original line number Diff line number Diff line Loading @@ -259,6 +259,16 @@ type bazelCcLibraryAttributes struct { Static_deps_for_static bazel.LabelListAttribute Dynamic_deps_for_static bazel.LabelListAttribute Whole_archive_deps_for_static bazel.LabelListAttribute Strip stripAttributes } type stripAttributes struct { Keep_symbols bazel.BoolAttribute Keep_symbols_and_debug_frame bazel.BoolAttribute Keep_symbols_list bazel.StringListAttribute All bazel.BoolAttribute None bazel.BoolAttribute } type bazelCcLibrary struct { Loading Loading @@ -323,6 +333,14 @@ func CcLibraryBp2Build(ctx android.TopDownMutatorContext) { Linkopts: linkerAttrs.linkopts, Use_libcrt: linkerAttrs.useLibcrt, Strip: stripAttributes{ Keep_symbols: linkerAttrs.stripKeepSymbols, Keep_symbols_and_debug_frame: linkerAttrs.stripKeepSymbolsAndDebugFrame, Keep_symbols_list: linkerAttrs.stripKeepSymbolsList, All: linkerAttrs.stripAll, None: linkerAttrs.stripNone, }, Shared_srcs: sharedAttrs.srcs, Shared_srcs_c: sharedAttrs.srcs_c, Shared_srcs_as: sharedAttrs.srcs_as, Loading
cc/strip.go +1 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ func (stripper *Stripper) NeedsStrip(actx android.ModuleContext) bool { return !forceDisable && (forceEnable || defaultEnable) } // Keep this consistent with //build/bazel/rules/stripped_shared_library.bzl. func (stripper *Stripper) strip(actx android.ModuleContext, in android.Path, out android.ModuleOutPath, flags StripFlags, isStaticLib bool) { if actx.Darwin() { Loading