Make MakeVarsContext a PathContext am: 65494b962b
am: e5bc0d6253
am: 1c15057b94
Change-Id: I3521fec124f35017812ed2c3faf9fb7e46f73a3a
This commit is contained in:
commit
32fd5947ca
4 changed files with 35 additions and 22 deletions
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
})
|
||||
|
||||
|
|
Loading…
Reference in a new issue