Merge "Fix Soong CMakeLists.txt generator"
diff --git a/android/module.go b/android/module.go
index 70b602b..a6b8d53 100644
--- a/android/module.go
+++ b/android/module.go
@@ -1195,9 +1195,9 @@
func (m *moduleContext) Rule(pctx PackageContext, name string, params blueprint.RuleParams,
argNames ...string) blueprint.Rule {
- if m.config.UseGoma() && params.Pool == nil {
- // When USE_GOMA=true is set and the rule is not supported by goma, restrict jobs to the
- // local parallelism value
+ if (m.config.UseGoma() || m.config.UseRBE()) && params.Pool == nil {
+ // When USE_GOMA=true or USE_RBE=true are set and the rule is not supported by goma/RBE, restrict
+ // jobs to the local parallelism value
params.Pool = localPool
}
diff --git a/android/package_ctx.go b/android/package_ctx.go
index 548450e..cf8face 100644
--- a/android/package_ctx.go
+++ b/android/package_ctx.go
@@ -115,9 +115,9 @@
if len(ctx.errors) > 0 {
return params, ctx.errors[0]
}
- if ctx.Config().UseGoma() && params.Pool == nil {
- // When USE_GOMA=true is set and the rule is not supported by goma, restrict jobs to the
- // local parallelism value
+ if (ctx.Config().UseGoma() || ctx.Config().UseRBE()) && params.Pool == nil {
+ // When USE_GOMA=true or USE_RBE=true are set and the rule is not supported by
+ // goma/RBE, restrict jobs to the local parallelism value
params.Pool = localPool
}
return params, nil
@@ -254,9 +254,35 @@
}, argNames...)
}
-// AndroidGomaStaticRule wraps blueprint.StaticRule but uses goma's parallelism if goma is enabled
-func (p PackageContext) AndroidGomaStaticRule(name string, params blueprint.RuleParams,
+// RemoteRuleSupports selects if a AndroidRemoteStaticRule supports goma, RBE, or both.
+type RemoteRuleSupports int
+
+const (
+ SUPPORTS_NONE = 0
+ SUPPORTS_GOMA = 1 << iota
+ SUPPORTS_RBE = 1 << iota
+ SUPPORTS_BOTH = SUPPORTS_GOMA | SUPPORTS_RBE
+)
+
+// AndroidRemoteStaticRule wraps blueprint.StaticRule but uses goma or RBE's parallelism if goma or RBE are enabled
+// and the appropriate SUPPORTS_* flag is set.
+func (p PackageContext) AndroidRemoteStaticRule(name string, supports RemoteRuleSupports, params blueprint.RuleParams,
argNames ...string) blueprint.Rule {
- // bypass android.PackageContext.StaticRule so that Pool does not get set to local_pool.
- return p.PackageContext.StaticRule(name, params, argNames...)
+
+ return p.PackageContext.RuleFunc(name, func(config interface{}) (blueprint.RuleParams, error) {
+ ctx := &configErrorWrapper{p, config.(Config), nil}
+ if ctx.Config().UseGoma() && supports&SUPPORTS_GOMA == 0 {
+ // When USE_GOMA=true is set and the rule is not supported by goma, restrict jobs to the
+ // local parallelism value
+ params.Pool = localPool
+ }
+
+ if ctx.Config().UseRBE() && supports&SUPPORTS_RBE == 0 {
+ // When USE_RBE=true is set and the rule is not supported by RBE, restrict jobs to the
+ // local parallelism value
+ params.Pool = localPool
+ }
+
+ return params, nil
+ }, argNames...)
}
diff --git a/android/singleton.go b/android/singleton.go
index 33bc6d1..5519ca0 100644
--- a/android/singleton.go
+++ b/android/singleton.go
@@ -131,9 +131,9 @@
}
func (s *singletonContextAdaptor) Rule(pctx PackageContext, name string, params blueprint.RuleParams, argNames ...string) blueprint.Rule {
- if s.Config().UseGoma() && params.Pool == nil {
- // When USE_GOMA=true is set and the rule is not supported by goma, restrict jobs to the
- // local parallelism value
+ if (s.Config().UseGoma() || s.Config().UseRBE()) && params.Pool == nil {
+ // When USE_GOMA=true or USE_RBE=true are set and the rule is not supported by goma/RBE, restrict
+ // jobs to the local parallelism value
params.Pool = localPool
}
rule := s.SingletonContext.Rule(pctx.PackageContext, name, params, argNames...)
diff --git a/bpf/bpf.go b/bpf/bpf.go
index 90ec963..024fcbc 100644
--- a/bpf/bpf.go
+++ b/bpf/bpf.go
@@ -33,7 +33,7 @@
var (
pctx = android.NewPackageContext("android/soong/bpf")
- ccRule = pctx.AndroidGomaStaticRule("ccRule",
+ ccRule = pctx.AndroidRemoteStaticRule("ccRule", android.SUPPORTS_GOMA,
blueprint.RuleParams{
Depfile: "${out}.d",
Deps: blueprint.DepsGCC,
diff --git a/cc/builder.go b/cc/builder.go
index 491ebc5..068c930 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -46,7 +46,7 @@
var (
pctx = android.NewPackageContext("android/soong/cc")
- cc = pctx.AndroidGomaStaticRule("cc",
+ cc = pctx.AndroidRemoteStaticRule("cc", android.SUPPORTS_BOTH,
blueprint.RuleParams{
Depfile: "${out}.d",
Deps: blueprint.DepsGCC,
@@ -55,7 +55,7 @@
},
"ccCmd", "cFlags")
- ccNoDeps = pctx.AndroidGomaStaticRule("ccNoDeps",
+ ccNoDeps = pctx.AndroidRemoteStaticRule("ccNoDeps", android.SUPPORTS_GOMA,
blueprint.RuleParams{
Command: "$relPwd ${config.CcWrapper}$ccCmd -c $cFlags -o $out $in",
CommandDeps: []string{"$ccCmd"},
diff --git a/java/androidmk.go b/java/androidmk.go
index cd91b46..63c7d9a 100644
--- a/java/androidmk.go
+++ b/java/androidmk.go
@@ -612,10 +612,15 @@
fmt.Fprintln(w, ".PHONY: checkapi")
fmt.Fprintln(w, "checkapi:",
- dstubs.apiLintTimestamp.String())
+ dstubs.Name()+"-api-lint")
fmt.Fprintln(w, ".PHONY: droidcore")
fmt.Fprintln(w, "droidcore: checkapi")
+
+ if dstubs.apiLintReport != nil {
+ fmt.Fprintf(w, "$(call dist-for-goals,%s,%s:%s)\n", dstubs.Name()+"-api-lint",
+ dstubs.apiLintReport.String(), "apilint/"+dstubs.Name()+"-lint-report.txt")
+ }
}
if dstubs.checkNullabilityWarningsTimestamp != nil {
fmt.Fprintln(w, ".PHONY:", dstubs.Name()+"-check-nullability-warnings")
diff --git a/java/app.go b/java/app.go
index bd8556e..58b7721 100644
--- a/java/app.go
+++ b/java/app.go
@@ -165,7 +165,6 @@
a.aapt.deps(ctx, sdkDep)
}
- embedJni := a.shouldEmbedJnis(ctx)
for _, jniTarget := range ctx.MultiTargets() {
variation := append(jniTarget.Variations(),
blueprint.Variation{Mutator: "link", Variation: "shared"})
@@ -174,7 +173,7 @@
}
ctx.AddFarVariationDependencies(variation, tag, a.appProperties.Jni_libs...)
if String(a.appProperties.Stl) == "c++_shared" {
- if embedJni {
+ if a.shouldEmbedJnis(ctx) {
ctx.AddFarVariationDependencies(variation, tag, "ndk_libc++_shared")
}
}
diff --git a/java/builder.go b/java/builder.go
index 5d36acd..b5dc88a 100644
--- a/java/builder.go
+++ b/java/builder.go
@@ -38,7 +38,7 @@
// this, all java rules write into separate directories and then are combined into a .jar file
// (if the rule produces .class files) or a .srcjar file (if the rule produces .java files).
// .srcjar files are unzipped into a temporary directory when compiled with javac.
- javac = pctx.AndroidGomaStaticRule("javac",
+ javac = pctx.AndroidRemoteStaticRule("javac", android.SUPPORTS_GOMA,
blueprint.RuleParams{
Command: `rm -rf "$outDir" "$annoDir" "$srcJarDir" && mkdir -p "$outDir" "$annoDir" "$srcJarDir" && ` +
`${config.ZipSyncCmd} -d $srcJarDir -l $srcJarDir/list -f "*.java" $srcJars && ` +
diff --git a/java/droiddoc.go b/java/droiddoc.go
index 6f3b152..5d01b54 100644
--- a/java/droiddoc.go
+++ b/java/droiddoc.go
@@ -1182,6 +1182,7 @@
updateCurrentApiTimestamp android.WritablePath
checkLastReleasedApiTimestamp android.WritablePath
apiLintTimestamp android.WritablePath
+ apiLintReport android.WritablePath
checkNullabilityWarningsTimestamp android.WritablePath
@@ -1552,6 +1553,8 @@
} else {
cmd.Flag("--api-lint")
}
+ d.apiLintReport = android.PathForModuleOut(ctx, "api_lint_report.txt")
+ cmd.FlagWithOutput("--report-even-if-suppressed ", d.apiLintReport)
d.inclusionAnnotationsFlags(ctx, cmd)
d.mergeAnnoDirFlags(ctx, cmd)
diff --git a/java/kotlin.go b/java/kotlin.go
index f8ae229..aa65314 100644
--- a/java/kotlin.go
+++ b/java/kotlin.go
@@ -26,7 +26,7 @@
"github.com/google/blueprint"
)
-var kotlinc = pctx.AndroidGomaStaticRule("kotlinc",
+var kotlinc = pctx.AndroidRemoteStaticRule("kotlinc", android.SUPPORTS_GOMA,
blueprint.RuleParams{
Command: `rm -rf "$classesDir" "$srcJarDir" "$kotlinBuildFile" "$emptyDir" && ` +
`mkdir -p "$classesDir" "$srcJarDir" "$emptyDir" && ` +
@@ -88,7 +88,7 @@
})
}
-var kapt = pctx.AndroidGomaStaticRule("kapt",
+var kapt = pctx.AndroidRemoteStaticRule("kapt", android.SUPPORTS_GOMA,
blueprint.RuleParams{
Command: `rm -rf "$srcJarDir" "$kotlinBuildFile" "$kaptDir" && mkdir -p "$srcJarDir" "$kaptDir" && ` +
`${config.ZipSyncCmd} -d $srcJarDir -l $srcJarDir/list -f "*.java" $srcJars && ` +