From 897d2ed92f2575ab188cdac360564d608f66a438 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Mon, 11 Feb 2019 14:03:51 -0800 Subject: [PATCH] Make java_sdk_library implement Dependency dexpreopting boot jars is going to need to visit both java_library and java_sdk_library modules. Since java_sdk_library is already a java_library module, move the SdkLibraryDependency methods out of the way so that it will implement Dependency. Also requries re-ording some of the type switches to check for the more-specific SdkLibraryDependency first. Test: TestJavaSdkLibrary Change-Id: I155c9ffaf31689dd150a4d99e07e432ff770b4a7 --- java/droiddoc.go | 4 ++-- java/java.go | 22 +++++++++++----------- java/sdk_library.go | 7 +++++-- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/java/droiddoc.go b/java/droiddoc.go index d893c09ae..cbe6be643 100644 --- a/java/droiddoc.go +++ b/java/droiddoc.go @@ -630,10 +630,10 @@ func (j *Javadoc) collectDeps(ctx android.ModuleContext) deps { } case libTag: switch dep := module.(type) { + case SdkLibraryDependency: + deps.classpath = append(deps.classpath, dep.SdkImplementationJars(ctx, j.sdkVersion())...) case Dependency: deps.classpath = append(deps.classpath, dep.HeaderJars()...) - case SdkLibraryDependency: - deps.classpath = append(deps.classpath, dep.ImplementationJars(ctx, j.sdkVersion())...) case android.SourceFileProducer: checkProducesJars(ctx, dep) deps.classpath = append(deps.classpath, dep.Srcs()...) diff --git a/java/java.go b/java/java.go index 3d7d6ad8d..2c7c1f638 100644 --- a/java/java.go +++ b/java/java.go @@ -338,8 +338,8 @@ type Dependency interface { } type SdkLibraryDependency interface { - HeaderJars(ctx android.BaseContext, sdkVersion string) android.Paths - ImplementationJars(ctx android.BaseContext, sdkVersion string) android.Paths + SdkHeaderJars(ctx android.BaseContext, sdkVersion string) android.Paths + SdkImplementationJars(ctx android.BaseContext, sdkVersion string) android.Paths } type SrcDependency interface { @@ -698,6 +698,15 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps { } } switch dep := module.(type) { + case SdkLibraryDependency: + switch tag { + case libTag: + deps.classpath = append(deps.classpath, dep.SdkHeaderJars(ctx, j.sdkVersion())...) + // names of sdk libs that are directly depended are exported + j.exportedSdkLibs = append(j.exportedSdkLibs, otherName) + default: + ctx.ModuleErrorf("dependency on java_sdk_library %q can only be in libs", otherName) + } case Dependency: switch tag { case bootClasspathTag: @@ -748,15 +757,6 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps { } deps.aidlIncludeDirs = append(deps.aidlIncludeDirs, dep.AidlIncludeDirs()...) - case SdkLibraryDependency: - switch tag { - case libTag: - deps.classpath = append(deps.classpath, dep.HeaderJars(ctx, j.sdkVersion())...) - // names of sdk libs that are directly depended are exported - j.exportedSdkLibs = append(j.exportedSdkLibs, otherName) - default: - ctx.ModuleErrorf("dependency on java_sdk_library %q can only be in libs", otherName) - } case android.SourceFileProducer: switch tag { case libTag: diff --git a/java/sdk_library.go b/java/sdk_library.go index 1b0fe75e0..85ce533c0 100644 --- a/java/sdk_library.go +++ b/java/sdk_library.go @@ -145,6 +145,9 @@ type sdkLibrary struct { testApiFilePath android.Path } +var _ Dependency = (*sdkLibrary)(nil) +var _ SdkLibraryDependency = (*sdkLibrary)(nil) + func (module *sdkLibrary) DepsMutator(ctx android.BottomUpMutatorContext) { // Add dependencies to the stubs library ctx.AddVariationDependencies(nil, publicApiStubsTag, module.stubsName(apiScopePublic)) @@ -596,7 +599,7 @@ func (module *sdkLibrary) PrebuiltJars(ctx android.BaseContext, sdkVersion strin } // to satisfy SdkLibraryDependency interface -func (module *sdkLibrary) HeaderJars(ctx android.BaseContext, sdkVersion string) android.Paths { +func (module *sdkLibrary) SdkHeaderJars(ctx android.BaseContext, sdkVersion string) android.Paths { // This module is just a wrapper for the stubs. if ctx.Config().UnbundledBuildPrebuiltSdks() { return module.PrebuiltJars(ctx, sdkVersion) @@ -612,7 +615,7 @@ func (module *sdkLibrary) HeaderJars(ctx android.BaseContext, sdkVersion string) } // to satisfy SdkLibraryDependency interface -func (module *sdkLibrary) ImplementationJars(ctx android.BaseContext, sdkVersion string) android.Paths { +func (module *sdkLibrary) SdkImplementationJars(ctx android.BaseContext, sdkVersion string) android.Paths { // This module is just a wrapper for the stubs. if ctx.Config().UnbundledBuildPrebuiltSdks() { return module.PrebuiltJars(ctx, sdkVersion)