Build VNDK APEX for VNDK-Lite
For VNDK-Lite devices, which doesn't define BOARD_VNDK_VERSION, VNDK APEX is built with only VNDK-Sp libraries with core variants. Bug: 141908078 Bug: 152353068 Bug: 151635128 Test: TH Change-Id: I0d08d32473368fd158818d4c2c72fc4cfad68ce6
This commit is contained in:
parent
c3e9263d7e
commit
65d8a6262c
|
@ -95,6 +95,10 @@ func apexVndkMutator(mctx android.TopDownMutatorContext) {
|
||||||
func apexVndkDepsMutator(mctx android.BottomUpMutatorContext) {
|
func apexVndkDepsMutator(mctx android.BottomUpMutatorContext) {
|
||||||
if m, ok := mctx.Module().(*cc.Module); ok && cc.IsForVndkApex(mctx, m) {
|
if m, ok := mctx.Module().(*cc.Module); ok && cc.IsForVndkApex(mctx, m) {
|
||||||
vndkVersion := m.VndkVersion()
|
vndkVersion := m.VndkVersion()
|
||||||
|
// For VNDK-Lite device, we gather core-variants of VNDK-Sp libraries, which doesn't have VNDK version defined
|
||||||
|
if vndkVersion == "" {
|
||||||
|
vndkVersion = mctx.DeviceConfig().PlatformVndkVersion()
|
||||||
|
}
|
||||||
vndkApexList := vndkApexList(mctx.Config())
|
vndkApexList := vndkApexList(mctx.Config())
|
||||||
if vndkApex, ok := vndkApexList[vndkVersion]; ok {
|
if vndkApex, ok := vndkApexList[vndkVersion]; ok {
|
||||||
mctx.AddReverseDependency(mctx.Module(), sharedLibTag, vndkApex)
|
mctx.AddReverseDependency(mctx.Module(), sharedLibTag, vndkApex)
|
||||||
|
|
|
@ -8,6 +8,59 @@ import (
|
||||||
"android/soong/android"
|
"android/soong/android"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func TestVndkApexForVndkLite(t *testing.T) {
|
||||||
|
ctx, _ := testApex(t, `
|
||||||
|
apex_vndk {
|
||||||
|
name: "myapex",
|
||||||
|
key: "myapex.key",
|
||||||
|
}
|
||||||
|
|
||||||
|
apex_key {
|
||||||
|
name: "myapex.key",
|
||||||
|
public_key: "testkey.avbpubkey",
|
||||||
|
private_key: "testkey.pem",
|
||||||
|
}
|
||||||
|
|
||||||
|
cc_library {
|
||||||
|
name: "libvndk",
|
||||||
|
srcs: ["mylib.cpp"],
|
||||||
|
vendor_available: true,
|
||||||
|
vndk: {
|
||||||
|
enabled: true,
|
||||||
|
},
|
||||||
|
system_shared_libs: [],
|
||||||
|
stl: "none",
|
||||||
|
apex_available: [ "myapex" ],
|
||||||
|
}
|
||||||
|
|
||||||
|
cc_library {
|
||||||
|
name: "libvndksp",
|
||||||
|
srcs: ["mylib.cpp"],
|
||||||
|
vendor_available: true,
|
||||||
|
vndk: {
|
||||||
|
enabled: true,
|
||||||
|
support_system_process: true,
|
||||||
|
},
|
||||||
|
system_shared_libs: [],
|
||||||
|
stl: "none",
|
||||||
|
apex_available: [ "myapex" ],
|
||||||
|
}
|
||||||
|
`+vndkLibrariesTxtFiles("current"), func(fs map[string][]byte, config android.Config) {
|
||||||
|
config.TestProductVariables.DeviceVndkVersion = proptools.StringPtr("")
|
||||||
|
})
|
||||||
|
// VNDK-Lite contains only core variants of VNDK-Sp libraries
|
||||||
|
ensureExactContents(t, ctx, "myapex", "android_common_image", []string{
|
||||||
|
"lib/libvndksp.so",
|
||||||
|
"lib/libc++.so",
|
||||||
|
"lib64/libvndksp.so",
|
||||||
|
"lib64/libc++.so",
|
||||||
|
"etc/llndk.libraries.VER.txt",
|
||||||
|
"etc/vndkcore.libraries.VER.txt",
|
||||||
|
"etc/vndksp.libraries.VER.txt",
|
||||||
|
"etc/vndkprivate.libraries.VER.txt",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func TestVndkApexUsesVendorVariant(t *testing.T) {
|
func TestVndkApexUsesVendorVariant(t *testing.T) {
|
||||||
bp := `
|
bp := `
|
||||||
apex_vndk {
|
apex_vndk {
|
||||||
|
|
|
@ -350,6 +350,15 @@ func IsForVndkApex(mctx android.BottomUpMutatorContext, m *Module) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
if lib, ok := m.linker.(libraryInterface); ok {
|
if lib, ok := m.linker.(libraryInterface); ok {
|
||||||
|
// VNDK APEX for VNDK-Lite devices will have VNDK-SP libraries from core variants
|
||||||
|
if mctx.DeviceConfig().VndkVersion() == "" {
|
||||||
|
// b/73296261: filter out libz.so because it is considered as LLNDK for VNDK-lite devices
|
||||||
|
if mctx.ModuleName() == "libz" {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return m.ImageVariation().Variation == android.CoreVariation && lib.shared() && m.isVndkSp()
|
||||||
|
}
|
||||||
|
|
||||||
useCoreVariant := m.VndkVersion() == mctx.DeviceConfig().PlatformVndkVersion() &&
|
useCoreVariant := m.VndkVersion() == mctx.DeviceConfig().PlatformVndkVersion() &&
|
||||||
mctx.DeviceConfig().VndkUseCoreVariant() && !m.MustUseVendorVariant()
|
mctx.DeviceConfig().VndkUseCoreVariant() && !m.MustUseVendorVariant()
|
||||||
return lib.shared() && m.inVendor() && m.IsVndk() && !m.isVndkExt() && !useCoreVariant
|
return lib.shared() && m.inVendor() && m.IsVndk() && !m.isVndkExt() && !useCoreVariant
|
||||||
|
|
Loading…
Reference in New Issue