diff options
author | 2020-07-13 21:16:39 +0000 | |
---|---|---|
committer | 2020-07-13 21:16:39 +0000 | |
commit | fd0111b26a34e75754018b1e28bc700bbf51c7cf (patch) | |
tree | eea5476bd3353c4525a22f39cce89434b8d3cffd /java/droiddoc.go | |
parent | 401b8ec527f66747bb410fe0c559acb25bbf12ef (diff) | |
parent | 95393f8df12b342bfdcfe67a533ed75878e6d55d (diff) |
Merge "Add array type property flags, equivalent to args" am: aeaffeb710 am: 95393f8df1
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1356166
Change-Id: Ia322c48a1f213998a70c6d0b8c07df67342b7eec
Diffstat (limited to 'java/droiddoc.go')
-rw-r--r-- | java/droiddoc.go | 71 |
1 files changed, 46 insertions, 25 deletions
diff --git a/java/droiddoc.go b/java/droiddoc.go index 332c866bb..e3aaf6566 100644 --- a/java/droiddoc.go +++ b/java/droiddoc.go @@ -112,13 +112,20 @@ type JavadocProperties struct { // local files that are used within user customized droiddoc options. Arg_files []string `android:"path"` - // user customized droiddoc args. + // user customized droiddoc args. Deprecated, use flags instead. // Available variables for substitution: // // $(location <label>): the path to the arg_files with name <label> // $$: a literal $ Args *string + // user customized droiddoc args. Not compatible with property args. + // Available variables for substitution: + // + // $(location <label>): the path to the arg_files with name <label> + // $$: a literal $ + Flags []string + // names of the output files used in args that will be generated Out []string @@ -382,7 +389,7 @@ type Javadoc struct { argFiles android.Paths implicits android.Paths - args string + args []string docZip android.WritablePath stubsSrcJar android.WritablePath @@ -619,8 +626,8 @@ func (j *Javadoc) collectDeps(ctx android.ModuleContext) deps { } srcFiles = filterHtml(srcFiles) - flags := j.collectAidlFlags(ctx, deps) - srcFiles = j.genSources(ctx, srcFiles, flags) + aidlFlags := j.collectAidlFlags(ctx, deps) + srcFiles = j.genSources(ctx, srcFiles, aidlFlags) // srcs may depend on some genrule output. j.srcJars = srcFiles.FilterByExt(".srcjar") @@ -649,24 +656,38 @@ func (j *Javadoc) collectDeps(ctx android.ModuleContext) deps { } } - var err error - j.args, err = android.Expand(String(j.properties.Args), func(name string) (string, error) { - if strings.HasPrefix(name, "location ") { - label := strings.TrimSpace(strings.TrimPrefix(name, "location ")) - if paths, ok := argFilesMap[label]; ok { - return paths, nil - } else { - return "", fmt.Errorf("unknown location label %q, expecting one of %q", - label, strings.Join(argFileLabels, ", ")) + var argsPropertyName string + flags := make([]string, 0) + if j.properties.Args != nil && j.properties.Flags != nil { + ctx.PropertyErrorf("args", "flags is set. Cannot set args") + } else if args := proptools.String(j.properties.Args); args != "" { + flags = append(flags, args) + argsPropertyName = "args" + } else { + flags = append(flags, j.properties.Flags...) + argsPropertyName = "flags" + } + + for _, flag := range flags { + args, err := android.Expand(flag, func(name string) (string, error) { + if strings.HasPrefix(name, "location ") { + label := strings.TrimSpace(strings.TrimPrefix(name, "location ")) + if paths, ok := argFilesMap[label]; ok { + return paths, nil + } else { + return "", fmt.Errorf("unknown location label %q, expecting one of %q", + label, strings.Join(argFileLabels, ", ")) + } + } else if name == "genDir" { + return android.PathForModuleGen(ctx).String(), nil } - } else if name == "genDir" { - return android.PathForModuleGen(ctx).String(), nil - } - return "", fmt.Errorf("unknown variable '$(%s)'", name) - }) + return "", fmt.Errorf("unknown variable '$(%s)'", name) + }) - if err != nil { - ctx.PropertyErrorf("args", "%s", err.Error()) + if err != nil { + ctx.PropertyErrorf(argsPropertyName, "%s", err.Error()) + } + j.args = append(j.args, args) } return deps @@ -1010,7 +1031,7 @@ func (d *Droiddoc) GenerateAndroidBuildActions(ctx android.ModuleContext) { d.stubsFlags(ctx, cmd, stubsDir) - cmd.Flag(d.Javadoc.args).Implicits(d.Javadoc.argFiles) + cmd.Flag(strings.Join(d.Javadoc.args, " ")).Implicits(d.Javadoc.argFiles) if d.properties.Compat_config != nil { compatConfig := android.PathForModuleSrc(ctx, String(d.properties.Compat_config)) @@ -1327,7 +1348,7 @@ func (d *Droidstubs) annotationsFlags(ctx android.ModuleContext, cmd *android.Ru cmd.Flag("--include-annotations") validatingNullability := - strings.Contains(d.Javadoc.args, "--validate-nullability-from-merged-stubs") || + android.InList("--validate-nullability-from-merged-stubs", d.Javadoc.args) || String(d.properties.Validate_nullability_from_list) != "" migratingNullability := String(d.properties.Previous_api) != "" @@ -1539,14 +1560,14 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) { d.apiLevelsAnnotationsFlags(ctx, cmd) d.apiToXmlFlags(ctx, cmd) - if strings.Contains(d.Javadoc.args, "--generate-documentation") { + if android.InList("--generate-documentation", d.Javadoc.args) { // Currently Metalava have the ability to invoke Javadoc in a seperate process. // Pass "-nodocs" to suppress the Javadoc invocation when Metalava receives // "--generate-documentation" arg. This is not needed when Metalava removes this feature. - d.Javadoc.args = d.Javadoc.args + " -nodocs " + d.Javadoc.args = append(d.Javadoc.args, "-nodocs") } - cmd.Flag(d.Javadoc.args).Implicits(d.Javadoc.argFiles) + cmd.Flag(strings.Join(d.Javadoc.args, " ")).Implicits(d.Javadoc.argFiles) for _, o := range d.Javadoc.properties.Out { cmd.ImplicitOutput(android.PathForModuleGen(ctx, o)) } |