diff options
-rw-r--r-- | android/Android.bp | 1 | ||||
-rw-r--r-- | android/bazel.go | 57 | ||||
-rw-r--r-- | android/filegroup.go | 7 | ||||
-rw-r--r-- | bp2build/testing.go | 9 | ||||
-rw-r--r-- | cc/cc.go | 5 | ||||
-rw-r--r-- | cc/library_headers.go | 2 | ||||
-rw-r--r-- | cc/object.go | 2 | ||||
-rw-r--r-- | genrule/genrule.go | 9 | ||||
-rw-r--r-- | sh/sh_binary.go | 7 |
9 files changed, 76 insertions, 23 deletions
diff --git a/android/Android.bp b/android/Android.bp index 00139d8ab..a8fa53a41 100644 --- a/android/Android.bp +++ b/android/Android.bp @@ -22,6 +22,7 @@ bootstrap_go_package { "api_levels.go", "arch.go", "arch_list.go", + "bazel.go", "bazel_handler.go", "config.go", "csuite_config.go", diff --git a/android/bazel.go b/android/bazel.go new file mode 100644 index 000000000..9939bd5e2 --- /dev/null +++ b/android/bazel.go @@ -0,0 +1,57 @@ +// Copyright 2021 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package android + +import "android/soong/bazel" + +// BazelModuleBase contains the property structs with metadata for modules which can be converted to +// Bazel. +type BazelModuleBase struct { + bazelProperties bazel.Properties +} + +// Bazelable is specifies the interface for modules that can be converted to Bazel. +type Bazelable interface { + bazelProps() *bazel.Properties + GetBazelLabel() string + ConvertWithBp2build() bool +} + +// BazelModule is a lightweight wrapper interface around Module for Bazel-convertible modules. +type BazelModule interface { + Module + Bazelable +} + +// InitBazelModule is a wrapper function that decorates a BazelModule with Bazel-conversion +// properties. +func InitBazelModule(module BazelModule) { + module.AddProperties(module.bazelProps()) +} + +// bazelProps returns the Bazel properties for the given BazelModuleBase. +func (b *BazelModuleBase) bazelProps() *bazel.Properties { + return &b.bazelProperties +} + +// GetBazelLabel returns the Bazel label for the given BazelModuleBase. +func (b *BazelModuleBase) GetBazelLabel() string { + return b.bazelProperties.Bazel_module.Label +} + +// ConvertWithBp2build returns whether the given BazelModuleBase should be converted with bp2build. +func (b *BazelModuleBase) ConvertWithBp2build() bool { + return b.bazelProperties.Bazel_module.Bp2build_available +} diff --git a/android/filegroup.go b/android/filegroup.go index c3bf6f8d9..593e4707b 100644 --- a/android/filegroup.go +++ b/android/filegroup.go @@ -49,7 +49,7 @@ func (bfg *bazelFilegroup) GenerateAndroidBuildActions(ctx ModuleContext) {} func FilegroupBp2Build(ctx TopDownMutatorContext) { fg, ok := ctx.Module().(*fileGroup) - if !ok || !fg.properties.Bazel_module.Bp2build_available { + if !ok || !fg.ConvertWithBp2build() { return } @@ -77,13 +77,11 @@ type fileGroupProperties struct { // Create a make variable with the specified name that contains the list of files in the // filegroup, relative to the root of the source tree. Export_to_make_var *string - - // Properties for Bazel migration purposes. - bazel.Properties } type fileGroup struct { ModuleBase + BazelModuleBase properties fileGroupProperties srcs Paths } @@ -97,6 +95,7 @@ func FileGroupFactory() Module { module := &fileGroup{} module.AddProperties(&module.properties) InitAndroidModule(module) + InitBazelModule(module) return module } diff --git a/bp2build/testing.go b/bp2build/testing.go index cb50fc8a4..bd75a8fc8 100644 --- a/bp2build/testing.go +++ b/bp2build/testing.go @@ -25,10 +25,9 @@ type customProps struct { type customModule struct { android.ModuleBase + android.BazelModuleBase props customProps - - bazelProps bazel.Properties } // OutputFiles is needed because some instances of this module use dist with a @@ -44,7 +43,7 @@ func (m *customModule) GenerateAndroidBuildActions(ctx android.ModuleContext) { func customModuleFactoryBase() android.Module { module := &customModule{} module.AddProperties(&module.props) - module.AddProperties(&module.bazelProps) + android.InitBazelModule(module) return module } @@ -127,7 +126,7 @@ func (m *customBazelModule) GenerateAndroidBuildActions(ctx android.ModuleContex func customBp2BuildMutator(ctx android.TopDownMutatorContext) { if m, ok := ctx.Module().(*customModule); ok { - if !m.bazelProps.Bazel_module.Bp2build_available { + if !m.ConvertWithBp2build() { return } @@ -148,7 +147,7 @@ func customBp2BuildMutator(ctx android.TopDownMutatorContext) { // module to target. func customBp2BuildMutatorFromStarlark(ctx android.TopDownMutatorContext) { if m, ok := ctx.Module().(*customModule); ok { - if !m.bazelProps.Bazel_module.Bp2build_available { + if !m.ConvertWithBp2build() { return } @@ -28,7 +28,6 @@ import ( "github.com/google/blueprint/proptools" "android/soong/android" - "android/soong/bazel" "android/soong/cc/config" "android/soong/genrule" ) @@ -365,8 +364,6 @@ type BaseProperties struct { // can depend on libraries that are not exported by the APEXes and use private symbols // from the exported libraries. Test_for []string - - bazel.Properties } type VendorProperties struct { @@ -765,6 +762,7 @@ type Module struct { android.DefaultableModuleBase android.ApexModuleBase android.SdkBase + android.BazelModuleBase Properties BaseProperties VendorProperties VendorProperties @@ -1054,6 +1052,7 @@ func (c *Module) Init() android.Module { } android.InitAndroidArchModule(c, c.hod, c.multilib) + android.InitBazelModule(c) android.InitApexModule(c) android.InitSdkAwareModule(c) android.InitDefaultableModule(c) diff --git a/cc/library_headers.go b/cc/library_headers.go index 03450c6aa..dc851a59c 100644 --- a/cc/library_headers.go +++ b/cc/library_headers.go @@ -86,7 +86,7 @@ func CcLibraryHeadersBp2Build(ctx android.TopDownMutatorContext) { return } - if !module.Properties.Bazel_module.Bp2build_available { + if !module.ConvertWithBp2build() { return } diff --git a/cc/object.go b/cc/object.go index 3a7af9715..b108c1c60 100644 --- a/cc/object.go +++ b/cc/object.go @@ -118,7 +118,7 @@ func BazelObjectFactory() android.Module { // Bazel equivalent target, plus any necessary include deps for the cc_object. func ObjectBp2Build(ctx android.TopDownMutatorContext) { m, ok := ctx.Module().(*Module) - if !ok || !m.Properties.Bazel_module.Bp2build_available { + if !ok || !m.ConvertWithBp2build() { return } diff --git a/genrule/genrule.go b/genrule/genrule.go index c743fc329..b4303a696 100644 --- a/genrule/genrule.go +++ b/genrule/genrule.go @@ -124,14 +124,12 @@ type generatorProperties struct { // input files to exclude Exclude_srcs []string `android:"path,arch_variant"` - - // Properties for Bazel migration purposes. - bazel.Properties } type Module struct { android.ModuleBase android.DefaultableModuleBase + android.BazelModuleBase android.ApexModuleBase // For other packages to make their own genrules with extra @@ -519,7 +517,7 @@ func (g *Module) GenerateAndroidBuildActions(ctx android.ModuleContext) { g.outputFiles = outputFiles.Paths() - bazelModuleLabel := g.properties.Bazel_module.Label + bazelModuleLabel := g.GetBazelLabel() bazelActionsUsed := false if ctx.Config().BazelContext.BazelEnabled() && len(bazelModuleLabel) > 0 { bazelActionsUsed = g.generateBazelBuildActions(ctx, bazelModuleLabel) @@ -771,6 +769,7 @@ func GenRuleFactory() android.Module { m := NewGenRule() android.InitAndroidModule(m) android.InitDefaultableModule(m) + android.InitBazelModule(m) return m } @@ -800,7 +799,7 @@ func BazelGenruleFactory() android.Module { func GenruleBp2Build(ctx android.TopDownMutatorContext) { m, ok := ctx.Module().(*Module) - if !ok || !m.properties.Bazel_module.Bp2build_available { + if !ok || !m.ConvertWithBp2build() { return } diff --git a/sh/sh_binary.go b/sh/sh_binary.go index 3a5c7de99..031cd4717 100644 --- a/sh/sh_binary.go +++ b/sh/sh_binary.go @@ -84,9 +84,6 @@ type shBinaryProperties struct { // Make this module available when building for recovery. Recovery_available *bool - - // Properties for Bazel migration purposes. - bazel.Properties } type TestProperties struct { @@ -132,6 +129,7 @@ type TestProperties struct { type ShBinary struct { android.ModuleBase + android.BazelModuleBase properties shBinaryProperties @@ -427,6 +425,7 @@ func (s *ShTest) AndroidMkEntries() []android.AndroidMkEntries { func InitShBinaryModule(s *ShBinary) { s.AddProperties(&s.properties) + android.InitBazelModule(s) } // sh_binary is for a shell script or batch file to be installed as an @@ -504,7 +503,7 @@ func BazelShBinaryFactory() android.Module { func ShBinaryBp2Build(ctx android.TopDownMutatorContext) { m, ok := ctx.Module().(*ShBinary) - if !ok || !m.properties.Bazel_module.Bp2build_available { + if !ok || !m.ConvertWithBp2build() { return } |