Merge "Remove srcs_lib_whitelist_dirs"

This commit is contained in:
Jiyong Park 2019-08-27 00:30:06 +00:00 committed by Gerrit Code Review
commit 0f60062cb5
3 changed files with 26 additions and 36 deletions

View File

@ -64,10 +64,7 @@ type JavadocProperties struct {
// the java library (in classpath) for documentation that provides java srcs and srcjars. // the java library (in classpath) for documentation that provides java srcs and srcjars.
Srcs_lib *string Srcs_lib *string
// the base dirs under srcs_lib will be scanned for java srcs. // List of packages to document from srcs_lib
Srcs_lib_whitelist_dirs []string
// the sub dirs under srcs_lib_whitelist_dirs will be scanned for java srcs.
Srcs_lib_whitelist_pkgs []string Srcs_lib_whitelist_pkgs []string
// If set to false, don't allow this module(-docs.zip) to be exported. Defaults to true. // If set to false, don't allow this module(-docs.zip) to be exported. Defaults to true.
@ -428,19 +425,6 @@ func (j *Javadoc) addDeps(ctx android.BottomUpMutatorContext) {
} }
} }
func (j *Javadoc) genWhitelistPathPrefixes(whitelistPathPrefixes map[string]bool) {
for _, dir := range j.properties.Srcs_lib_whitelist_dirs {
for _, pkg := range j.properties.Srcs_lib_whitelist_pkgs {
// convert foo.bar.baz to foo/bar/baz
pkgAsPath := filepath.Join(strings.Split(pkg, ".")...)
prefix := filepath.Join(dir, pkgAsPath)
if _, found := whitelistPathPrefixes[prefix]; !found {
whitelistPathPrefixes[prefix] = true
}
}
}
}
func (j *Javadoc) collectAidlFlags(ctx android.ModuleContext, deps deps) droiddocBuilderFlags { func (j *Javadoc) collectAidlFlags(ctx android.ModuleContext, deps deps) droiddocBuilderFlags {
var flags droiddocBuilderFlags var flags droiddocBuilderFlags
@ -480,10 +464,12 @@ func (j *Javadoc) genSources(ctx android.ModuleContext, srcFiles android.Paths,
outSrcFiles := make(android.Paths, 0, len(srcFiles)) outSrcFiles := make(android.Paths, 0, len(srcFiles))
aidlIncludeFlags := genAidlIncludeFlags(srcFiles)
for _, srcFile := range srcFiles { for _, srcFile := range srcFiles {
switch srcFile.Ext() { switch srcFile.Ext() {
case ".aidl": case ".aidl":
javaFile := genAidl(ctx, srcFile, flags.aidlFlags, flags.aidlDeps) javaFile := genAidl(ctx, srcFile, flags.aidlFlags+aidlIncludeFlags, flags.aidlDeps)
outSrcFiles = append(outSrcFiles, javaFile) outSrcFiles = append(outSrcFiles, javaFile)
case ".sysprop": case ".sysprop":
javaFile := genSysprop(ctx, srcFile) javaFile := genSysprop(ctx, srcFile)
@ -537,14 +523,13 @@ func (j *Javadoc) collectDeps(ctx android.ModuleContext) deps {
switch dep := module.(type) { switch dep := module.(type) {
case Dependency: case Dependency:
srcs := dep.(SrcDependency).CompiledSrcs() srcs := dep.(SrcDependency).CompiledSrcs()
whitelistPathPrefixes := make(map[string]bool)
j.genWhitelistPathPrefixes(whitelistPathPrefixes)
for _, src := range srcs { for _, src := range srcs {
if _, ok := src.(android.WritablePath); ok { // generated sources if _, ok := src.(android.WritablePath); ok { // generated sources
deps.srcs = append(deps.srcs, src) deps.srcs = append(deps.srcs, src)
} else { // select source path for documentation based on whitelist path prefixs. } else { // select source path for documentation based on whitelist path prefixs.
for k := range whitelistPathPrefixes { for _, pkg := range j.properties.Srcs_lib_whitelist_pkgs {
if strings.HasPrefix(src.Rel(), k) { pkgAsPath := filepath.Join(strings.Split(pkg, ".")...)
if strings.HasPrefix(src.Rel(), pkgAsPath) {
deps.srcs = append(deps.srcs, src) deps.srcs = append(deps.srcs, src)
break break
} }

View File

@ -65,10 +65,6 @@ var (
func genAidl(ctx android.ModuleContext, aidlFile android.Path, aidlFlags string, deps android.Paths) android.Path { func genAidl(ctx android.ModuleContext, aidlFile android.Path, aidlFlags string, deps android.Paths) android.Path {
javaFile := android.GenPathWithExt(ctx, "aidl", aidlFile, "java") javaFile := android.GenPathWithExt(ctx, "aidl", aidlFile, "java")
depFile := javaFile.String() + ".d" depFile := javaFile.String() + ".d"
baseDir := strings.TrimSuffix(aidlFile.String(), aidlFile.Rel())
if baseDir != "" {
aidlFlags += " -I" + baseDir
}
ctx.Build(pctx, android.BuildParams{ ctx.Build(pctx, android.BuildParams{
Rule: aidl, Rule: aidl,
@ -111,15 +107,30 @@ func genSysprop(ctx android.ModuleContext, syspropFile android.Path) android.Pat
return srcJarFile return srcJarFile
} }
func genAidlIncludeFlags(srcFiles android.Paths) string {
var baseDirs []string
for _, srcFile := range srcFiles {
if srcFile.Ext() == ".aidl" {
baseDir := strings.TrimSuffix(srcFile.String(), srcFile.Rel())
if baseDir != "" && !android.InList(baseDir, baseDirs) {
baseDirs = append(baseDirs, baseDir)
}
}
}
return android.JoinWithPrefix(baseDirs, " -I")
}
func (j *Module) genSources(ctx android.ModuleContext, srcFiles android.Paths, func (j *Module) genSources(ctx android.ModuleContext, srcFiles android.Paths,
flags javaBuilderFlags) android.Paths { flags javaBuilderFlags) android.Paths {
outSrcFiles := make(android.Paths, 0, len(srcFiles)) outSrcFiles := make(android.Paths, 0, len(srcFiles))
aidlIncludeFlags := genAidlIncludeFlags(srcFiles)
for _, srcFile := range srcFiles { for _, srcFile := range srcFiles {
switch srcFile.Ext() { switch srcFile.Ext() {
case ".aidl": case ".aidl":
javaFile := genAidl(ctx, srcFile, flags.aidlFlags, flags.aidlDeps) javaFile := genAidl(ctx, srcFile, flags.aidlFlags+aidlIncludeFlags, flags.aidlDeps)
outSrcFiles = append(outSrcFiles, javaFile) outSrcFiles = append(outSrcFiles, javaFile)
case ".logtags": case ".logtags":
j.logtagsSrcs = append(j.logtagsSrcs, srcFile) j.logtagsSrcs = append(j.logtagsSrcs, srcFile)

View File

@ -103,11 +103,7 @@ type sdkLibraryProperties struct {
// the java library (in classpath) for documentation that provides java srcs and srcjars. // the java library (in classpath) for documentation that provides java srcs and srcjars.
Srcs_lib *string Srcs_lib *string
// the base dirs under srcs_lib will be scanned for java srcs. // list of packages to document from srcs_lib. Defaults to "android.annotation".
Srcs_lib_whitelist_dirs []string
// the sub dirs under srcs_lib_whitelist_dirs will be scanned for java srcs.
// Defaults to "android.annotation".
Srcs_lib_whitelist_pkgs []string Srcs_lib_whitelist_pkgs []string
// a list of top-level directories containing files to merge qualifier annotations // a list of top-level directories containing files to merge qualifier annotations
@ -443,7 +439,6 @@ func (module *SdkLibrary) createDocs(mctx android.LoadHookContext, apiScope apiS
Srcs []string Srcs []string
Installable *bool Installable *bool
Srcs_lib *string Srcs_lib *string
Srcs_lib_whitelist_dirs []string
Srcs_lib_whitelist_pkgs []string Srcs_lib_whitelist_pkgs []string
Sdk_version *string Sdk_version *string
Libs []string Libs []string
@ -535,7 +530,6 @@ func (module *SdkLibrary) createDocs(mctx android.LoadHookContext, apiScope apiS
module.latestRemovedApiFilegroupName(apiScope)) module.latestRemovedApiFilegroupName(apiScope))
props.Check_api.Ignore_missing_latest_api = proptools.BoolPtr(true) props.Check_api.Ignore_missing_latest_api = proptools.BoolPtr(true)
props.Srcs_lib = module.sdkLibraryProperties.Srcs_lib props.Srcs_lib = module.sdkLibraryProperties.Srcs_lib
props.Srcs_lib_whitelist_dirs = module.sdkLibraryProperties.Srcs_lib_whitelist_dirs
props.Srcs_lib_whitelist_pkgs = module.sdkLibraryProperties.Srcs_lib_whitelist_pkgs props.Srcs_lib_whitelist_pkgs = module.sdkLibraryProperties.Srcs_lib_whitelist_pkgs
mctx.CreateModule(android.ModuleFactoryAdaptor(DroidstubsFactory), &props) mctx.CreateModule(android.ModuleFactoryAdaptor(DroidstubsFactory), &props)
@ -550,9 +544,9 @@ func (module *SdkLibrary) createXmlFile(mctx android.LoadHookContext) {
Licensed under the Apache License, Version 2.0 (the "License"); Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
You may obtain a copy of the License at You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.