Merge "Move bazel.Properties to a BazelModuleBase"
This commit is contained in:
@@ -22,6 +22,7 @@ bootstrap_go_package {
|
|||||||
"api_levels.go",
|
"api_levels.go",
|
||||||
"arch.go",
|
"arch.go",
|
||||||
"arch_list.go",
|
"arch_list.go",
|
||||||
|
"bazel.go",
|
||||||
"bazel_handler.go",
|
"bazel_handler.go",
|
||||||
"config.go",
|
"config.go",
|
||||||
"csuite_config.go",
|
"csuite_config.go",
|
||||||
|
57
android/bazel.go
Normal file
57
android/bazel.go
Normal file
@@ -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
|
||||||
|
}
|
@@ -49,7 +49,7 @@ func (bfg *bazelFilegroup) GenerateAndroidBuildActions(ctx ModuleContext) {}
|
|||||||
|
|
||||||
func FilegroupBp2Build(ctx TopDownMutatorContext) {
|
func FilegroupBp2Build(ctx TopDownMutatorContext) {
|
||||||
fg, ok := ctx.Module().(*fileGroup)
|
fg, ok := ctx.Module().(*fileGroup)
|
||||||
if !ok || !fg.properties.Bazel_module.Bp2build_available {
|
if !ok || !fg.ConvertWithBp2build() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,13 +77,11 @@ type fileGroupProperties struct {
|
|||||||
// Create a make variable with the specified name that contains the list of files in the
|
// 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.
|
// filegroup, relative to the root of the source tree.
|
||||||
Export_to_make_var *string
|
Export_to_make_var *string
|
||||||
|
|
||||||
// Properties for Bazel migration purposes.
|
|
||||||
bazel.Properties
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type fileGroup struct {
|
type fileGroup struct {
|
||||||
ModuleBase
|
ModuleBase
|
||||||
|
BazelModuleBase
|
||||||
properties fileGroupProperties
|
properties fileGroupProperties
|
||||||
srcs Paths
|
srcs Paths
|
||||||
}
|
}
|
||||||
@@ -97,6 +95,7 @@ func FileGroupFactory() Module {
|
|||||||
module := &fileGroup{}
|
module := &fileGroup{}
|
||||||
module.AddProperties(&module.properties)
|
module.AddProperties(&module.properties)
|
||||||
InitAndroidModule(module)
|
InitAndroidModule(module)
|
||||||
|
InitBazelModule(module)
|
||||||
return module
|
return module
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -25,10 +25,9 @@ type customProps struct {
|
|||||||
|
|
||||||
type customModule struct {
|
type customModule struct {
|
||||||
android.ModuleBase
|
android.ModuleBase
|
||||||
|
android.BazelModuleBase
|
||||||
|
|
||||||
props customProps
|
props customProps
|
||||||
|
|
||||||
bazelProps bazel.Properties
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// OutputFiles is needed because some instances of this module use dist with a
|
// 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 {
|
func customModuleFactoryBase() android.Module {
|
||||||
module := &customModule{}
|
module := &customModule{}
|
||||||
module.AddProperties(&module.props)
|
module.AddProperties(&module.props)
|
||||||
module.AddProperties(&module.bazelProps)
|
android.InitBazelModule(module)
|
||||||
return module
|
return module
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -127,7 +126,7 @@ func (m *customBazelModule) GenerateAndroidBuildActions(ctx android.ModuleContex
|
|||||||
|
|
||||||
func customBp2BuildMutator(ctx android.TopDownMutatorContext) {
|
func customBp2BuildMutator(ctx android.TopDownMutatorContext) {
|
||||||
if m, ok := ctx.Module().(*customModule); ok {
|
if m, ok := ctx.Module().(*customModule); ok {
|
||||||
if !m.bazelProps.Bazel_module.Bp2build_available {
|
if !m.ConvertWithBp2build() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -148,7 +147,7 @@ func customBp2BuildMutator(ctx android.TopDownMutatorContext) {
|
|||||||
// module to target.
|
// module to target.
|
||||||
func customBp2BuildMutatorFromStarlark(ctx android.TopDownMutatorContext) {
|
func customBp2BuildMutatorFromStarlark(ctx android.TopDownMutatorContext) {
|
||||||
if m, ok := ctx.Module().(*customModule); ok {
|
if m, ok := ctx.Module().(*customModule); ok {
|
||||||
if !m.bazelProps.Bazel_module.Bp2build_available {
|
if !m.ConvertWithBp2build() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
5
cc/cc.go
5
cc/cc.go
@@ -28,7 +28,6 @@ import (
|
|||||||
"github.com/google/blueprint/proptools"
|
"github.com/google/blueprint/proptools"
|
||||||
|
|
||||||
"android/soong/android"
|
"android/soong/android"
|
||||||
"android/soong/bazel"
|
|
||||||
"android/soong/cc/config"
|
"android/soong/cc/config"
|
||||||
"android/soong/genrule"
|
"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
|
// can depend on libraries that are not exported by the APEXes and use private symbols
|
||||||
// from the exported libraries.
|
// from the exported libraries.
|
||||||
Test_for []string
|
Test_for []string
|
||||||
|
|
||||||
bazel.Properties
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type VendorProperties struct {
|
type VendorProperties struct {
|
||||||
@@ -765,6 +762,7 @@ type Module struct {
|
|||||||
android.DefaultableModuleBase
|
android.DefaultableModuleBase
|
||||||
android.ApexModuleBase
|
android.ApexModuleBase
|
||||||
android.SdkBase
|
android.SdkBase
|
||||||
|
android.BazelModuleBase
|
||||||
|
|
||||||
Properties BaseProperties
|
Properties BaseProperties
|
||||||
VendorProperties VendorProperties
|
VendorProperties VendorProperties
|
||||||
@@ -1054,6 +1052,7 @@ func (c *Module) Init() android.Module {
|
|||||||
}
|
}
|
||||||
|
|
||||||
android.InitAndroidArchModule(c, c.hod, c.multilib)
|
android.InitAndroidArchModule(c, c.hod, c.multilib)
|
||||||
|
android.InitBazelModule(c)
|
||||||
android.InitApexModule(c)
|
android.InitApexModule(c)
|
||||||
android.InitSdkAwareModule(c)
|
android.InitSdkAwareModule(c)
|
||||||
android.InitDefaultableModule(c)
|
android.InitDefaultableModule(c)
|
||||||
|
@@ -86,7 +86,7 @@ func CcLibraryHeadersBp2Build(ctx android.TopDownMutatorContext) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if !module.Properties.Bazel_module.Bp2build_available {
|
if !module.ConvertWithBp2build() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -118,7 +118,7 @@ func BazelObjectFactory() android.Module {
|
|||||||
// Bazel equivalent target, plus any necessary include deps for the cc_object.
|
// Bazel equivalent target, plus any necessary include deps for the cc_object.
|
||||||
func ObjectBp2Build(ctx android.TopDownMutatorContext) {
|
func ObjectBp2Build(ctx android.TopDownMutatorContext) {
|
||||||
m, ok := ctx.Module().(*Module)
|
m, ok := ctx.Module().(*Module)
|
||||||
if !ok || !m.Properties.Bazel_module.Bp2build_available {
|
if !ok || !m.ConvertWithBp2build() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -124,14 +124,12 @@ type generatorProperties struct {
|
|||||||
|
|
||||||
// input files to exclude
|
// input files to exclude
|
||||||
Exclude_srcs []string `android:"path,arch_variant"`
|
Exclude_srcs []string `android:"path,arch_variant"`
|
||||||
|
|
||||||
// Properties for Bazel migration purposes.
|
|
||||||
bazel.Properties
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type Module struct {
|
type Module struct {
|
||||||
android.ModuleBase
|
android.ModuleBase
|
||||||
android.DefaultableModuleBase
|
android.DefaultableModuleBase
|
||||||
|
android.BazelModuleBase
|
||||||
android.ApexModuleBase
|
android.ApexModuleBase
|
||||||
|
|
||||||
// For other packages to make their own genrules with extra
|
// 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()
|
g.outputFiles = outputFiles.Paths()
|
||||||
|
|
||||||
bazelModuleLabel := g.properties.Bazel_module.Label
|
bazelModuleLabel := g.GetBazelLabel()
|
||||||
bazelActionsUsed := false
|
bazelActionsUsed := false
|
||||||
if ctx.Config().BazelContext.BazelEnabled() && len(bazelModuleLabel) > 0 {
|
if ctx.Config().BazelContext.BazelEnabled() && len(bazelModuleLabel) > 0 {
|
||||||
bazelActionsUsed = g.generateBazelBuildActions(ctx, bazelModuleLabel)
|
bazelActionsUsed = g.generateBazelBuildActions(ctx, bazelModuleLabel)
|
||||||
@@ -771,6 +769,7 @@ func GenRuleFactory() android.Module {
|
|||||||
m := NewGenRule()
|
m := NewGenRule()
|
||||||
android.InitAndroidModule(m)
|
android.InitAndroidModule(m)
|
||||||
android.InitDefaultableModule(m)
|
android.InitDefaultableModule(m)
|
||||||
|
android.InitBazelModule(m)
|
||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -800,7 +799,7 @@ func BazelGenruleFactory() android.Module {
|
|||||||
|
|
||||||
func GenruleBp2Build(ctx android.TopDownMutatorContext) {
|
func GenruleBp2Build(ctx android.TopDownMutatorContext) {
|
||||||
m, ok := ctx.Module().(*Module)
|
m, ok := ctx.Module().(*Module)
|
||||||
if !ok || !m.properties.Bazel_module.Bp2build_available {
|
if !ok || !m.ConvertWithBp2build() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -84,9 +84,6 @@ type shBinaryProperties struct {
|
|||||||
|
|
||||||
// Make this module available when building for recovery.
|
// Make this module available when building for recovery.
|
||||||
Recovery_available *bool
|
Recovery_available *bool
|
||||||
|
|
||||||
// Properties for Bazel migration purposes.
|
|
||||||
bazel.Properties
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type TestProperties struct {
|
type TestProperties struct {
|
||||||
@@ -132,6 +129,7 @@ type TestProperties struct {
|
|||||||
|
|
||||||
type ShBinary struct {
|
type ShBinary struct {
|
||||||
android.ModuleBase
|
android.ModuleBase
|
||||||
|
android.BazelModuleBase
|
||||||
|
|
||||||
properties shBinaryProperties
|
properties shBinaryProperties
|
||||||
|
|
||||||
@@ -427,6 +425,7 @@ func (s *ShTest) AndroidMkEntries() []android.AndroidMkEntries {
|
|||||||
|
|
||||||
func InitShBinaryModule(s *ShBinary) {
|
func InitShBinaryModule(s *ShBinary) {
|
||||||
s.AddProperties(&s.properties)
|
s.AddProperties(&s.properties)
|
||||||
|
android.InitBazelModule(s)
|
||||||
}
|
}
|
||||||
|
|
||||||
// sh_binary is for a shell script or batch file to be installed as an
|
// 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) {
|
func ShBinaryBp2Build(ctx android.TopDownMutatorContext) {
|
||||||
m, ok := ctx.Module().(*ShBinary)
|
m, ok := ctx.Module().(*ShBinary)
|
||||||
if !ok || !m.properties.Bazel_module.Bp2build_available {
|
if !ok || !m.ConvertWithBp2build() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user