aboutsummaryrefslogtreecommitdiffstats
path: root/register.go
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2015-06-17 14:20:06 -0700
committerColin Cross <ccross@android.com>2015-07-09 17:57:18 -0700
commit463a90e5872d6c8cf26a2302e7ad1586957304a0 (patch)
tree3d8001008839eff93d224dc2411be26842a7f9ad /register.go
parent3fde0c220aa0c43ef125f0156d27499622b59b61 (diff)
downloadbuild_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.go68
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
+}