Loading android/bazel.go +0 −1 Original line number Diff line number Diff line Loading @@ -205,7 +205,6 @@ var ( // Linker error "libc_malloc_hooks", // jingwen@, cc_library, undefined symbol: __malloc_hook, etc. "libdl", // jingwen@, cc_library, clang failed "libstdc++", // jingwen@, cc_library, undefined symbol: free // Includes not found Loading bp2build/cc_library_conversion_test.go +33 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ func TestCcLibraryBp2Build(t *testing.T) { expectedBazelTargets []string filesystem map[string]string dir string depsMutators []android.RegisterMutatorFunc }{ { description: "cc_library - simple example", Loading Loading @@ -246,6 +247,34 @@ cc_library { "//conditions:default": [], }), srcs = ["math/cosf.c"], )`}, }, { description: "cc_library shared/static props", moduleTypeUnderTest: "cc_library", moduleTypeUnderTestFactory: cc.LibraryFactory, moduleTypeUnderTestBp2BuildMutator: cc.CcLibraryBp2Build, depsMutators: []android.RegisterMutatorFunc{cc.RegisterDepsBp2Build}, dir: "foo/bar", filesystem: map[string]string{ "foo/bar/a.cpp": "", "foo/bar/Android.bp": ` cc_library { name: "a", shared: { whole_static_libs: ["b"] }, static: { srcs: ["a.cpp"] }, bazel_module: { bp2build_available: true }, } cc_library_static { name: "b" } `, }, bp: soongCcLibraryPreamble, expectedBazelTargets: []string{`cc_library( name = "a", copts = ["-Ifoo/bar"], srcs = ["a.cpp"], static_deps_for_shared = [":b"], )`}, }, } Loading @@ -266,11 +295,15 @@ cc_library { ctx := android.NewTestContext(config) cc.RegisterCCBuildComponents(ctx) ctx.RegisterModuleType("cc_library_static", cc.LibraryStaticFactory) ctx.RegisterModuleType("toolchain_library", cc.ToolchainLibraryFactory) ctx.RegisterModuleType("cc_library_headers", cc.LibraryHeaderFactory) ctx.RegisterModuleType(testCase.moduleTypeUnderTest, testCase.moduleTypeUnderTestFactory) ctx.RegisterBp2BuildMutator(testCase.moduleTypeUnderTest, testCase.moduleTypeUnderTestBp2BuildMutator) ctx.RegisterBp2BuildConfig(bp2buildConfig) // TODO(jingwen): make this the default for all tests for _, m := range testCase.depsMutators { ctx.DepsBp2BuildMutators(m) } ctx.RegisterForBazelConversion() _, errs := ctx.ParseFileList(dir, toParse) Loading cc/bp2build.go +52 −0 Original line number Diff line number Diff line Loading @@ -68,9 +68,61 @@ func depsBp2BuildMutator(ctx android.BottomUpMutatorContext) { } } // Deps in the static: { .. } and shared: { .. } props of a cc_library. if lib, ok := module.compiler.(*libraryDecorator); ok { allDeps = append(allDeps, lib.SharedProperties.Shared.Static_libs...) allDeps = append(allDeps, lib.SharedProperties.Shared.Whole_static_libs...) allDeps = append(allDeps, lib.SharedProperties.Shared.Shared_libs...) allDeps = append(allDeps, lib.SharedProperties.Shared.System_shared_libs...) allDeps = append(allDeps, lib.StaticProperties.Static.Static_libs...) allDeps = append(allDeps, lib.StaticProperties.Static.Whole_static_libs...) allDeps = append(allDeps, lib.StaticProperties.Static.Shared_libs...) allDeps = append(allDeps, lib.StaticProperties.Static.System_shared_libs...) } ctx.AddDependency(module, nil, android.SortedUniqueStrings(allDeps)...) } type sharedAttributes struct { staticDeps bazel.LabelListAttribute } // bp2buildParseSharedProps returns the attributes for the shared variant of a cc_library. func bp2BuildParseSharedProps(ctx android.TopDownMutatorContext, module *Module) sharedAttributes { lib, ok := module.compiler.(*libraryDecorator) if !ok { return sharedAttributes{} } var staticDeps bazel.LabelListAttribute staticDeps.Value = android.BazelLabelForModuleDeps(ctx, lib.SharedProperties.Shared.Whole_static_libs) return sharedAttributes{ staticDeps: staticDeps, } } type staticAttributes struct { srcs bazel.LabelListAttribute } // bp2buildParseStaticProps returns the attributes for the static variant of a cc_library. func bp2BuildParseStaticProps(ctx android.TopDownMutatorContext, module *Module) staticAttributes { lib, ok := module.compiler.(*libraryDecorator) if !ok { return staticAttributes{} } var srcs bazel.LabelListAttribute srcs.Value = android.BazelLabelForModuleSrc(ctx, lib.StaticProperties.Static.Srcs) return staticAttributes{ srcs: srcs, } } // Convenience struct to hold all attributes parsed from compiler properties. type compilerAttributes struct { copts bazel.StringListAttribute Loading cc/library.go +20 −12 Original line number Diff line number Diff line Loading @@ -224,6 +224,7 @@ type bazelCcLibraryAttributes struct { Deps bazel.LabelListAttribute User_link_flags bazel.StringListAttribute Includes bazel.StringListAttribute Static_deps_for_shared bazel.LabelListAttribute } type bazelCcLibrary struct { Loading Loading @@ -254,15 +255,22 @@ func CcLibraryBp2Build(ctx android.TopDownMutatorContext) { return } sharedAttrs := bp2BuildParseSharedProps(ctx, m) staticAttrs := bp2BuildParseStaticProps(ctx, m) compilerAttrs := bp2BuildParseCompilerProps(ctx, m) linkerAttrs := bp2BuildParseLinkerProps(ctx, m) exportedIncludes := bp2BuildParseExportedIncludes(ctx, m) var srcs bazel.LabelListAttribute srcs.Append(compilerAttrs.srcs) srcs.Append(staticAttrs.srcs) attrs := &bazelCcLibraryAttributes{ Srcs: compilerAttrs.srcs, Srcs: srcs, Copts: compilerAttrs.copts, Linkopts: linkerAttrs.linkopts, Deps: linkerAttrs.deps, Static_deps_for_shared: sharedAttrs.staticDeps, Includes: exportedIncludes, } Loading Loading
android/bazel.go +0 −1 Original line number Diff line number Diff line Loading @@ -205,7 +205,6 @@ var ( // Linker error "libc_malloc_hooks", // jingwen@, cc_library, undefined symbol: __malloc_hook, etc. "libdl", // jingwen@, cc_library, clang failed "libstdc++", // jingwen@, cc_library, undefined symbol: free // Includes not found Loading
bp2build/cc_library_conversion_test.go +33 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ func TestCcLibraryBp2Build(t *testing.T) { expectedBazelTargets []string filesystem map[string]string dir string depsMutators []android.RegisterMutatorFunc }{ { description: "cc_library - simple example", Loading Loading @@ -246,6 +247,34 @@ cc_library { "//conditions:default": [], }), srcs = ["math/cosf.c"], )`}, }, { description: "cc_library shared/static props", moduleTypeUnderTest: "cc_library", moduleTypeUnderTestFactory: cc.LibraryFactory, moduleTypeUnderTestBp2BuildMutator: cc.CcLibraryBp2Build, depsMutators: []android.RegisterMutatorFunc{cc.RegisterDepsBp2Build}, dir: "foo/bar", filesystem: map[string]string{ "foo/bar/a.cpp": "", "foo/bar/Android.bp": ` cc_library { name: "a", shared: { whole_static_libs: ["b"] }, static: { srcs: ["a.cpp"] }, bazel_module: { bp2build_available: true }, } cc_library_static { name: "b" } `, }, bp: soongCcLibraryPreamble, expectedBazelTargets: []string{`cc_library( name = "a", copts = ["-Ifoo/bar"], srcs = ["a.cpp"], static_deps_for_shared = [":b"], )`}, }, } Loading @@ -266,11 +295,15 @@ cc_library { ctx := android.NewTestContext(config) cc.RegisterCCBuildComponents(ctx) ctx.RegisterModuleType("cc_library_static", cc.LibraryStaticFactory) ctx.RegisterModuleType("toolchain_library", cc.ToolchainLibraryFactory) ctx.RegisterModuleType("cc_library_headers", cc.LibraryHeaderFactory) ctx.RegisterModuleType(testCase.moduleTypeUnderTest, testCase.moduleTypeUnderTestFactory) ctx.RegisterBp2BuildMutator(testCase.moduleTypeUnderTest, testCase.moduleTypeUnderTestBp2BuildMutator) ctx.RegisterBp2BuildConfig(bp2buildConfig) // TODO(jingwen): make this the default for all tests for _, m := range testCase.depsMutators { ctx.DepsBp2BuildMutators(m) } ctx.RegisterForBazelConversion() _, errs := ctx.ParseFileList(dir, toParse) Loading
cc/bp2build.go +52 −0 Original line number Diff line number Diff line Loading @@ -68,9 +68,61 @@ func depsBp2BuildMutator(ctx android.BottomUpMutatorContext) { } } // Deps in the static: { .. } and shared: { .. } props of a cc_library. if lib, ok := module.compiler.(*libraryDecorator); ok { allDeps = append(allDeps, lib.SharedProperties.Shared.Static_libs...) allDeps = append(allDeps, lib.SharedProperties.Shared.Whole_static_libs...) allDeps = append(allDeps, lib.SharedProperties.Shared.Shared_libs...) allDeps = append(allDeps, lib.SharedProperties.Shared.System_shared_libs...) allDeps = append(allDeps, lib.StaticProperties.Static.Static_libs...) allDeps = append(allDeps, lib.StaticProperties.Static.Whole_static_libs...) allDeps = append(allDeps, lib.StaticProperties.Static.Shared_libs...) allDeps = append(allDeps, lib.StaticProperties.Static.System_shared_libs...) } ctx.AddDependency(module, nil, android.SortedUniqueStrings(allDeps)...) } type sharedAttributes struct { staticDeps bazel.LabelListAttribute } // bp2buildParseSharedProps returns the attributes for the shared variant of a cc_library. func bp2BuildParseSharedProps(ctx android.TopDownMutatorContext, module *Module) sharedAttributes { lib, ok := module.compiler.(*libraryDecorator) if !ok { return sharedAttributes{} } var staticDeps bazel.LabelListAttribute staticDeps.Value = android.BazelLabelForModuleDeps(ctx, lib.SharedProperties.Shared.Whole_static_libs) return sharedAttributes{ staticDeps: staticDeps, } } type staticAttributes struct { srcs bazel.LabelListAttribute } // bp2buildParseStaticProps returns the attributes for the static variant of a cc_library. func bp2BuildParseStaticProps(ctx android.TopDownMutatorContext, module *Module) staticAttributes { lib, ok := module.compiler.(*libraryDecorator) if !ok { return staticAttributes{} } var srcs bazel.LabelListAttribute srcs.Value = android.BazelLabelForModuleSrc(ctx, lib.StaticProperties.Static.Srcs) return staticAttributes{ srcs: srcs, } } // Convenience struct to hold all attributes parsed from compiler properties. type compilerAttributes struct { copts bazel.StringListAttribute Loading
cc/library.go +20 −12 Original line number Diff line number Diff line Loading @@ -224,6 +224,7 @@ type bazelCcLibraryAttributes struct { Deps bazel.LabelListAttribute User_link_flags bazel.StringListAttribute Includes bazel.StringListAttribute Static_deps_for_shared bazel.LabelListAttribute } type bazelCcLibrary struct { Loading Loading @@ -254,15 +255,22 @@ func CcLibraryBp2Build(ctx android.TopDownMutatorContext) { return } sharedAttrs := bp2BuildParseSharedProps(ctx, m) staticAttrs := bp2BuildParseStaticProps(ctx, m) compilerAttrs := bp2BuildParseCompilerProps(ctx, m) linkerAttrs := bp2BuildParseLinkerProps(ctx, m) exportedIncludes := bp2BuildParseExportedIncludes(ctx, m) var srcs bazel.LabelListAttribute srcs.Append(compilerAttrs.srcs) srcs.Append(staticAttrs.srcs) attrs := &bazelCcLibraryAttributes{ Srcs: compilerAttrs.srcs, Srcs: srcs, Copts: compilerAttrs.copts, Linkopts: linkerAttrs.linkopts, Deps: linkerAttrs.deps, Static_deps_for_shared: sharedAttrs.staticDeps, Includes: exportedIncludes, } Loading