Merge "rust ffi libraries can be included in APEX"
This commit is contained in:
15
apex/apex.go
15
apex/apex.go
@@ -530,11 +530,8 @@ func addDependenciesForNativeModules(ctx android.BottomUpMutatorContext, nativeM
|
||||
|
||||
if ctx.Device() {
|
||||
binVariations = append(binVariations, blueprint.Variation{Mutator: "image", Variation: imageVariation})
|
||||
libVariations = append(libVariations,
|
||||
blueprint.Variation{Mutator: "image", Variation: imageVariation},
|
||||
blueprint.Variation{Mutator: "version", Variation: ""}) // "" is the non-stub variant
|
||||
rustLibVariations = append(rustLibVariations,
|
||||
blueprint.Variation{Mutator: "image", Variation: imageVariation})
|
||||
libVariations = append(libVariations, blueprint.Variation{Mutator: "image", Variation: imageVariation})
|
||||
rustLibVariations = append(rustLibVariations, blueprint.Variation{Mutator: "image", Variation: imageVariation})
|
||||
}
|
||||
|
||||
// Use *FarVariation* to be able to depend on modules having conflicting variations with
|
||||
@@ -1530,6 +1527,9 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
provideNativeLibs = append(provideNativeLibs, fi.stem())
|
||||
}
|
||||
return true // track transitive dependencies
|
||||
} else if r, ok := child.(*rust.Module); ok {
|
||||
fi := apexFileForRustLibrary(ctx, r)
|
||||
filesInfo = append(filesInfo, fi)
|
||||
} else {
|
||||
propertyName := "native_shared_libs"
|
||||
if isJniLib {
|
||||
@@ -1702,6 +1702,11 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
return false
|
||||
}
|
||||
|
||||
filesInfo = append(filesInfo, af)
|
||||
return true // track transitive dependencies
|
||||
} else if rm, ok := child.(*rust.Module); ok {
|
||||
af := apexFileForRustLibrary(ctx, rm)
|
||||
af.transitiveDep = true
|
||||
filesInfo = append(filesInfo, af)
|
||||
return true // track transitive dependencies
|
||||
}
|
||||
|
@@ -362,7 +362,10 @@ func TestBasicApex(t *testing.T) {
|
||||
androidManifest: ":myapex.androidmanifest",
|
||||
key: "myapex.key",
|
||||
binaries: ["foo.rust"],
|
||||
native_shared_libs: ["mylib"],
|
||||
native_shared_libs: [
|
||||
"mylib",
|
||||
"libfoo.ffi",
|
||||
],
|
||||
rust_dyn_libs: ["libfoo.dylib.rust"],
|
||||
multilib: {
|
||||
both: {
|
||||
@@ -399,7 +402,10 @@ func TestBasicApex(t *testing.T) {
|
||||
cc_library {
|
||||
name: "mylib",
|
||||
srcs: ["mylib.cpp"],
|
||||
shared_libs: ["mylib2"],
|
||||
shared_libs: [
|
||||
"mylib2",
|
||||
"libbar.ffi",
|
||||
],
|
||||
system_shared_libs: [],
|
||||
stl: "none",
|
||||
// TODO: remove //apex_available:platform
|
||||
@@ -451,6 +457,20 @@ func TestBasicApex(t *testing.T) {
|
||||
apex_available: ["myapex"],
|
||||
}
|
||||
|
||||
rust_ffi_shared {
|
||||
name: "libfoo.ffi",
|
||||
srcs: ["foo.rs"],
|
||||
crate_name: "foo",
|
||||
apex_available: ["myapex"],
|
||||
}
|
||||
|
||||
rust_ffi_shared {
|
||||
name: "libbar.ffi",
|
||||
srcs: ["foo.rs"],
|
||||
crate_name: "bar",
|
||||
apex_available: ["myapex"],
|
||||
}
|
||||
|
||||
apex {
|
||||
name: "com.android.gki.fake",
|
||||
binaries: ["foo"],
|
||||
@@ -566,12 +586,14 @@ func TestBasicApex(t *testing.T) {
|
||||
ensureListContains(t, ctx.ModuleVariantsForTests("myjar"), "android_common_apex10000")
|
||||
ensureListContains(t, ctx.ModuleVariantsForTests("myjar_dex"), "android_common_apex10000")
|
||||
ensureListContains(t, ctx.ModuleVariantsForTests("foo.rust"), "android_arm64_armv8-a_apex10000")
|
||||
ensureListContains(t, ctx.ModuleVariantsForTests("libfoo.ffi"), "android_arm64_armv8-a_shared_apex10000")
|
||||
|
||||
// Ensure that apex variant is created for the indirect dep
|
||||
ensureListContains(t, ctx.ModuleVariantsForTests("mylib2"), "android_arm64_armv8-a_shared_apex10000")
|
||||
ensureListContains(t, ctx.ModuleVariantsForTests("myotherjar"), "android_common_apex10000")
|
||||
ensureListContains(t, ctx.ModuleVariantsForTests("libfoo.rlib.rust"), "android_arm64_armv8-a_rlib_dylib-std_apex10000")
|
||||
ensureListContains(t, ctx.ModuleVariantsForTests("libfoo.dylib.rust"), "android_arm64_armv8-a_dylib_apex10000")
|
||||
ensureListContains(t, ctx.ModuleVariantsForTests("libbar.ffi"), "android_arm64_armv8-a_shared_apex10000")
|
||||
|
||||
// Ensure that both direct and indirect deps are copied into apex
|
||||
ensureContains(t, copyCmds, "image.apex/lib64/mylib.so")
|
||||
@@ -579,6 +601,8 @@ func TestBasicApex(t *testing.T) {
|
||||
ensureContains(t, copyCmds, "image.apex/javalib/myjar_stem.jar")
|
||||
ensureContains(t, copyCmds, "image.apex/javalib/myjar_dex.jar")
|
||||
ensureContains(t, copyCmds, "image.apex/lib64/libfoo.dylib.rust.dylib.so")
|
||||
ensureContains(t, copyCmds, "image.apex/lib64/libfoo.ffi.so")
|
||||
ensureContains(t, copyCmds, "image.apex/lib64/libbar.ffi.so")
|
||||
// .. but not for java libs
|
||||
ensureNotContains(t, copyCmds, "image.apex/javalib/myotherjar.jar")
|
||||
ensureNotContains(t, copyCmds, "image.apex/javalib/msharedjar.jar")
|
||||
|
Reference in New Issue
Block a user