Pass DepsContext to dependency methods

Pass a DepsContext that embeds android.BottomUpMutatorContext
instead of android.BaseContext so that dependency methods can
directly add dependencies.

Test: m -j
Change-Id: Id4c157975d3d6f03efd99785d217bef486a76139
diff --git a/cc/cc.go b/cc/cc.go
index 3fc694f..74d3d3d 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -171,16 +171,21 @@
 	ModuleContextIntf
 }
 
+type DepsContext interface {
+	android.BottomUpMutatorContext
+	ModuleContextIntf
+}
+
 type feature interface {
 	begin(ctx BaseModuleContext)
-	deps(ctx BaseModuleContext, deps Deps) Deps
+	deps(ctx DepsContext, deps Deps) Deps
 	flags(ctx ModuleContext, flags Flags) Flags
 	props() []interface{}
 }
 
 type compiler interface {
 	compilerInit(ctx BaseModuleContext)
-	compilerDeps(ctx BaseModuleContext, deps Deps) Deps
+	compilerDeps(ctx DepsContext, deps Deps) Deps
 	compilerFlags(ctx ModuleContext, flags Flags) Flags
 	compilerProps() []interface{}
 
@@ -191,7 +196,7 @@
 
 type linker interface {
 	linkerInit(ctx BaseModuleContext)
-	linkerDeps(ctx BaseModuleContext, deps Deps) Deps
+	linkerDeps(ctx DepsContext, deps Deps) Deps
 	linkerFlags(ctx ModuleContext, flags Flags) Flags
 	linkerProps() []interface{}
 
@@ -307,6 +312,11 @@
 	moduleContextImpl
 }
 
+type depsContext struct {
+	android.BottomUpMutatorContext
+	moduleContextImpl
+}
+
 type moduleContext struct {
 	android.ModuleContext
 	moduleContextImpl
@@ -534,7 +544,7 @@
 	}
 }
 
-func (c *Module) deps(ctx BaseModuleContext) Deps {
+func (c *Module) deps(ctx DepsContext) Deps {
 	deps := Deps{}
 
 	if c.compiler != nil {
@@ -604,8 +614,8 @@
 		return
 	}
 
-	ctx := &baseModuleContext{
-		BaseContext: actx,
+	ctx := &depsContext{
+		BottomUpMutatorContext: actx,
 		moduleContextImpl: moduleContextImpl{
 			mod: c,
 		},