aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--android/module.go5
-rw-r--r--genrule/genrule.go10
-rw-r--r--java/builder.go2
-rw-r--r--java/config/config.go2
-rw-r--r--java/config/makevars.go1
-rw-r--r--java/gen.go12
-rw-r--r--java/java.go30
-rw-r--r--java/proto.go15
-rwxr-xr-xscripts/extract-srcjars.sh (renamed from scripts/extract-src-jars.sh)0
9 files changed, 49 insertions, 28 deletions
diff --git a/android/module.go b/android/module.go
index 2a8837b3..66859fa5 100644
--- a/android/module.go
+++ b/android/module.go
@@ -108,6 +108,7 @@ type ModuleContext interface {
ModuleSubDir() string
+ VisitDirectDepsBlueprint(visit func(blueprint.Module))
VisitDirectDeps(visit func(Module))
VisitDirectDepsIf(pred func(Module) bool, visit func(Module))
VisitDepsDepthFirst(visit func(Module))
@@ -686,6 +687,10 @@ func (a *androidModuleContext) validateAndroidModule(module blueprint.Module) Mo
return aModule
}
+func (a *androidModuleContext) VisitDirectDepsBlueprint(visit func(blueprint.Module)) {
+ a.ModuleContext.VisitDirectDeps(visit)
+}
+
func (a *androidModuleContext) VisitDirectDeps(visit func(Module)) {
a.ModuleContext.VisitDirectDeps(func(module blueprint.Module) {
if aModule := a.validateAndroidModule(module); aModule != nil {
diff --git a/genrule/genrule.go b/genrule/genrule.go
index c5b7e1d3..c142c53e 100644
--- a/genrule/genrule.go
+++ b/genrule/genrule.go
@@ -158,7 +158,7 @@ func (g *Module) GenerateAndroidBuildActions(ctx android.ModuleContext) {
tools := map[string]android.Path{}
if len(g.properties.Tools) > 0 {
- ctx.VisitDirectDeps(func(module android.Module) {
+ ctx.VisitDirectDepsBlueprint(func(module blueprint.Module) {
switch ctx.OtherModuleDependencyTag(module) {
case android.SourceDepTag:
// Nothing to do
@@ -167,6 +167,14 @@ func (g *Module) GenerateAndroidBuildActions(ctx android.ModuleContext) {
var path android.OptionalPath
if t, ok := module.(HostToolProvider); ok {
+ if !t.(android.Module).Enabled() {
+ if ctx.AConfig().AllowMissingDependencies() {
+ ctx.AddMissingDependencies([]string{tool})
+ } else {
+ ctx.ModuleErrorf("depends on disabled module %q", tool)
+ }
+ break
+ }
path = t.HostToolPath()
} else if t, ok := module.(bootstrap.GoBinaryTool); ok {
if s, err := filepath.Rel(android.PathForOutput(ctx).String(), t.InstallPath()); err == nil {
diff --git a/java/builder.go b/java/builder.go
index 45e59a42..d2e02fde 100644
--- a/java/builder.go
+++ b/java/builder.go
@@ -186,7 +186,7 @@ type javaBuilderFlags struct {
kotlincFlags string
kotlincClasspath classpath
- protoFlags string
+ protoFlags []string
protoOutFlag string
}
diff --git a/java/config/config.go b/java/config/config.go
index d4994a1c..3cd28415 100644
--- a/java/config/config.go
+++ b/java/config/config.go
@@ -70,7 +70,7 @@ func init() {
pctx.SourcePathVariable("JrtFsJar", "${JavaHome}/lib/jrt-fs.jar")
pctx.SourcePathVariable("Ziptime", "prebuilts/build-tools/${hostPrebuiltTag}/bin/ziptime")
- pctx.SourcePathVariable("ExtractSrcJarsCmd", "build/soong/scripts/extract-src-jars.sh")
+ pctx.SourcePathVariable("ExtractSrcJarsCmd", "build/soong/scripts/extract-srcjars.sh")
pctx.SourcePathVariable("JarArgsCmd", "build/soong/scripts/jar-args.sh")
pctx.HostBinToolVariable("SoongZipCmd", "soong_zip")
pctx.HostBinToolVariable("MergeZipsCmd", "merge_zips")
diff --git a/java/config/makevars.go b/java/config/makevars.go
index 96fa92b6..dabf2e72 100644
--- a/java/config/makevars.go
+++ b/java/config/makevars.go
@@ -61,4 +61,5 @@ func makeVarsProvider(ctx android.MakeVarsContext) {
}
ctx.Strict("SOONG_JAVAC_WRAPPER", "${SoongJavacWrapper}")
+ ctx.Strict("EXTRACT_SRCJARS", "${ExtractSrcJarsCmd}")
}
diff --git a/java/gen.go b/java/gen.go
index 8fa199e1..b5973ec7 100644
--- a/java/gen.go
+++ b/java/gen.go
@@ -42,7 +42,7 @@ var (
logtags = pctx.AndroidStaticRule("logtags",
blueprint.RuleParams{
- Command: "$logtagsCmd -o $out $in $allLogtagsFile",
+ Command: "$logtagsCmd -o $out $in",
CommandDeps: []string{"$logtagsCmd"},
})
@@ -85,7 +85,7 @@ func genLogtags(ctx android.ModuleContext, logtagsFile android.Path) android.Pat
}
func (j *Module) genSources(ctx android.ModuleContext, srcFiles android.Paths,
- flags javaBuilderFlags) (android.Paths, android.Paths) {
+ flags javaBuilderFlags) android.Paths {
var protoFiles android.Paths
outSrcFiles := make(android.Paths, 0, len(srcFiles))
@@ -106,17 +106,15 @@ func (j *Module) genSources(ctx android.ModuleContext, srcFiles android.Paths,
}
}
- var outSrcJars android.Paths
-
if len(protoFiles) > 0 {
- protoSrcJar := android.PathForModuleGen(ctx, "proto.src.jar")
+ protoSrcJar := android.PathForModuleGen(ctx, "proto.srcjar")
genProto(ctx, protoSrcJar, protoFiles,
flags.protoFlags, flags.protoOutFlag, "")
- outSrcJars = append(outSrcJars, protoSrcJar)
+ outSrcFiles = append(outSrcFiles, protoSrcJar)
}
- return outSrcFiles, outSrcJars
+ return outSrcFiles
}
func LogtagsSingleton() blueprint.Singleton {
diff --git a/java/java.go b/java/java.go
index 432e816e..b2bd2b0a 100644
--- a/java/java.go
+++ b/java/java.go
@@ -136,12 +136,17 @@ type CompilerDeviceProperties struct {
// if not blank, set to the version of the sdk to compile against
Sdk_version *string
- // directories to pass to aidl tool
- Aidl_includes []string
+ Aidl struct {
+ // Top level directories to pass to aidl tool
+ Include_dirs []string
- // directories that should be added as include directories
- // for any aidl sources of modules that depend on this module
- Export_aidl_include_dirs []string
+ // Directories rooted at the Android.bp file to pass to aidl tool
+ Local_include_dirs []string
+
+ // directories that should be added as include directories for any aidl sources of modules
+ // that depend on this module, as well as to aidl for this module.
+ Export_include_dirs []string
+ }
// If true, export a copy of the module as a -hostdex module for host testing.
Hostdex *bool
@@ -377,7 +382,11 @@ func (j *Module) hasSrcExt(ext string) bool {
func (j *Module) aidlFlags(ctx android.ModuleContext, aidlPreprocess android.OptionalPath,
aidlIncludeDirs android.Paths) []string {
- localAidlIncludes := android.PathsForModuleSrc(ctx, j.deviceProperties.Aidl_includes)
+ aidlIncludes := android.PathsForModuleSrc(ctx, j.deviceProperties.Aidl.Local_include_dirs)
+ aidlIncludes = append(aidlIncludes,
+ android.PathsForModuleSrc(ctx, j.deviceProperties.Aidl.Export_include_dirs)...)
+ aidlIncludes = append(aidlIncludes,
+ android.PathsForSource(ctx, j.deviceProperties.Aidl.Include_dirs)...)
var flags []string
if aidlPreprocess.Valid() {
@@ -387,7 +396,7 @@ func (j *Module) aidlFlags(ctx android.ModuleContext, aidlPreprocess android.Opt
}
flags = append(flags, android.JoinWithPrefix(j.exportAidlIncludeDirs.Strings(), "-I"))
- flags = append(flags, android.JoinWithPrefix(localAidlIncludes.Strings(), "-I"))
+ flags = append(flags, android.JoinWithPrefix(aidlIncludes.Strings(), "-I"))
flags = append(flags, "-I"+android.PathForModuleSrc(ctx).String())
if src := android.ExistentPathForSource(ctx, "", ctx.ModuleDir(), "src"); src.Valid() {
flags = append(flags, "-I"+src.String())
@@ -528,7 +537,7 @@ func (j *Module) collectBuilderFlags(ctx android.ModuleContext, deps deps) javaB
func (j *Module) compile(ctx android.ModuleContext) {
- j.exportAidlIncludeDirs = android.PathsForModuleSrc(ctx, j.deviceProperties.Export_aidl_include_dirs)
+ j.exportAidlIncludeDirs = android.PathsForModuleSrc(ctx, j.deviceProperties.Aidl.Export_include_dirs)
deps := j.collectDeps(ctx)
flags := j.collectBuilderFlags(ctx, deps)
@@ -541,8 +550,9 @@ func (j *Module) compile(ctx android.ModuleContext) {
flags = protoFlags(ctx, &j.protoProperties, flags)
}
- var srcJars android.Paths
- srcFiles, srcJars = j.genSources(ctx, srcFiles, flags)
+ srcFiles = j.genSources(ctx, srcFiles, flags)
+
+ srcJars := srcFiles.FilterByExt(".srcjar")
srcJars = append(srcJars, deps.srcJars...)
srcJars = append(srcJars, j.ExtraSrcJars...)
diff --git a/java/proto.go b/java/proto.go
index 1077fd69..17f02a3b 100644
--- a/java/proto.go
+++ b/java/proto.go
@@ -15,6 +15,8 @@
package java
import (
+ "strings"
+
"github.com/google/blueprint"
"github.com/google/blueprint/proptools"
@@ -39,7 +41,7 @@ var (
)
func genProto(ctx android.ModuleContext, outputSrcJar android.WritablePath,
- protoFiles android.Paths, protoFlags string, protoOut, protoOutFlags string) {
+ protoFiles android.Paths, protoFlags []string, protoOut, protoOutFlags string) {
ctx.Build(pctx, android.BuildParams{
Rule: proto,
@@ -50,7 +52,7 @@ func genProto(ctx android.ModuleContext, outputSrcJar android.WritablePath,
"outDir": android.ProtoDir(ctx).String(),
"protoOut": protoOut,
"protoOutFlags": protoOutFlags,
- "protoFlags": protoFlags,
+ "protoFlags": strings.Join(protoFlags, " "),
},
})
}
@@ -61,10 +63,6 @@ func protoDeps(ctx android.BottomUpMutatorContext, p *android.ProtoProperties) {
ctx.AddDependency(ctx.Module(), staticLibTag, "libprotobuf-java-micro")
case "nano":
ctx.AddDependency(ctx.Module(), staticLibTag, "libprotobuf-java-nano")
- case "stream":
- // TODO(ccross): add dependency on protoc-gen-java-stream binary
- ctx.PropertyErrorf("proto.type", `"stream" not supported yet`)
- // No library for stream protobufs
case "lite", "":
ctx.AddDependency(ctx.Module(), staticLibTag, "libprotobuf-java-lite")
case "full":
@@ -85,13 +83,14 @@ func protoFlags(ctx android.ModuleContext, p *android.ProtoProperties, flags jav
flags.protoOutFlag = "--javamicro_out"
case "nano":
flags.protoOutFlag = "--javanano_out"
- case "stream":
- flags.protoOutFlag = "--javastream_out"
case "lite", "full", "":
flags.protoOutFlag = "--java_out"
default:
ctx.PropertyErrorf("proto.type", "unknown proto type %q",
proptools.String(p.Proto.Type))
}
+
+ flags.protoFlags = android.ProtoFlags(ctx, p)
+
return flags
}
diff --git a/scripts/extract-src-jars.sh b/scripts/extract-srcjars.sh
index 918cf8a5..918cf8a5 100755
--- a/scripts/extract-src-jars.sh
+++ b/scripts/extract-srcjars.sh