Loading android/bazel.go +51 −2 Original line number Diff line number Diff line Loading @@ -126,6 +126,42 @@ const ( ) var ( // Do not write BUILD files for these directories // NOTE: this is not recursive bp2buildDoNotWriteBuildFileList = []string{ // Don't generate these BUILD files - because external BUILD files already exist "external/boringssl", "external/brotli", "external/dagger2", "external/flatbuffers", "external/gflags", "external/google-fruit", "external/grpc-grpc", "external/grpc-grpc/test/core/util", "external/grpc-grpc/test/cpp/common", "external/grpc-grpc/third_party/address_sorting", "external/nanopb-c", "external/nos/host/generic", "external/nos/host/generic/libnos", "external/nos/host/generic/libnos/generator", "external/nos/host/generic/libnos_datagram", "external/nos/host/generic/libnos_transport", "external/nos/host/generic/nugget/proto", "external/perfetto", "external/protobuf", "external/rust/cxx", "external/rust/cxx/demo", "external/ruy", "external/tensorflow", "external/tensorflow/tensorflow/lite", "external/tensorflow/tensorflow/lite/java", "external/tensorflow/tensorflow/lite/kernels", "external/tflite-support", "external/tinyalsa_new", "external/wycheproof", "external/libyuv", } // Configure modules in these directories to enable bp2build_available: true or false by default. bp2buildDefaultConfig = Bp2BuildConfig{ "bionic": Bp2BuildDefaultTrueRecursively, Loading Loading @@ -190,11 +226,16 @@ var ( } // Used for quicker lookups bp2buildDoNotWriteBuildFile = map[string]bool{} bp2buildModuleDoNotConvert = map[string]bool{} mixedBuildsDisabled = map[string]bool{} ) func init() { for _, moduleName := range bp2buildDoNotWriteBuildFileList { bp2buildDoNotWriteBuildFile[moduleName] = true } for _, moduleName := range bp2buildModuleDoNotConvertList { bp2buildModuleDoNotConvert[moduleName] = true } Loading @@ -204,6 +245,14 @@ func init() { } } func ShouldWriteBuildFileForDir(dir string) bool { if _, ok := bp2buildDoNotWriteBuildFile[dir]; ok { return false } else { return true } } // MixedBuildsEnabled checks that a module is ready to be replaced by a // converted or handcrafted Bazel target. func (b *BazelModuleBase) MixedBuildsEnabled(ctx BazelConversionPathContext) bool { Loading bp2build/bp2build.go +1 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ func Codegen(ctx *CodegenContext) CodegenMetrics { outputDir := android.PathForOutput(ctx, "bp2build") android.RemoveAllOutputDir(outputDir) buildToTargets, metrics := GenerateBazelTargets(ctx) buildToTargets, metrics := GenerateBazelTargets(ctx, true) filesToWrite := CreateBazelFiles(nil, buildToTargets, ctx.mode) Loading bp2build/build_conversion.go +16 −1 Original line number Diff line number Diff line Loading @@ -176,7 +176,7 @@ func propsToAttributes(props map[string]string) string { return attributes } func GenerateBazelTargets(ctx *CodegenContext) (map[string]BazelTargets, CodegenMetrics) { func GenerateBazelTargets(ctx *CodegenContext, generateFilegroups bool) (map[string]BazelTargets, CodegenMetrics) { buildFileToTargets := make(map[string]BazelTargets) buildFileToAppend := make(map[string]bool) Loading @@ -185,9 +185,13 @@ func GenerateBazelTargets(ctx *CodegenContext) (map[string]BazelTargets, Codegen RuleClassCount: make(map[string]int), } dirs := make(map[string]bool) bpCtx := ctx.Context() bpCtx.VisitAllModules(func(m blueprint.Module) { dir := bpCtx.ModuleDir(m) dirs[dir] = true var t BazelTarget switch ctx.Mode() { Loading Loading @@ -230,6 +234,17 @@ func GenerateBazelTargets(ctx *CodegenContext) (map[string]BazelTargets, Codegen buildFileToTargets[dir] = append(buildFileToTargets[dir], t) }) if generateFilegroups { // Add a filegroup target that exposes all sources in the subtree of this package // NOTE: This also means we generate a BUILD file for every Android.bp file (as long as it has at least one module) for dir, _ := range dirs { buildFileToTargets[dir] = append(buildFileToTargets[dir], BazelTarget{ name: "bp2build_all_srcs", content: `filegroup(name = "bp2build_all_srcs", srcs = glob(["**/*"]))`, ruleClass: "filegroup", }) } } return buildFileToTargets, metrics } Loading bp2build/conversion.go +5 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ package bp2build import ( "android/soong/android" "fmt" "reflect" "sort" "strings" Loading Loading @@ -48,6 +49,10 @@ func CreateBazelFiles( func createBuildFiles(buildToTargets map[string]BazelTargets, mode CodegenMode) []BazelFile { files := make([]BazelFile, 0, len(buildToTargets)) for _, dir := range android.SortedStringKeys(buildToTargets) { if !android.ShouldWriteBuildFileForDir(dir) { fmt.Printf("[bp2build] Not writing generated BUILD file for dir: '%s'\n", dir) continue } targets := buildToTargets[dir] sort.Slice(targets, func(i, j int) bool { // this will cover all bp2build generated targets Loading bp2build/testing.go +2 −1 Original line number Diff line number Diff line Loading @@ -183,6 +183,7 @@ func customBp2BuildMutatorFromStarlark(ctx android.TopDownMutatorContext) { // Helper method for tests to easily access the targets in a dir. func generateBazelTargetsForDir(codegenCtx *CodegenContext, dir string) BazelTargets { buildFileToTargets, _ := GenerateBazelTargets(codegenCtx) // TODO: Set generateFilegroups to true and/or remove the generateFilegroups argument completely buildFileToTargets, _ := GenerateBazelTargets(codegenCtx, false) return buildFileToTargets[dir] } Loading
android/bazel.go +51 −2 Original line number Diff line number Diff line Loading @@ -126,6 +126,42 @@ const ( ) var ( // Do not write BUILD files for these directories // NOTE: this is not recursive bp2buildDoNotWriteBuildFileList = []string{ // Don't generate these BUILD files - because external BUILD files already exist "external/boringssl", "external/brotli", "external/dagger2", "external/flatbuffers", "external/gflags", "external/google-fruit", "external/grpc-grpc", "external/grpc-grpc/test/core/util", "external/grpc-grpc/test/cpp/common", "external/grpc-grpc/third_party/address_sorting", "external/nanopb-c", "external/nos/host/generic", "external/nos/host/generic/libnos", "external/nos/host/generic/libnos/generator", "external/nos/host/generic/libnos_datagram", "external/nos/host/generic/libnos_transport", "external/nos/host/generic/nugget/proto", "external/perfetto", "external/protobuf", "external/rust/cxx", "external/rust/cxx/demo", "external/ruy", "external/tensorflow", "external/tensorflow/tensorflow/lite", "external/tensorflow/tensorflow/lite/java", "external/tensorflow/tensorflow/lite/kernels", "external/tflite-support", "external/tinyalsa_new", "external/wycheproof", "external/libyuv", } // Configure modules in these directories to enable bp2build_available: true or false by default. bp2buildDefaultConfig = Bp2BuildConfig{ "bionic": Bp2BuildDefaultTrueRecursively, Loading Loading @@ -190,11 +226,16 @@ var ( } // Used for quicker lookups bp2buildDoNotWriteBuildFile = map[string]bool{} bp2buildModuleDoNotConvert = map[string]bool{} mixedBuildsDisabled = map[string]bool{} ) func init() { for _, moduleName := range bp2buildDoNotWriteBuildFileList { bp2buildDoNotWriteBuildFile[moduleName] = true } for _, moduleName := range bp2buildModuleDoNotConvertList { bp2buildModuleDoNotConvert[moduleName] = true } Loading @@ -204,6 +245,14 @@ func init() { } } func ShouldWriteBuildFileForDir(dir string) bool { if _, ok := bp2buildDoNotWriteBuildFile[dir]; ok { return false } else { return true } } // MixedBuildsEnabled checks that a module is ready to be replaced by a // converted or handcrafted Bazel target. func (b *BazelModuleBase) MixedBuildsEnabled(ctx BazelConversionPathContext) bool { Loading
bp2build/bp2build.go +1 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ func Codegen(ctx *CodegenContext) CodegenMetrics { outputDir := android.PathForOutput(ctx, "bp2build") android.RemoveAllOutputDir(outputDir) buildToTargets, metrics := GenerateBazelTargets(ctx) buildToTargets, metrics := GenerateBazelTargets(ctx, true) filesToWrite := CreateBazelFiles(nil, buildToTargets, ctx.mode) Loading
bp2build/build_conversion.go +16 −1 Original line number Diff line number Diff line Loading @@ -176,7 +176,7 @@ func propsToAttributes(props map[string]string) string { return attributes } func GenerateBazelTargets(ctx *CodegenContext) (map[string]BazelTargets, CodegenMetrics) { func GenerateBazelTargets(ctx *CodegenContext, generateFilegroups bool) (map[string]BazelTargets, CodegenMetrics) { buildFileToTargets := make(map[string]BazelTargets) buildFileToAppend := make(map[string]bool) Loading @@ -185,9 +185,13 @@ func GenerateBazelTargets(ctx *CodegenContext) (map[string]BazelTargets, Codegen RuleClassCount: make(map[string]int), } dirs := make(map[string]bool) bpCtx := ctx.Context() bpCtx.VisitAllModules(func(m blueprint.Module) { dir := bpCtx.ModuleDir(m) dirs[dir] = true var t BazelTarget switch ctx.Mode() { Loading Loading @@ -230,6 +234,17 @@ func GenerateBazelTargets(ctx *CodegenContext) (map[string]BazelTargets, Codegen buildFileToTargets[dir] = append(buildFileToTargets[dir], t) }) if generateFilegroups { // Add a filegroup target that exposes all sources in the subtree of this package // NOTE: This also means we generate a BUILD file for every Android.bp file (as long as it has at least one module) for dir, _ := range dirs { buildFileToTargets[dir] = append(buildFileToTargets[dir], BazelTarget{ name: "bp2build_all_srcs", content: `filegroup(name = "bp2build_all_srcs", srcs = glob(["**/*"]))`, ruleClass: "filegroup", }) } } return buildFileToTargets, metrics } Loading
bp2build/conversion.go +5 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ package bp2build import ( "android/soong/android" "fmt" "reflect" "sort" "strings" Loading Loading @@ -48,6 +49,10 @@ func CreateBazelFiles( func createBuildFiles(buildToTargets map[string]BazelTargets, mode CodegenMode) []BazelFile { files := make([]BazelFile, 0, len(buildToTargets)) for _, dir := range android.SortedStringKeys(buildToTargets) { if !android.ShouldWriteBuildFileForDir(dir) { fmt.Printf("[bp2build] Not writing generated BUILD file for dir: '%s'\n", dir) continue } targets := buildToTargets[dir] sort.Slice(targets, func(i, j int) bool { // this will cover all bp2build generated targets Loading
bp2build/testing.go +2 −1 Original line number Diff line number Diff line Loading @@ -183,6 +183,7 @@ func customBp2BuildMutatorFromStarlark(ctx android.TopDownMutatorContext) { // Helper method for tests to easily access the targets in a dir. func generateBazelTargetsForDir(codegenCtx *CodegenContext, dir string) BazelTargets { buildFileToTargets, _ := GenerateBazelTargets(codegenCtx) // TODO: Set generateFilegroups to true and/or remove the generateFilegroups argument completely buildFileToTargets, _ := GenerateBazelTargets(codegenCtx, false) return buildFileToTargets[dir] }