diff options
author | Colin Cross <ccross@android.com> | 2015-06-17 14:20:06 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2015-07-09 17:57:18 -0700 |
commit | 463a90e5872d6c8cf26a2302e7ad1586957304a0 (patch) | |
tree | 3d8001008839eff93d224dc2411be26842a7f9ad /register.go | |
parent | 3fde0c220aa0c43ef125f0156d27499622b59b61 (diff) | |
download | build_soong-463a90e5872d6c8cf26a2302e7ad1586957304a0.tar.gz build_soong-463a90e5872d6c8cf26a2302e7ad1586957304a0.tar.bz2 build_soong-463a90e5872d6c8cf26a2302e7ad1586957304a0.zip |
use init functions to register module types, etc.
Instead of putting all the blueprint registrations in soong_build,
put them all in init() functions. This puts the registration next
to the implementation.
Change-Id: Ide1a749518f5e9d1367a18ab3bb1d91da3310c76
Diffstat (limited to 'register.go')
-rw-r--r-- | register.go | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/register.go b/register.go new file mode 100644 index 00000000..c35beae5 --- /dev/null +++ b/register.go @@ -0,0 +1,68 @@ +// Copyright 2015 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 soong + +import "github.com/google/blueprint" + +type moduleType struct { + name string + factory blueprint.ModuleFactory +} + +var moduleTypes []moduleType + +type singleton struct { + name string + factory blueprint.SingletonFactory +} + +var singletons []singleton + +type earlyMutator struct { + name string + mutator blueprint.EarlyMutator +} + +var earlyMutators []earlyMutator + +func RegisterModuleType(name string, factory blueprint.ModuleFactory) { + moduleTypes = append(moduleTypes, moduleType{name, factory}) +} + +func RegisterSingletonType(name string, factory blueprint.SingletonFactory) { + singletons = append(singletons, singleton{name, factory}) +} + +func RegisterEarlyMutator(name string, mutator blueprint.EarlyMutator) { + earlyMutators = append(earlyMutators, earlyMutator{name, mutator}) +} + +func NewContext() *blueprint.Context { + ctx := blueprint.NewContext() + + for _, t := range moduleTypes { + ctx.RegisterModuleType(t.name, t.factory) + } + + for _, t := range singletons { + ctx.RegisterSingletonType(t.name, t.factory) + } + + for _, t := range earlyMutators { + ctx.RegisterEarlyMutator(t.name, t.mutator) + } + + return ctx +} |