bp2build: framework for generating BazelTargetModules.
This CL creates the framework necessary for generating BazelTargetModules from regular Soong Android modules. BazelTargetModules are code-generated into Bazel targets in BUILD files. See the follow-up CL for examples of creating filegroup/genrule BazelTargetModules. Test: GENERATE_BAZEL_FILES=true m nothing # creates out/soong/bp2build with no BUILD files, because there are no BazelTargetModules in the module graph. Change-Id: I33a96365bd439043b13af6db9e439592e9983188
This commit is contained in:
@@ -57,6 +57,7 @@ func NewTestArchContext(config Config) *TestContext {
|
||||
type TestContext struct {
|
||||
*Context
|
||||
preArch, preDeps, postDeps, finalDeps []RegisterMutatorFunc
|
||||
bp2buildMutators []RegisterMutatorFunc
|
||||
NameResolver *NameResolver
|
||||
}
|
||||
|
||||
@@ -81,12 +82,27 @@ func (ctx *TestContext) FinalDepsMutators(f RegisterMutatorFunc) {
|
||||
ctx.finalDeps = append(ctx.finalDeps, f)
|
||||
}
|
||||
|
||||
// RegisterBp2BuildMutator registers a BazelTargetModule mutator for converting a module
|
||||
// type to the equivalent Bazel target.
|
||||
func (ctx *TestContext) RegisterBp2BuildMutator(moduleType string, m func(TopDownMutatorContext)) {
|
||||
mutatorName := moduleType + "_bp2build"
|
||||
f := func(ctx RegisterMutatorsContext) {
|
||||
ctx.TopDown(mutatorName, m)
|
||||
}
|
||||
bp2buildMutators = append(bp2buildMutators, f)
|
||||
}
|
||||
|
||||
func (ctx *TestContext) Register() {
|
||||
registerMutators(ctx.Context.Context, ctx.preArch, ctx.preDeps, ctx.postDeps, ctx.finalDeps)
|
||||
|
||||
ctx.RegisterSingletonType("env", EnvSingleton)
|
||||
}
|
||||
|
||||
// RegisterForBazelConversion prepares a test context for bp2build conversion.
|
||||
func (ctx *TestContext) RegisterForBazelConversion() {
|
||||
RegisterMutatorsForBazelConversion(ctx.Context.Context, bp2buildMutators)
|
||||
}
|
||||
|
||||
func (ctx *TestContext) ParseFileList(rootDir string, filePaths []string) (deps []string, errs []error) {
|
||||
// This function adapts the old style ParseFileList calls that are spread throughout the tests
|
||||
// to the new style that takes a config.
|
||||
|
Reference in New Issue
Block a user