Merge "Only depend on a single file for generated headers"

This commit is contained in:
Treehugger Robot 2018-02-22 22:18:56 +00:00 committed by Gerrit Code Review
commit 2f2f24f775
2 changed files with 9 additions and 2 deletions

View file

@ -1138,13 +1138,13 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
case genHeaderDepTag, genHeaderExportDepTag:
if genRule, ok := dep.(genrule.SourceFileGenerator); ok {
depPaths.GeneratedHeaders = append(depPaths.GeneratedHeaders,
genRule.GeneratedSourceFiles()...)
genRule.GeneratedDeps()...)
flags := includeDirsToFlags(genRule.GeneratedHeaderDirs())
depPaths.Flags = append(depPaths.Flags, flags)
if depTag == genHeaderExportDepTag {
depPaths.ReexportedFlags = append(depPaths.ReexportedFlags, flags)
depPaths.ReexportedFlagsDeps = append(depPaths.ReexportedFlagsDeps,
genRule.GeneratedSourceFiles()...)
genRule.GeneratedDeps()...)
// Add these re-exported flags to help header-abi-dumper to infer the abi exported by a library.
c.sabi.Properties.ReexportedIncludeFlags = append(c.sabi.Properties.ReexportedIncludeFlags, flags)

View file

@ -43,6 +43,7 @@ func init() {
type SourceFileGenerator interface {
GeneratedSourceFiles() android.Paths
GeneratedHeaderDirs() android.Paths
GeneratedDeps() android.Paths
}
type HostToolProvider interface {
@ -107,6 +108,7 @@ type Module struct {
exportedIncludeDirs android.Paths
outputFiles android.Paths
outputDeps android.Paths
}
type taskFunc func(ctx android.ModuleContext, rawCommand string, srcFiles android.Paths) generateTask
@ -130,6 +132,10 @@ func (g *Module) GeneratedHeaderDirs() android.Paths {
return g.exportedIncludeDirs
}
func (g *Module) GeneratedDeps() android.Paths {
return g.outputDeps
}
func (g *Module) DepsMutator(ctx android.BottomUpMutatorContext) {
android.ExtractSourcesDeps(ctx, g.properties.Srcs)
android.ExtractSourcesDeps(ctx, g.properties.Tool_files)
@ -334,6 +340,7 @@ func (g *Module) generateSourceFile(ctx android.ModuleContext, task generateTask
for _, outputFile := range task.out {
g.outputFiles = append(g.outputFiles, outputFile)
}
g.outputDeps = append(g.outputDeps, task.out[0])
}
func generatorFactory(taskGenerator taskFunc, props ...interface{}) *Module {