Merge "Add a Impl_only_libs prop for sdk_library"
This commit is contained in:
commit
858a8cabf9
|
@ -1580,6 +1580,39 @@ func TestJavaSdkLibrary(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestJavaSdkLibrary_StubOrImplOnlyLibs(t *testing.T) {
|
||||||
|
ctx, _ := testJava(t, `
|
||||||
|
java_sdk_library {
|
||||||
|
name: "sdk_lib",
|
||||||
|
srcs: ["a.java"],
|
||||||
|
impl_only_libs: ["foo"],
|
||||||
|
stub_only_libs: ["bar"],
|
||||||
|
}
|
||||||
|
java_library {
|
||||||
|
name: "foo",
|
||||||
|
srcs: ["a.java"],
|
||||||
|
sdk_version: "current",
|
||||||
|
}
|
||||||
|
java_library {
|
||||||
|
name: "bar",
|
||||||
|
srcs: ["a.java"],
|
||||||
|
sdk_version: "current",
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
|
||||||
|
for _, implName := range []string{"sdk_lib", "sdk_lib.impl"} {
|
||||||
|
implJavacCp := ctx.ModuleForTests(implName, "android_common").Rule("javac").Args["classpath"]
|
||||||
|
if !strings.Contains(implJavacCp, "/foo.jar") || strings.Contains(implJavacCp, "/bar.jar") {
|
||||||
|
t.Errorf("%v javac classpath %v does not contain foo and not bar", implName, implJavacCp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stubName := apiScopePublic.stubsLibraryModuleName("sdk_lib")
|
||||||
|
stubsJavacCp := ctx.ModuleForTests(stubName, "android_common").Rule("javac").Args["classpath"]
|
||||||
|
if strings.Contains(stubsJavacCp, "/foo.jar") || !strings.Contains(stubsJavacCp, "/bar.jar") {
|
||||||
|
t.Errorf("stubs javac classpath %v does not contain bar and not foo", stubsJavacCp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestJavaSdkLibrary_DoNotAccessImplWhenItIsNotBuilt(t *testing.T) {
|
func TestJavaSdkLibrary_DoNotAccessImplWhenItIsNotBuilt(t *testing.T) {
|
||||||
ctx, _ := testJava(t, `
|
ctx, _ := testJava(t, `
|
||||||
java_sdk_library {
|
java_sdk_library {
|
||||||
|
|
|
@ -388,6 +388,9 @@ type sdkLibraryProperties struct {
|
||||||
// visibility property.
|
// visibility property.
|
||||||
Stubs_source_visibility []string
|
Stubs_source_visibility []string
|
||||||
|
|
||||||
|
// List of Java libraries that will be in the classpath when building the implementation lib
|
||||||
|
Impl_only_libs []string `android:"arch_variant"`
|
||||||
|
|
||||||
// List of Java libraries that will be in the classpath when building stubs
|
// List of Java libraries that will be in the classpath when building stubs
|
||||||
Stub_only_libs []string `android:"arch_variant"`
|
Stub_only_libs []string `android:"arch_variant"`
|
||||||
|
|
||||||
|
@ -1137,12 +1140,16 @@ func (module *SdkLibrary) createImplLibrary(mctx android.DefaultableHookContext)
|
||||||
Name *string
|
Name *string
|
||||||
Visibility []string
|
Visibility []string
|
||||||
Instrument bool
|
Instrument bool
|
||||||
|
Libs []string
|
||||||
ConfigurationName *string
|
ConfigurationName *string
|
||||||
}{
|
}{
|
||||||
Name: proptools.StringPtr(module.implLibraryModuleName()),
|
Name: proptools.StringPtr(module.implLibraryModuleName()),
|
||||||
Visibility: visibility,
|
Visibility: visibility,
|
||||||
// Set the instrument property to ensure it is instrumented when instrumentation is required.
|
// Set the instrument property to ensure it is instrumented when instrumentation is required.
|
||||||
Instrument: true,
|
Instrument: true,
|
||||||
|
// Set the impl_only libs. Note that the module's "Libs" get appended as well, via the
|
||||||
|
// addition of &module.properties below.
|
||||||
|
Libs: module.sdkLibraryProperties.Impl_only_libs,
|
||||||
|
|
||||||
// Make the created library behave as if it had the same name as this module.
|
// Make the created library behave as if it had the same name as this module.
|
||||||
ConfigurationName: moduleNamePtr,
|
ConfigurationName: moduleNamePtr,
|
||||||
|
@ -1565,6 +1572,9 @@ func (module *SdkLibrary) CreateInternalModules(mctx android.DefaultableHookCont
|
||||||
defer javaSdkLibrariesLock.Unlock()
|
defer javaSdkLibrariesLock.Unlock()
|
||||||
*javaSdkLibraries = append(*javaSdkLibraries, module.BaseModuleName())
|
*javaSdkLibraries = append(*javaSdkLibraries, module.BaseModuleName())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add the impl_only_libs *after* we're done using the Libs prop in submodules.
|
||||||
|
module.properties.Libs = append(module.properties.Libs, module.sdkLibraryProperties.Impl_only_libs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (module *SdkLibrary) InitSdkLibraryProperties() {
|
func (module *SdkLibrary) InitSdkLibraryProperties() {
|
||||||
|
|
Loading…
Reference in New Issue