Merge "Fix the issue that changing merge_annotations_dir doesn't trigger build"

This commit is contained in:
Nan Zhang
2018-08-06 23:43:17 +00:00
committed by Gerrit Code Review
2 changed files with 30 additions and 18 deletions

View File

@@ -94,7 +94,7 @@ func init() {
android.RegisterModuleType("droiddoc", DroiddocFactory) android.RegisterModuleType("droiddoc", DroiddocFactory)
android.RegisterModuleType("droiddoc_host", DroiddocHostFactory) android.RegisterModuleType("droiddoc_host", DroiddocHostFactory)
android.RegisterModuleType("droiddoc_template", DroiddocTemplateFactory) android.RegisterModuleType("droiddoc_exported_dir", ExportedDroiddocDirFactory)
android.RegisterModuleType("javadoc", JavadocFactory) android.RegisterModuleType("javadoc", JavadocFactory)
android.RegisterModuleType("javadoc_host", JavadocHostFactory) android.RegisterModuleType("javadoc_host", JavadocHostFactory)
} }
@@ -698,6 +698,12 @@ func (d *Droiddoc) DepsMutator(ctx android.BottomUpMutatorContext) {
if String(d.properties.Metalava_previous_api) != "" { if String(d.properties.Metalava_previous_api) != "" {
android.ExtractSourceDeps(ctx, d.properties.Metalava_previous_api) android.ExtractSourceDeps(ctx, d.properties.Metalava_previous_api)
} }
if len(d.properties.Metalava_merge_annotations_dirs) != 0 {
for _, mergeAnnotationsDir := range d.properties.Metalava_merge_annotations_dirs {
ctx.AddDependency(ctx.Module(), metalavaMergeAnnotationsDirTag, mergeAnnotationsDir)
}
}
} }
func (d *Droiddoc) initBuilderFlags(ctx android.ModuleContext, implicits *android.Paths, deps deps) (droiddocBuilderFlags, error) { func (d *Droiddoc) initBuilderFlags(ctx android.ModuleContext, implicits *android.Paths, deps deps) (droiddocBuilderFlags, error) {
@@ -773,7 +779,7 @@ func (d *Droiddoc) collectDoclavaDocsFlags(ctx android.ModuleContext, implicits
} }
ctx.VisitDirectDepsWithTag(droiddocTemplateTag, func(m android.Module) { ctx.VisitDirectDepsWithTag(droiddocTemplateTag, func(m android.Module) {
if t, ok := m.(*DroiddocTemplate); ok { if t, ok := m.(*ExportedDroiddocDir); ok {
*implicits = append(*implicits, t.deps...) *implicits = append(*implicits, t.deps...)
args = args + " -templatedir " + t.dir.String() args = args + " -templatedir " + t.dir.String()
} else { } else {
@@ -942,16 +948,21 @@ func (d *Droiddoc) collectMetalavaAnnotationsFlags(
d.annotationsZip = android.PathForModuleOut(ctx, ctx.ModuleName()+"_annotations.zip") d.annotationsZip = android.PathForModuleOut(ctx, ctx.ModuleName()+"_annotations.zip")
*implicitOutputs = append(*implicitOutputs, d.annotationsZip) *implicitOutputs = append(*implicitOutputs, d.annotationsZip)
flags += " --extract-annotations " + d.annotationsZip.String()
if len(d.properties.Metalava_merge_annotations_dirs) == 0 { if len(d.properties.Metalava_merge_annotations_dirs) == 0 {
ctx.PropertyErrorf("metalava_merge_annotations_dirs", ctx.PropertyErrorf("metalava_merge_annotations_dirs",
"has to be non-empty if annotations was enabled!") "has to be non-empty if annotations was enabled!")
} }
mergeAnnotationsDirs := android.PathsForSource(ctx, d.properties.Metalava_merge_annotations_dirs) ctx.VisitDirectDepsWithTag(metalavaMergeAnnotationsDirTag, func(m android.Module) {
if t, ok := m.(*ExportedDroiddocDir); ok {
flags += " --extract-annotations " + d.annotationsZip.String() *implicits = append(*implicits, t.deps...)
for _, mergeAnnotationsDir := range mergeAnnotationsDirs { flags += " --merge-annotations " + t.dir.String()
flags += " --merge-annotations " + mergeAnnotationsDir.String() } else {
ctx.PropertyErrorf("metalava_merge_annotations_dirs",
"module %q is not a metalava merge-annotations dir", ctx.OtherModuleName(m))
} }
})
// TODO(tnorbye): find owners to fix these warnings when annotation was enabled. // TODO(tnorbye): find owners to fix these warnings when annotation was enabled.
flags += " --hide HiddenTypedefConstant --hide SuperfluousPrefix --hide AnnotationExtraction " flags += " --hide HiddenTypedefConstant --hide SuperfluousPrefix --hide AnnotationExtraction "
} }
@@ -1140,34 +1151,35 @@ func (d *Droiddoc) GenerateAndroidBuildActions(ctx android.ModuleContext) {
} }
// //
// Droiddoc Template // Exported Droiddoc Directory
// //
var droiddocTemplateTag = dependencyTag{name: "droiddoc-template"} var droiddocTemplateTag = dependencyTag{name: "droiddoc-template"}
var metalavaMergeAnnotationsDirTag = dependencyTag{name: "metalava-merge-annotations-dir"}
type DroiddocTemplateProperties struct { type ExportedDroiddocDirProperties struct {
// path to the directory containing the droiddoc templates. // path to the directory containing Droiddoc related files.
Path *string Path *string
} }
type DroiddocTemplate struct { type ExportedDroiddocDir struct {
android.ModuleBase android.ModuleBase
properties DroiddocTemplateProperties properties ExportedDroiddocDirProperties
deps android.Paths deps android.Paths
dir android.Path dir android.Path
} }
func DroiddocTemplateFactory() android.Module { func ExportedDroiddocDirFactory() android.Module {
module := &DroiddocTemplate{} module := &ExportedDroiddocDir{}
module.AddProperties(&module.properties) module.AddProperties(&module.properties)
android.InitAndroidModule(module) android.InitAndroidModule(module)
return module return module
} }
func (d *DroiddocTemplate) DepsMutator(android.BottomUpMutatorContext) {} func (d *ExportedDroiddocDir) DepsMutator(android.BottomUpMutatorContext) {}
func (d *DroiddocTemplate) GenerateAndroidBuildActions(ctx android.ModuleContext) { func (d *ExportedDroiddocDir) GenerateAndroidBuildActions(ctx android.ModuleContext) {
path := android.PathForModuleSrc(ctx, String(d.properties.Path)) path := android.PathForModuleSrc(ctx, String(d.properties.Path))
d.dir = path d.dir = path
d.deps = ctx.Glob(path.Join(ctx, "**/*").String(), nil) d.deps = ctx.Glob(path.Join(ctx, "**/*").String(), nil)

View File

@@ -84,7 +84,7 @@ func testContext(config android.Config, bp string,
ctx.RegisterModuleType("genrule", android.ModuleFactoryAdaptor(genrule.GenRuleFactory)) ctx.RegisterModuleType("genrule", android.ModuleFactoryAdaptor(genrule.GenRuleFactory))
ctx.RegisterModuleType("droiddoc", android.ModuleFactoryAdaptor(DroiddocFactory)) ctx.RegisterModuleType("droiddoc", android.ModuleFactoryAdaptor(DroiddocFactory))
ctx.RegisterModuleType("droiddoc_host", android.ModuleFactoryAdaptor(DroiddocHostFactory)) ctx.RegisterModuleType("droiddoc_host", android.ModuleFactoryAdaptor(DroiddocHostFactory))
ctx.RegisterModuleType("droiddoc_template", android.ModuleFactoryAdaptor(DroiddocTemplateFactory)) ctx.RegisterModuleType("droiddoc_template", android.ModuleFactoryAdaptor(ExportedDroiddocDirFactory))
ctx.RegisterModuleType("java_sdk_library", android.ModuleFactoryAdaptor(sdkLibraryFactory)) ctx.RegisterModuleType("java_sdk_library", android.ModuleFactoryAdaptor(sdkLibraryFactory))
ctx.RegisterModuleType("prebuilt_apis", android.ModuleFactoryAdaptor(prebuiltApisFactory)) ctx.RegisterModuleType("prebuilt_apis", android.ModuleFactoryAdaptor(prebuiltApisFactory))
ctx.PreArchMutators(android.RegisterPrebuiltsPreArchMutators) ctx.PreArchMutators(android.RegisterPrebuiltsPreArchMutators)