aboutsummaryrefslogtreecommitdiffstats
path: root/genrule
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2019-03-18 22:15:32 -0700
committerColin Cross <ccross@android.com>2019-03-20 19:37:58 +0000
commita4ad2b0921072a2b65a35f982d9dc390efd075c8 (patch)
treeb1429a2f4b75e64dcb8d2aa5a6d2b76e633d9fbd /genrule
parent8a49795df1ed87a4889f267dbd8d28c5832bb897 (diff)
downloadbuild_soong-a4ad2b0921072a2b65a35f982d9dc390efd075c8.tar.gz
build_soong-a4ad2b0921072a2b65a35f982d9dc390efd075c8.tar.bz2
build_soong-a4ad2b0921072a2b65a35f982d9dc390efd075c8.zip
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
Diffstat (limited to 'genrule')
-rw-r--r--genrule/genrule.go26
1 files changed, 26 insertions, 0 deletions
diff --git a/genrule/genrule.go b/genrule/genrule.go
index c8be61ac..32acd8c8 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,