aboutsummaryrefslogtreecommitdiffstats
path: root/java/sdk_library.go
diff options
context:
space:
mode:
authorSundong Ahn <sundongahn@google.com>2018-07-06 11:20:23 +0900
committerSundong Ahn <sundongahn@google.com>2018-07-11 23:56:17 +0000
commit57368eb5151b587c67272f5835f6b7dbdb7c0b26 (patch)
treece953739dce0ac398ffc48b5c232ce019e6fae57 /java/sdk_library.go
parent7f1c57ee33d7117cda29bb1b7cd84dfe341632a9 (diff)
downloadandroid_build_soong-57368eb5151b587c67272f5835f6b7dbdb7c0b26.tar.gz
android_build_soong-57368eb5151b587c67272f5835f6b7dbdb7c0b26.tar.bz2
android_build_soong-57368eb5151b587c67272f5835f6b7dbdb7c0b26.zip
Change link type rule
If linkType of a module is javaPlatform, the module will link to <lib>.impl instead of <lib>.stubs.system. Bug: 77577799 Test: make -j Change-Id: I2a9a0ec7c76c0fc304935f16c4c371aea39bffd6
Diffstat (limited to 'java/sdk_library.go')
-rw-r--r--java/sdk_library.go19
1 files changed, 13 insertions, 6 deletions
diff --git a/java/sdk_library.go b/java/sdk_library.go
index e4cfd417..e65af65f 100644
--- a/java/sdk_library.go
+++ b/java/sdk_library.go
@@ -46,6 +46,7 @@ var (
publicApiStubsTag = dependencyTag{name: "public"}
systemApiStubsTag = dependencyTag{name: "system"}
testApiStubsTag = dependencyTag{name: "test"}
+ implLibTag = dependencyTag{name: "platform"}
)
type apiScope int
@@ -127,6 +128,7 @@ type sdkLibrary struct {
publicApiStubsPath android.Paths
systemApiStubsPath android.Paths
testApiStubsPath android.Paths
+ implLibPath android.Paths
}
func (module *sdkLibrary) DepsMutator(ctx android.BottomUpMutatorContext) {
@@ -134,24 +136,27 @@ func (module *sdkLibrary) DepsMutator(ctx android.BottomUpMutatorContext) {
ctx.AddDependency(ctx.Module(), publicApiStubsTag, module.stubsName(apiScopePublic))
ctx.AddDependency(ctx.Module(), systemApiStubsTag, module.stubsName(apiScopeSystem))
ctx.AddDependency(ctx.Module(), testApiStubsTag, module.stubsName(apiScopeTest))
+ ctx.AddDependency(ctx.Module(), implLibTag, module.implName())
}
func (module *sdkLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) {
- // Record the paths to the header jars of the stubs library.
+ // Record the paths to the header jars of the library (stubs and impl).
// When this java_sdk_library is dependened from others via "libs" property,
// the recorded paths will be returned depending on the link type of the caller.
ctx.VisitDirectDeps(func(to android.Module) {
otherName := ctx.OtherModuleName(to)
tag := ctx.OtherModuleDependencyTag(to)
- if stubs, ok := to.(Dependency); ok {
+ if lib, ok := to.(Dependency); ok {
switch tag {
case publicApiStubsTag:
- module.publicApiStubsPath = stubs.HeaderJars()
+ module.publicApiStubsPath = lib.HeaderJars()
case systemApiStubsTag:
- module.systemApiStubsPath = stubs.HeaderJars()
+ module.systemApiStubsPath = lib.HeaderJars()
case testApiStubsTag:
- module.testApiStubsPath = stubs.HeaderJars()
+ module.testApiStubsPath = lib.HeaderJars()
+ case implLibTag:
+ module.implLibPath = lib.HeaderJars()
default:
ctx.ModuleErrorf("depends on module %q of unknown tag %q", otherName, tag)
}
@@ -543,8 +548,10 @@ func (module *sdkLibrary) createXmlFile(mctx android.TopDownMutatorContext) {
// to satisfy SdkLibraryDependency interface
func (module *sdkLibrary) HeaderJars(linkType linkType) android.Paths {
// This module is just a wrapper for the stubs.
- if linkType == javaSystem || linkType == javaPlatform {
+ if linkType == javaSystem {
return module.systemApiStubsPath
+ } else if linkType == javaPlatform {
+ return module.implLibPath
} else {
return module.publicApiStubsPath
}