Fix path in apex when native_bridge_supported: true am: 35155c4f96
Change-Id: I8c6693b2baa34d0bb5f2da5d351c1c8090a0a7ef
This commit is contained in:
commit
42a3990433
2 changed files with 82 additions and 12 deletions
|
@ -1836,10 +1836,10 @@ func apexFileForNativeLibrary(ctx android.BaseModuleContext, ccMod *cc.Module, h
|
|||
case "lib64":
|
||||
dirInApex = "lib64"
|
||||
}
|
||||
dirInApex = filepath.Join(dirInApex, ccMod.RelativeInstallPath())
|
||||
if ccMod.Target().NativeBridge == android.NativeBridgeEnabled {
|
||||
dirInApex = filepath.Join(dirInApex, ccMod.Target().NativeBridgeRelativePath)
|
||||
}
|
||||
dirInApex = filepath.Join(dirInApex, ccMod.RelativeInstallPath())
|
||||
if handleSpecialLibs && cc.InstallToBootstrap(ccMod.BaseModuleName(), ctx.Config()) {
|
||||
// Special case for Bionic libs and other libs installed with them. This is
|
||||
// to prevent those libs from being included in the search path
|
||||
|
@ -1859,10 +1859,11 @@ func apexFileForNativeLibrary(ctx android.BaseModuleContext, ccMod *cc.Module, h
|
|||
}
|
||||
|
||||
func apexFileForExecutable(ctx android.BaseModuleContext, cc *cc.Module) apexFile {
|
||||
dirInApex := filepath.Join("bin", cc.RelativeInstallPath())
|
||||
dirInApex := "bin"
|
||||
if cc.Target().NativeBridge == android.NativeBridgeEnabled {
|
||||
dirInApex = filepath.Join(dirInApex, cc.Target().NativeBridgeRelativePath)
|
||||
}
|
||||
dirInApex = filepath.Join(dirInApex, cc.RelativeInstallPath())
|
||||
fileToCopy := cc.OutputFile().Path()
|
||||
af := newApexFile(ctx, fileToCopy, cc.Name(), dirInApex, nativeExecutable, cc)
|
||||
af.symlinks = cc.Symlinks()
|
||||
|
|
|
@ -87,6 +87,24 @@ func withTargets(targets map[android.OsType][]android.Target) testCustomizer {
|
|||
}
|
||||
}
|
||||
|
||||
// withNativeBridgeTargets sets configuration with targets including:
|
||||
// - X86_64 (primary)
|
||||
// - X86 (secondary)
|
||||
// - Arm64 on X86_64 (native bridge)
|
||||
// - Arm on X86 (native bridge)
|
||||
func withNativeBridgeEnabled(fs map[string][]byte, config android.Config) {
|
||||
config.Targets[android.Android] = []android.Target{
|
||||
{Os: android.Android, Arch: android.Arch{ArchType: android.X86_64, ArchVariant: "silvermont", Abi: []string{"arm64-v8a"}},
|
||||
NativeBridge: android.NativeBridgeDisabled, NativeBridgeHostArchName: "", NativeBridgeRelativePath: ""},
|
||||
{Os: android.Android, Arch: android.Arch{ArchType: android.X86, ArchVariant: "silvermont", Abi: []string{"armeabi-v7a"}},
|
||||
NativeBridge: android.NativeBridgeDisabled, NativeBridgeHostArchName: "", NativeBridgeRelativePath: ""},
|
||||
{Os: android.Android, Arch: android.Arch{ArchType: android.Arm64, ArchVariant: "armv8-a", Abi: []string{"arm64-v8a"}},
|
||||
NativeBridge: android.NativeBridgeEnabled, NativeBridgeHostArchName: "x86_64", NativeBridgeRelativePath: "arm64"},
|
||||
{Os: android.Android, Arch: android.Arch{ArchType: android.Arm, ArchVariant: "armv7-a-neon", Abi: []string{"armeabi-v7a"}},
|
||||
NativeBridge: android.NativeBridgeEnabled, NativeBridgeHostArchName: "x86", NativeBridgeRelativePath: "arm"},
|
||||
}
|
||||
}
|
||||
|
||||
func withManifestPackageNameOverrides(specs []string) testCustomizer {
|
||||
return func(fs map[string][]byte, config android.Config) {
|
||||
config.TestProductVariables.ManifestPackageNameOverrides = specs
|
||||
|
@ -1337,6 +1355,64 @@ func TestFilesInSubDir(t *testing.T) {
|
|||
ensureListContains(t, dirs, "bin/foo/bar")
|
||||
}
|
||||
|
||||
func TestFilesInSubDirWhenNativeBridgeEnabled(t *testing.T) {
|
||||
ctx, _ := testApex(t, `
|
||||
apex {
|
||||
name: "myapex",
|
||||
key: "myapex.key",
|
||||
multilib: {
|
||||
both: {
|
||||
native_shared_libs: ["mylib"],
|
||||
binaries: ["mybin"],
|
||||
},
|
||||
},
|
||||
compile_multilib: "both",
|
||||
native_bridge_supported: true,
|
||||
}
|
||||
|
||||
apex_key {
|
||||
name: "myapex.key",
|
||||
public_key: "testkey.avbpubkey",
|
||||
private_key: "testkey.pem",
|
||||
}
|
||||
|
||||
cc_library {
|
||||
name: "mylib",
|
||||
relative_install_path: "foo/bar",
|
||||
system_shared_libs: [],
|
||||
stl: "none",
|
||||
apex_available: [ "myapex" ],
|
||||
native_bridge_supported: true,
|
||||
}
|
||||
|
||||
cc_binary {
|
||||
name: "mybin",
|
||||
relative_install_path: "foo/bar",
|
||||
system_shared_libs: [],
|
||||
static_executable: true,
|
||||
stl: "none",
|
||||
apex_available: [ "myapex" ],
|
||||
native_bridge_supported: true,
|
||||
compile_multilib: "both", // default is "first" for binary
|
||||
multilib: {
|
||||
lib64: {
|
||||
suffix: "64",
|
||||
},
|
||||
},
|
||||
}
|
||||
`, withNativeBridgeEnabled)
|
||||
ensureExactContents(t, ctx, "myapex", "android_common_myapex_image", []string{
|
||||
"bin/foo/bar/mybin",
|
||||
"bin/foo/bar/mybin64",
|
||||
"bin/arm/foo/bar/mybin",
|
||||
"bin/arm64/foo/bar/mybin64",
|
||||
"lib/foo/bar/mylib.so",
|
||||
"lib/arm/foo/bar/mylib.so",
|
||||
"lib64/foo/bar/mylib.so",
|
||||
"lib64/arm64/foo/bar/mylib.so",
|
||||
})
|
||||
}
|
||||
|
||||
func TestUseVendor(t *testing.T) {
|
||||
ctx, _ := testApex(t, `
|
||||
apex {
|
||||
|
@ -2200,15 +2276,7 @@ func TestVndkApexSkipsNativeBridgeSupportedModules(t *testing.T) {
|
|||
stl: "none",
|
||||
apex_available: [ "myapex" ],
|
||||
}
|
||||
`+vndkLibrariesTxtFiles("current"),
|
||||
withTargets(map[android.OsType][]android.Target{
|
||||
android.Android: []android.Target{
|
||||
{Os: android.Android, Arch: android.Arch{ArchType: android.Arm64, ArchVariant: "armv8-a", Abi: []string{"arm64-v8a"}}, NativeBridge: android.NativeBridgeDisabled, NativeBridgeHostArchName: "", NativeBridgeRelativePath: ""},
|
||||
{Os: android.Android, Arch: android.Arch{ArchType: android.Arm, ArchVariant: "armv7-a-neon", Abi: []string{"armeabi-v7a"}}, NativeBridge: android.NativeBridgeDisabled, NativeBridgeHostArchName: "", NativeBridgeRelativePath: ""},
|
||||
{Os: android.Android, Arch: android.Arch{ArchType: android.X86_64, ArchVariant: "silvermont", Abi: []string{"arm64-v8a"}}, NativeBridge: android.NativeBridgeEnabled, NativeBridgeHostArchName: "arm64", NativeBridgeRelativePath: "x86_64"},
|
||||
{Os: android.Android, Arch: android.Arch{ArchType: android.X86, ArchVariant: "silvermont", Abi: []string{"armeabi-v7a"}}, NativeBridge: android.NativeBridgeEnabled, NativeBridgeHostArchName: "arm", NativeBridgeRelativePath: "x86"},
|
||||
},
|
||||
}))
|
||||
`+vndkLibrariesTxtFiles("current"), withNativeBridgeEnabled)
|
||||
|
||||
ensureExactContents(t, ctx, "myapex", "android_common_image", []string{
|
||||
"lib/libvndk.so",
|
||||
|
@ -2303,7 +2371,8 @@ func TestVndkApexWithBinder32(t *testing.T) {
|
|||
withBinder32bit,
|
||||
withTargets(map[android.OsType][]android.Target{
|
||||
android.Android: []android.Target{
|
||||
{Os: android.Android, Arch: android.Arch{ArchType: android.Arm, ArchVariant: "armv7-a-neon", Abi: []string{"armeabi-v7a"}}, NativeBridge: android.NativeBridgeDisabled, NativeBridgeHostArchName: "", NativeBridgeRelativePath: ""},
|
||||
{Os: android.Android, Arch: android.Arch{ArchType: android.Arm, ArchVariant: "armv7-a-neon", Abi: []string{"armeabi-v7a"}},
|
||||
NativeBridge: android.NativeBridgeDisabled, NativeBridgeHostArchName: "", NativeBridgeRelativePath: ""},
|
||||
},
|
||||
}),
|
||||
)
|
||||
|
|
Loading…
Reference in a new issue