Remove srcs_lib_whitelist_dirs

This change removes srcs_lib_whitelist_dirs which was used to let
droiddoc to know the base directories for the AIDL/Java source files.
Instead, the base directories are given via the path property of the
filegroup modules.

This change also includes a fix that the base directories from all
filegroup modules listed in srcs are used as the import paths for the
AIDL compiler. This removes the need to have aidl.[local_]include_dirs.

Bug: 70046217
Test: m
Exempt-From-Owner-Approval: Approved internally
Merged-In: I62ff2a7dd3943d9a3d95d91c36a30fd44ea467d2
(cherry picked from commit f79334d95c)
Change-Id: I62ff2a7dd3943d9a3d95d91c36a30fd44ea467d2
This commit is contained in:
Jiyong Park
2019-08-16 21:12:10 +09:00
parent fb7e0b3aa2
commit 1112c4c0d7
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
@@ -479,10 +463,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)
@@ -533,14 +519,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)