diff options
author | Sundong Ahn <sundongahn@google.com> | 2018-07-06 11:20:23 +0900 |
---|---|---|
committer | Sundong Ahn <sundongahn@google.com> | 2018-07-11 23:56:17 +0000 |
commit | 57368eb5151b587c67272f5835f6b7dbdb7c0b26 (patch) | |
tree | ce953739dce0ac398ffc48b5c232ce019e6fae57 /java/sdk_library.go | |
parent | 7f1c57ee33d7117cda29bb1b7cd84dfe341632a9 (diff) | |
download | android_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.go | 19 |
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 } |