From 17f052647f5e4afcb3f5c4142d9a2ccec627faab Mon Sep 17 00:00:00 2001 From: Dan Willemsen Date: Tue, 31 May 2016 16:27:00 -0700 Subject: [PATCH] Support installing non-native arch binaries For the x86_arm target, which uses two 32-bit architectures, x86 libraries should be installed into ".../lib", and arm libraries should be installed into ".../lib/arm". This shouldn't be necessary for binaries, but non-native binaries aren't supported in Make right now, so we can revisit this once it's necessary. Change-Id: I4d883c85d3ef4945ff6149d9c4fc81af5023e12b --- android/arch.go | 6 ++++++ cc/cc.go | 3 +++ 2 files changed, 9 insertions(+) diff --git a/android/arch.go b/android/arch.go index 952b72072..48cc0ab71 100644 --- a/android/arch.go +++ b/android/arch.go @@ -303,6 +303,7 @@ type Arch struct { CpuVariant string Abi []string ArchFeatures []string + Native bool } func (a Arch) String() string { @@ -911,6 +912,9 @@ func decodeArchProductVariables(variables productVariables) (map[HostType][]Arch if err != nil { return nil, nil, err } + if deviceArch.ArchType.Multilib == deviceSecondaryArch.ArchType.Multilib { + deviceSecondaryArch.Native = false + } deviceArches = append(deviceArches, deviceSecondaryArch) } @@ -973,6 +977,7 @@ func decodeMegaDevice() ([]Arch, error) { if err != nil { return nil, err } + arch.Native = false ret = append(ret, arch) } @@ -1005,6 +1010,7 @@ func decodeArch(arch string, archVariant, cpuVariant *string, abi *[]string) (Ar ArchVariant: stringPtr(archVariant), CpuVariant: stringPtr(cpuVariant), Abi: slicePtr(abi), + Native: true, } if a.ArchVariant == a.ArchType.Name || a.ArchVariant == "generic" { diff --git a/cc/cc.go b/cc/cc.go index 9cdd66c0e..bac3e88e5 100644 --- a/cc/cc.go +++ b/cc/cc.go @@ -1347,6 +1347,9 @@ func (installer *baseInstaller) install(ctx ModuleContext, file android.Path) { if ctx.toolchain().Is64Bit() && installer.dir64 != "" { subDir = installer.dir64 } + if !ctx.Host() && !ctx.Arch().Native { + subDir = filepath.Join(subDir, ctx.Arch().ArchType.String()) + } dir := android.PathForModuleInstall(ctx, subDir, installer.Properties.Relative_install_path) installer.path = ctx.InstallFile(dir, file) }