Support tagged module references
There are cases where a module needs to refer to an intermediate output of another module instead of its final output. For example, a module may want to use the .jar containing .class files from another module whose final output is a .jar containing classes.dex files. Support a new ":module{.tag}" format in any property that is annotated with `android:"path"`, which will query the target module for its ".tag" output(s). Test: path_properties_test.go, paths_test.go Test: no unexpected changes in build.ninja Change-Id: Icd3c9b0d83ff125771767c04046fcffb9fc3f65a
This commit is contained in:
15
java/java.go
15
java/java.go
@@ -351,15 +351,20 @@ type Module struct {
|
||||
dexpreopter
|
||||
}
|
||||
|
||||
func (j *Module) Srcs() android.Paths {
|
||||
return append(android.Paths{j.outputFile}, j.extraOutputFiles...)
|
||||
func (j *Module) OutputFiles(tag string) (android.Paths, error) {
|
||||
switch tag {
|
||||
case "":
|
||||
return append(android.Paths{j.outputFile}, j.extraOutputFiles...), nil
|
||||
default:
|
||||
return nil, fmt.Errorf("unsupported module reference tag %q", tag)
|
||||
}
|
||||
}
|
||||
|
||||
func (j *Module) DexJarFile() android.Path {
|
||||
return j.dexJarFile
|
||||
}
|
||||
|
||||
var _ android.SourceFileProducer = (*Module)(nil)
|
||||
var _ android.OutputFileProducer = (*Module)(nil)
|
||||
|
||||
type Dependency interface {
|
||||
HeaderJars() android.Paths
|
||||
@@ -813,8 +818,6 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps {
|
||||
}
|
||||
default:
|
||||
switch tag {
|
||||
case android.DefaultsDepTag, android.SourceDepTag:
|
||||
// Nothing to do
|
||||
case systemModulesTag:
|
||||
if deps.systemModules != nil {
|
||||
panic("Found two system module dependencies")
|
||||
@@ -824,8 +827,6 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps {
|
||||
panic("Missing directory for system module dependency")
|
||||
}
|
||||
deps.systemModules = sm.outputFile
|
||||
default:
|
||||
ctx.ModuleErrorf("depends on non-java module %q", otherName)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
Reference in New Issue
Block a user