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) {
|
||||
if m, ok := mctx.Module().(*cc.Module); ok && cc.IsForVndkApex(mctx, m) {
|
||||
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())
|
||||
if vndkApex, ok := vndkApexList[vndkVersion]; ok {
|
||||
mctx.AddReverseDependency(mctx.Module(), sharedLibTag, vndkApex)
|
||||
|
|
|
@ -8,6 +8,59 @@ import (
|
|||
"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) {
|
||||
bp := `
|
||||
apex_vndk {
|
||||
|
|
|
@ -350,6 +350,15 @@ func IsForVndkApex(mctx android.BottomUpMutatorContext, m *Module) bool {
|
|||
}
|
||||
|
||||
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() &&
|
||||
mctx.DeviceConfig().VndkUseCoreVariant() && !m.MustUseVendorVariant()
|
||||
return lib.shared() && m.inVendor() && m.IsVndk() && !m.isVndkExt() && !useCoreVariant
|
||||
|
|
Loading…
Reference in New Issue