Export genrules to Make as phony packages
Export genrules to Make, which will allow it to support
dist-for-goals.
Test: m PRODUCT-sdk_phone_armv7-win_sdk sdk_repo dist
Bug: 80494441
Bug: 128878015
Change-Id: Idb8dfcec2be5bfab94d17395826ef451b0dd9b63
diff --git a/genrule/genrule.go b/genrule/genrule.go
index c8be61a..32acd8c 100644
--- a/genrule/genrule.go
+++ b/genrule/genrule.go
@@ -16,6 +16,7 @@
import (
"fmt"
+ "io"
"strings"
"github.com/google/blueprint"
@@ -115,6 +116,8 @@
outputFiles android.Paths
outputDeps android.Paths
+
+ subName string
}
type taskFunc func(ctx android.ModuleContext, rawCommand string, srcFiles android.Paths) generateTask
@@ -157,6 +160,8 @@
}
func (g *Module) GenerateAndroidBuildActions(ctx android.ModuleContext) {
+ g.subName = ctx.ModuleSubDir()
+
if len(g.properties.Export_include_dirs) > 0 {
for _, dir := range g.properties.Export_include_dirs {
g.exportedIncludeDirs = append(g.exportedIncludeDirs,
@@ -400,6 +405,27 @@
}
}
+func (g *Module) AndroidMk() android.AndroidMkData {
+ return android.AndroidMkData{
+ Include: "$(BUILD_PHONY_PACKAGE)",
+ Class: "FAKE",
+ OutputFile: android.OptionalPathForPath(g.outputFiles[0]),
+ SubName: g.subName,
+ Extra: []android.AndroidMkExtraFunc{
+ func(w io.Writer, outputFile android.Path) {
+ fmt.Fprintln(w, "LOCAL_ADDITIONAL_DEPENDENCIES :=", strings.Join(g.outputFiles.Strings(), " "))
+ },
+ },
+ Custom: func(w io.Writer, name, prefix, moduleDir string, data android.AndroidMkData) {
+ android.WriteAndroidMkData(w, data)
+ if data.SubName != "" {
+ fmt.Fprintln(w, ".PHONY:", name)
+ fmt.Fprintln(w, name, ":", name+g.subName)
+ }
+ },
+ }
+}
+
func generatorFactory(taskGenerator taskFunc, props ...interface{}) *Module {
module := &Module{
taskGenerator: taskGenerator,