Merge "droiddoc accepts aidl files as inputs"

This commit is contained in:
Treehugger Robot 2018-05-25 23:19:24 +00:00 committed by Gerrit Code Review
commit 516e580f94
2 changed files with 74 additions and 0 deletions

View File

@ -110,6 +110,14 @@ type JavadocProperties struct {
// if not blank, set to the version of the sdk to compile against
Sdk_version *string `android:"arch_variant"`
Aidl struct {
// Top level directories to pass to aidl tool
Include_dirs []string
// Directories rooted at the Android.bp file to pass to aidl tool
Local_include_dirs []string
}
}
type ApiToCheck struct {
@ -310,6 +318,60 @@ func (j *Javadoc) genWhitelistPathPrefixes(whitelistPathPrefixes map[string]bool
}
}
func (j *Javadoc) collectBuilderFlags(ctx android.ModuleContext, deps deps) javaBuilderFlags {
var flags javaBuilderFlags
// aidl flags.
aidlFlags := j.aidlFlags(ctx, deps.aidlPreprocess, deps.aidlIncludeDirs)
if len(aidlFlags) > 0 {
// optimization.
ctx.Variable(pctx, "aidlFlags", strings.Join(aidlFlags, " "))
flags.aidlFlags = "$aidlFlags"
}
return flags
}
func (j *Javadoc) aidlFlags(ctx android.ModuleContext, aidlPreprocess android.OptionalPath,
aidlIncludeDirs android.Paths) []string {
aidlIncludes := android.PathsForModuleSrc(ctx, j.properties.Aidl.Local_include_dirs)
aidlIncludes = append(aidlIncludes, android.PathsForSource(ctx, j.properties.Aidl.Include_dirs)...)
var flags []string
if aidlPreprocess.Valid() {
flags = append(flags, "-p"+aidlPreprocess.String())
} else {
flags = append(flags, android.JoinWithPrefix(aidlIncludeDirs.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())
}
return flags
}
func (j *Javadoc) genSources(ctx android.ModuleContext, srcFiles android.Paths,
flags javaBuilderFlags) android.Paths {
outSrcFiles := make(android.Paths, 0, len(srcFiles))
for _, srcFile := range srcFiles {
switch srcFile.Ext() {
case ".aidl":
javaFile := genAidl(ctx, srcFile, flags.aidlFlags)
outSrcFiles = append(outSrcFiles, javaFile)
default:
outSrcFiles = append(outSrcFiles, srcFile)
}
}
return outSrcFiles
}
func (j *Javadoc) collectDeps(ctx android.ModuleContext) deps {
var deps deps
@ -388,6 +450,8 @@ func (j *Javadoc) collectDeps(ctx android.ModuleContext) deps {
// do not pass exclude_srcs directly when expanding srcFiles since exclude_srcs
// may contain filegroup or genrule.
srcFiles := ctx.ExpandSources(j.properties.Srcs, j.properties.Exclude_srcs)
flags := j.collectBuilderFlags(ctx, deps)
srcFiles = j.genSources(ctx, srcFiles, flags)
// srcs may depend on some genrule output.
j.srcJars = srcFiles.FilterByExt(".srcjar")

View File

@ -200,6 +200,7 @@ func testContext(config android.Config, bp string,
"bar-doc/a.java": nil,
"bar-doc/b.java": nil,
"bar-doc/IFoo.aidl": nil,
"bar-doc/known_oj_tags.txt": nil,
"external/doclava/templates-sdk": nil,
@ -921,6 +922,7 @@ func TestDroiddoc(t *testing.T) {
name: "bar-doc",
srcs: [
"bar-doc/*.java",
"bar-doc/IFoo.aidl",
],
exclude_srcs: [
"bar-doc/b.java"
@ -943,6 +945,14 @@ func TestDroiddoc(t *testing.T) {
if stubsJar != barDoc.Output.String() {
t.Errorf("expected stubs Jar [%q], got %q", stubsJar, barDoc.Output.String())
}
inputs := ctx.ModuleForTests("bar-doc", "android_common").Rule("javadoc").Inputs
var javaSrcs []string
for _, i := range inputs {
javaSrcs = append(javaSrcs, i.Base())
}
if len(javaSrcs) != 2 || javaSrcs[0] != "a.java" || javaSrcs[1] != "IFoo.java" {
t.Errorf("inputs of bar-doc must be []string{\"a.java\", \"IFoo.java\", but was %#v.", javaSrcs)
}
}
func TestJarGenrules(t *testing.T) {