Merge "Ensure that PathsForModuleSrc works with prebuilts"
am: 3ed757ab3a
Change-Id: I264499f517e8fa8501d75336ca97f1083fcad3b4
This commit is contained in:
@@ -41,7 +41,7 @@ var prebuiltsTests = []struct {
|
|||||||
prebuilt {
|
prebuilt {
|
||||||
name: "bar",
|
name: "bar",
|
||||||
prefer: false,
|
prefer: false,
|
||||||
srcs: ["prebuilt"],
|
srcs: ["prebuilt_file"],
|
||||||
}`,
|
}`,
|
||||||
prebuilt: true,
|
prebuilt: true,
|
||||||
},
|
},
|
||||||
@@ -51,7 +51,7 @@ var prebuiltsTests = []struct {
|
|||||||
prebuilt {
|
prebuilt {
|
||||||
name: "bar",
|
name: "bar",
|
||||||
prefer: true,
|
prefer: true,
|
||||||
srcs: ["prebuilt"],
|
srcs: ["prebuilt_file"],
|
||||||
}`,
|
}`,
|
||||||
prebuilt: true,
|
prebuilt: true,
|
||||||
},
|
},
|
||||||
@@ -65,7 +65,7 @@ var prebuiltsTests = []struct {
|
|||||||
prebuilt {
|
prebuilt {
|
||||||
name: "bar",
|
name: "bar",
|
||||||
prefer: false,
|
prefer: false,
|
||||||
srcs: ["prebuilt"],
|
srcs: ["prebuilt_file"],
|
||||||
}`,
|
}`,
|
||||||
prebuilt: false,
|
prebuilt: false,
|
||||||
},
|
},
|
||||||
@@ -79,7 +79,7 @@ var prebuiltsTests = []struct {
|
|||||||
prebuilt {
|
prebuilt {
|
||||||
name: "bar",
|
name: "bar",
|
||||||
prefer: true,
|
prefer: true,
|
||||||
srcs: ["prebuilt"],
|
srcs: ["prebuilt_file"],
|
||||||
}`,
|
}`,
|
||||||
prebuilt: true,
|
prebuilt: true,
|
||||||
},
|
},
|
||||||
@@ -114,6 +114,7 @@ var prebuiltsTests = []struct {
|
|||||||
modules: `
|
modules: `
|
||||||
filegroup {
|
filegroup {
|
||||||
name: "fg",
|
name: "fg",
|
||||||
|
srcs: ["prebuilt_file"],
|
||||||
}
|
}
|
||||||
prebuilt {
|
prebuilt {
|
||||||
name: "bar",
|
name: "bar",
|
||||||
@@ -143,10 +144,12 @@ func TestPrebuilts(t *testing.T) {
|
|||||||
ctx.RegisterModuleType("source", ModuleFactoryAdaptor(newSourceModule))
|
ctx.RegisterModuleType("source", ModuleFactoryAdaptor(newSourceModule))
|
||||||
ctx.Register()
|
ctx.Register()
|
||||||
ctx.MockFileSystem(map[string][]byte{
|
ctx.MockFileSystem(map[string][]byte{
|
||||||
|
"prebuilt_file": nil,
|
||||||
|
"source_file": nil,
|
||||||
"Blueprints": []byte(`
|
"Blueprints": []byte(`
|
||||||
source {
|
source {
|
||||||
name: "foo",
|
name: "foo",
|
||||||
deps: ["bar"],
|
deps: [":bar"],
|
||||||
}
|
}
|
||||||
` + test.modules),
|
` + test.modules),
|
||||||
})
|
})
|
||||||
@@ -171,21 +174,45 @@ func TestPrebuilts(t *testing.T) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
deps := foo.Module().(*sourceModule).deps
|
||||||
|
if deps == nil || len(deps) != 1 {
|
||||||
|
t.Errorf("deps does not have single path, but is %v", deps)
|
||||||
|
}
|
||||||
|
var usingSourceFile, usingPrebuiltFile bool
|
||||||
|
if deps[0].String() == "source_file" {
|
||||||
|
usingSourceFile = true
|
||||||
|
}
|
||||||
|
if deps[0].String() == "prebuilt_file" {
|
||||||
|
usingPrebuiltFile = true
|
||||||
|
}
|
||||||
|
|
||||||
if test.prebuilt {
|
if test.prebuilt {
|
||||||
if !dependsOnPrebuiltModule {
|
if !dependsOnPrebuiltModule {
|
||||||
t.Errorf("doesn't depend on prebuilt module")
|
t.Errorf("doesn't depend on prebuilt module")
|
||||||
}
|
}
|
||||||
|
if !usingPrebuiltFile {
|
||||||
|
t.Errorf("doesn't use prebuilt_file")
|
||||||
|
}
|
||||||
|
|
||||||
if dependsOnSourceModule {
|
if dependsOnSourceModule {
|
||||||
t.Errorf("depends on source module")
|
t.Errorf("depends on source module")
|
||||||
}
|
}
|
||||||
|
if usingSourceFile {
|
||||||
|
t.Errorf("using source_file")
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if dependsOnPrebuiltModule {
|
if dependsOnPrebuiltModule {
|
||||||
t.Errorf("depends on prebuilt module")
|
t.Errorf("depends on prebuilt module")
|
||||||
}
|
}
|
||||||
|
if usingPrebuiltFile {
|
||||||
|
t.Errorf("using prebuilt_file")
|
||||||
|
}
|
||||||
|
|
||||||
if !dependsOnSourceModule {
|
if !dependsOnSourceModule {
|
||||||
t.Errorf("doens't depend on source module")
|
t.Errorf("doesn't depend on source module")
|
||||||
|
}
|
||||||
|
if !usingSourceFile {
|
||||||
|
t.Errorf("doesn't use source_file")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -198,6 +225,7 @@ type prebuiltModule struct {
|
|||||||
properties struct {
|
properties struct {
|
||||||
Srcs []string `android:"path"`
|
Srcs []string `android:"path"`
|
||||||
}
|
}
|
||||||
|
src Path
|
||||||
}
|
}
|
||||||
|
|
||||||
func newPrebuiltModule() Module {
|
func newPrebuiltModule() Module {
|
||||||
@@ -212,19 +240,28 @@ func (p *prebuiltModule) Name() string {
|
|||||||
return p.prebuilt.Name(p.ModuleBase.Name())
|
return p.prebuilt.Name(p.ModuleBase.Name())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *prebuiltModule) GenerateAndroidBuildActions(ModuleContext) {
|
func (p *prebuiltModule) GenerateAndroidBuildActions(ctx ModuleContext) {
|
||||||
|
if len(p.properties.Srcs) >= 1 {
|
||||||
|
p.src = p.prebuilt.SingleSourcePath(ctx)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *prebuiltModule) Prebuilt() *Prebuilt {
|
func (p *prebuiltModule) Prebuilt() *Prebuilt {
|
||||||
return &p.prebuilt
|
return &p.prebuilt
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *prebuiltModule) Srcs() Paths {
|
||||||
|
return Paths{p.src}
|
||||||
|
}
|
||||||
|
|
||||||
type sourceModule struct {
|
type sourceModule struct {
|
||||||
ModuleBase
|
ModuleBase
|
||||||
properties struct {
|
properties struct {
|
||||||
Deps []string
|
Deps []string `android:"path"`
|
||||||
}
|
}
|
||||||
dependsOnSourceModule, dependsOnPrebuiltModule bool
|
dependsOnSourceModule, dependsOnPrebuiltModule bool
|
||||||
|
deps Paths
|
||||||
|
src Path
|
||||||
}
|
}
|
||||||
|
|
||||||
func newSourceModule() Module {
|
func newSourceModule() Module {
|
||||||
@@ -235,10 +272,15 @@ func newSourceModule() Module {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *sourceModule) DepsMutator(ctx BottomUpMutatorContext) {
|
func (s *sourceModule) DepsMutator(ctx BottomUpMutatorContext) {
|
||||||
for _, d := range s.properties.Deps {
|
// s.properties.Deps are annotated with android:path, so they are
|
||||||
ctx.AddDependency(ctx.Module(), nil, d)
|
// automatically added to the dependency by pathDeps mutator
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *sourceModule) GenerateAndroidBuildActions(ctx ModuleContext) {
|
func (s *sourceModule) GenerateAndroidBuildActions(ctx ModuleContext) {
|
||||||
|
s.deps = PathsForModuleSrc(ctx, s.properties.Deps)
|
||||||
|
s.src = PathForModuleSrc(ctx, "source_file")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *sourceModule) Srcs() Paths {
|
||||||
|
return Paths{s.src}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user