Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 65494b96 authored by Colin Cross's avatar Colin Cross
Browse files

Make MakeVarsContext a PathContext

Expose all of SingletonContext to makeVarsContext, and then export
the subset of it that is used through MakeVarsContext.SingletonContext,
plus what is necessary for PathContext, directly through
MakeVarsContext.

Test: m checkbuild
Change-Id: Ie00f36e577fe110b6fa03b901da489d8547773c6
parent 7cf14099
Loading
Loading
Loading
Loading
+25 −16
Original line number Diff line number Diff line
@@ -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,8 +139,7 @@ func (s *makeVarsSingleton) GenerateBuildActions(ctx SingletonContext) {
	vars := []makeVarsVariable{}
	for _, provider := range makeVarsProviders {
		mctx := &makeVarsContext{
			config: ctx.Config(),
			ctx:    ctx,
			SingletonContext: ctx,
			pctx:             provider.pctx,
		}

@@ -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)
}
+5 −0
Original line number Diff line number Diff line
@@ -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)
}
+1 −1
Original line number Diff line number Diff line
@@ -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() {
+4 −5
Original line number Diff line number Diff line
@@ -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)
		}
	})