Refactor factories
Change module factories from returning a blueprint.Module and a list of property structs to returning an android.Module, which holds the list of property structs. Test: build.ninja identical except for Factory: comment lines Change-Id: Ica1d823f009db812c518f271a386fbff39c9766f
This commit is contained in:
@@ -17,7 +17,6 @@ package cc
|
||||
import (
|
||||
"path/filepath"
|
||||
|
||||
"github.com/google/blueprint"
|
||||
"github.com/google/blueprint/proptools"
|
||||
|
||||
"android/soong/android"
|
||||
@@ -55,13 +54,13 @@ func init() {
|
||||
}
|
||||
|
||||
// Module factory for binaries
|
||||
func binaryFactory() (blueprint.Module, []interface{}) {
|
||||
func binaryFactory() android.Module {
|
||||
module, _ := NewBinary(android.HostAndDeviceSupported)
|
||||
return module.Init()
|
||||
}
|
||||
|
||||
// Module factory for host binaries
|
||||
func binaryHostFactory() (blueprint.Module, []interface{}) {
|
||||
func binaryHostFactory() android.Module {
|
||||
module, _ := NewBinary(android.HostSupported)
|
||||
return module.Init()
|
||||
}
|
||||
|
37
cc/cc.go
37
cc/cc.go
@@ -304,36 +304,38 @@ type Module struct {
|
||||
flags Flags
|
||||
}
|
||||
|
||||
func (c *Module) Init() (blueprint.Module, []interface{}) {
|
||||
props := []interface{}{&c.Properties, &c.unused}
|
||||
func (c *Module) Init() android.Module {
|
||||
c.AddProperties(&c.Properties, &c.unused)
|
||||
if c.compiler != nil {
|
||||
props = append(props, c.compiler.compilerProps()...)
|
||||
c.AddProperties(c.compiler.compilerProps()...)
|
||||
}
|
||||
if c.linker != nil {
|
||||
props = append(props, c.linker.linkerProps()...)
|
||||
c.AddProperties(c.linker.linkerProps()...)
|
||||
}
|
||||
if c.installer != nil {
|
||||
props = append(props, c.installer.installerProps()...)
|
||||
c.AddProperties(c.installer.installerProps()...)
|
||||
}
|
||||
if c.stl != nil {
|
||||
props = append(props, c.stl.props()...)
|
||||
c.AddProperties(c.stl.props()...)
|
||||
}
|
||||
if c.sanitize != nil {
|
||||
props = append(props, c.sanitize.props()...)
|
||||
c.AddProperties(c.sanitize.props()...)
|
||||
}
|
||||
if c.coverage != nil {
|
||||
props = append(props, c.coverage.props()...)
|
||||
c.AddProperties(c.coverage.props()...)
|
||||
}
|
||||
if c.sabi != nil {
|
||||
props = append(props, c.sabi.props()...)
|
||||
c.AddProperties(c.sabi.props()...)
|
||||
}
|
||||
for _, feature := range c.features {
|
||||
props = append(props, feature.props()...)
|
||||
c.AddProperties(feature.props()...)
|
||||
}
|
||||
|
||||
_, props = android.InitAndroidArchModule(c, c.hod, c.multilib, props...)
|
||||
android.InitAndroidArchModule(c, c.hod, c.multilib)
|
||||
|
||||
return android.InitDefaultableModule(c, c, props...)
|
||||
android.InitDefaultableModule(c, c)
|
||||
|
||||
return c
|
||||
}
|
||||
|
||||
// Returns true for dependency roots (binaries)
|
||||
@@ -1108,14 +1110,15 @@ func (*Defaults) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
func (d *Defaults) DepsMutator(ctx android.BottomUpMutatorContext) {
|
||||
}
|
||||
|
||||
func defaultsFactory() (blueprint.Module, []interface{}) {
|
||||
func defaultsFactory() android.Module {
|
||||
return DefaultsFactory()
|
||||
}
|
||||
|
||||
func DefaultsFactory(props ...interface{}) (blueprint.Module, []interface{}) {
|
||||
func DefaultsFactory(props ...interface{}) android.Module {
|
||||
module := &Defaults{}
|
||||
|
||||
props = append(props,
|
||||
module.AddProperties(props...)
|
||||
module.AddProperties(
|
||||
&BaseProperties{},
|
||||
&BaseCompilerProperties{},
|
||||
&BaseLinkerProperties{},
|
||||
@@ -1134,7 +1137,9 @@ func DefaultsFactory(props ...interface{}) (blueprint.Module, []interface{}) {
|
||||
&SAbiProperties{},
|
||||
)
|
||||
|
||||
return android.InitDefaultsModule(module, module, props...)
|
||||
android.InitDefaultsModule(module, module)
|
||||
|
||||
return module
|
||||
}
|
||||
|
||||
const (
|
||||
|
@@ -16,6 +16,7 @@ package cc
|
||||
|
||||
import (
|
||||
"android/soong/android"
|
||||
|
||||
"github.com/google/blueprint"
|
||||
)
|
||||
|
||||
|
@@ -108,41 +108,41 @@ func init() {
|
||||
|
||||
// Module factory for combined static + shared libraries, device by default but with possible host
|
||||
// support
|
||||
func libraryFactory() (blueprint.Module, []interface{}) {
|
||||
func libraryFactory() android.Module {
|
||||
module, _ := NewLibrary(android.HostAndDeviceSupported)
|
||||
return module.Init()
|
||||
}
|
||||
|
||||
// Module factory for static libraries
|
||||
func libraryStaticFactory() (blueprint.Module, []interface{}) {
|
||||
func libraryStaticFactory() android.Module {
|
||||
module, library := NewLibrary(android.HostAndDeviceSupported)
|
||||
library.BuildOnlyStatic()
|
||||
return module.Init()
|
||||
}
|
||||
|
||||
// Module factory for shared libraries
|
||||
func librarySharedFactory() (blueprint.Module, []interface{}) {
|
||||
func librarySharedFactory() android.Module {
|
||||
module, library := NewLibrary(android.HostAndDeviceSupported)
|
||||
library.BuildOnlyShared()
|
||||
return module.Init()
|
||||
}
|
||||
|
||||
// Module factory for host static libraries
|
||||
func libraryHostStaticFactory() (blueprint.Module, []interface{}) {
|
||||
func libraryHostStaticFactory() android.Module {
|
||||
module, library := NewLibrary(android.HostSupported)
|
||||
library.BuildOnlyStatic()
|
||||
return module.Init()
|
||||
}
|
||||
|
||||
// Module factory for host shared libraries
|
||||
func libraryHostSharedFactory() (blueprint.Module, []interface{}) {
|
||||
func libraryHostSharedFactory() android.Module {
|
||||
module, library := NewLibrary(android.HostSupported)
|
||||
library.BuildOnlyShared()
|
||||
return module.Init()
|
||||
}
|
||||
|
||||
// Module factory for header-only libraries
|
||||
func libraryHeaderFactory() (blueprint.Module, []interface{}) {
|
||||
func libraryHeaderFactory() android.Module {
|
||||
module, library := NewLibrary(android.HostAndDeviceSupported)
|
||||
library.HeaderOnly()
|
||||
return module.Init()
|
||||
|
@@ -18,8 +18,6 @@ import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/google/blueprint"
|
||||
|
||||
"android/soong/android"
|
||||
)
|
||||
|
||||
@@ -136,7 +134,7 @@ func (stub *llndkStubDecorator) link(ctx ModuleContext, flags Flags, deps PathDe
|
||||
return stub.libraryDecorator.link(ctx, flags, deps, objs)
|
||||
}
|
||||
|
||||
func newLLndkStubLibrary() (*Module, []interface{}) {
|
||||
func newLLndkStubLibrary() *Module {
|
||||
module, library := NewLibrary(android.DeviceSupported)
|
||||
library.BuildOnlyShared()
|
||||
module.stl = nil
|
||||
@@ -150,13 +148,18 @@ func newLLndkStubLibrary() (*Module, []interface{}) {
|
||||
module.linker = stub
|
||||
module.installer = nil
|
||||
|
||||
return module, []interface{}{&stub.Properties, &library.MutatedProperties, &library.flagExporter.Properties}
|
||||
module.AddProperties(
|
||||
&stub.Properties,
|
||||
&library.MutatedProperties,
|
||||
&library.flagExporter.Properties)
|
||||
|
||||
return module
|
||||
}
|
||||
|
||||
func llndkLibraryFactory() (blueprint.Module, []interface{}) {
|
||||
module, properties := newLLndkStubLibrary()
|
||||
return android.InitAndroidArchModule(module, android.DeviceSupported,
|
||||
android.MultilibBoth, properties...)
|
||||
func llndkLibraryFactory() android.Module {
|
||||
module := newLLndkStubLibrary()
|
||||
android.InitAndroidArchModule(module, android.DeviceSupported, android.MultilibBoth)
|
||||
return module
|
||||
}
|
||||
|
||||
func init() {
|
||||
|
@@ -137,9 +137,11 @@ func (m *headerModule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
}
|
||||
}
|
||||
|
||||
func ndkHeadersFactory() (blueprint.Module, []interface{}) {
|
||||
func ndkHeadersFactory() android.Module {
|
||||
module := &headerModule{}
|
||||
return android.InitAndroidModule(module, &module.properties)
|
||||
module.AddProperties(&module.properties)
|
||||
android.InitAndroidModule(module)
|
||||
return module
|
||||
}
|
||||
|
||||
type preprocessedHeaderProperies struct {
|
||||
@@ -251,12 +253,16 @@ func processHeadersWithVersioner(ctx android.ModuleContext, srcDir, outDir andro
|
||||
return timestampFile
|
||||
}
|
||||
|
||||
func preprocessedNdkHeadersFactory() (blueprint.Module, []interface{}) {
|
||||
func preprocessedNdkHeadersFactory() android.Module {
|
||||
module := &preprocessedHeaderModule{}
|
||||
|
||||
module.AddProperties(&module.properties)
|
||||
|
||||
// Host module rather than device module because device module install steps
|
||||
// do not get run when embedded in make. We're not any of the existing
|
||||
// module types that can be exposed via the Android.mk exporter, so just use
|
||||
// a host module.
|
||||
return android.InitAndroidArchModule(module, android.HostSupportedNoCross,
|
||||
android.MultilibFirst, &module.properties)
|
||||
android.InitAndroidArchModule(module, android.HostSupportedNoCross, android.MultilibFirst)
|
||||
|
||||
return module
|
||||
}
|
||||
|
@@ -335,7 +335,7 @@ func (stub *stubDecorator) install(ctx ModuleContext, path android.Path) {
|
||||
stub.installPath = ctx.InstallFile(installDir, path).String()
|
||||
}
|
||||
|
||||
func newStubLibrary() (*Module, []interface{}) {
|
||||
func newStubLibrary() *Module {
|
||||
module, library := NewLibrary(android.DeviceSupported)
|
||||
library.BuildOnlyShared()
|
||||
module.stl = nil
|
||||
@@ -349,11 +349,13 @@ func newStubLibrary() (*Module, []interface{}) {
|
||||
module.linker = stub
|
||||
module.installer = stub
|
||||
|
||||
return module, []interface{}{&stub.properties, &library.MutatedProperties}
|
||||
module.AddProperties(&stub.properties, &library.MutatedProperties)
|
||||
|
||||
return module
|
||||
}
|
||||
|
||||
func ndkLibraryFactory() (blueprint.Module, []interface{}) {
|
||||
module, properties := newStubLibrary()
|
||||
return android.InitAndroidArchModule(module, android.DeviceSupported,
|
||||
android.MultilibBoth, properties...)
|
||||
func ndkLibraryFactory() android.Module {
|
||||
module := newStubLibrary()
|
||||
android.InitAndroidArchModule(module, android.DeviceSupported, android.MultilibBoth)
|
||||
return module
|
||||
}
|
||||
|
@@ -18,8 +18,6 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/google/blueprint"
|
||||
|
||||
"android/soong/android"
|
||||
"android/soong/cc/config"
|
||||
)
|
||||
@@ -67,7 +65,7 @@ func (*ndkPrebuiltObjectLinker) linkerDeps(ctx DepsContext, deps Deps) Deps {
|
||||
return deps
|
||||
}
|
||||
|
||||
func ndkPrebuiltObjectFactory() (blueprint.Module, []interface{}) {
|
||||
func ndkPrebuiltObjectFactory() android.Module {
|
||||
module := newBaseModule(android.DeviceSupported, android.MultilibBoth)
|
||||
module.linker = &ndkPrebuiltObjectLinker{
|
||||
objectLinker: objectLinker{
|
||||
@@ -101,7 +99,7 @@ func (*ndkPrebuiltLibraryLinker) linkerDeps(ctx DepsContext, deps Deps) Deps {
|
||||
return deps
|
||||
}
|
||||
|
||||
func ndkPrebuiltLibraryFactory() (blueprint.Module, []interface{}) {
|
||||
func ndkPrebuiltLibraryFactory() android.Module {
|
||||
module, library := NewLibrary(android.DeviceSupported)
|
||||
library.BuildOnlyShared()
|
||||
linker := &ndkPrebuiltLibraryLinker{
|
||||
@@ -132,7 +130,7 @@ type ndkPrebuiltStlLinker struct {
|
||||
ndkPrebuiltLibraryLinker
|
||||
}
|
||||
|
||||
func ndkPrebuiltSharedStlFactory() (blueprint.Module, []interface{}) {
|
||||
func ndkPrebuiltSharedStlFactory() android.Module {
|
||||
module, library := NewLibrary(android.DeviceSupported)
|
||||
library.BuildOnlyShared()
|
||||
linker := &ndkPrebuiltStlLinker{
|
||||
@@ -147,7 +145,7 @@ func ndkPrebuiltSharedStlFactory() (blueprint.Module, []interface{}) {
|
||||
return module.Init()
|
||||
}
|
||||
|
||||
func ndkPrebuiltStaticStlFactory() (blueprint.Module, []interface{}) {
|
||||
func ndkPrebuiltStaticStlFactory() android.Module {
|
||||
module, library := NewLibrary(android.DeviceSupported)
|
||||
library.BuildOnlyStatic()
|
||||
linker := &ndkPrebuiltStlLinker{
|
||||
|
@@ -17,8 +17,6 @@ package cc
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/google/blueprint"
|
||||
|
||||
"android/soong/android"
|
||||
)
|
||||
|
||||
@@ -35,7 +33,7 @@ type objectLinker struct {
|
||||
Properties ObjectLinkerProperties
|
||||
}
|
||||
|
||||
func objectFactory() (blueprint.Module, []interface{}) {
|
||||
func objectFactory() android.Module {
|
||||
module := newBaseModule(android.HostAndDeviceSupported, android.MultilibBoth)
|
||||
module.linker = &objectLinker{
|
||||
baseLinker: NewBaseLinker(),
|
||||
|
@@ -16,8 +16,6 @@ package cc
|
||||
|
||||
import (
|
||||
"android/soong/android"
|
||||
|
||||
"github.com/google/blueprint"
|
||||
)
|
||||
|
||||
func init() {
|
||||
@@ -65,7 +63,7 @@ func (p *prebuiltLibraryLinker) link(ctx ModuleContext,
|
||||
return nil
|
||||
}
|
||||
|
||||
func prebuiltSharedLibraryFactory() (blueprint.Module, []interface{}) {
|
||||
func prebuiltSharedLibraryFactory() android.Module {
|
||||
module, _ := NewPrebuiltSharedLibrary(android.HostAndDeviceSupported)
|
||||
return module.Init()
|
||||
}
|
||||
@@ -83,7 +81,7 @@ func NewPrebuiltSharedLibrary(hod android.HostOrDeviceSupported) (*Module, *libr
|
||||
return module, library
|
||||
}
|
||||
|
||||
func prebuiltStaticLibraryFactory() (blueprint.Module, []interface{}) {
|
||||
func prebuiltStaticLibraryFactory() android.Module {
|
||||
module, _ := NewPrebuiltStaticLibrary(android.HostAndDeviceSupported)
|
||||
return module.Init()
|
||||
}
|
||||
@@ -124,7 +122,7 @@ func (p *prebuiltBinaryLinker) link(ctx ModuleContext,
|
||||
return nil
|
||||
}
|
||||
|
||||
func prebuiltBinaryFactory() (blueprint.Module, []interface{}) {
|
||||
func prebuiltBinaryFactory() android.Module {
|
||||
module, _ := NewPrebuiltBinary(android.HostAndDeviceSupported)
|
||||
return module.Init()
|
||||
}
|
||||
|
@@ -17,9 +17,9 @@ package cc
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"android/soong/android"
|
||||
"github.com/google/blueprint"
|
||||
|
||||
"android/soong/android"
|
||||
"android/soong/cc/config"
|
||||
)
|
||||
|
||||
|
12
cc/test.go
12
cc/test.go
@@ -20,8 +20,6 @@ import (
|
||||
"strings"
|
||||
|
||||
"android/soong/android"
|
||||
|
||||
"github.com/google/blueprint"
|
||||
)
|
||||
|
||||
type TestProperties struct {
|
||||
@@ -57,31 +55,31 @@ func init() {
|
||||
}
|
||||
|
||||
// Module factory for tests
|
||||
func testFactory() (blueprint.Module, []interface{}) {
|
||||
func testFactory() android.Module {
|
||||
module := NewTest(android.HostAndDeviceSupported)
|
||||
return module.Init()
|
||||
}
|
||||
|
||||
// Module factory for test libraries
|
||||
func testLibraryFactory() (blueprint.Module, []interface{}) {
|
||||
func testLibraryFactory() android.Module {
|
||||
module := NewTestLibrary(android.HostAndDeviceSupported)
|
||||
return module.Init()
|
||||
}
|
||||
|
||||
// Module factory for benchmarks
|
||||
func benchmarkFactory() (blueprint.Module, []interface{}) {
|
||||
func benchmarkFactory() android.Module {
|
||||
module := NewBenchmark(android.HostAndDeviceSupported)
|
||||
return module.Init()
|
||||
}
|
||||
|
||||
// Module factory for host tests
|
||||
func testHostFactory() (blueprint.Module, []interface{}) {
|
||||
func testHostFactory() android.Module {
|
||||
module := NewTest(android.HostSupported)
|
||||
return module.Init()
|
||||
}
|
||||
|
||||
// Module factory for host benchmarks
|
||||
func benchmarkHostFactory() (blueprint.Module, []interface{}) {
|
||||
func benchmarkHostFactory() android.Module {
|
||||
module := NewBenchmark(android.HostSupported)
|
||||
return module.Init()
|
||||
}
|
||||
|
@@ -131,8 +131,10 @@ func TestDataTests(t *testing.T) {
|
||||
"dir/baz": nil,
|
||||
"dir/bar/baz": nil,
|
||||
})
|
||||
ctx.RegisterModuleType("filegroup", genrule.FileGroupFactory)
|
||||
ctx.RegisterModuleType("test", newTest)
|
||||
ctx.RegisterModuleType("filegroup",
|
||||
android.ModuleFactoryAdaptor(genrule.FileGroupFactory))
|
||||
ctx.RegisterModuleType("test",
|
||||
android.ModuleFactoryAdaptor(newTest))
|
||||
|
||||
_, errs := ctx.ParseBlueprintsFiles("Blueprints")
|
||||
fail(t, errs)
|
||||
@@ -175,9 +177,11 @@ type testDataTest struct {
|
||||
}
|
||||
}
|
||||
|
||||
func newTest() (blueprint.Module, []interface{}) {
|
||||
func newTest() android.Module {
|
||||
m := &testDataTest{}
|
||||
return android.InitAndroidModule(m, &m.Properties)
|
||||
m.AddProperties(&m.Properties)
|
||||
android.InitAndroidModule(m)
|
||||
return m
|
||||
}
|
||||
|
||||
func (test *testDataTest) DepsMutator(ctx android.BottomUpMutatorContext) {
|
||||
|
@@ -15,7 +15,6 @@
|
||||
package cc
|
||||
|
||||
import (
|
||||
"github.com/google/blueprint"
|
||||
"github.com/google/blueprint/proptools"
|
||||
|
||||
"android/soong/android"
|
||||
@@ -38,7 +37,7 @@ func (*toolchainLibraryDecorator) linkerDeps(ctx DepsContext, deps Deps) Deps {
|
||||
return deps
|
||||
}
|
||||
|
||||
func toolchainLibraryFactory() (blueprint.Module, []interface{}) {
|
||||
func toolchainLibraryFactory() android.Module {
|
||||
module, library := NewLibrary(android.HostAndDeviceSupported)
|
||||
library.BuildOnlyStatic()
|
||||
toolchainLibrary := &toolchainLibraryDecorator{
|
||||
|
Reference in New Issue
Block a user