Droiddoc Support in Soong

Support Droiddoc to Soong based on core/droiddoc.mk. The non-std doclet
based droiddoc compilation output is a "real" stubs.jar instead of a
directory of java files and a timestamp file.

The std doclet based javadoc compilation output is a "empty" stubs.jar
instead of a timestamp file.

The stubs.jar will be exported to
out/target/common/obj/JAVA_LIBRARIES/$(LOCAL_MODULE)_intermediates/classes.jar
and out/target/common/docs/$(LOCAL_MODULE)-stubs.jar

A $(LOCAL_MODULE).zip file will be generated also, and is exported to
out/target/common/docs/$(LOCAL_MODULE)-docs.zip if property: installable is not set
to false.

Bug: b/70351683
Test: unittest + convert libcore docs Android.mk to Soong manually.

Change-Id: I1cffddd138a5d9d445f86a3d4a3fd4de88a2bc0f
(cherry picked from commit 78188ec622cb1ee24171455867fc58ffab91562e)
This commit is contained in:
Nan Zhang
2018-01-10 16:06:12 -08:00
parent 50b8682dca
commit 581fd21e91
10 changed files with 567 additions and 12 deletions

View File

@@ -113,6 +113,7 @@ type ModuleContext interface {
ExpandOptionalSource(srcFile *string, prop string) OptionalPath
ExpandSourcesSubDir(srcFiles, excludes []string, subDir string) Paths
Glob(globPattern string, excludes []string) Paths
GlobFiles(globPattern string, excludes []string) Paths
InstallExecutable(installPath OutputPath, name string, srcPath Path, deps ...Path) OutputPath
InstallFile(installPath OutputPath, name string, srcPath Path, deps ...Path) OutputPath
@@ -1245,6 +1246,24 @@ func (ctx *androidModuleContext) Glob(globPattern string, excludes []string) Pat
return pathsForModuleSrcFromFullPath(ctx, ret)
}
// glob only "files" under the directory relative to top of the source tree.
func (ctx *androidModuleContext) GlobFiles(globPattern string, excludes []string) Paths {
paths, err := ctx.GlobWithDeps(globPattern, excludes)
if err != nil {
ctx.ModuleErrorf("glob: %s", err.Error())
}
var ret []Path
for _, p := range paths {
if isDir, err := ctx.Fs().IsDir(p); err != nil {
ctx.ModuleErrorf("error in IsDir(%s): %s", p, err.Error())
return nil
} else if !isDir {
ret = append(ret, PathForSource(ctx, p))
}
}
return ret
}
func init() {
RegisterSingletonType("buildtarget", BuildTargetSingleton)
}