Loading android/mutator.go +59 −23 Original line number Diff line number Diff line Loading @@ -14,7 +14,11 @@ package android import "github.com/google/blueprint" import ( "sync" "github.com/google/blueprint" ) // Mutator phases: // Pre-arch Loading @@ -23,8 +27,27 @@ import "github.com/google/blueprint" // Deps // PostDeps func registerMutators() { ctx := registerMutatorsContext{} var registerMutatorsOnce sync.Once var registeredMutators []*mutator func registerMutatorsToContext(ctx *blueprint.Context, mutators []*mutator) { for _, t := range mutators { var handle blueprint.MutatorHandle if t.bottomUpMutator != nil { handle = ctx.RegisterBottomUpMutator(t.name, t.bottomUpMutator) } else if t.topDownMutator != nil { handle = ctx.RegisterTopDownMutator(t.name, t.topDownMutator) } if t.parallel { handle.Parallel() } } } func registerMutators(ctx *blueprint.Context) { registerMutatorsOnce.Do(func() { ctx := ®isterMutatorsContext{} register := func(funcs []RegisterMutatorFunc) { for _, f := range funcs { Loading @@ -50,9 +73,22 @@ func registerMutators() { ctx.BottomUp("prebuilt_replace", PrebuiltReplaceMutator).Parallel() register(postDeps) registeredMutators = ctx.mutators }) registerMutatorsToContext(ctx, registeredMutators) } type registerMutatorsContext struct{} func RegisterTestMutators(ctx *blueprint.Context) { mutators := registerMutatorsContext{} mutators.BottomUp("deps", depsMutator).Parallel() registerMutatorsToContext(ctx, mutators.mutators) } type registerMutatorsContext struct { mutators []*mutator } type RegisterMutatorsContext interface { TopDown(name string, m AndroidTopDownMutator) MutatorHandle Loading Loading @@ -99,7 +135,7 @@ type androidBottomUpMutatorContext struct { androidBaseContextImpl } func (registerMutatorsContext) BottomUp(name string, m AndroidBottomUpMutator) MutatorHandle { func (x *registerMutatorsContext) BottomUp(name string, m AndroidBottomUpMutator) MutatorHandle { f := func(ctx blueprint.BottomUpMutatorContext) { if a, ok := ctx.Module().(Module); ok { actx := &androidBottomUpMutatorContext{ Loading @@ -110,11 +146,11 @@ func (registerMutatorsContext) BottomUp(name string, m AndroidBottomUpMutator) M } } mutator := &mutator{name: name, bottomUpMutator: f} mutators = append(mutators, mutator) x.mutators = append(x.mutators, mutator) return mutator } func (registerMutatorsContext) TopDown(name string, m AndroidTopDownMutator) MutatorHandle { func (x *registerMutatorsContext) TopDown(name string, m AndroidTopDownMutator) MutatorHandle { f := func(ctx blueprint.TopDownMutatorContext) { if a, ok := ctx.Module().(Module); ok { actx := &androidTopDownMutatorContext{ Loading @@ -125,7 +161,7 @@ func (registerMutatorsContext) TopDown(name string, m AndroidTopDownMutator) Mut } } mutator := &mutator{name: name, topDownMutator: f} mutators = append(mutators, mutator) x.mutators = append(x.mutators, mutator) return mutator } Loading android/register.go +2 −17 Original line number Diff line number Diff line Loading @@ -15,8 +15,6 @@ package android import ( "sync" "github.com/google/blueprint" ) Loading Loading @@ -51,8 +49,6 @@ func RegisterSingletonType(name string, factory blueprint.SingletonFactory) { singletons = append(singletons, singleton{name, factory}) } var registerMutatorsOnce sync.Once func NewContext() *blueprint.Context { ctx := blueprint.NewContext() Loading @@ -64,19 +60,8 @@ func NewContext() *blueprint.Context { ctx.RegisterSingletonType(t.name, t.factory) } registerMutatorsOnce.Do(registerMutators) registerMutators(ctx) for _, t := range mutators { var handle blueprint.MutatorHandle if t.bottomUpMutator != nil { handle = ctx.RegisterBottomUpMutator(t.name, t.bottomUpMutator) } else if t.topDownMutator != nil { handle = ctx.RegisterTopDownMutator(t.name, t.topDownMutator) } if t.parallel { handle.Parallel() } } ctx.RegisterSingletonType("env", EnvSingleton) return ctx Loading cc/test_data_test.go +5 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,8 @@ import ( "testing" "android/soong/android" "android/soong/genrule" "github.com/google/blueprint" ) Loading Loading @@ -121,13 +123,15 @@ func TestDataTests(t *testing.T) { for _, test := range testDataTests { t.Run(test.name, func(t *testing.T) { ctx := android.NewContext() ctx := blueprint.NewContext() android.RegisterTestMutators(ctx) ctx.MockFileSystem(map[string][]byte{ "Blueprints": []byte(`subdirs = ["dir"]`), "dir/Blueprints": []byte(test.modules), "dir/baz": nil, "dir/bar/baz": nil, }) ctx.RegisterModuleType("filegroup", genrule.FileGroupFactory) ctx.RegisterModuleType("test", newTest) _, errs := ctx.ParseBlueprintsFiles("Blueprints") Loading genrule/filegroup.go +2 −2 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ import ( ) func init() { android.RegisterModuleType("filegroup", fileGroupFactory) android.RegisterModuleType("filegroup", FileGroupFactory) } type fileGroupProperties struct { Loading @@ -48,7 +48,7 @@ var _ android.SourceFileProducer = (*fileGroup)(nil) // filegroup modules contain a list of files, and can be used to export files across package // boundaries. filegroups (and genrules) can be referenced from srcs properties of other modules // using the syntax ":module". func fileGroupFactory() (blueprint.Module, []interface{}) { func FileGroupFactory() (blueprint.Module, []interface{}) { module := &fileGroup{} return android.InitAndroidModule(module, &module.properties) Loading Loading
android/mutator.go +59 −23 Original line number Diff line number Diff line Loading @@ -14,7 +14,11 @@ package android import "github.com/google/blueprint" import ( "sync" "github.com/google/blueprint" ) // Mutator phases: // Pre-arch Loading @@ -23,8 +27,27 @@ import "github.com/google/blueprint" // Deps // PostDeps func registerMutators() { ctx := registerMutatorsContext{} var registerMutatorsOnce sync.Once var registeredMutators []*mutator func registerMutatorsToContext(ctx *blueprint.Context, mutators []*mutator) { for _, t := range mutators { var handle blueprint.MutatorHandle if t.bottomUpMutator != nil { handle = ctx.RegisterBottomUpMutator(t.name, t.bottomUpMutator) } else if t.topDownMutator != nil { handle = ctx.RegisterTopDownMutator(t.name, t.topDownMutator) } if t.parallel { handle.Parallel() } } } func registerMutators(ctx *blueprint.Context) { registerMutatorsOnce.Do(func() { ctx := ®isterMutatorsContext{} register := func(funcs []RegisterMutatorFunc) { for _, f := range funcs { Loading @@ -50,9 +73,22 @@ func registerMutators() { ctx.BottomUp("prebuilt_replace", PrebuiltReplaceMutator).Parallel() register(postDeps) registeredMutators = ctx.mutators }) registerMutatorsToContext(ctx, registeredMutators) } type registerMutatorsContext struct{} func RegisterTestMutators(ctx *blueprint.Context) { mutators := registerMutatorsContext{} mutators.BottomUp("deps", depsMutator).Parallel() registerMutatorsToContext(ctx, mutators.mutators) } type registerMutatorsContext struct { mutators []*mutator } type RegisterMutatorsContext interface { TopDown(name string, m AndroidTopDownMutator) MutatorHandle Loading Loading @@ -99,7 +135,7 @@ type androidBottomUpMutatorContext struct { androidBaseContextImpl } func (registerMutatorsContext) BottomUp(name string, m AndroidBottomUpMutator) MutatorHandle { func (x *registerMutatorsContext) BottomUp(name string, m AndroidBottomUpMutator) MutatorHandle { f := func(ctx blueprint.BottomUpMutatorContext) { if a, ok := ctx.Module().(Module); ok { actx := &androidBottomUpMutatorContext{ Loading @@ -110,11 +146,11 @@ func (registerMutatorsContext) BottomUp(name string, m AndroidBottomUpMutator) M } } mutator := &mutator{name: name, bottomUpMutator: f} mutators = append(mutators, mutator) x.mutators = append(x.mutators, mutator) return mutator } func (registerMutatorsContext) TopDown(name string, m AndroidTopDownMutator) MutatorHandle { func (x *registerMutatorsContext) TopDown(name string, m AndroidTopDownMutator) MutatorHandle { f := func(ctx blueprint.TopDownMutatorContext) { if a, ok := ctx.Module().(Module); ok { actx := &androidTopDownMutatorContext{ Loading @@ -125,7 +161,7 @@ func (registerMutatorsContext) TopDown(name string, m AndroidTopDownMutator) Mut } } mutator := &mutator{name: name, topDownMutator: f} mutators = append(mutators, mutator) x.mutators = append(x.mutators, mutator) return mutator } Loading
android/register.go +2 −17 Original line number Diff line number Diff line Loading @@ -15,8 +15,6 @@ package android import ( "sync" "github.com/google/blueprint" ) Loading Loading @@ -51,8 +49,6 @@ func RegisterSingletonType(name string, factory blueprint.SingletonFactory) { singletons = append(singletons, singleton{name, factory}) } var registerMutatorsOnce sync.Once func NewContext() *blueprint.Context { ctx := blueprint.NewContext() Loading @@ -64,19 +60,8 @@ func NewContext() *blueprint.Context { ctx.RegisterSingletonType(t.name, t.factory) } registerMutatorsOnce.Do(registerMutators) registerMutators(ctx) for _, t := range mutators { var handle blueprint.MutatorHandle if t.bottomUpMutator != nil { handle = ctx.RegisterBottomUpMutator(t.name, t.bottomUpMutator) } else if t.topDownMutator != nil { handle = ctx.RegisterTopDownMutator(t.name, t.topDownMutator) } if t.parallel { handle.Parallel() } } ctx.RegisterSingletonType("env", EnvSingleton) return ctx Loading
cc/test_data_test.go +5 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,8 @@ import ( "testing" "android/soong/android" "android/soong/genrule" "github.com/google/blueprint" ) Loading Loading @@ -121,13 +123,15 @@ func TestDataTests(t *testing.T) { for _, test := range testDataTests { t.Run(test.name, func(t *testing.T) { ctx := android.NewContext() ctx := blueprint.NewContext() android.RegisterTestMutators(ctx) ctx.MockFileSystem(map[string][]byte{ "Blueprints": []byte(`subdirs = ["dir"]`), "dir/Blueprints": []byte(test.modules), "dir/baz": nil, "dir/bar/baz": nil, }) ctx.RegisterModuleType("filegroup", genrule.FileGroupFactory) ctx.RegisterModuleType("test", newTest) _, errs := ctx.ParseBlueprintsFiles("Blueprints") Loading
genrule/filegroup.go +2 −2 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ import ( ) func init() { android.RegisterModuleType("filegroup", fileGroupFactory) android.RegisterModuleType("filegroup", FileGroupFactory) } type fileGroupProperties struct { Loading @@ -48,7 +48,7 @@ var _ android.SourceFileProducer = (*fileGroup)(nil) // filegroup modules contain a list of files, and can be used to export files across package // boundaries. filegroups (and genrules) can be referenced from srcs properties of other modules // using the syntax ":module". func fileGroupFactory() (blueprint.Module, []interface{}) { func FileGroupFactory() (blueprint.Module, []interface{}) { module := &fileGroup{} return android.InitAndroidModule(module, &module.properties) Loading