Allow Singletons to export Make variables
Register any Singletons that implement a MakeVars method as MakeVarsProviders, and convert the hiddenapi singleton to use it. Test: m checkbuild Change-Id: I6a2044ad34ef46a8b267762ddfeb51aa01d7734d
This commit is contained in:
@@ -90,6 +90,25 @@ func RegisterMakeVarsProvider(pctx PackageContext, provider MakeVarsProvider) {
|
||||
makeVarsProviders = append(makeVarsProviders, makeVarsProvider{pctx, provider})
|
||||
}
|
||||
|
||||
// SingletonMakeVarsProvider is a Singleton with an extra method to provide extra values to be exported to Make.
|
||||
type SingletonMakeVarsProvider interface {
|
||||
Singleton
|
||||
|
||||
// MakeVars uses a MakeVarsContext to provide extra values to be exported to Make.
|
||||
MakeVars(ctx MakeVarsContext)
|
||||
}
|
||||
|
||||
// registerSingletonMakeVarsProvider adds a singleton that implements SingletonMakeVarsProvider to the list of
|
||||
// MakeVarsProviders to run.
|
||||
func registerSingletonMakeVarsProvider(singleton SingletonMakeVarsProvider) {
|
||||
makeVarsProviders = append(makeVarsProviders, makeVarsProvider{pctx, SingletonmakeVarsProviderAdapter(singleton)})
|
||||
}
|
||||
|
||||
// SingletonmakeVarsProviderAdapter converts a SingletonMakeVarsProvider to a MakeVarsProvider.
|
||||
func SingletonmakeVarsProviderAdapter(singleton SingletonMakeVarsProvider) MakeVarsProvider {
|
||||
return func(ctx MakeVarsContext) { singleton.MakeVars(ctx) }
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
func makeVarsSingletonFunc() Singleton {
|
||||
|
@@ -58,6 +58,9 @@ type SingletonFactory func() Singleton
|
||||
func SingletonFactoryAdaptor(factory SingletonFactory) blueprint.SingletonFactory {
|
||||
return func() blueprint.Singleton {
|
||||
singleton := factory()
|
||||
if makevars, ok := singleton.(SingletonMakeVarsProvider); ok {
|
||||
registerSingletonMakeVarsProvider(makevars)
|
||||
}
|
||||
return singletonAdaptor{singleton}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user