diff --git a/cc/cc.go b/cc/cc.go index 00715566c..ddeede94b 100644 --- a/cc/cc.go +++ b/cc/cc.go @@ -786,7 +786,7 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps { if genRule, ok := m.(genrule.SourceFileGenerator); ok { depPaths.GeneratedHeaders = append(depPaths.GeneratedHeaders, genRule.GeneratedSourceFiles()...) - flags := includeDirsToFlags(android.Paths{genRule.GeneratedHeaderDir()}) + flags := includeDirsToFlags(genRule.GeneratedHeaderDirs()) depPaths.Flags = append(depPaths.Flags, flags) if tag == genHeaderExportDepTag { depPaths.ReexportedFlags = append(depPaths.ReexportedFlags, flags) diff --git a/genrule/genrule.go b/genrule/genrule.go index b1ce80467..bb78b1f81 100644 --- a/genrule/genrule.go +++ b/genrule/genrule.go @@ -34,7 +34,7 @@ var ( type SourceFileGenerator interface { GeneratedSourceFiles() android.Paths - GeneratedHeaderDir() android.Path + GeneratedHeaderDirs() android.Paths } type HostToolProvider interface { @@ -65,6 +65,9 @@ type generatorProperties struct { // Local file that is used as the tool Tool_files []string + + // List of directories to export generated headers from + Export_include_dirs []string } type generator struct { @@ -77,7 +80,7 @@ type generator struct { deps android.Paths rule blueprint.Rule - genPath android.Path + exportedIncludeDirs android.Paths outputFiles android.Paths } @@ -93,8 +96,8 @@ func (g *generator) GeneratedSourceFiles() android.Paths { return g.outputFiles } -func (g *generator) GeneratedHeaderDir() android.Path { - return g.genPath +func (g *generator) GeneratedHeaderDirs() android.Paths { + return g.exportedIncludeDirs } func (g *generator) DepsMutator(ctx android.BottomUpMutatorContext) { @@ -113,7 +116,14 @@ func (g *generator) GenerateAndroidBuildActions(ctx android.ModuleContext) { return } - g.genPath = android.PathForModuleGen(ctx, "") + if len(g.properties.Export_include_dirs) > 0 { + for _, dir := range g.properties.Export_include_dirs { + g.exportedIncludeDirs = append(g.exportedIncludeDirs, + android.PathForModuleGen(ctx, ctx.ModuleDir(), dir)) + } + } else { + g.exportedIncludeDirs = append(g.exportedIncludeDirs, android.PathForModuleGen(ctx, "")) + } tools := map[string]android.Path{} @@ -166,7 +176,7 @@ func (g *generator) GenerateAndroidBuildActions(ctx android.ModuleContext) { } return "${depfile}", nil case "genDir": - return g.genPath.String(), nil + return android.PathForModuleGen(ctx, "").String(), nil default: if strings.HasPrefix(name, "location ") { label := strings.TrimSpace(strings.TrimPrefix(name, "location "))