diff options
author | 2019-03-21 00:07:21 +0000 | |
---|---|---|
committer | 2019-03-21 00:07:21 +0000 | |
commit | f8d3be9cb7bd0716b606de0ded79a0264ba02bfb (patch) | |
tree | 5ef9e73400ea9043e96df4c3e7a4d09603a4342b | |
parent | 5a3f31b28451717dd7e9d948bcaa5644de759b17 (diff) | |
parent | a4ad2b0921072a2b65a35f982d9dc390efd075c8 (diff) |
Merge "Export genrules to Make as phony packages"
-rw-r--r-- | genrule/genrule.go | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/genrule/genrule.go b/genrule/genrule.go index c8be61ac5..32acd8c8d 100644 --- a/genrule/genrule.go +++ b/genrule/genrule.go @@ -16,6 +16,7 @@ package genrule import ( "fmt" + "io" "strings" "github.com/google/blueprint" @@ -115,6 +116,8 @@ type Module struct { 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) DepsMutator(ctx android.BottomUpMutatorContext) { } 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) IDEInfo(dpInfo *android.IdeInfo) { } } +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, |