Make MakeVarsContext a PathContext am: 65494b962b am: e5bc0d6253

am: 1c15057b94

Change-Id: I3521fec124f35017812ed2c3faf9fb7e46f73a3a
This commit is contained in:
Colin Cross 2019-02-07 18:21:45 -08:00 committed by android-build-merger
commit 32fd5947ca
4 changed files with 35 additions and 22 deletions

View file

@ -22,6 +22,8 @@ import (
"strconv"
"strings"
"github.com/google/blueprint"
"github.com/google/blueprint/pathtools"
"github.com/google/blueprint/proptools"
)
@ -38,7 +40,21 @@ func androidMakeVarsProvider(ctx MakeVarsContext) {
type MakeVarsContext interface {
Config() Config
DeviceConfig() DeviceConfig
SingletonContext() SingletonContext
AddNinjaFileDeps(deps ...string)
Fs() pathtools.FileSystem
ModuleName(module blueprint.Module) string
ModuleDir(module blueprint.Module) string
ModuleSubDir(module blueprint.Module) string
ModuleType(module blueprint.Module) string
BlueprintFile(module blueprint.Module) string
ModuleErrorf(module blueprint.Module, format string, args ...interface{})
Errorf(format string, args ...interface{})
Failed() bool
VisitAllModules(visit func(Module))
VisitAllModulesIf(pred func(Module) bool, visit func(Module))
// Verify the make variable matches the Soong version, fail the build
// if it does not. If the make variable is empty, just set it.
@ -66,6 +82,8 @@ type MakeVarsContext interface {
CheckRaw(name, value string)
}
var _ PathContext = MakeVarsContext(nil)
type MakeVarsProvider func(ctx MakeVarsContext)
func RegisterMakeVarsProvider(pctx PackageContext, provider MakeVarsProvider) {
@ -92,8 +110,8 @@ type makeVarsProvider struct {
var makeVarsProviders []makeVarsProvider
type makeVarsContext struct {
SingletonContext
config Config
ctx SingletonContext
pctx PackageContext
vars []makeVarsVariable
}
@ -121,9 +139,8 @@ func (s *makeVarsSingleton) GenerateBuildActions(ctx SingletonContext) {
vars := []makeVarsVariable{}
for _, provider := range makeVarsProviders {
mctx := &makeVarsContext{
config: ctx.Config(),
ctx: ctx,
pctx: provider.pctx,
SingletonContext: ctx,
pctx: provider.pctx,
}
provider.call(mctx)
@ -229,22 +246,14 @@ my_check_failed :=
return buf.Bytes()
}
func (c *makeVarsContext) Config() Config {
return c.config
}
func (c *makeVarsContext) DeviceConfig() DeviceConfig {
return DeviceConfig{c.config.deviceConfig}
}
func (c *makeVarsContext) SingletonContext() SingletonContext {
return c.ctx
return DeviceConfig{c.Config().deviceConfig}
}
var ninjaDescaper = strings.NewReplacer("$$", "$")
func (c *makeVarsContext) Eval(ninjaStr string) (string, error) {
s, err := c.ctx.Eval(c.pctx, ninjaStr)
s, err := c.SingletonContext.Eval(c.pctx, ninjaStr)
if err != nil {
return "", err
}
@ -265,7 +274,7 @@ func (c *makeVarsContext) addVariableRaw(name, value string, strict, sort bool)
func (c *makeVarsContext) addVariable(name, ninjaStr string, strict, sort bool) {
value, err := c.Eval(ninjaStr)
if err != nil {
c.ctx.Errorf(err.Error())
c.SingletonContext.Errorf(err.Error())
}
c.addVariableRaw(name, value, strict, sort)
}

View file

@ -22,6 +22,7 @@ import (
// SingletonContext
type SingletonContext interface {
Config() Config
DeviceConfig() DeviceConfig
ModuleName(module blueprint.Module) string
ModuleDir(module blueprint.Module) string
@ -93,6 +94,10 @@ func (s singletonContextAdaptor) Config() Config {
return s.SingletonContext.Config().(Config)
}
func (s singletonContextAdaptor) DeviceConfig() DeviceConfig {
return DeviceConfig{s.Config().deviceConfig}
}
func (s singletonContextAdaptor) Variable(pctx PackageContext, name, value string) {
s.SingletonContext.Variable(pctx.PackageContext, name, value)
}

View file

@ -100,7 +100,7 @@ func makeVarsProvider(ctx android.MakeVarsContext) {
// Filter vendor_public_library that are exported to make
exportedVendorPublicLibraries := []string{}
ctx.SingletonContext().VisitAllModules(func(module android.Module) {
ctx.VisitAllModules(func(module android.Module) {
if ccModule, ok := module.(*Module); ok {
baseName := ccModule.BaseModuleName()
if inList(baseName, vendorPublicLibraries) && module.ExportedToMake() {

View file

@ -28,9 +28,8 @@ func init() {
func supportLibrariesMakeVarsProvider(ctx android.MakeVarsContext) {
var supportAars, supportJars []string
sctx := ctx.SingletonContext()
sctx.VisitAllModules(func(module android.Module) {
dir := sctx.ModuleDir(module)
ctx.VisitAllModules(func(module android.Module) {
dir := ctx.ModuleDir(module)
switch {
case strings.HasPrefix(dir, "prebuilts/sdk/current/extras"),
dir == "prebuilts/sdk/current/androidx",
@ -43,7 +42,7 @@ func supportLibrariesMakeVarsProvider(ctx android.MakeVarsContext) {
return
}
name := sctx.ModuleName(module)
name := ctx.ModuleName(module)
if strings.HasSuffix(name, "-nodeps") {
return
}
@ -54,7 +53,7 @@ func supportLibrariesMakeVarsProvider(ctx android.MakeVarsContext) {
case *Library, *Import:
supportJars = append(supportJars, name)
default:
sctx.ModuleErrorf(module, "unknown module type %t", module)
ctx.ModuleErrorf(module, "unknown module type %t", module)
}
})