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":
|
case "lib64":
|
||||||
dirInApex = "lib64"
|
dirInApex = "lib64"
|
||||||
}
|
}
|
||||||
dirInApex = filepath.Join(dirInApex, ccMod.RelativeInstallPath())
|
|
||||||
if ccMod.Target().NativeBridge == android.NativeBridgeEnabled {
|
if ccMod.Target().NativeBridge == android.NativeBridgeEnabled {
|
||||||
dirInApex = filepath.Join(dirInApex, ccMod.Target().NativeBridgeRelativePath)
|
dirInApex = filepath.Join(dirInApex, ccMod.Target().NativeBridgeRelativePath)
|
||||||
}
|
}
|
||||||
|
dirInApex = filepath.Join(dirInApex, ccMod.RelativeInstallPath())
|
||||||
if handleSpecialLibs && cc.InstallToBootstrap(ccMod.BaseModuleName(), ctx.Config()) {
|
if handleSpecialLibs && cc.InstallToBootstrap(ccMod.BaseModuleName(), ctx.Config()) {
|
||||||
// Special case for Bionic libs and other libs installed with them. This is
|
// Special case for Bionic libs and other libs installed with them. This is
|
||||||
// to prevent those libs from being included in the search path
|
// 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 {
|
func apexFileForExecutable(ctx android.BaseModuleContext, cc *cc.Module) apexFile {
|
||||||
dirInApex := filepath.Join("bin", cc.RelativeInstallPath())
|
dirInApex := "bin"
|
||||||
if cc.Target().NativeBridge == android.NativeBridgeEnabled {
|
if cc.Target().NativeBridge == android.NativeBridgeEnabled {
|
||||||
dirInApex = filepath.Join(dirInApex, cc.Target().NativeBridgeRelativePath)
|
dirInApex = filepath.Join(dirInApex, cc.Target().NativeBridgeRelativePath)
|
||||||
}
|
}
|
||||||
|
dirInApex = filepath.Join(dirInApex, cc.RelativeInstallPath())
|
||||||
fileToCopy := cc.OutputFile().Path()
|
fileToCopy := cc.OutputFile().Path()
|
||||||
af := newApexFile(ctx, fileToCopy, cc.Name(), dirInApex, nativeExecutable, cc)
|
af := newApexFile(ctx, fileToCopy, cc.Name(), dirInApex, nativeExecutable, cc)
|
||||||
af.symlinks = cc.Symlinks()
|
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 {
|
func withManifestPackageNameOverrides(specs []string) testCustomizer {
|
||||||
return func(fs map[string][]byte, config android.Config) {
|
return func(fs map[string][]byte, config android.Config) {
|
||||||
config.TestProductVariables.ManifestPackageNameOverrides = specs
|
config.TestProductVariables.ManifestPackageNameOverrides = specs
|
||||||
|
@ -1337,6 +1355,64 @@ func TestFilesInSubDir(t *testing.T) {
|
||||||
ensureListContains(t, dirs, "bin/foo/bar")
|
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) {
|
func TestUseVendor(t *testing.T) {
|
||||||
ctx, _ := testApex(t, `
|
ctx, _ := testApex(t, `
|
||||||
apex {
|
apex {
|
||||||
|
@ -2200,15 +2276,7 @@ func TestVndkApexSkipsNativeBridgeSupportedModules(t *testing.T) {
|
||||||
stl: "none",
|
stl: "none",
|
||||||
apex_available: [ "myapex" ],
|
apex_available: [ "myapex" ],
|
||||||
}
|
}
|
||||||
`+vndkLibrariesTxtFiles("current"),
|
`+vndkLibrariesTxtFiles("current"), withNativeBridgeEnabled)
|
||||||
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"},
|
|
||||||
},
|
|
||||||
}))
|
|
||||||
|
|
||||||
ensureExactContents(t, ctx, "myapex", "android_common_image", []string{
|
ensureExactContents(t, ctx, "myapex", "android_common_image", []string{
|
||||||
"lib/libvndk.so",
|
"lib/libvndk.so",
|
||||||
|
@ -2303,7 +2371,8 @@ func TestVndkApexWithBinder32(t *testing.T) {
|
||||||
withBinder32bit,
|
withBinder32bit,
|
||||||
withTargets(map[android.OsType][]android.Target{
|
withTargets(map[android.OsType][]android.Target{
|
||||||
android.Android: []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