apex: add llndk libs as requireNativeLibs
"use_vendor: true" APEX modules may bundle vendor variants of cc modules, which can depend on llndk stubs. In that case, those llndk libraries should be also counted as required libraries. (stored in 'requireNativeLibs' key in apex_manifest.json) Bug: 138695532 Test: m nothing (runs soong tests) Change-Id: If7ad4dec0e723c8d0c73ca60453b555063e14694
This commit is contained in:
@@ -932,7 +932,7 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
}
|
||||
} else {
|
||||
// indirect dependencies
|
||||
if am, ok := child.(android.ApexModule); ok && am.CanHaveApexVariants() && am.IsInstallableToApex() {
|
||||
if am, ok := child.(android.ApexModule); ok {
|
||||
// We cannot use a switch statement on `depTag` here as the checked
|
||||
// tags used below are private (e.g. `cc.sharedDepTag`).
|
||||
if cc.IsSharedDepTag(depTag) || cc.IsRuntimeDepTag(depTag) {
|
||||
@@ -972,7 +972,7 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
filesInfo = append(filesInfo, apexFile{fileToCopy, moduleName, dirInApex, nativeTest, cc, nil})
|
||||
return true
|
||||
}
|
||||
} else {
|
||||
} else if am.CanHaveApexVariants() && am.IsInstallableToApex() {
|
||||
ctx.ModuleErrorf("unexpected tag %q for indirect dependency %q", depTag, depName)
|
||||
}
|
||||
}
|
||||
|
@@ -714,6 +714,58 @@ func TestApexWithRuntimeLibsDependency(t *testing.T) {
|
||||
|
||||
}
|
||||
|
||||
func TestApexDependencyToLLNDK(t *testing.T) {
|
||||
ctx, _ := testApex(t, `
|
||||
apex {
|
||||
name: "myapex",
|
||||
key: "myapex.key",
|
||||
use_vendor: true,
|
||||
native_shared_libs: ["mylib"],
|
||||
}
|
||||
|
||||
apex_key {
|
||||
name: "myapex.key",
|
||||
public_key: "testkey.avbpubkey",
|
||||
private_key: "testkey.pem",
|
||||
}
|
||||
|
||||
cc_library {
|
||||
name: "mylib",
|
||||
srcs: ["mylib.cpp"],
|
||||
vendor_available: true,
|
||||
shared_libs: ["libbar"],
|
||||
system_shared_libs: [],
|
||||
stl: "none",
|
||||
}
|
||||
|
||||
cc_library {
|
||||
name: "libbar",
|
||||
srcs: ["mylib.cpp"],
|
||||
system_shared_libs: [],
|
||||
stl: "none",
|
||||
}
|
||||
|
||||
llndk_library {
|
||||
name: "libbar",
|
||||
symbol_file: "",
|
||||
}
|
||||
|
||||
`)
|
||||
|
||||
apexRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("apexRule")
|
||||
copyCmds := apexRule.Args["copy_commands"]
|
||||
|
||||
// Ensure that LLNDK dep is not included
|
||||
ensureNotContains(t, copyCmds, "image.apex/lib64/libbar.so")
|
||||
|
||||
injectRule := ctx.ModuleForTests("myapex", "android_common_myapex").Rule("injectApexDependency")
|
||||
ensureListEmpty(t, names(injectRule.Args["provideNativeLibs"]))
|
||||
|
||||
// Ensure that LLNDK dep is required
|
||||
ensureListContains(t, names(injectRule.Args["requireNativeLibs"]), "libbar.so")
|
||||
|
||||
}
|
||||
|
||||
func TestApexWithSystemLibsStubs(t *testing.T) {
|
||||
ctx, _ := testApex(t, `
|
||||
apex {
|
||||
|
Reference in New Issue
Block a user